Re[6]: (как примечание)
От: alex_public  
Дата: 17.07.15 22:54
Оценка:
Здравствуйте, Гест, Вы писали:

Г>Тут, чтобы о чём-нибудь разговаривать, нужно бы согласовать словари.


Хорошо, сейчас поясню всё на простейшем примере, основываясь на описанной мною в первом сообщение классификации.

Вот смотри, если пока отвлечься от вопросов динамики/статики и просто рассмотреть такой классический очевидный DSL, как регулярные выражения, то к какому пункту моей классификации он относится? Правильный ответ: или 1.Б или 2.Б, в зависимости от реализации. Т.е. в первом случае мы имеем подключение классической библиотечки регулярных выражений, работающей с зашитой в код приложения текстовой строкой (исполняет здесь роль встроенного скрипта). Если программист ошибся в этой строке (ввёл выражение, нарушающее синтаксис регулярных выражений), то мы узнаем об этой ошибке только в процессе исполнения приложения (вне зависимости от типа базового языка программирования). Во втором случае (использования библиотеки типа Boost.Xpressive в C++ или тут приводился выше пример кода для Nemerle) в коде приложения не будет находиться никаких строк (т.е. итоговое приложение не содержит DSL скрипт), а будет только бинарный код, очевидно валидный (по построению).

Так вот возвращаясь к динамике/статике. Моя основная мысль была в том, что на языке со статическим метапрограммированнием возможна реализация DSL как типа 1.Б (имеет смысл применять только если исполняемый "скрипт" запрашивается снаружи, а не зашит в приложение), так и типа 2.Б. А в языках с динамическим метапрограммированием в принципе возможен только тип 1.Б.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.