Возиться с бессмысленным кодом? - PullRequest
7 голосов
/ 28 августа 2010

Я изучаю языки Factor и J, чтобы экспериментировать с бессмысленным программированием.Основная механика языков кажется ясной, но понимание того, как подходить к разработке алгоритмов, является сложной задачей.

Особый источник путаницы для меня заключается в том, как структурировать код так, чтобы с ним было легко экспериментировать.разные параметры.Под этим я подразумеваю такие вещи, в которых Mathematica и Matlab так хороши;Вы устанавливаете алгоритм, затем манипулируете переменными и смотрите, что происходит.

Как вы делаете это без явных переменных?Может быть, я думаю об этом все неправильно.Как мне подходить к этому в бессмысленном программировании?

1 Ответ

9 голосов
/ 29 августа 2010

Вот три важных совета, которые я нашел действительно полезными при работе с конкатенативной парадигмой (применимой к языку программирования Factor в моем случае):

  • Фактор ваш код безжалостно . Напишите очень маленькие функции: если имеется более 3-4 параметров стека, возможно, вы можете разбить его на более мелкие части.
  • Инвестируйте свое время в изучение комбинаторов потоков данных (bi, tri, cleave, spread, ...). Они позволяют выражать общие шаблоны потоков данных, устраняя необходимость в перестановке сложных стеков.
  • Научитесь строить цитаты из других цитат . Используйте методы каррирования (curry, with, ...) для построения простых цитат из параметров стека, а когда все становится слишком сложным, используйте цитаты Fried (вокаб "fry"). Они позволяют легко создавать сложные вложенные цитаты из шаблонов без перетасовки стека.

И, как всегда, прочитайте и «пройдитесь» по существующему коду. В Факторе довольно легко исследовать среду выполнения и посмотреть, как все работает.

Для вашего конкретного источника путаницы, если у вас много входных параметров в вашем алгоритме, самое важное, что нужно сделать, это изучить, как они будут использоваться. Сбор данных для шаблонов потоков данных. Вы должны действительно ДУМАТЬ о лучшем способе "запланировать" операции с наименьшим набором связанных параметров.

Это довольно трудный опыт, но он также действительно полезен, когда он успешен. После этого мы чувствуем себя человеком-компилятором ..

Удачи!

...