>> |
No.17448
Файл: goviaji_church.png -(119 KB, 1867x935, goviaji_church.png)
>>17438
Веха - это какое-то конкретное достижение. Для меня это разработка языка программирования ради него самого, как самоцель. Обычные DSL вроде прикручивания Lua скриптов к игре или парсера конфигурации дают опыт в этом деле, но по-настоящему ты дозреваешь, когда пишешь программу, в которой язык занимает центральное место.
>>17447
В каком-то смысле ты прав. Например, на Лиспе можно сделать примерно то же, что у меня в goviaji. Принципиальных отличий, которые и есть основные мотиваторы разработки, тут три:
1) в goviaji описывать языки гораздо удобнее, например см. оппик - логическое определение переводится в код почти напрямую.
2) в goviaji нет никаких синтаксиса и семантики целевого языка, кроме тех, что определил сам программист. Ты должен полностью описать свой язык, и в нем не будет ничего лишнего, никаких посторонних эффектов.
3) goviaji предоставляет неограниченные возможности по определению языков.
Технически самый близкий к goviaji язык это Пролог, но в goviaji другая логическая модель, которая мне больше нравится своей чистотой, и по-другому работает синтаксис.
В качестве примера работы на картинке - вычисление выражения 3 == 2 + 1 в кодировке Черча на чистом лямбда-исчислении. Язык - чистое лямбда-исчисление - определен правилами вывода, а конкретные символы (equal, c3, snd, fls и пр.) это просто синонимы для соответствующих лямбда-выражений. На каждом шаге для выражения E доказывается утверждение eval E X, и X становится выражением для следующего шага. Начинается вычисление с "equal c3 (scc c2)", которое кодирует в Черча "3 == 2 + 1", а заканчивается tru, истиной в кодировке Черча.
|