7

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

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

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

ответ

9

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

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

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

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

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

Удачи!