Здравствуйте, WolfHound, Вы писали:
V>>Профессорство за знание языков, слава богу, не дают.
WH>Человек, преподающий программирование обязан знать множество языков.
Тебя и Влада послушать, так получится, что любое множество изученных языков без Nemerle является нерепрезентативным.
WH>И ответ "не хочу" на предложение прочитать статью, описывающую техники переднего края должен быть не мыслим.
WH>Но Дворкин мне именно это и заявил.
WH>Лаптев на предложение почитать про немерле сказал примерно тоже самое но другими словами.
Лаптев сказал, если я не путаю, что синтаксическим макросам сто лет в обед.
V>>Язык реализации — это последнее, что интересует. Вернее, не интересует никогда.
WH>Ну да... конечно.
WH>И после того как человек в это начинает верить получается всякая байда типа компиляторов на С.
Кто куда чем стоял?
V>>Для примера, Лисп тоже весьма проблемный язык, как и Пролог, и не зря есть куда как более "продвинутые" современные их аналоги, однако же их успешно преподают на курсе "языки обработки знаний", потому как если студент поймет как работает программа на Лиспе и Прологе, он поймет и принцип работы более современных поделок.
WH>Ага, конечно.
Угу, именно так.
WH>Вот тебе кусочек кода. https://code.google.com/p/nemerle/source/browse/nemerle/trunk/snippets/peg-parser/Nemerle.Peg.Macros/Optimizer/Optimizer.OptimizeRule.n
WH>Прикинь как он будет выглядеть на С++.
За такую лапшу нужно отлучать от клавиатуры. Вложенные match доставляют особо. Не, знаешь, такой ценой добиваться сокращения объёма кода — это себе дороже. Пусть код будет втрое длиннее, но хоть сгруппировали бы по ветвлениям одного уровня. Это был раз. А два, я, например, не вижу принципиальной разницы между:
| Not(Not(rule)) => optimize(Rule.And(r.Location, rule))
и совершенно банальным:
else if (match(rule, Not(Not())) { return optimize(And(r.Location, rule)); }
Совпадения имён случайные, ни один кролик во время прикидок не пострадал.
Так что, подозреваю, что в изображении подобного кода на C++ ничего чудовищного не будет.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!