ailev.ru

18 мая 2009 · Комментарий

Без заголовка

Согласен. С другой стороны, такое разнообразие взглядов порождено разными требованиями и ожиданиями к DSL. Ну и опытом использования отдельных аспектов. Т.е. надо четче прояснить требования к DSL. К примеру, у меня основная польза от DSL и других передовых языковых/символьных конструкций - глубокое понимание требований. После понимания, можно примерно тоже закодировать и на обычной Жабе, даже в более-менее функциональном стиле. Просто в процессе анализа с помощью передовых методов будет получено простое и эффективное представление и это окупает использования сиих тулзов даже без получения соответствующих артефактов. С другой стороны, получить и интегрировать в промышленный процесс какие-то жизнеспособные артефакты получается слабо. Лучше всего получается нагенерить тестов/входных файлов. А массовое использование DSL и символьных вычислений безусловно подразумевает такую интеграцию. И тут есть куча технологических трудностей (довольно мелких на мой взгляд) и куча мировоззренческих трудностей (с которыми уже сложнее). Как-то в стать про Aspect-Oriented Prograaming я прочитал, что основная проблема внедрения этой методологии - адекватное тестирование. Действительно, если мы используем какую-то мощную идеи и генерим кучу кода небольшими усилиями, то встает вопрос - а как все это барахло протестировать? Ну т.е. часть проблемы решается на уровне мощной идеи - сама возможность высокоуровнего моделирования решает кучу проблем, но проблема конечного тестирования все равно остается. Учитывая что тестирование занимает 60-80% всех усилий на создание ПО, то получается что в результате применения мощной идеи, проблема тестирования лишь усугублется, ибо тестирование уже занимает 95% времени. К примеру, я недавно писал быстрый покерный калькулятор и я в основном писал тесты и код, который помог бы мне убедится что я считаю то что нужно, ибо перебирая 133 млн комбинаций, легко что-то упустить из виду. Резюмируя, DSL - это хорошо, символьные вычисления - хорошо, вопрос - как все это барахло приводить в соответствии с реальными требованиями? Имеется в виду как это делать технологически - тестирование, верификация, валидация. Т.е. практически мощной идеей является не сама DSL или там еще какая штука, а технология проверки результатов на соответствие целям заказчиков. А коротко даже так: есть технология тестирования - есть и возможность реализации мощной идеи. Наоборот - не обязательно верно.

К записи · К обсуждению