Здравствуйте, VladD2, Вы писали:
VD>И более того, он позволяет писать в функциональном стиле не хуже чем ML или Хаскель.
Ого, неслабое заявление.
Только необоснованное. Если взять Nemerle как _язык_, то он уступает и ML (особенно MetaML/Ocaml) и уж тем более хаскелю. ни такой развитой системы типов, ни контроля за редукционной стратегией (если я не упустил ничего) ни такого уровня формализма. Да первая же попытка написать какой-нибудь хитроумный комбинатор даст понять кто где.
А если взять компилятор немерля с этими на каждом шагу в кассу и не в кассу понапиханными макросами, так все еще хуже, как ни удивительно. Если кто-то несогласен, я с радостью услышу опровержение и рассказ как удобно на самом деле делать композицию из макроса и функции.
Кстати у common lisp'a та же проблема и даже после Scheme он часто вызывает лишь глухое раздражение, несмотря на более мощные макросы.
Да и сама по себе система макросов — сомнительная мегафича. Кроме того, что их выразительная мощь на самом деле сильно ограничена (самим фактом работы их на уровне AST и относительной их локальности и непредсказуемости — да, если они полны по-тьюрингу на них можно сделать все — но в какой-то момент сложность все равно сделает это бессмысленным), еще и сам по себе этот подход используется десятки лет и приделать макросистему к любому языку дело моментальное. Тем более что почти для любого языка уже готовых макродвижков как минимум дюжина. В Окамле даже встроенный есть. В хаскеле встроенных сразу три штуки на выбор.
Правда нужны они тому же хаскелю как собаке пятая нога — чем им заниматься в ленивом языке с каррингом — это нужно очень сильно думать, чтобы придумать. А когда придумаешь — тут-то они и бесполезны, т.к большинство таких задач сводятся к нетривиальной манипуляции с типами.
Потому если всерьез кому нужно реально что-то реально сложное, то используют term rewriting трансформацию. А вот здесь уже макросы ничем похвастаться не могут. MSP типа MetaOcaml еще как-то, но не макросы.
В общем конечно по сравнению с C# оно огого, но не боле.
VD>В общем, Nemerle — это отличная работа! И будет очень жаль если она пройдет мимо мэйнстрима. При должной раскрутке и "техническом оснащении" (поддержке IDE, наличии полноценной помощи, книг и т.п.) он может прочно и на долго занять место лидера среди мэйнстрим
Кстати если под IDE понимаются все эти рефакторинги и интеллисенсы — то в чем вообще смысл?
IDE как design-time metaprogramming явно и не имеет смысла и конфликтует с compile-time.
Причем где-где, а на этом уровне (вбитие километров повторяющегося кода и тп) макросы по возможностям кроют с лихвой.
Ну в самом деле — идеальный код не требует дублирования и необходимости сложной навигации просто в силу малой своей избыточности.
Макросы в общем для этого в основном и сделаны (ну еще, конечно, чтобы откладывать вычисления, например, но это мелочи по сравнению).
Формально это кстати очень просто обосновывается — во время compile-time в любом случае больше информации, чтобы оставлять работу кодогрузчику на уровне пользователя ну и следовательно таких же возможностей как раньше уже в IDE не получишь. В рантайме еще больше, потому и IDE для динамических языков — это обычно одно название.
Ну я вообще к тому, что аутлайн, фолдинг, подсветка и replace c регекспами есть везде, а большего на метауровне и ненужно. А то лишь когнитивный диссонанс получается.
VD>языков общего назначения. При этом Васик мог бы занять нишу языка для прикладников и "домохазяек", С/С++ нишу битодробилок, а Nemerle займет нишу котрую сейчас занимают C# и С++, т.е. языка общего назначения для решения нетривиальных задач.
Как-то сомневаюсь. Скорее к тому моменту, когда бренд Nemerle раскрутится, на дотнете можно станет пускать нормально окамл и хаскель и немерлю придется туговато. учитывая, что сейчас, например, большинство случаев отказа от них связано с отсутствием важных библиотек типа развивающегося и поддерживаемого гуя, а user- & codebase гораздо больше. Ну и еще один момент — дотнет — это вообще очень маленький сегмент всего IT и использовать языки, которые есть только на нем сильно менее целесообразно, чем те, что есть везде.
Ну и там для некоторых(большинства) нетривиальных задач как использовали пролог, лисп, APL и фортран, так и будут продолжать.
Ну по крайней мере пока некоторые не будут вытеснены монстрами а-ля Maude и ASF+SDF