Работаю с языком Joy — чисто функциональным конкатенативным языком, в котором любая программа складывается из композиции функций, поочерёдно передающих единственный стек. Именованных переменных нет, лямбда-обвязка не нужна: я собираю крупные слова из мелких комбинаторов, и код читается как прозрачный поток значений сверху вниз по стеку. Нужна стековая процедура, библиотека повторно используемых квотаций или бесточечная переработка перегруженной логики — берусь и довожу до результата.
Направлений несколько. Разработка с чистого листа: составляю словари слов, общие шаблоны выношу в комбинаторы — map, fold и характерные для языка Joy схемы рекурсии, — и каждое определение оставляю коротким и легко тестируемым. Переработка: разросшийся со временем сценарий переписываю в строгом бесточечном стиле, где смысл несёт композиция, а не побочные изменения. Отдельно — подход «программа как данные»: квотации суть обычные списки, поэтому я пишу метапрограммы, которые конструируют, анализируют и переписывают другой код, а через переписывание термов доказываю мелкие эквивалентности и упрощаю выражения.
Преподаю тоже. Веду индивидуальные разборы и готовлю конспекты, которые проводят ученика от пустого стека до самоприменимой рекурсии, с упражнениями по нарастающей сложности. Исследовательский бэкграунд даёт возможность говорить об алгебре языка, о его родстве с комбинаторной логикой и о различиях стековой модели с лямбда-исчислением.
На выходе — прокомментированные исходники, тесты для каждого слова, сжатая заметка о выбранной стратегии композиции и созвон с разбором решения. За спиной годы практики с конкатенативными и функциональными языками и вкус к коду, который остаётся компактным, доказуемым и удобным для чтения.
Направлений несколько. Разработка с чистого листа: составляю словари слов, общие шаблоны выношу в комбинаторы — map, fold и характерные для языка Joy схемы рекурсии, — и каждое определение оставляю коротким и легко тестируемым. Переработка: разросшийся со временем сценарий переписываю в строгом бесточечном стиле, где смысл несёт композиция, а не побочные изменения. Отдельно — подход «программа как данные»: квотации суть обычные списки, поэтому я пишу метапрограммы, которые конструируют, анализируют и переписывают другой код, а через переписывание термов доказываю мелкие эквивалентности и упрощаю выражения.
Преподаю тоже. Веду индивидуальные разборы и готовлю конспекты, которые проводят ученика от пустого стека до самоприменимой рекурсии, с упражнениями по нарастающей сложности. Исследовательский бэкграунд даёт возможность говорить об алгебре языка, о его родстве с комбинаторной логикой и о различиях стековой модели с лямбда-исчислением.
На выходе — прокомментированные исходники, тесты для каждого слова, сжатая заметка о выбранной стратегии композиции и созвон с разбором решения. За спиной годы практики с конкатенативными и функциональными языками и вкус к коду, который остаётся компактным, доказуемым и удобным для чтения.