Re: Способно ли метапрограммирование заменить отдельные язык
От: Sinix  
Дата: 01.02.11 09:20
Оценка: +2
Здравствуйте, Chrome, Вы писали:

C>Подключаемая грамматика – наподобие подключаемой библиотеки – выглядит очень привлекательной альтернативой полностью определенному языку.

И создаёт кучу проблем с совместимостью/неоднозначностью грамматик/защитой от очередных религиозных фанатиков/поддержкой инструментария. Для мейнстрима дизайном языка должны заниматься специалисты, а метапрограммирование лучше ограничить AOP.

C>Позволяет самим реализовать фичи, которые нужны вам сейчас.

Фич, которые не могут быть реализованы внутри библиотек-хелперов, очень мало.

C>Позволяет отказаться от ненужного наследства.

Как?


C>Наличие платформы метапрограммирования резко снижает расходы на создание собственного языка или диалекта существующего.

Зачем? Для DSL нужна очень большая инфраструктура аля M. Последний, кстати, не взлетел.

Для полноценных языков (если мы не собираемся гнать погонными метрами клоны существующих) толку от метапрограммирования как такового тоже очень мало. Выигрыш от кучи диалектов можно наблюдать на примере SQL.

C>У вас уже есть back end компилятора, который умеет создавать все примитивы runtime платформы — остается придумать грамматику и транслировать ее в эти примитивы.

Язык не ограничивается одним синтаксисом. Большинство интересных плюшек идёт в виде довеска к рантайму или в виде генерации дополнительных типов данных.

C>Некоторые товарищи утверждают, что на имплементацию C# на немерле у них ушло 2 месяца.

Нет, 2 месяца — это на немерль с синтаксисом шарпа. Полноценный компилятор, со всеми прелестями и нюансами — на порядок больше работы.

C>Можно ли за аналогичное време реализовать эрланг? F#?

Да, только по поведению это будет всё тот же nemerle.

C>Если сроки реально такого порядка — стоит ли ожидать в будущем отдельный диалект языка программирования на каждую программерскую контору или крупный проект?

Конечно. Это самый лучший способ протратить ресурсы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.