Является ли преобразование внутренней DSL во внешнюю DSL антипаттерном?

В нашей устаревшей системе мы написали собственную виртуальную машину для выполнения нашего внутреннего DSL во время выполнения. Собственная виртуальная машина была разработана для запуска только нашего внутреннего DSL. Мы находимся в процессе переписывания нашего устаревшего приложения. Одна из рассматриваемых нами идей заключается в том, чтобы преобразовать нашу внутреннюю DSL во внешнюю DSL (C# или Java) и воспользоваться преимуществами их виртуальной машины.

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


person Community    schedule 11.10.2008    source источник


Ответы (2)


Решение о внутренней DSL/VM или внешней DSL/VM такое же, как и все решения о сборке, покупке или загрузке. Руководящие принципы ясны и одинаковы для всего программного обеспечения.

Зачем поддерживать собственную виртуальную машину, если за вас будет поддерживать Java или Python кто-то другой?

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

  1. Вам дешевле продолжать поддерживать собственное программное обеспечение. В данном случае DSL и ВМ?

  2. Ваш собственный DSL и виртуальная машина лучше, чем Java или Python? Под словом «лучше» вы должны указать любую комбинацию факторов качества: быстрее, меньше, надежнее, с лучшими функциями, меньше использует ресурсы, более проверяемая, более безопасная и т. д.

Не путайте DSL и виртуальную машину. Ничего особенного; это просто больше программного обеспечения.

person S.Lott    schedule 11.10.2008

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

person The0retico    schedule 12.01.2010