Re[3]: Мои пять козявок на тему Почему у Nemerle нет будущего
От: Vermicious Knid  
Дата: 11.08.06 16:45
Оценка: 74 (4) +4 -1 :))
Здравствуйте, Lloyd, Вы писали:

L>Посмотрите на lisp, проще не придумашь при всем желании, только вот когда читаешь какую-нить книжку по нему, крыша почему-то начинает плавиться.


У меня не начинает. Моя крыша натренирована использованием и анализом исходников библиотек из boost. imho после этого расплавить крышу практически ничем невозможно. Разве что прологом, хаскелом, Curry(пролог+хаскел) и им подобным вещам, но с ними, как и с лиспом, я познакомился несколько раньше чем с boost(хотя в хаскел я сильно не углублялся, испугался потенциальной возможности расплавить крышу окончательно). И это знакомство кстати значительно облегчило понимание метапрограммирования на шаблонах.

Так вот более неповоротливого монстра, чем C++ пока еще не создано, и Nemerle не обладает достаточными "выразительными" возможностями чтобы наплодить столько монструозного кода, сколько написанно на C++. Офигительные возможности текстовых макросов и метапрограммирования на шаблонах C++ на Nemerle практически нечем восполнить. Дело в том, что макросы Nemerle спроектированы совершенно иначе и для других задач, и им нет абсолютно никаких аналогов в C++.

А ведь на нем пишут и будут писать еще очень долго. Да и boost в своих разработках используют очень многие C++ программисты и компании. Я удивляюсь — почему же C++ + boost еще не убил например Adobe? Ведь если верить здешним товарищам-провидцам, отметившимся в этой теме, у него есть для этого все возможности и основания. Возможности Nemerle по усложнению кода ничто по сравнению с бустом и C++. Особенно это касается метакода. Именно метакод на Nemerle гораздо проще, читабельнее и компактнее.

L>Также и с неменле — язык то простой, но система макросов может его полностью преобразить и сделать на базе него совершенно другой язык, и есть очень большие сомнения, что разработчики макросов не сделают из простого немерле неповоротливого монстра.


Не может. Во-первых в Nemerle нельзя изменить синтаксис, только дополнить. Во-вторых относительно большие возможности дополнения синтаксиса есть только на уровне выражений. И то необходимо ввести некий уникальный идентификатор с которого начинается макрос. А top-level синтаксис ты вообще сильно не расширишь, сколько не старайся.

Сделать на базе Nemerle совершенно другой язык невозможно. Единственное что можно — встроить в него другой язык, и то точка встраивания будет обладать уникальнами свойствами и будет хорошо различима. Можно например представить себе такую ситуацию — некий идиотъ непонятно зачем решил встроить в Nemerle Lisp, посмотрев на intelib.org. Так как он идиот, то делает это так:

macro lisp(code : Token) syntax("l", code)
{
 // .. bla-bla-bla
}


В итоге идиот теперь может писать так:
module M
{
  Main() : void
  {
    // такой макрос можно использовать только в контексте выражений
    l (defun hello-world () (System.Console.WriteLine "ain't me an idiot?"));
    hello_world();
  }
}


Одна только проблема — идиотизм этого товарища сразу же станет очевиден. Во-первых dsl в виде лиспа в Nemerle совершенно не нужен и не к месту. Во-вторых все идентификаторы с имененм l тут же станут невалидными. При встрече с ними компилятор будет сообщать недовольным коллегам идиота о существующем макросе, который ввел это ключевое слово.

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

Gaperton здесь абсолютно не прав. Питоновский синтаксис и list comprehensions в Nemerle невозможно было добавить помощью макросов(питоновский синтаксис абсолютно невозможно, а list comprehensions невозможно в том виде, в котором они присутствуют в Nemerle), не говоря уже о "том, что в других языках увидели". Для list-comprehensions действительно использованы макросы, но лишь как инструмент для кодогенерации(так как это просто удобнее писать и отлаживать, чем при непосредственном внедрении в компилятор), их синтаксис же жестко вшит в компилятор,и никакими макросами меняющими синтаксис там не пахнет.

Я вообще не понимаю эту тенденцию демонизации Nemerle. Абсолютно без всякого знания предмета осуждения, высказываются мысли о тех или иных фатальных недостатках Nemerle, и идея о необходимости или неизбежности смерти Nemerle. Честное слово мне это напоминают инквизицию. Собралась некая группа инквизиторов и клянут на чем свет стоит некую ужасающую "ересь Nemerle". Особенно отличился в этом Гапертон, высказавший мысль, что увлечение Nemerle это симптом некой болезни и что людей с любым упоминанием Nemerle в резюме не стоит брать на работу.Такие заявления по-моему это элементарное неуважение к участникам форума.

Видимо в Microsoft не знали о том, какую страшную ересь они спонсируют в лице проекта Nemerle. А совет Гапертона очень бы пригодился Microsoft Research, когда они принимали решение взять на стажировку главного разработчика Nemerle(в качестве PhD-студента).

По-моему именно подобные инквизиторы и иные беспросветные ретрограды, которых в обилии можно встретить в том числе на rsdn и есть главное препятствие для Nemerle. Извините, но вы просто реально достали. Именно вы и подобные вам являятесь главной и единственной угрозой будущему Nemerle. Просто поразительно насколько глубокое неприятие вызывает он у некоторых товарищей. Не нравится Nemerle — отойдите в сторону и не мешай развиваться ему и заинтересованной в нем прослойке программистов. Ваши пророчества и размышления на тему Nemerle никому не нужны. Удовлетворяйте нужду собственного самоутверждения в другом месте и по другому поводу.

Если Nemerle не приобретет популярность, то на его месте просто будет другой похожий язык. Microsoft и Sun в очередной раз навяжут свое развитие темы современных императивных языков, на этот раз с элементами ФЯ и расширяемости. А ведь Nemerle мог бы быть прекрасной и гораздо более лучшей альтернативой C# N.0.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.