Является ли преобразование внутреннего DSL во внешний DSL анти-паттерном? - PullRequest
1 голос
/ 12 октября 2008

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

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

Ответы [ 2 ]

3 голосов
/ 12 октября 2008

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

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

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

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

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

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

1 голос
/ 12 января 2010

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

...