Здравствуйте, eao197, Вы писали:
E>Но я думаю, что Nemerle делает очень простым написание сложных (в смысле запутанных, сложных для сопровождения) программ.
E>Я думаю, что если что-то может быть понято или использовано неправильно, то оно обязательно будет понято и использовано неправильно. Успех Java показывает, что подавляющему большинству разработчиков, не желающих вникать в тонкости языка и правильных способов его использования, нужно что-то, максимально усложняющее отстреливание ног разработчиков. Но при этом дающее некоторые преимущества в простоте реализации каких-то часто встречающихся задач.
Такое мнение существует, но я считаю его не верным. Расширение языка макросами не позиционируется как средство решения рядовых проблем и предназначены преимущественно для разработчиков библиотек, использeющих кодогенерацию. Таких как IT.
Рядовой программист столкнется с достаточно высоким порогом вхождения, когда станет пробовать макрорасширения, кроме того такие поытки можно и следует пресечь техническими средствами.
Без использования макросов язык предоставляет даже меньше возможностей отстрелить себе ногу, чем C#.
Что касается запутанных программ, то написать их также легко и на Java, что многие постоянно демонстрируют.
В то же время, на Nemerle, как мне кажется, гораздо легче написать НЕ запутанную программу, чем на Java. Но это только мое мнение.
E>У Nemerle очень сильный упор делается в метапрограммирование.
Это заблуждение. Для решения подавляющего большинства задач метапрограммирования не требуется.
E>Даже многие фичи языка реализованы через макросы.
Для программиста это не имеет никакого значения.
E>Наверное для разработчиков языка и компилятора это выглядит очень здорово.
Да.
E>Так же могут думать и некоторые разработчики библиотек, которым нужна compile-time генерация кода.
Скорее всего.
E>Ну и разных пуристов и исследователей языков в эту же группу можно добавить.
Я так не думаю. Пуристы делают подчеркнуто симплистичные языки вроде Java и Oberon — такие вещи они считают злом.
Что касается исследователей языков, то для них это давно пройденый этап.
E>Но что получает тот, кому не нужно делать свой компилятор, кому не нужно разрабатывать фреймворки с кодогенерацией, которому по барабану, насколько маленький код самого компилятора? Сборную солянку из императивных, функциональных и объектно-ориентированных возможностей,
Мультипарадигменный язык. Как C++, C#, Python, Ruby etc. Как или лучше, в основном. Хотя это тоже дело вкуса.
E>да еще и с супер-мета-программированием в придачу.
Чем это хуже возможностей метапрограммирования, но не супер?
E>Даже если она удачно приготовлена все равно разработчикам нужно привить вкус и хороший тон, чтобы в нужном месте применять pattern-matching, в нужном OOP, в нужном метапрограммирование. Т.е. нужно учится, учится и еще раз учится.
Вы правы на все 100%. Но разве есть язык, при программировании на котором учиться и учиться не надо?
E>Безусловно, кто-то будет этому рад и сможет использовать все возможности Nemerle в полном объеме без ущерба для себя и своих проектов. Так было с Lisp-ом, со Smalltalk-ом, так есть с C++. Я думаю, что так будет с Nemerle. Но может быть здесь так же сработает закон потребления пива и 80% возможностей Nemerle потребуется всего лишь 20% его аудитории. А оставшимся 80% пользователей нужны будут всего лишь 20%, как то вывод типов и локальные функции (для уменьшения объема кодирования в обычных условиях).
Вернее всего так и есть.
E>Но ведь есть еще 80% неиспользованных возможностей -- их обязательно нужно будет как-то использовать. И может быть кто-то сможет объяснить, какие факторы не позволят функциональность Nemerle употребить во вред?
Есть способы ограничить употребелние макросов. Исключить употребление во вред остальных средств языка возможности нет. Это же касается и всех остальных языков.
E>Есть такой феномен: популярность получают языки, которые создаются для работы, для удовлетворения своих собственных сиюминутных нужд. C, C++, Perl, Python, Ruby, Java (наверное и C# сюда же попадает). Как только к языку прикладывается какая-то наука (Pascal, Oberon) или комитет (Ada), как все сразу портится.
Мне кажется это упрощенная трактовка фактов. Язык, к которому вообще не прикладывалась наука вообразить довольно сложно. Вы, возможно, имели в виду академические языки? По моему, академические языки Вами небыли названы. Это prolog или haskell. Для академического языка задается строгий формализм. Pascal — это средство популяризации структурного программирования. Oberon -очередной манифест пуризма. К науке они имеют точно такое же отношение как Java или C#, но, наверное, несколько большее, чем Perl.
И насчет языков Ада. Я сильно сомневаюсь, что на Ada пишут меньше, чем на Ruby.
E>Чем это объясняется я не знаю, но факты упрямая вещь.
Факты — упрямая вещь. Вот только куда девать эти гекатомбы наколеночных языков? Я говорю о том, что невозможно предсказать, какой из языков сделанных на коленке станет популярным. А большинство именно такие. Nemerle в том числе, кстати. Ни на академический, ни на комитетский этот язык совершенно не похож.
K>>Чем руководствуются создатели Оберона мне совершенно не понятно. Тоесть я догадываюсь, что они ориентируются на пуристов, но и с этим мне не все ясно.
E>У меня такое же впечатление. Они занимаются исследованиями.
Все исследования в этой области относятся к 60-м годам. Oberon это не научное явление, а целиком и полностью инженерное. У меня впечатление, что это неудачная попытка сделать язык простой как две копейки. Ну а java — удачная. Смысла в этом немного, по моему. Все равно сложность языка обычно теряется например даже рядом со сложностью платформы.
E>Про то, что создатели Nemerle выставляю себя умниками я и не утверждал. Мое мнение в том, что они делают язык для людей своего уровня. А таких немного по определению.
А что, те, кто делают языки "для работы, для удовлетворения своих собственных сиюминутных нужд", рассчитывают на людей не своего уровня? Как то это все противоречиво.
Я вообще сам считаю, что nemerle с макросами это мощьная, сложная и достаточно опасная штука. Но написание макросов Nemerle это уже первый дан и выше. Почти у каждого языка есть опасный более высокий уровень сложности.
Nemerle только с теми макросами, что входят в стандартную библиотеку — довольно безобидная штука, но при этом весьма выразительная.
Кроме того, слухи о мощи макросов Nemerle обычно сильно преувеличены и превратились в какие-то истории ужасов.
Синтаксис на отступах к ним отношения не имеет. list comprehension и такие вот строки $"" — частично реализуются макросом, а частично компилятором. Никаких сокрушительных изменений в синтаксисе на них, пожалуй, не сделать.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll