Недавно стал интересоваться Nemerle, в одной статье натолкнулся на пример макроса, который используется как атрибут в C# для сериализации класса в XML файл.
С другой стороны, как я понял, макросы nemerle можно использовать только в самом nemerle? И в статье данный код был помещён только ради примера?
Если макросы можно использовать в C# где можно узнать об этом по подробнее?
На rsdn'e нашёл только "обрезанную" версию статьи на эту тему...
30.01.07 18:09: Перенесено модератором из 'Декларативное программирование' — IT
Здравствуйте, IT, Вы писали:
AN>>С другой стороны, как я понял, макросы nemerle можно использовать только в самом nemerle? IT>Правильно, только в самом.
Теоритически, наверное можно так. Пишем код на C# с макросами немерла, но компилим не шарповским компилятором, а конвертим C# в Nemerle и компилим немерловский код. Но ИМХО изврат
Здравствуйте, ie, Вы писали:
ie>Здравствуйте, IT, Вы писали:
AN>>>С другой стороны, как я понял, макросы nemerle можно использовать только в самом nemerle? IT>>Правильно, только в самом.
ie>Теоритически, наверное можно так. Пишем код на C# с макросами немерла, но компилим не шарповским компилятором, а конвертим C# в Nemerle и компилим немерловский код. Но ИМХО изврат
Да, это точно изврат жалко конечно, что такой возможности нет..
ок. всем спасибо. тема закрыта
AN>>>>С другой стороны, как я понял, макросы nemerle можно использовать только в самом nemerle? IT>>>Правильно, только в самом.
ie>>Теоритически, наверное можно так. Пишем код на C# с макросами немерла, но компилим не шарповским компилятором, а конвертим C# в Nemerle и компилим немерловский код. Но ИМХО изврат AN>Да, это точно изврат жалко конечно, что такой возможности нет.. AN>ок. всем спасибо. тема закрыта
я тебе посоветую другое: выдели в своем проекте часть, в которой хочешь использовать макросы,
сконвертируй её утилитой cs2n в немерле-код, и пользуйся макросами на здоровье
или можно даже без конвертации обойтись, просто пиши новый код преимущественно или частично на немерле
PI>я тебе посоветую другое: выдели в своем проекте часть, в которой хочешь использовать макросы, PI>сконвертируй её утилитой cs2n в немерле-код, и пользуйся макросами на здоровье PI>или можно даже без конвертации обойтись, просто пиши новый код преимущественно или частично на немерле
хмм. тоесть вообще, с расчётом на будущее, стоит переходить на немерл?
честно говоря, у меня о нём сложилось впечатление как о "вспомогательном" языке, в котором есть некоторые "вкусности" которых не имеет C#(до выхода C#3? или 4)
Здравствуйте, AndrewNeprokin, Вы писали:
PI>>я тебе посоветую другое: выдели в своем проекте часть, в которой хочешь использовать макросы, PI>>сконвертируй её утилитой cs2n в немерле-код, и пользуйся макросами на здоровье PI>>или можно даже без конвертации обойтись, просто пиши новый код преимущественно или частично на немерле AN>хмм. тоесть вообще, с расчётом на будущее, стоит переходить на немерл? AN>честно говоря, у меня о нём сложилось впечатление как о "вспомогательном" языке, в котором есть некоторые "вкусности" которых не имеет C#(до выхода C#3? или 4)
ну смотри, на вопрос "переходить на немерле или не переходить" можно дать очень хитрый и прравильный ответ:
1. на немерле можно писать так же, как на с#, только нужно запомнить несколько простых правил:
— тип переменной или функции записывается не слева, а справа — через двоеточие
— перед переменной нужно написать def
— чтобы использовать return, прописать uses Nemerle.Imperative;
— еще несколько простых правил
2. чтобы реально внедрить немерле в производственный процесс, установить интеграцию со студией
PI>ну смотри, на вопрос "переходить на немерле или не переходить" можно дать очень хитрый и прравильный ответ:
а, и самое главное подчеркну: вот у тебя сейчас есть солюшен в студии, в нем несколько проектов
заведи еще один проект в том же солюшене на немерле — библиотеку
и просто когда соберешься делать "новый" класс какой нибудь — попробуй напиши его на немерле
класс, который ты напишешь на немерле, можно так же легко использовать в с#-коде других проектов, как будто он был бы написан на с#
Здравствуйте, AndrewNeprokin, Вы писали:
AN>хмм. тоесть вообще, с расчётом на будущее, стоит переходить на немерл? AN>честно говоря, у меня о нём сложилось впечатление как о "вспомогательном" языке, в котором есть некоторые "вкусности" которых не имеет C#(до выхода C#3? или 4)
Так и есть. Это вспомогательный язык который надо использовать если хочешь меньше работать руками (долбить тупой код), а бльше гловой.
Если серьзно, то на сегодня есть только два аспекта в котором Немерле уступает Шарпу:
1. Unsafe-режим. Он попросту отсуствует в Немерле.
2. Поддержка IDE. Над последним мы как раз работаем сейчас.
В остальном Немерле — это надмножество Шарпа. Причем после освоения этого надмножества вернуться обратно уже неохота.
Макросы же это тяжелая артилерия для автоматизации рутинных процессов и для создания встроенных DSL-ей (микро-языков) позволяющих поднять уровень разработки.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
рассчитана на C#-програмиста и содержит список отличий между C# и Nemerle. Их конечно можно найти и на сайте Nemerle, но оны разбросаны по разным страницам (страница на ктороую ты ссылашся не полна).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
рассчитана на C#-програмиста и содержит список отличий между C# и Nemerle. Их конечно можно найти и на сайте Nemerle, но оны разбросаны по разным страницам (страница на ктороую ты ссылашся не полна).
а, ну да
замечу, по макрописанию информации мало, и писать их (сначала) болезненно
Здравствуйте, VladD2, Вы писали:
VD>Если серьзно, то на сегодня есть только два аспекта в котором Немерле уступает Шарпу: VD>1. Unsafe-режим. Он попросту отсуствует в Немерле. VD>2. Поддержка IDE. Над последним мы как раз работаем сейчас.
3. Баги компилятора. Хотя надо признать, с каждой ревизией их меньше и меньше.
Здравствуйте, AndrewNeprokin, Вы писали:
AN>хмм. тоесть вообще, с расчётом на будущее, стоит переходить на немерл? AN>честно говоря, у меня о нём сложилось впечатление как о "вспомогательном" языке, в котором есть некоторые "вкусности" которых не имеет C#(до выхода C#3? или 4)
Ну нет, ТАКИЕ вкусности в шарпе если и будут, то версии к двадцатой . Во многом, думаю, это объясняется консерватизмом девелоперов (которые размышляют точно так же, как и Вы), а вместе с ними и MS, которые на этих девелоперов ориентируются. Важно понять, что любой язык — это машина тьюринга со вкусностями. И любые разговоры о принципиальном различие — это вопрос субъективный. Так вот, я считаю, что C# и Nemerle имеют принципиальные различия. Хотя бы потому, что Nemerle поддерживает функциональный стиль. Можно попытаться и на C# писать в функциональном стиле, но с таким же успехом можно писать в функиональном стиле на языке brainfuck. Ведь если я допускаю смысловую ошибку с точки зрения функционального стиля в программе на C#, то компилятор не будет ругаться. Да и если неприменим или ненужен функциональный стиль, в Немерле есть вещи, недостижимые в C# в принципе. Уж если и сравнивать Немерле с чем-то по "Вкусностям", так это с ML, Хаскелем или Лиспом. А вообще, нужно просто побольше "Декларативное программирование" писать — тут товарищи уже очень много споров развели на сей счёт.
Здравствуйте, konsoletyper, Вы писали:
K>Здравствуйте, AndrewNeprokin, Вы писали:
AN>>хмм. тоесть вообще, с расчётом на будущее, стоит переходить на немерл? AN>>честно говоря, у меня о нём сложилось впечатление как о "вспомогательном" языке, в котором есть некоторые "вкусности" которых не имеет C#(до выхода C#3? или 4)
K>Ну нет, ТАКИЕ вкусности в шарпе если и будут, то версии к двадцатой . Во многом, думаю, это объясняется консерватизмом девелоперов (которые размышляют точно так же, как и Вы), а вместе с ними и MS, которые на этих девелоперов ориентируются.
[andrew] если консерватизм и есть, то он вполне ообснованный. "для себя" мне нравится и интересно изучать новые языки, но для проектов, особенно сколь нибудь крупных, к выбору языка и платформы ИМХО, стоит относиться более серьёзно.
Важно понять, что любой язык — это машина тьюринга со вкусностями. И любые разговоры о принципиальном различие — это вопрос субъективный.
[andrew] о принципиальном различии да. Но в данном случае стоит вопрос об удобстве и скорости разработки. В этом немерле опережает C# в плане разработки бизнес логики. Но UI и многие другие вещи сейчас удобнее реализовывать на C#. В будущем, вполне возможно, ситуация поменяется в сторону полного перехода на немерл. Но сейчас...
Так вот, я считаю, что C# и Nemerle имеют принципиальные различия. Хотя бы потому, что Nemerle поддерживает функциональный стиль. Можно попытаться и на C# писать в функциональном стиле, но с таким же успехом можно писать в функиональном стиле на языке brainfuck. Ведь если я допускаю смысловую ошибку с точки зрения функционального стиля в программе на C#, то компилятор не будет ругаться. Да и если неприменим или ненужен функциональный стиль, в Немерле есть вещи, недостижимые в C# в принципе. Уж если и сравнивать Немерле с чем-то по "Вкусностям", так это с ML, Хаскелем или Лиспом. А вообще, нужно просто побольше "Декларативное программирование" писать — тут товарищи уже очень много споров развели на сей счёт.
[andrew] Согласен особенно в плане макросов. Нормальные статьи можно пересчитать по пальцам...
Кстати. Ещё один момент: интересно, как обстоит дело с nemerle на западе?
Здравствуйте, PhantomIvan, Вы писали:
PI>замечу, по макрописанию информации мало, и писать их (сначала) болезненно
Ага, особенно не хватало таблицы splice-ов (типа :dyn или :usesite) с подробным описанием, что они делают.
Здравствуйте, AndrewNeprokin, Вы писали:
AN> особенно в плане макросов.
На самом деле макросы это то на что покупаются люди из императивного мира. Но как только они начинают серьезно использовать Немерле, то оказывается, что проме макросов в языке очень много вкусного.
AN> Нормальные статьи можно пересчитать по пальцам...
Статьи будут. Все будет. Тольк дайте время.
AN>Кстати. Ещё один момент: интересно, как обстоит дело с nemerle на западе?
Точно так же как и на востоке. Кое-кто его видел, но не более того.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
АП>>Ага, особенно не хватало таблицы splice-ов (типа :dyn или :usesite) с подробным описанием, что они делают.
VD>Их описание можно найти поиском по их сайту.