пятница, 30 марта 2012 г.

[prog.flame] Наткнулся тут на планы разработчиков Nemerle2

Прочитал (довольно бегло, признаюсь) первые несколько разделов статьи “N2 – языковый фрeймворк”. Не понял, для какой аудитории предназначен сей инструмент.

Я вижу себе картину мира так:

  1. Есть разработчики универсальных языков программирования общего назначения. Таких, например, как Go или Vala. Нужен ли им какой-то вспомогательный фреймворк? Помнится, я читал, что при разработке серьезных компиляторов даже генераторы парсеров не часто используются. Из соображений эффективности и более качественной диагностики ошибок парсер, семантический анализатор, оптимизатор и пр. вещи там реализуются, зачастую, вручную.
  2. Есть разработчики мелких DSL-ей. Например, нужно разработчику сделать собственный специализированный аналог IDL (Interface Definition Language), наподобие тех, которые используются в Google Protocol Buffer или Thrift, но попроще. Тут цель разработчика – сделать быстро, без затей, чтобы затем было просто переделывать, да и выбросить чтобы было не жалко. Выбор в таких условиях идет, обычно, между встроенными возможностями целевого языка программирования (макросы или шаблоны в C++, метод eval в динамических языках и т.д.), использованием внешних динамических языков (Perl, Ruby, Python,…) или самых простых и доступных генераторов парсеров (коих великое множество, начиная от древних lex+yacc).
  3. Есть разработчики серьезных специализированных языков, вроде языков описания аппаратуры.

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

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

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

Так что, со нескрываемым злорадством отмечу, что Nemerle-строители в очередной раз страдают херней. С еще большим злорадством отмечу, что Nemerle-евангелисты вот уже шесть лет засирают самый солидный профильный ресурс Рунета без заметного практического выхлопа. И будут засирать еще шесть лет, хотя, похоже, у многих RSDN-еров уже устойчивый иммунитет на Nemerle выработался ;)

Имхо, причина в том, что первоначальные разработчики Nemerle (польские аспиранты) знали, зачем им Nemerle нужен. Они своих целей и достигли, полагаю. А вот RSDN-овские евангелисты не знают, зачем им это все. Нравится им с парсерами развлекаться, нравится мечтать сделать глобальный всемогутор, вот и пилят не язык программирования, а языковой фреймворк. Ну туда им и дорога.

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

Отправить комментарий