вторник, 22 марта 2011 г.

Магия Nemerle.

"Но магия, истинная магия, подвластна лишь тем, кто говорит на языке Хардик, или на Древнем языке, из которого он вырос."

(C) Урсула Ле Гуин, "Волшебник Земноморья"


Вот свеча. И вот бубен, которым вам предстоит ее зажечь. А вот вы, ошарашенно смотрите на меня и думаете, что я окончательно спятил.

Отнюдь.

Все чаще, то тут, то там, я натыкаюсь на вопрос о магии в Nemerle от тех, кто только-только познакомился с ним. Мол, во всех популярных ныне языках есть те или иные приемчики бла-бла-бла, позволяющие творить чудеса, выходя при этом за рамки возможностей бла-бла-бла, предоставляемых компилятором или средой исполнения. Разумеется есть. Знаете, как это выглядит? Вы начинаете изучать язык: долго блуждаете по лабиринтам его возможностей, изучаете подводные камни их использования, учитесь обходить грабли, старательно расставленные для вас создателями языка. Вы можете потратить на это месяцы, можете годы. Но рано или поздно, вы выходите из лабиринта на живописную поляну со стоящей посередине хижиной мага. Вы заходите в нее, оглядываетесь. Вот свеча. И вот бубен, которым вам предстоит ее зажечь. Книга с сакральными знаниями, к которым вы так долго шли. Вот в принципе и все, что досталось вам от старого обитателя этой хижины (кстати, никто из вас не задумывается, куда он подевался и почему в этой хижине все покрылось пылью и паутиной). Вы изучаете содержимое книги, берете в одну руку бубен, в другую свечу и начинаете выписывать джигу-дрыгу по всей хижине, старательно повторяя выученное заклинание и не забывая подбрынькивать в такт, теперь уже вашим, колдовским бубном. И о чудо! Не сразу, не с первой попытки, но на фитильке свечи, вы видите едва заметное алое пятнышко и тоненькую струйку призрачного дыма, исходящую от фитилька. Wow. Вы уже не офисный хомячок-кодер, вы - Маг, совершивший невозможное, достигший пределов познания высших искусств!

Ну и нахрена вам это все было нужно, когда у вас в кармане все это время лежала зажигалка?

В Nemerle тоже есть магия. Хотите, чтобы я показал ее? Для этого мне также не понадобится написать ни строчки кода. Смотрите... Вы начинаете изучать язык: почти сразу после входа в лабиринт, вы видите маленькую хрустальную ступеньку, появившуюся из ниоткуда в полуметре от земли. Вы осторожно наступаете на нее и появляется еще одна, чуть выше. Наступив на нее, вы рождаете следующую, потом еще одну, еще и еще... И вот, наконец, где-то высоко в облаках, вы выходите к хрустальному замку, парящему высоко над землей и строящемуся буквально у вас на глазах. Вы входите в него: коридоры в нем появляются по мановению вашей мысли. По ним вы выходите в центральный зал и, оглядываясь... не видите ни свечи, ни бубна. Облом, да?

- Эээ! А где тут магия-то?, - возмущенно и разочарованно восклицаете вы.

Дружок! Вокруг себя оглянись...

10 коммент.:

Kori комментирует...

Несмотя на детальный анализ данного текста, я так и не смог составить чёткое представление об обсуждаемой проблеме в силу вожникшего когнитивного диссонанса.

Crash комментирует...

Смысла в этом тексте определённо нет :) Но красиво.

jazzer комментирует...

Вообще если прочитать книгу, то можно узнать, что Неммерле плохо кончил - погиб, открыв дорогу последователю. И я не думаю, что выбор названия для языка ничего такого не имел в виду, учитывая, что ничем более Неммерле в книге не прославился.
Так что... чем там оригинальыне создатели Немерле занимаются сейчас в мелкософте? Готовят убийцу Немерле? ;)

Кочетков Владимир комментирует...

@Kori: А что именно вызвало противоречие?

Кочетков Владимир комментирует...

@Crash: Смысл есть и очень простой: то, что доступно в других языках в малых дозах и исключительно через шаманство, является самой сутью Nemerle, тем, чем он пропитан сам, насквозь.

Но, видимо, в погоне за метафорами, я как-то сильно увлекся ;)

Кочетков Владимир комментирует...

@jazzer: я ее как бы читал :) И, безотносительно языка не согласен с тем, что он плохо кончил. Мы все рано или поздно кончим и хорошо это будет или плохо, зависит как раз от того, кто займет наше место, какой след мы оставим после себя. Я так считаю, по крайней мере.

Возвращаясь к языку: да, nemerle - прототип. По крайней мере, именно такое впечатление сложилось у меня после первого знакомства с исходниками компилятора. Полигон для обкатки идей. И nemerle-2 (а над ним уже сейчас идет активная работа), строится именно с учетом недостатков настоящего языка - как технологических, так и идеологических. Вдруг он и станет тем самым последователем? ;) А может, им станет другой язык, реализованный с помощью Nemerle (благо, Nemerle.PEG позволяет проводить исследовательскую работу в области компиляторов даже тем, кто весьма далек от компиляторостроения)? Поживем - увидим.

Что же касается поляков, то в MS работают только двое - Павел и Михаль. Первый архитектор, второй занимается исследованиями в MSR в области вывода формальных доказательств. Использует кстати и Nemerle в своей работе. Камиль - работает в Google архитектором. Но мне неизвестно, чтобы кто-то из них работал над новым языком.

Кочетков Владимир комментирует...

@jazzer: я ее как бы читал :) И, безотносительно языка не согласен с тем, что он плохо кончил. Мы все рано или поздно кончим и хорошо это будет или плохо, зависит как раз от того, кто займет наше место, какой след мы оставим после себя. Я так считаю, по крайней мере.

Возвращаясь к языку: да, nemerle - прототип. По крайней мере, именно такое впечатление сложилось у меня после первого знакомства с исходниками компилятора. Полигон для обкатки идей. И nemerle-2 (а над ним уже сейчас идет активная работа), строится именно с учетом недостатков настоящего языка - как технологических, так и идеологических. Вдруг он и станет тем самым последователем? ;) А может, им станет другой язык, реализованный с помощью Nemerle (благо, Nemerle.PEG позволяет проводить исследовательскую работу в области компиляторов даже тем, кто весьма далек от компиляторостроения)? Поживем - увидим.

Что же касается поляков, то в MS работают только двое - Павел и Михаль. Первый архитектор, второй занимается исследованиями в MSR в области вывода формальных доказательств. Использует кстати и Nemerle в своей работе. Камиль - работает в Google архитектором. Но мне неизвестно, чтобы кто-то из них работал над новым языком.

jazzer комментирует...

Вообще если прочитать книгу, то можно узнать, что Неммерле плохо кончил - погиб, открыв дорогу последователю. И я не думаю, что выбор названия для языка ничего такого не имел в виду, учитывая, что ничем более Неммерле в книге не прославился.
Так что... чем там оригинальыне создатели Немерле занимаются сейчас в мелкософте? Готовят убийцу Немерле? ;)

Neftedollar комментирует...

Очень сильно. Можно с примерами кода? = )

vkochetkov комментирует...

Чуть-чуть примеров есть тут: http://vkochetkov.blogspot.com/2011/06/nemerle.html , а на RSDN (http://rsdn.ru/forum/nemerle/) - можно практически любую тему или статью брать, на выбор :)