http://love5an.livejournal.com/ ([identity profile] love5an.livejournal.com) wrote in [personal profile] love5an 2011-11-02 12:30 pm (UTC)

>У вас два DSeL. Как они стыкуются?

Как стек. Один на другом. Нижний о верхнем ничего не знает.

>За исключением, как я полагаю, тех, что подходят лучше.

Такой язык должен иметь высокоразвитые средства метапрограммирования, и в первую очередь, у такого языка сама структура программы должна быть объектом языка, причем представляться она должна в самой общей форме, потому как какая-либо специализация внесет ограниченность в возможности метапрограммирования. Таким образом, этот язык должен быть лиспом. Возможно, в будущем появятся лиспы лучше CL, пока же таких нет.

>Как контролировать распространение изменений в Лиспе?

Самый лучший вариант это многоуровневые макросы и DSL, естественно.

Задача должна быть описана на самом верхнем уровне, самым высокоуровневым DSL, непосредственно описывающим саму задачу в ее терминах. Этот DSL должен компилироваться в нижележащий DSL, работающий, например, с абстракциями доступных программных средств, и так далее. И вот когда мы изменяем спецификацию задачи, на верхнем уровне, изменения автоматически распространяются на нижележащие слои, без непосредственной работы с ними. Верификация происходит на всех уровнях слоях DSL, естественно. Если DSL не принимает какую-либо "форму", он кричит нам об ошибке, при компиляции.

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

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting