Технологiя описанiя синтаксиса и семантики языковъ программированiя (ЯП) была разработана и примѣнялась въ основномъ для написанiя статей о ЯП. Естественно, плановъ было громадье - хотѣли на основѣ такихъ формальныхъ описанiй автоматически дѣлать компиляторы и среды редактированiя для новыхъ ЯП. Но это оказалось невозможно на практикѣ. Компиляторы получались слишкомъ медленными и неоптимальными, среды редактированiя слишкомъ неудобными.
Думаю, сегодня въ эру богомерзкаго ИИ формальная семантика можетъ еще сыграть положительную роль. Почти любой ИИ сможетъ написать парсеръ и компиляторъ по такому описанiю (если пойметъ обозначенiя, конечно). Также можно было бы автоматически порождать функцiональные тесты семантики для компиляторовъ ЯП.
Но что тамъ компиляторы - даже парсеры реальныхъ ЯП сегодня всегда пишутся руками, а не генерируются. Себѣ дороже сгенерировать нечто такое, что невозможно ни понять, ни поддерживать.
Этим отличается программирование от теоретического программирования. 😀 В программировании результатом считается работающий код. В теоретическом программировании - красивые убедительные рассуждения.
Мечты порождать парсеры и компиляторы из формального описания языка так и остались мечтами. Ровно эту тему мне предлагали в 1988 году в институте Келдыша для кандидатской. Для парсеров изобрели отдельные языки. Для компиляторов применяли табличные методы с разной степенью успешности. Формальные доказательства правильности оказались полезными только в верификации хардвера.
Парсеры мне лениво писать руками. Всю жизнь пользуюсь яком и бизоном.
no subject
Date: 2026-01-10 09:48 (UTC)Думаю, сегодня въ эру богомерзкаго ИИ формальная семантика можетъ еще сыграть положительную роль. Почти любой ИИ сможетъ написать парсеръ и компиляторъ по такому описанiю (если пойметъ обозначенiя, конечно). Также можно было бы автоматически порождать функцiональные тесты семантики для компиляторовъ ЯП.
Но что тамъ компиляторы - даже парсеры реальныхъ ЯП сегодня всегда пишутся руками, а не генерируются. Себѣ дороже сгенерировать нечто такое, что невозможно ни понять, ни поддерживать.
no subject
Date: 2026-01-10 22:18 (UTC)В программировании результатом считается работающий код. В теоретическом программировании - красивые убедительные рассуждения.
Мечты порождать парсеры и компиляторы из формального описания языка так и остались мечтами. Ровно эту тему мне предлагали в 1988 году в институте Келдыша для кандидатской. Для парсеров изобрели отдельные языки. Для компиляторов применяли табличные методы с разной степенью успешности. Формальные доказательства правильности оказались полезными только в верификации хардвера.
Парсеры мне лениво писать руками. Всю жизнь пользуюсь яком и бизоном.
no subject
Date: 2026-01-10 12:26 (UTC)no subject
Date: 2026-01-10 22:19 (UTC)http://homepages.cs.ncl.ac.uk/cliff.jones/publications/OCRd/
no subject
Date: 2026-01-10 22:23 (UTC)