Почему у Nemerle нет будущего
От: lastochkin  
Дата: 04.08.06 12:29
Оценка: 46 (7) +11 -8 :))) :))) :))
Здравствуйте, Купаев Михаил, Владислав Чистяков, Вы писали:

КМВ>Статья:

КМВ>Kamil Skalski, Michal Moskal и Pawel Olszta. Метапрограммирование в Nemerle
Автор(ы): Kamil Skalski, Michal Moskal и Pawel Olszta
Дата: 23.05.2006
Пример C++ показывает, что индустрии нужны системы метапрограммирования – даже достаточно причудливая система шаблонов широко используется для вычислений во время компиляции. Эта статья является исследованием возможного внедрения техники метапрограммирования в индустриальную среду в более чистой форме. Мы, таким образом, фокусируемся на том, чтобы сделать нашу систему легкой в использовании для программистов, как пишущих, так и использующих макросы.


КМВ>Авторы:

КМВ> VladD2
КМВ> Kupaev

КМВ>Аннотация:

КМВ>Пример C++ показывает, что индустрии нужны системы метапрограммирования — даже достаточно причудливая система шаблонов широко используется для вычислений во время компиляции. Эта статья является исследованием возможного внедрения техники метапрограммирования в индустриальную среду в более чистой форме. Мы, таким образом, фокусируемся на том, чтобы сделать нашу систему легкой в использовании для программистов, как пишущих, так и использующих макросы.

Почему у Nemerle нет будущего
-------------------------------

Основные проблемы Nemerle, мешающие ему стать распространенным языком:
1) "Предательство" синтаксиса
2) Упор на повышение "мощности" языка
3) Метапрограммирование (для п.2)
4) Смешение парадигм (для п.2)

В основе проблем лежат:
1) Преувеличение мыслительных способностей программистов, а и людей вообще. В реальности они довольно ограничены.
2) Преувеличение роли логического, рационального мышления. Человек мысли иррационально, эмоционально (увы и ах).
3) Ошибочная посылка: язык программирования служит общения к компьютером. При современном развитии вычислительных сред, язык программирования служит прежде всего для накопления знаний и общения между разработчиками.

Подробно о проблемах:
1) Синтаксис Nemerle взяв за основу синтаксис C, тем не менее существенно от него отступает, причем без всякого разумного обоснования. Если бы синтаксис отличался радикально (как у Python, Ruby и др.) это было бы пол беды — проосто изучение языка стало бы путешествием в совершенно новый мир, пусть непривычный и даже чуток враждебный. Враг бывает достоин уважения и даже восхижения, но предатель — никогда. Все удачные (читай: получившие расространение) синтаксические приемники Си шли по пути расширения его синтаксиса, но, в отличии от Nemerle, не извращения, таковы C++, Java, Java-script, PHP, C#, даже Perl. Аргумент разработчиков Nemerle: синтаксис отличается, но люди легко его выучат. Ответ: да, выучат, если захотят учить язык с "предательским" (эмоциональная реакция!) синтаксисом, но удовольствия не получат (опять эмоции, но на них держится мир).

2) Программистам не хватает не "мощности", которую вполне можно упаковать в библиотеки и API, а надежности, защищенности и удобства. Такие ставшие "примитивными" возможности среды разработки, как подсветка синтаксиса, контекстная справка, переход по перекрестным сслыкам, InteliSence и т.п. экономят гораздо больше времени и нервных клеток, чем многие синтаксические навороты. Причина в том, что программы пишут живые люди, которые быстро утомляются, часто ошибаются, что-то забывают и т.д. Простота и лаконичность — вот чего ждут разработчики.

3) Метапрограммирование очень существенно усложняет понимание кода человеком, в виду ограниченности мыслительных возможностей последнего (причем подвижек с этим в обозримом будущем не ожидается). И это очень серьезная причина ограничивать использование средств метапрограммирования, не смотря на их потенциальную силу, не зря в современных успешных языках (C++, C# 2.0) оно сведено к минимуму (generic-и), а то и вовсе отсутствует (Java). А ведь мир видал препроцессоры куда круче Nemerle-вского, в PL/I язык препроцессора по мощи не многим уступал самому целевому языку. Похоже, использование generic-ов (причем без typedef!) и Reflection вполне достаточная доза метапрограммирования в современных языках.

4) Язык реализующий несколько парадигм (процедурная, функциональная, декларативная) видимо предполагает их интенсивное совместное использование, что опять таки является непосильной (увы) нагрузкой для программиста. В лучшем случае труднопонимаемые детали будут задвинуты, в худшем будут служить причиной тонких, неуловимых ошибок и огромных проблем с чтением чужого кода. Вы пробовали изучать, к примеру, Пролог? Пока читаете описание и разбираешь простые примеры — все отлично. Как дело доходит до решения оригинальных задач и чтения реального кода, вот тут и понимаете как трудно переключиться в принципиально иную парадигму.

Приходится сделать неутешительный вывод: Nemerle — лишь новый красивый узорчатый листок на пышном дереве мертвых исследовательских языков где-то рядом с НУТ-ом (Новым Утопистом) и другими попытками объять необъятное.

09.08.06 03:31: Ветка выделена из темы Почему у Nemerle нет будущего
Автор: Купаев Михаил, Владислав Чистяков
Дата: 23.05.06
— Кодт
30.01.07 18:19: Перенесено модератором из 'Декларативное программирование' — IT
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.