Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.12.08 19:10
Оценка: 83 (9) +1
Дисклеймер:
1) Все сказанное ниже это мое личное мнение в моих конкретных условиях. На истину я не претендую.
2) Все сказанное относится только и исключительно к промышленному программированию в составе команд с размером > 3 человек и состоящих не исключительно из топа разрабочиков.
3) Попытки обсудить меня лично, мою квалификацию, опыт или мое психическое и психологическое состояние, а так же прочие медицинские и моральные вопросы, аутоматично приводят к тому, что попытавшиеся товарищи идут в лес.

Итак, сабж.
1) На практике я наблюдаю, что даже новые стандартные фичи языка используются очень и очень неспешно и с неохотой. Даже итераторы, которые еще в 2004 году появились, у многих вызывают изумление. Исходя из этого, я считаю, что серьезные изменения в самом языке, заточенные под конкретный проект, в промышленном программировании в большинстве случаев неприемлемы. И только в очень больших платформах, там где сейчас применяются собственные языки программирования, внесение изменений в язык на уровне платформы может быть оправдано.
При этом, обращаю внимание, ничего против того, чтобы использовать идеологию Немерле для построения собственно языка под конкретный стандарт я не имею. Т.е. суть не в конкретной технологии, а в области ее использования.
Итого — внесение изменений в компилятор для улучшения языка лично для меня с точки зрения промышленного программирования малополезно (при этом побаловаться для проектов, рассчитаных на одну-две хари фо фан я как бы и не против).
2) Еще одна сфера применения МП — создание DSL. И здесь есть имеем другую проблему — основной смысл применения DSL в моем случае — не расширение возможностей существующих языков, а наоборот, их сужение и жесткое ограничение заданными рамками. Для того чтобы минимизировать спектр возможных проблем и объем знаний, требуемх для использования. И для этого, как мне видится, хоть Nemerle и можно использовать, но подходит он для этих целей не очень, потому что даже его база весьма и весьма функциональна, хоть и маленькая совсем, а написание кода, проверяющего, нет ли чего лишнего в AST, очень непростая задача.
Короче, идеология, применяемая в MPS, DSL Tools, Oslo для этой задачи представляется мне более подходящей.
3) Следующая сфера применения кодогенерации (язык не поворачивается назвать это метапрограммированием) — визарды в средах разработки, которые генерируют первоначальный код. Не очень представляю, как тут может помочь Немерле, да и использование специального языка тут явно перебор.
4) Генерация кода на основе DSL. Пример такого применения — DSL Tools. Вот здесь, в принципе, отчасти использование Немерле оправдано. Но есть тут одна засада. Дело в том, что разработка кодогенератора (любого, в том числе и по AST, с применением квазицитирования, паттерн-матчинга и алгебраических типов данных) нередко значительно сложнее, нежели написание генерируемого кода. И при поддержке, далеко не факт, что правка кодогенератора проще, чем модификация рукопашного кода при помощи современных средств рефакторинга.
5) Последний момент, который я хотел обсудить — это АОП, или даже, в более широком смысле, инструментирование и ускорение кода. Я понимаю, что ситуации могут быть разными, и наверное тот же BLToolkit выиграет от портирования на Немерле. Но вот в моих задачах сей процесс нужно проводить не при компиляции, а в момент деплоймента. Поясню: инструментируемый код представлен в виде бинарников и я не имею права требовать перекомпиляции прикладного кода, если у меня вдруг произошли изменения в сервере, которые требуют генерируемый код изменить. Соответственно, compile time техники Немерле тут совсем не подходят, просто потому что никаких исходников, которые Немерле будет компилировыать, нет.

P.S. Еще раз, если кто то в корне со мной не согласен, прежде чем бросаться писать возмущенный ответ и разгромить меня в пух и прах, обратите внимание на наличие и содержание дисклеймера.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re: Что меня не устраивает в МП в Nemerle
От: Lloyd Россия  
Дата: 25.12.08 20:37
Оценка: -1 :)
Здравствуйте, AndrewVK, Вы писали:

AVK>Итак, сабж.

AVK>...

Целиком и полностью поддерживаю по всем пунктам!
Re: Что меня не устраивает в МП в Nemerle
От: Константин Л. Турция  
Дата: 25.12.08 21:12
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Дисклеймер:

AVK>1) Все сказанное ниже это мое личное мнение в моих конкретных условиях. На истину я не претендую.
AVK>2) Все сказанное относится только и исключительно к промышленному программированию в составе команд с размером > 3 человек и состоящих не исключительно из топа разрабочиков.
AVK>3) Попытки обсудить меня лично, мою квалификацию, опыт или мое психическое и психологическое состояние, а так же прочие медицинские и моральные вопросы, аутоматично приводят к тому, что попытавшиеся товарищи идут в лес.

AVK>Итак, сабж.

AVK>1) На практике я наблюдаю, что даже новые стандартные фичи языка используются очень и очень неспешно и с неохотой. Даже итераторы, которые еще в 2004 году появились, у многих вызывают изумление. Исходя из этого, я считаю, что серьезные изменения в самом языке, заточенные под конкретный проект, в промышленном программировании в большинстве случаев неприемлемы. И только в очень больших платформах, там где сейчас применяются собственные языки программирования, внесение изменений в язык на уровне платформы может быть оправдано.

можно разобью на 2?

1. новые фичи осваиваются неохотно
2. для пром. девелопмента лучше следовать стандартам, вольности неоправданы

соглашусь частично только со 2м, тк если отталкиваться от п.1, то прогресс нафиг не нужен. макросы действительно хорошая штука, чтобы превратить код в кошмар. но я видел, как это делали используя обычные языки через жопу.

AVK>При этом, обращаю внимание, ничего против того, чтобы использовать идеологию Немерле для построения собственно языка под конкретный стандарт я не имею. Т.е. суть не в конкретной технологии, а в области ее использования.

AVK>Итого — внесение изменений в компилятор для улучшения языка лично для меня с точки зрения промышленного программирования малополезно (при этом побаловаться для проектов, рассчитаных на одну-две хари фо фан я как бы и не против).
AVK>2) Еще одна сфера применения МП — создание DSL. И здесь есть имеем другую проблему — основной смысл применения DSL в моем случае — не расширение возможностей существующих языков, а наоборот, их сужение и жесткое ограничение заданными рамками. Для того чтобы минимизировать спектр возможных проблем и объем знаний, требуемх для использования. И для этого, как мне видится, хоть Nemerle и можно использовать, но подходит он для этих целей не очень, потому что даже его база весьма и весьма функциональна, хоть и маленькая совсем, а написание кода, проверяющего, нет ли чего лишнего в AST, очень непростая задача.
AVK>Короче, идеология, применяемая в MPS, DSL Tools, Oslo для этой задачи представляется мне более подходящей.

пожалуй, но у немерле есть 2 преимущества: отсутствие интеропа, и компиляция, а не интерпретация, чем занимается большинство dsl (разве нет?).

AVK>3) Следующая сфера применения кодогенерации (язык не поворачивается назвать это метапрограммированием) — визарды в средах разработки, которые генерируют первоначальный код. Не очень представляю, как тут может помочь Немерле, да и использование специального языка тут явно перебор.


а что делать, если генерировать код нужно для имеющихся типов, дополняя их?

AVK>4) Генерация кода на основе DSL. Пример такого применения — DSL Tools. Вот здесь, в принципе, отчасти использование Немерле оправдано. Но есть тут одна засада. Дело в том, что разработка кодогенератора (любого, в том числе и по AST, с применением квазицитирования, паттерн-матчинга и алгебраических типов данных) нередко значительно сложнее, нежели написание генерируемого кода. И при поддержке, далеко не факт, что правка кодогенератора проще, чем модификация рукопашного кода при помощи современных средств рефакторинга.


не знаком с DSL Tools, так что тут промолчу

AVK>5) Последний момент, который я хотел обсудить — это АОП, или даже, в более широком смысле, инструментирование и ускорение кода. Я понимаю, что ситуации могут быть разными, и наверное тот же BLToolkit выиграет от портирования на Немерле. Но вот в моих задачах сей процесс нужно проводить не при компиляции, а в момент деплоймента. Поясню: инструментируемый код представлен в виде бинарников и я не имею права требовать перекомпиляции прикладного кода, если у меня вдруг произошли изменения в сервере, которые требуют генерируемый код изменить. Соответственно, compile time техники Немерле тут совсем не подходят, просто потому что никаких исходников, которые Немерле будет компилировыать, нет.


AVK>P.S. Еще раз, если кто то в корне со мной не согласен, прежде чем бросаться писать возмущенный ответ и разгромить меня в пух и прах, обратите внимание на наличие и содержание дисклеймера.
Re: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 25.12.08 21:22
Оценка:
Здравствуйте, AndrewVK, Вы писали:

Что подразумевается под словами "в моих задачах"? Из теста видно что это

Все сказанное относится только и исключительно к промышленному программированию в составе команд с размером > 3 человек и состоящих не исключительно из топа разрабочиков.


Я правильно понял?
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[2]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.12.08 21:30
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>1. новые фичи осваиваются неохотно


Скажем так, это стоит дополнительных денег.

КЛ>2. для пром. девелопмента лучше следовать стандартам, вольности неоправданы


Не очень понятно, если честно. При чем тут вольности? Выглядит как какая то эмпирика, а не истинная причина.

КЛ>соглашусь частично только со 2м, тк если отталкиваться от п.1, то прогресс нафиг не нужен.


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

КЛ>макросы действительно хорошая штука, чтобы превратить код в кошмар. но я видел, как это делали используя обычные языки через жопу.


Я ничего нигде не говорил о возможности превращения кода в жопу, это все очень субъективно. Дело не в этом.

AVK>>Короче, идеология, применяемая в MPS, DSL Tools, Oslo для этой задачи представляется мне более подходящей.


КЛ>пожалуй, но у немерле есть 2 преимущества: отсутствие интеропа


Ммм, а где в вышеприведенных технологиях интероп?

КЛ>, и компиляция, а не интерпретация, чем занимается большинство dsl (разве нет?).


Бывает ну очень по разному, и компиляция, и интерпретация, и вообще отсутствие выполнения в традиционном смысле. Тут надо понимать, что понятие DSL может быть очень широким, не обязательно это императивный универсальный язык. DSL Tools, к примеру, создает графические декларативные DSL (в качестве примера — редакторы Linq2SQL и EF объектов, редакторы UML в VS2010).
Если же наш DSL это универсальный текстовый язык описания алгоритмов с широким спектром возможностей, просто подрихтованый для специфических задач, то да, Nemerle-подобные технологии в подобном разрезе вполне интересны.

КЛ>а что делать, если генерировать код нужно для имеющихся типов, дополняя их?


В случае C# есть partial types и partial methods. Визарды не предназначены для повторных вызовов, если такое требуется, то это уже п.1.

КЛ>не знаком с DSL Tools, так что тут промолчу


Да дело то не в DSL Tools, а в создании генераторов сложных алгоритмов по простому описанию — генераторы моделей, парсеров и т.п.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[2]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.12.08 21:39
Оценка:
Здравствуйте, alvas, Вы писали:

A>Что подразумевается под словами "в моих задачах"?


Хм, по моему это вполне по русски. Подразумевается, что речь идет о тех задачах, с которыми сталкивался и сталкиваюсь именно я, и на глобальные обобщения на всю софтописательную индустрию и тенденции ее развития я не претендую. Что именно непонятно?

A>Я правильно понял?


Странный вопрос. Не знаю я, как ты понял.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[3]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 25.12.08 21:44
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

A>>Что подразумевается под словами "в моих задачах"?


AVK>Хм, по моему это вполне по русски. Подразумевается, что речь идет о тех задачах, с которыми сталкивался и сталкиваюсь именно я, и на глобальные обобщения на всю софтописательную индустрию и тенденции ее развития я не претендую. Что именно непонятно?


A>>Я правильно понял?


AVK>Странный вопрос. Не знаю я, как ты понял.


И вот как дальше обсуждать? Иду лесом...
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[3]: Что меня не устраивает в МП в Nemerle
От: Константин Л. Турция  
Дата: 25.12.08 21:44
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Константин Л., Вы писали:


КЛ>>1. новые фичи осваиваются неохотно


AVK>Скажем так, это стоит дополнительных денег.


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

КЛ>>2. для пром. девелопмента лучше следовать стандартам, вольности неоправданы


AVK>Не очень понятно, если честно. При чем тут вольности? Выглядит как какая то эмпирика, а не истинная причина.


Вольности, это клепать фреймворки и dsl-и на каждый чих

КЛ>>соглашусь частично только со 2м, тк если отталкиваться от п.1, то прогресс нафиг не нужен.


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


при чем тут мп от немерле?

КЛ>>макросы действительно хорошая штука, чтобы превратить код в кошмар. но я видел, как это делали используя обычные языки через жопу.


AVK>Я ничего нигде не говорил о возможности превращения кода в жопу, это все очень субъективно. Дело не в этом.


при том, что они дают возможность отойти от стандартов. за это, в первую очередь, его и ругают. этого ты и не одобряешь, имхо

AVK>>>Короче, идеология, применяемая в MPS, DSL Tools, Oslo для этой задачи представляется мне более подходящей.


КЛ>>пожалуй, но у немерле есть 2 преимущества: отсутствие интеропа


AVK>Ммм, а где в вышеприведенных технологиях интероп?


ок, гарантированное отсутствие интеропа. этими тулами dsl не заканчиваются, правда?

КЛ>>, и компиляция, а не интерпретация, чем занимается большинство dsl (разве нет?).


AVK>Бывает ну очень по разному, и компиляция, и интерпретация, и вообще отсутствие выполнения в традиционном смысле. Тут надо понимать, что понятие DSL может быть очень широким, не обязательно это императивный универсальный язык. DSL Tools, к примеру, создает графические декларативные DSL (в качестве примера — редакторы Linq2SQL и EF объектов, редакторы UML в VS2010).

AVK>Если же наш DSL это универсальный текстовый язык описания алгоритмов с широким спектром возможностей, просто подрихтованый для специфических задач, то да, Nemerle-подобные технологии в подобном разрезе вполне интересны.

КЛ>>а что делать, если генерировать код нужно для имеющихся типов, дополняя их?


AVK>В случае C# есть partial types и partial methods. Визарды не предназначены для повторных вызовов, если такое требуется, то это уже п.1.


какие у partial types есть инструменты для анализа окружения? В немерле для этого есть почти все.

КЛ>>не знаком с DSL Tools, так что тут промолчу


AVK>Да дело то не в DSL Tools, а в создании генераторов сложных алгоритмов по простому описанию — генераторы моделей, парсеров и т.п.


а тему все-таки надо было назвать "что меня не устраивает в МП в Nemerle для пром. разработки"
Re[4]: Что меня не устраивает в МП в Nemerle
От: Aen Sidhe Россия Просто блог
Дата: 25.12.08 21:56
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>Здравствуйте, AndrewVK, Вы писали:


AVK>>Здравствуйте, Константин Л., Вы писали:


КЛ>>>1. новые фичи осваиваются неохотно


AVK>>Скажем так, это стоит дополнительных денег.


КЛ>стоп. мне казалось, что ты имел ввиду косность мышления и тп. Какие нужны средства, чтобы сотрудники начали писать декларативный код с пом. линка, вместо циклов и массивов?


Время. А время — деньги. Далеко не всегда обучение окупаемо.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[4]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.12.08 21:58
Оценка: +1
Здравствуйте, Константин Л., Вы писали:

КЛ>стоп. мне казалось, что ты имел ввиду косность мышления и тп. Какие нужны средства, чтобы сотрудники начали писать декларативный код с пом. линка, вместо циклов и массивов?


Никаких в идеале — язык в рамках стандарта работник обычно изучает за свой счет, особенно если речь о более менее опытном разработчике. На практике конечно не все так радужно, но я хотя бы могу ткунть товарища носом в книжку и интернет, и не отвлекаться на это самому. А вот с собственными расширениями уже несколько печально — на живом проекте далеко не всегда есть всеобъемлющая, актуальная, и хорошо написанная документация.

AVK>>Не очень понятно, если честно. При чем тут вольности? Выглядит как какая то эмпирика, а не истинная причина.


КЛ>Вольности, это клепать фреймворки и dsl-и на каждый чих


А, ну да, где то так.

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


КЛ>при чем тут мп от немерле?


Не знаю. Это ты про прогресс спросил. Я просто ответил на заданный вопрос.

КЛ>при том, что они дают возможность отойти от стандартов.


Да нет, все гораздо печальнее — они подразумевают отсутствие зафиксированного стандарта вовсе. Разве что можно сформировать что то навроде СLOS. Но если есть возможность стандарт нарушать, то да, получаем то, о чем я писал.

AVK>>Ммм, а где в вышеприведенных технологиях интероп?


КЛ>ок, гарантированное отсутствие интеропа. этими тулами dsl не заканчиваются, правда?


Все равно мне непонятно, каким боком тут интероп.

AVK>>В случае C# есть partial types и partial methods. Визарды не предназначены для повторных вызовов, если такое требуется, то это уже п.1.


КЛ>какие у partial types есть инструменты для анализа окружения?


Никаких. Он не для этого нужен.

КЛ> В немерле для этого есть почти все.


Не в Немерле, а в его инструментарии, доступном в рамках IDE. Но это, согласись, совсем другой вопрос с совсем другим ответом.

КЛ>а тему все-таки надо было назвать "что меня не устраивает в МП в Nemerle для пром. разработки"


Слишкам многа букаф
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[4]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.12.08 21:58
Оценка:
Здравствуйте, alvas, Вы писали:

A>>>Я правильно понял?


AVK>>Странный вопрос. Не знаю я, как ты понял.


A>И вот как дальше обсуждать?


А ты чего ожидал? Что я буду в курсе, понял ты правильно или нет? Каким образом я могу это определить?
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[5]: Что меня не устраивает в МП в Nemerle
От: Константин Л. Турция  
Дата: 25.12.08 22:01
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

[]

AS>Время. А время — деньги. Далеко не всегда обучение окупаемо.


предвидел этот ответ. у нас работа такая, что постоянно нужно учиться, впитывать новую информацию. боюсь, что фича вроде итераторов, не то, о чем можно говорить в контексте денежных/временных затрат. кроме того, каждый вменяемый манагер, принимая решение о переходе на ту или иную технологию, анализирует, что ему это даст в плане денег и времени. Так что кому выгодно — будут переходить, а невыгодно — тогда в чем вопрос?
Re[6]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.12.08 22:06
Оценка: +1
Здравствуйте, Константин Л., Вы писали:

КЛ> боюсь, что фича вроде итераторов, не то, о чем можно говорить в контексте денежных/временных затрат.


Лично я так не думаю, особенно если речь не об очень опытных разработчиках. Нет, изучить саму конструкцию, конечно, сравнительно несложно, а вот научится ее применять ... Та же ленивость нуждается в серьезном понимании.

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


В динамике. Код ведь потом поддерживать надо, а команды формируются не на всю жизнь. Нанимаешь нового разработчика, и, лыко-мочало, начинай сначала.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[7]: Что меня не устраивает в МП в Nemerle
От: Константин Л. Турция  
Дата: 25.12.08 22:08
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Константин Л., Вы писали:


КЛ>> боюсь, что фича вроде итераторов, не то, о чем можно говорить в контексте денежных/временных затрат.


AVK>Лично я так не думаю, особенно если речь не об очень опытных разработчиках. Нет, изучить саму конструкцию, конечно, сравнительно несложно, а вот научится ее применять ... Та же ленивость нуждается в серьезном понимании.


ты тут выше сам правильно сказал, что новые фичи, в основном, изучаются за счет личного времени.

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


AVK>В динамике. Код ведь потом поддерживать надо, а команды формируются не на всю жизнь. Нанимаешь нового разработчика, и, лыко-мочало, начинай сначала.


то-же самое качается фреймворков
Re[5]: Что меня не устраивает в МП в Nemerle
От: Константин Л. Турция  
Дата: 25.12.08 22:15
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Константин Л., Вы писали:


КЛ>>стоп. мне казалось, что ты имел ввиду косность мышления и тп. Какие нужны средства, чтобы сотрудники начали писать декларативный код с пом. линка, вместо циклов и массивов?


AVK>Никаких в идеале — язык в рамках стандарта работник обычно изучает за свой счет, особенно если речь о более менее опытном разработчике. На практике конечно не все так радужно, но я хотя бы могу ткунть товарища носом в книжку и интернет, и не отвлекаться на это самому. А вот с собственными расширениями уже несколько печально — на живом проекте далеко не всегда есть всеобъемлющая, актуальная, и хорошо написанная документация.


на то есть умные люди, которые говорят что можно, а что нельзя

AVK>>>Не очень понятно, если честно. При чем тут вольности? Выглядит как какая то эмпирика, а не истинная причина.


КЛ>>Вольности, это клепать фреймворки и dsl-и на каждый чих


AVK>А, ну да, где то так.


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


КЛ>>при чем тут мп от немерле?


AVK>Не знаю. Это ты про прогресс спросил. Я просто ответил на заданный вопрос.


ок, я считаю, что мп от немерле не тот прогресс, который вреден by default

КЛ>>при том, что они дают возможность отойти от стандартов.


AVK>Да нет, все гораздо печальнее — они подразумевают отсутствие зафиксированного стандарта вовсе. Разве что можно сформировать что то навроде СLOS. Но если есть возможность стандарт нарушать, то да, получаем то, о чем я писал.


Опять же, чем макробиблиотека отличается от фреймворков? В идеале, к ним подход должен быть одинаков

AVK>>>Ммм, а где в вышеприведенных технологиях интероп?


КЛ>>ок, гарантированное отсутствие интеропа. этими тулами dsl не заканчиваются, правда?


AVK>Все равно мне непонятно, каким боком тут интероп.


ну как каким. часто dsl-ли работают с подмножеством сущностей, построенных на основном языке. нужно обеспечить прозрачное взаимодействие — interop

AVK>>>В случае C# есть partial types и partial methods. Визарды не предназначены для повторных вызовов, если такое требуется, то это уже п.1.


КЛ>>какие у partial types есть инструменты для анализа окружения?


AVK>Никаких. Он не для этого нужен.


а для чего тогда? Ты же предлагаешь с пом. них расширять типы? Но partial не дает генерировать код, основываясь на окружении — других типа etc.

КЛ>> В немерле для этого есть почти все.


AVK>Не в Немерле, а в его инструментарии, доступном в рамках IDE. Но это, согласись, совсем другой вопрос с совсем другим ответом.


при чем тут инструментарий? я про то, что он дает доступ к внутренним представлениям типов etc

КЛ>>а тему все-таки надо было назвать "что меня не устраивает в МП в Nemerle для пром. разработки"


AVK>Слишкам многа букаф
Re[8]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.12.08 22:25
Оценка: +2
Здравствуйте, Константин Л., Вы писали:

AVK>>Лично я так не думаю, особенно если речь не об очень опытных разработчиках. Нет, изучить саму конструкцию, конечно, сравнительно несложно, а вот научится ее применять ... Та же ленивость нуждается в серьезном понимании.


КЛ>ты тут выше сам правильно сказал, что новые фичи, в основном, изучаются за счет личного времени.


Это когда фичи языка. А вот специфические языковые расширения в рамках коммерческого проекта — че то как то верится с трудом. Лично я бы на это собственное свободное время не стал тратить.

КЛ>то-же самое качается фреймворков


Конечно. Разница только в одном — в рамках. У немерлевых макросов они сильно шире, нежели чем у фреймворков. Поэтому и эффект намного сильнее.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[6]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.12.08 22:25
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>на то есть умные люди, которые говорят что можно, а что нельзя


Время умных людей стоит больших денег.

КЛ>Опять же, чем макробиблиотека отличается от фреймворков?


Уже ответил рядом.

КЛ> В идеале, к ним подход должен быть одинаков


Size does matter.

AVK>>Все равно мне непонятно, каким боком тут интероп.


КЛ>ну как каким. часто dsl-ли работают с подмножеством сущностей, построенных на основном языке. нужно обеспечить прозрачное взаимодействие — interop


Опять ты слишком узко трактуешь понятие DSL. Зачастую, ни о каких общих сущностях говорить даже не приходится, слишком специфичны эти DSL.

AVK>>Никаких. Он не для этого нужен.


КЛ>а для чего тогда?


Для растаскивания одного типа на несколько файлов.

КЛ> Ты же предлагаешь с пом. них расширять типы? Но partial не дает генерировать код, основываясь на окружении — других типа etc.


А partial и не должен генерировать код вовсе. Его задача обеспечить возможность связи сгенерированного кода и рукописного без runtime техник. Не Немерле конечно, но ряд несложных задач решать позволяет.

AVK>>Не в Немерле, а в его инструментарии, доступном в рамках IDE. Но это, согласись, совсем другой вопрос с совсем другим ответом.


КЛ>при чем тут инструментарий? я про то, что он дает доступ к внутренним представлениям типов etc


Визарды вообще то запускаются в рамках IDE, а не при компиляции.

P.S. Большая просьба, удаляй ненужное цитирование.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[7]: Что меня не устраивает в МП в Nemerle
От: Константин Л. Турция  
Дата: 25.12.08 22:35
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Время умных людей стоит больших денег.


ну опять скатываемся к "индусы не осилят". ну индусам и не предлагают. Вот, к примеру, RhinoMock. Нетривиально там все внутри? Так зачем мне знать, что там внутри? С макросами так-же.

AVK>Опять ты слишком узко трактуешь понятие DSL. Зачастую, ни о каких общих сущностях говорить даже не приходится, слишком специфичны эти DSL.


Ну а зачем мне его трактовать широко? По задаче и инструмент. Где лучше DSL Tool, там берем его, где лучше Н. — берем Н.

AVK>Для растаскивания одного типа на несколько файлов.


я как бе в курсе

КЛ>> Ты же предлагаешь с пом. них расширять типы? Но partial не дает генерировать код, основываясь на окружении — других типа etc.


AVK>А partial и не должен генерировать код вовсе. Его задача обеспечить возможность связи сгенерированного кода и рукописного без runtime техник. Не Немерле конечно, но ряд несложных задач решать позволяет.


а что делать со сложными?

AVK>Визарды вообще то запускаются в рамках IDE, а не при компиляции.


рядом меня коришь, что узко представляю DSL, а сам рассматриваешь только визарды

AVK>P.S. Большая просьба, удаляй ненужное цитирование.
Re[8]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.12.08 23:02
Оценка:
Здравствуйте, Константин Л., Вы писали:

AVK>>Время умных людей стоит больших денег.


КЛ>ну опять скатываемся к "индусы не осилят".


Ну а куда деваться. Речь, впрочем, не о индусах, а о том, что у людей, вобщем то, разная квалификация и разный уровень оплаты. Не, я конечно не против, если бы у меня в команде работали исключительно асы, но опять все упирается в бабло.

КЛ> ну индусам и не предлагают.


Между индусами и мегапрофессионалами есть непрерывных спектр промежуточных вариантов.

КЛ> Вот, к примеру, RhinoMock. Нетривиально там все внутри? Так зачем мне знать, что там внутри? С макросами так-же.


Так, еще раз. Я говорю совсем не об этом. Я говорю о другом — любой новичек, каким бы он опытом не обладал, в проекте, широко использующем макросы, будет какое то время "индусом". Потому что ему придется изучить новый язык программирования.

КЛ>Ну а зачем мне его трактовать широко? По задаче и инструмент.


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

AVK>>А partial и не должен генерировать код вовсе. Его задача обеспечить возможность связи сгенерированного кода и рукописного без runtime техник. Не Немерле конечно, но ряд несложных задач решать позволяет.


КЛ>а что делать со сложными?


Решать по другому, потому что в сложных случаях см. п.1

AVK>>Визарды вообще то запускаются в рамках IDE, а не при компиляции.


КЛ>рядом меня коришь, что узко представляю DSL, а сам рассматриваешь только визарды


В данном конкретном пункте я рассматриваю исключительно визарды, чтобы не смешивать мух и котлеты.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[9]: Что меня не устраивает в МП в Nemerle
От: Константин Л. Турция  
Дата: 25.12.08 23:12
Оценка: 38 (1)
Здравствуйте, AndrewVK, Вы писали:

[]

AVK>Ну а куда деваться. Речь, впрочем, не о индусах, а о том, что у людей, вобщем то, разная квалификация и разный уровень оплаты. Не, я конечно не против, если бы у меня в команде работали исключительно асы, но опять все упирается в бабло.


AVK>Между индусами и мегапрофессионалами есть непрерывных спектр промежуточных вариантов.


есть, и этому спектру предлагают асиливать замыкания, правила overload resolution, контр/ковариантность. А вот атрибут навесить, который по сути макра, это сложно.

КЛ>> Вот, к примеру, RhinoMock. Нетривиально там все внутри? Так зачем мне знать, что там внутри? С макросами так-же.


AVK>Так, еще раз. Я говорю совсем не об этом. Я говорю о другом — любой новичек, каким бы он опытом не обладал, в проекте, широко использующем макросы, будет какое то время "индусом". Потому что ему придется изучить новый язык программирования.


Ок, давай отбросим макры уровня выражений. Отбросим даже те, которые синтаксис не меняют. Имеем синтаксис атрибутов. Этож почти как наследование. Добавил атрибут, есть в базе IXmlSerializable. Вроде ниче сложного. Писать будут сильные ребята из спектра, спектр тока атрибуты вешать

[]

AVK>В данном конкретном пункте я рассматриваю исключительно визарды, чтобы не смешивать мух и котлеты.


А в немереле генерация кода за счет использования квазицитирования и декларативности должна писаться еще проще. CodeDom по сравнению с ней — мамонт
Re[10]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.12.08 23:21
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>есть, и этому спектру предлагают асиливать замыкания, правила overload resolution, контр/ковариантность. А вот атрибут навесить, который по сути макра, это сложно.


Не знаю. Может и сложно. Зависит что эта макра делает. С макросами имеет смысл возится, если оно привносит что то принципиально новое, недостижимое обычными фреймворками.

AVK>>В данном конкретном пункте я рассматриваю исключительно визарды, чтобы не смешивать мух и котлеты.


КЛ>А в немереле генерация кода за счет использования квазицитирования и декларативности должна писаться еще проще.


Проще чего?

КЛ> CodeDom по сравнению с ней — мамонт


Он то тут при чем? Студийные визарды это обычно просто кусок статического текста с 1-2 подстановками. Не надо там никакого rocket science.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[11]: Что меня не устраивает в МП в Nemerle
От: Константин Л. Турция  
Дата: 25.12.08 23:40
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Константин Л., Вы писали:


КЛ>>есть, и этому спектру предлагают асиливать замыкания, правила overload resolution, контр/ковариантность. А вот атрибут навесить, который по сути макра, это сложно.


AVK>Не знаю. Может и сложно. Зависит что эта макра делает. С макросами имеет смысл возится, если оно привносит что то принципиально новое, недостижимое обычными фреймворками.


ок, твоя точка зрения понятна

AVK>>>В данном конкретном пункте я рассматриваю исключительно визарды, чтобы не смешивать мух и котлеты.


КЛ>>А в немереле генерация кода за счет использования квазицитирования и декларативности должна писаться еще проще.


AVK>Проще чего?


КЛ>> CodeDom по сравнению с ней — мамонт


AVK>Он то тут при чем? Студийные визарды это обычно просто кусок статического текста с 1-2 подстановками. Не надо там никакого rocket science.


тут я не в тему написал, сорри
Re[4]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 26.12.08 09:23
Оценка: 76 (1)
Здравствуйте, alvas, Вы писали:

A>>>Что подразумевается под словами "в моих задачах"?


AVK>>Хм, по моему это вполне по русски. Подразумевается, что речь идет о тех задачах, с которыми сталкивался и сталкиваюсь именно я, и на глобальные обобщения на всю софтописательную индустрию и тенденции ее развития я не претендую. Что именно непонятно?


A>>>Я правильно понял?


AVK>>Странный вопрос. Не знаю я, как ты понял.


A>И вот как дальше обсуждать? Иду лесом...


Так как я не телепат , то буду рассматривать "в моих задачах" как "к промышленному программированию в составе команд с размером > 3 человек и состоящих не исключительно из топа разрабочиков"

Про

1. Design_by_contract прикручивается на раз. И иже с ним...
2. Майкрософт добавила атрибуты в .Net, но не дала инструментов (или дала но слабые) для работы с ними. Поэтому нужно писать всякие прокси, так сказать свою виртуальную машину. МП в Nemerle решает эту проблему на отлично.
3. "MPS, DSL Tools, Oslo" — еще один нужный (модный) ЯП, а может лучше "швейцарский нож"? Майкрософт всунула SQL в C#, так почему нельзя всунуть Oslo в Nemerle?
4. По поводу кодогенерации. Я считаю что МП в Nemerle не конкурирует с ней, а дополняет.
5. Если смотреть на МП в Nemerle как слишком БОЛЬШУЮ вещь, которую программерам лучше не давать — имеет слабую аргументацию. Уже вроде давно как доказан вред goto, но он есть в большинстве языков, в том числе и в недавно родившихся...

Контра

Если коротко — это отсутствие ECMA стандарта. Если есть желание обсудить — распишу более подробно и по пунктам.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re: Что меня не устраивает в МП в Nemerle
От: Gajdalager Украина  
Дата: 26.12.08 09:34
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Дисклеймер:

Не являясь топ-разработчиком, со своей колокольни всё же попробую возразить

AVK>Итак, сабж.

AVK>1) На практике я наблюдаю, что даже новые стандартные фичи языка используются очень и очень неспешно и с неохотой. Даже итераторы, которые еще в 2004 году появились, у многих вызывают изумление.
У нас на проекте используеться практика code review (причем ревью не менеджера, которым у нас является SCRUM-мастер, а другого программиста, желательно не junior). Думаю, после нескольких неудачных ревью, разработчик всё же переписал бы используя новые стандартные фичи (с).
AVK> Исходя из этого, я считаю, что серьезные изменения в самом языке, заточенные под конкретный проект, в промышленном программировании в большинстве случаев неприемлемы. И только в очень больших платформах, там где сейчас применяются собственные языки программирования, внесение изменений в язык на уровне платформы может быть оправдано.
Не могу судить. У нас (проект на Java, > 1 000 000 строк) таких изменений нет (да и откуда им взяться на Java-то?). Помогло бы? помешало бы? — хз, посему скип.

AVK>2) Еще одна сфера применения МП — создание DSL. И здесь есть имеем другую проблему — основной смысл применения DSL в моем случае — не расширение возможностей существующих языков, а наоборот, их сужение и жесткое ограничение заданными рамками. Для того чтобы минимизировать спектр возможных проблем и объем знаний, требуемх для использования.

Не совсем согласен с выделенным. Точнее так, в вашем случае, это конечно так, но DSL бывают разные. Например DSL в Ruby on Rails (да и в Ruby-based DSL'ях вообще) ориентирован на увеличение читабельности и компактности кода, предназначен для программистов. Т.е. ограничивать не обязательно, можно лишь предоставить более удобные инструменты и разработчики сами себя ограничат

AVK>3) Следующая сфера применения кодогенерации (язык не поворачивается назвать это метапрограммированием) — визарды в средах разработки, которые генерируют первоначальный код. Не очень представляю, как тут может помочь Немерле, да и использование специального языка тут явно перебор.

+1, хотя использование DSL может быть (а может и не быть) более удобным чем визард

AVK>4) Генерация кода на основе DSL. Пример такого применения — DSL Tools. Вот здесь, в принципе, отчасти использование Немерле оправдано. Но есть тут одна засада. Дело в том, что разработка кодогенератора (любого, в том числе и по AST, с применением квазицитирования, паттерн-матчинга и алгебраических типов данных) нередко значительно сложнее, нежели написание генерируемого кода. И при поддержке, далеко не факт, что правка кодогенератора проще, чем модификация рукопашного кода при помощи современных средств рефакторинга.

Не знаю правильно ли понял.. Например, если взять веб-сервисы и кодогенерацию по WSDL — удобнее сгенерировать код и потом править, чем использовать макрос Nemerle, который генерит классы во время компиляции и поменять что-то под собственные нужды довольно сложно. Я правильно описал проблему? Тогда +1.
<< RSDN@Home 1.2.0 alpha 4 rev. 1128>>
Сейчас играет silent
Re[5]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.08 09:35
Оценка: +1
Здравствуйте, alvas, Вы писали:

A>Если коротко — это отсутствие ECMA стандарта. Если есть желание обсудить — распишу более подробно и по пунктам.


Можно даже не спрашивать. Черт всегда скрывается в деталях. Так что расписывай. Тебе многие спасибо скажут.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.12.08 10:05
Оценка:
Здравствуйте, Gajdalager, Вы писали:

G>У нас на проекте используеться практика code review (причем ревью не менеджера, которым у нас является SCRUM-мастер, а другого программиста, желательно не junior). Думаю, после нескольких неудачных ревью, разработчик всё же переписал бы используя новые стандартные фичи (с).


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

G>Не совсем согласен с выделенным. Точнее так, в вашем случае, это конечно так, но DSL бывают разные.


Я в курсе. Но в том случае, когда DSL это слегка видоимзененный основной язык — см. п.1.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[5]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.12.08 10:05
Оценка: :))
Здравствуйте, alvas, Вы писали:

A>Про


A>1. Design_by_contract прикручивается на раз. И иже с ним...

A>2. Майкрософт добавила атрибуты в .Net, но не дала инструментов (или дала но слабые) для работы с ними. Поэтому нужно писать всякие прокси, так сказать свою виртуальную машину. МП в Nemerle решает эту проблему на отлично.
A>3. "MPS, DSL Tools, Oslo" — еще один нужный (модный) ЯП, а может лучше "швейцарский нож"? Майкрософт всунула SQL в C#, так почему нельзя всунуть Oslo в Nemerle?
A>4. По поводу кодогенерации. Я считаю что МП в Nemerle не конкурирует с ней, а дополняет.
A>5. Если смотреть на МП в Nemerle как слишком БОЛЬШУЮ вещь, которую программерам лучше не давать — имеет слабую аргументацию. Уже вроде давно как доказан вред goto, но он есть в большинстве языков, в том числе и в недавно родившихся...

На все эти вопросы мой ответ содержится в корневом сообщении.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[6]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.08 10:22
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>На все эти вопросы мой ответ содержится в корневом сообщении.


Серьезно?

Процитируй, плиз, кусок своего сообщения который давал бы ответ хотя бы на этот вопрос:
A>>2. Майкрософт добавила атрибуты в .Net, но не дала инструментов (или дала но слабые) для работы с ними. Поэтому нужно писать всякие прокси, так сказать свою виртуальную машину. МП в Nemerle решает эту проблему на отлично.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.08 10:30
Оценка: +3
Здравствуйте, Gajdalager, Вы писали:

G>Не знаю правильно ли понял.. Например, если взять веб-сервисы и кодогенерацию по WSDL — удобнее сгенерировать код и потом править, чем использовать макрос Nemerle, который генерит классы во время компиляции и поменять что-то под собственные нужды довольно сложно. Я правильно описал проблему? Тогда +1.


Правка сдегерированного кода — это пожалуй самое плохое что можно придумать. Ведь когда код будет перегенерирован все правки придется вносить занова. А ведь это может произойти тогда когда детали будут забыты, что приведет к серьезнешим проблемам и тормозам в развитии проекта.
Макрос же — это настраиваемая программа генерации кода написанная на высокоуровневом расширении очень высокоуровневого языка. Научить его генерировать код так как надо тебе не сложно. Править при этом ничего не придется. Если появляется задача изменить генерируемый код, то достаточно будет чуть-чуть поменять логику (например, добавить нужный параметр макросу).

Так что этот пример — большой минус, а не плюс.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 26.12.08 10:58
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Можно даже не спрашивать. Черт всегда скрывается в деталях. Так что расписывай. Тебе многие спасибо скажут.


1. Нужен road map. Если он есть — можно ссылку?
2. Команде Nemerle придется ВСЕГДА гнаться за Майкрософт. Огонь и движение

Microsoft ведёт по вам огонь, и это всего лишь огонь прикрытия для того чтобы они могли двигаться вперёд, а вы нет.


Пример — необходимость реализации поддержки Linq в Nemerle.
На очереди dynamic, ...

Я так понял тут уж ничего не поделаешь.

3. ECMA стандарт даст гарантию невозможности ламающих изменений языка в мажорных версиях. Даже у Майкрософт если код считают устаревшим — помечают атрибутом [obsolete], но это ворнинги — код скомпилится без проблем. Обратная совместимость это наше все.

4. Больше информировать комьюнити что происходит в Команде Nemerle.

ЗЫ. Я так понял что не получилось у грандов выбить гранты — так разместите "Donate" на сайт и к вам потянутся люди.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[3]: Что меня не устраивает в МП в Nemerle
От: Sinclair Россия http://corp.ingrammicro.com/Solutions/Cloud.aspx
Дата: 26.12.08 11:11
Оценка: +2
Здравствуйте, VladD2, Вы писали:

VD>Правка сдегерированного кода — это пожалуй самое плохое что можно придумать. Ведь когда код будет перегенерирован все правки придется вносить занова.

Это если не удалось хорошо распилить код при помощи partial классов.

VD>А ведь это может произойти тогда когда детали будут забыты, что приведет к серьезнешим проблемам и тормозам в развитии проекта.

VD>Макрос же — это настраиваемая программа генерации кода написанная на высокоуровневом расширении очень высокоуровневого языка. Научить его генерировать код так как надо тебе не сложно. Править при этом ничего не придется. Если появляется задача изменить генерируемый код, то достаточно будет чуть-чуть поменять логику (например, добавить нужный параметр макросу).
Вот тут (см. выделенное) есть некоторые сомнения. В том смысле, что если у тебя возникает т.н. one-off ситуация, то есть что-то там нужно подшаманить ровно в одном месте, то это проще всего подшаманить ровно в этом одном месте. Подшаманивание генератора рискует дать труднопредсказуемые эффекты в других местах, где поведение уже отлажено.

Я не могу сходу придумать реалистичный пример, но нутром чую, что за ними дело таки не станет — только начни реальное применение. И AVK ровно об этом говорит. Генерировать код — нетривиальная задача.
Вот есть, допустим, автоматический генератор SQL запросов по некоторой модели.

И вот оказывается, допустим, что в одном из запросов тебе вынь да полож потребовалось, допустим, обратиться не к таблице, а к параметризованному view. Обучать генерилку поддерживать параметризованные view — дорого; это окупится только если таких view у тебя применяется много. В исключительном случае тебе проще будет руками поправить сгенерированный запрос.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
http://rsdn.org/File/5743/rsdnaddict.GIF
Re[4]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 26.12.08 11:18
Оценка:
Здравствуйте, Sinclair, Вы писали:

VD>>Правка сдегерированного кода — это пожалуй самое плохое что можно придумать. Ведь когда код будет перегенерирован все правки придется вносить занова.

S>Это если не удалось хорошо распилить код при помощи partial классов.

Я считаю что оба подхода взаимодополняющие. Пример — генерация кода по схеме и linq. В первом случае генерится исходник, во втором — двоичный код. Это же не означает что нужно отказываться от первого или от второго.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[4]: Что меня не устраивает в МП в Nemerle
От: prVovik Россия  
Дата: 26.12.08 11:31
Оценка:
Здравствуйте, Sinclair, Вы писали:


S>И вот оказывается, допустим, что в одном из запросов тебе вынь да полож потребовалось, допустим, обратиться не к таблице, а к параметризованному view. Обучать генерилку поддерживать параметризованные view — дорого; это окупится только если таких view у тебя применяется много. В исключительном случае тебе проще будет руками поправить сгенерированный запрос.



Но с другой стороны возможен компромиссный вариант, когда мы делаем незначительное изменение генератора (например, всего лишь добавляем вызов partial метода) и получаем тем самым возможность сделать ручное изменение, которое не пропадёт после повторной генерации исходников.
лэт ми спик фром май харт
Re[5]: Что меня не устраивает в МП в Nemerle
От: Sinclair Россия http://corp.ingrammicro.com/Solutions/Cloud.aspx
Дата: 26.12.08 12:03
Оценка:
Здравствуйте, prVovik, Вы писали:

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

Речь о том, что это не всегда возможно.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
http://rsdn.org/File/5743/rsdnaddict.GIF
Re: Что меня не устраивает в МП в Nemerle
От: Andrei F.  
Дата: 26.12.08 13:11
Оценка: +1 -3
Здравствуйте, AndrewVK, Вы писали:

AVK>2) Еще одна сфера применения МП — создание DSL. И здесь есть имеем другую проблему — основной смысл применения DSL в моем случае — не расширение возможностей существующих языков, а наоборот, их сужение и жесткое ограничение заданными рамками. Для того чтобы минимизировать спектр возможных проблем и объем знаний, требуемх для использования. И для этого, как мне видится, хоть Nemerle и можно использовать, но подходит он для этих целей не очень, потому что даже его база весьма и весьма функциональна, хоть и маленькая совсем, а написание кода, проверяющего, нет ли чего лишнего в AST, очень непростая задача.


+1, в этом есть смысл
Всё остальное — просто ни о чем. Резонёрство сплошное.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[2]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.12.08 13:36
Оценка:
Здравствуйте, Andrei F., Вы писали:

AF>Всё остальное — просто ни о чем. Резонёрство сплошное.


То, что ты чего то не понял, или просто никогда не сталкивался с подобными проблемами, еще не означает, что этих проблем не существует или они незначительны.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[2]: Что меня не устраивает в МП в Nemerle
От: Andrei F.  
Дата: 26.12.08 13:36
Оценка: -2 :))
Здравствуйте, Lloyd, Вы писали:

L>Целиком и полностью поддерживаю по всем пунктам!


"А я еще больше люблю господина ПЖ!" (С)
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[3]: Что меня не устраивает в МП в Nemerle
От: Andrei F.  
Дата: 26.12.08 13:38
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>То, что ты чего то не понял, или просто никогда не сталкивался с подобными проблемами, еще не означает, что этих проблем не существует или они незначительны.


А почему ты решил, что я чего-то не понял?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[4]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.12.08 13:45
Оценка:
Здравствуйте, Andrei F., Вы писали:

AF>А почему ты решил, что я чего-то не понял?


ПОтому что не вижу иных причин называть резонерством описание того, с чем я реально сталкивался на практике.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[5]: Что меня не устраивает в МП в Nemerle
От: Andrei F.  
Дата: 26.12.08 13:58
Оценка: +1 -1
Здравствуйте, AndrewVK, Вы писали:

AVK>ПОтому что не вижу иных причин называть резонерством описание того, с чем я реально сталкивался на практике.


То есть ты реально пробовал всё это делать сам лично, причем с помошью Немерле?
Вах, я потрясен твоим опытом.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[6]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.12.08 14:03
Оценка:
Здравствуйте, Andrei F., Вы писали:

AF>То есть ты реально пробовал всё это делать сам лично, причем с помошью Немерле?


Большую часть да, в том числе и с помощью Немерле.

AF>Вах, я потрясен твоим опытом.


Ничего потрясающего в нем нет, чтобы просто побаловаться много времени не нужно. Когда то, несколько лет назад, еще до того как Влад тут всем начал МП пиарить, мне эта тема была интересна. Потом я интерес потерял.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[7]: Что меня не устраивает в МП в Nemerle
От: Andrei F.  
Дата: 26.12.08 14:28
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Большую часть да, в том числе и с помощью Немерле.


Какую часть, и какие точно с Немерле?

AVK>Ничего потрясающего в нем нет, чтобы просто побаловаться много времени не нужно. Когда то, несколько лет назад, еще до того как Влад тут всем начал МП пиарить, мне эта тема была интересна. Потом я интерес потерял.


Побаловаться и использовать в реальной работе — совсем разные вещи.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[3]: Что меня не устраивает в МП в Nemerle
От: Lloyd Россия  
Дата: 26.12.08 14:33
Оценка:
Здравствуйте, Andrei F., Вы писали:

L>>Целиком и полностью поддерживаю по всем пунктам!


AF>"А я еще больше люблю господина ПЖ!" (С)

AF>

Кто это?
Re[4]: Что меня не устраивает в МП в Nemerle
От: Gajdalager Украина  
Дата: 26.12.08 14:36
Оценка:
Здравствуйте, Lloyd, Вы писали:

AF>>"А я еще больше люблю господина ПЖ!" (С)

AF>>

L>Кто это?


Можно я скажу? Можно я? http://ru.wikipedia.org/wiki/Кин-дза-дза!_(фильм)
<< RSDN@Home 1.2.0 alpha 4 rev. 1128>>
Сейчас играет Porcupine Tree — Way Out Of Here
Re[4]: Что меня не устраивает в МП в Nemerle
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.12.08 14:36
Оценка:
Здравствуйте, Lloyd, Вы писали:
AF>>"А я еще больше люблю господина ПЖ!" (С)
AF>>

L>Кто это?

http://ru.wikipedia.org/wiki/%D0%A6%D0%B2%D0%B5%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D1%86%D0%B8%D1%8F_%D1%88%D1%82%D0%B0%D0%BD%D0%BE%D0%B2
и солнце б утром не вставало, когда бы не было меня
Re[5]: Что меня не устраивает в МП в Nemerle
От: Lloyd Россия  
Дата: 26.12.08 14:42
Оценка: :))
Здравствуйте, Serginio1, Вы писали:

AF>>>"А я еще больше люблю господина ПЖ!" (С)

AF>>>

L>>Кто это?

S>http://ru.wikipedia.org/wiki/%D0%A6%D0%B2%D0%B5%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D1%86%D0%B8%D1%8F_%D1%88%D1%82%D0%B0%D0%BD%D0%BE%D0%B2

Не, гипотеза не верна. т.к. из нее с необходимостью следовало бы, что и перед Top 0 rsdn-а я тоже должен был делать "Ку", а это, мягко говоря не совсем так.
Re[6]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 26.12.08 15:03
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Не, гипотеза не верна. т.к. из нее с необходимостью следовало бы, что и перед Top 0 rsdn-а я тоже должен был делать "Ку", а это, мягко говоря не совсем так.


Может потому что он ханудянин а не плюканин?
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[8]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.12.08 15:06
Оценка:
Здравствуйте, Andrei F., Вы писали:

AVK>>Большую часть да, в том числе и с помощью Немерле.


AF>Какую часть, и какие точно с Немерле?


Больше всего меня тогда интересовал п. 4. п.1, понятное дело, использует сам Nemerle (его стандартная библиотека макросов). п2 сам, вроде бы, ничего не делал, но смотрел на генератор парсеров, который делал товаришь с ником что то там про консоль. С п.5 в основном баловался без конкретной цели, смотрел, что да как.

AF>Побаловаться и использовать в реальной работе — совсем разные вещи.


Безусловно. Но, уж извини, использовать в реальной работе вещи, которые мне после ознакомления не показались для этого пригодными, я не буду (да и не даст мне этого сделать никто). На свете много всяких интересных штук.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[4]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.08 17:01
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, VladD2, Вы писали:


VD>>Правка сдегерированного кода — это пожалуй самое плохое что можно придумать. Ведь когда код будет перегенерирован все правки придется вносить занова.

S>Это если не удалось хорошо распилить код при помощи partial классов.

Ага. Только такое распиливание может привести к охринительному геморрою. По сравнению с парметром — это может оказаться оверкилом.

VD>>А ведь это может произойти тогда когда детали будут забыты, что приведет к серьезнешим проблемам и тормозам в развитии проекта.

VD>>Макрос же — это настраиваемая программа генерации кода написанная на высокоуровневом расширении очень высокоуровневого языка. Научить его генерировать код так как надо тебе не сложно. Править при этом ничего не придется. Если появляется задача изменить генерируемый код, то достаточно будет чуть-чуть поменять логику (например, добавить нужный параметр макросу).
S>Вот тут (см. выделенное) есть некоторые сомнения. В том смысле, что если у тебя возникает т.н. one-off ситуация, то есть что-то там нужно подшаманить ровно в одном месте, то это проще всего подшаманить ровно в этом одном месте. Подшаманивание генератора рискует дать труднопредсказуемые эффекты в других местах, где поведение уже отлажено.

Сомнениия высасоны из пальца?

S>Я не могу сходу придумать реалистичный пример, но нутром чую, что за ними дело таки не станет — только начни реальное применение. И AVK ровно об этом говорит.


А я нутром не чую. При этом у меня опыт создания макросов довольно большой.

S>Генерировать код — нетривиальная задача.


Это зависит от задачи и инструментов. Генерировать не тривиальные вещи — не тривильно (что в общем-то естественно). Наличие хороших инструментов позволяет простить эту задачу.
Получается, что макры по любому рулят. Или нужно отказываться от генерации кода, как первопричины проблемы. Но при этом скорее всего решение будет во много раз сложнее и уж наверняка его будет тяжело поддерживать и развивать, так как будет куча дублирующегося кода.

S>Вот есть, допустим, автоматический генератор SQL запросов по некоторой модели.


Допустим, но это не генерация кода общего назначения. Как раз макросы здесь мало что дают. Разве что сама модель описана с их помощью.

S>И вот оказывается, допустим, что в одном из запросов тебе вынь да полож потребовалось, допустим, обратиться не к таблице, а к параметризованному view. Обучать генерилку поддерживать параметризованные view — дорого; это окупится только если таких view у тебя применяется много. В исключительном случае тебе проще будет руками поправить сгенерированный запрос.


Откровенно говоря — это все не конкретные какие-то рассуждения. Слишком много нюансов. Правильно спроектированный генератор не должен приодить к проблемам при изменении модели или свойств генерируемого кода. Тем более, что конечная модель у такого генератора — это скорее всего текст (или на худой конец какое-то АСТ вроде System.Linq.Expressions.Expression).

В любом случае менять сгенерированный текст — это самое хреновое решение.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.08 17:05
Оценка:
Здравствуйте, Sinclair, Вы писали:

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

S>Речь о том, что это не всегда возможно.

Кто это придумал?

Это невозможно только в одном случае, если у тебя нет исходников макроса. А же фигня будет с мета-программой написанной другими. Тогда прийдется править сгенерированный код. Ну, так можно и сборку подпачить. Но все это уже методы разработки за которые надо бить железной линейкой по пальцам.

Ну, и главное что хочется заметить. Вы придумываете какие-то частные отмазки "а если что?...", чтобы обосновать не желательность применения макросов в общем случае. Мне это кажется просто не разумным.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.08 17:15
Оценка:
Здравствуйте, Andrei F., Вы писали:

AVK>>2) Еще одна сфера применения МП — создание DSL. И здесь есть имеем другую проблему — основной смысл применения DSL в моем случае — не расширение возможностей существующих языков, а наоборот, их сужение и жесткое ограничение заданными рамками. Для того чтобы минимизировать спектр возможных проблем и объем знаний, требуемх для использования. И для этого, как мне видится, хоть Nemerle и можно использовать, но подходит он для этих целей не очень, потому что даже его база весьма и весьма функциональна, хоть и маленькая совсем, а написание кода, проверяющего, нет ли чего лишнего в AST, очень непростая задача.


AF>+1, в этом есть смысл


А какой в этом смысл?
Продемонстрируй, плиз, хотя бы один ДСЛ сужающий возможности исходного языка.

ДСЛ — это язык предметной области. Его задача описывать проблему в наиболее подходящих терминах. Например, регулярные выражения — это наиболее компактное (чего нельзя сказать о его понятности) описание грамматики. Вряд ли при этом можно говорить о сужении возможности некого универсального языка. И такая картина наблюдается во многих ДСЛ-я. Обычно встроенный ДСЛ предлагает новый синтаксис или семантику (иную интерпретацию имеющегося синтаксиса), а средства поддержки ДСЛ преобразуют исходных ДСЛ в некоторый набор инструкций универсального языка.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.08 17:18
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:


AF>>То есть ты реально пробовал всё это делать сам лично, причем с помошью Немерле?

AVK>Большую часть да, в том числе и с помощью Немерле.

И не разу ни к кому не обратился с вопросом? Ну, ты просто гений! Я бы так не смог.

AF>>Вах, я потрясен твоим опытом.


AVK>Ничего потрясающего в нем нет, чтобы просто побаловаться много времени не нужно. Когда то, несколько лет назад, еще до того как Влад тут всем начал МП пиарить, мне эта тема была интересна. Потом я интерес потерял.


Казалось бы причем тут Немерле?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.12.08 17:58
Оценка: +2
Здравствуйте, VladD2, Вы писали:

VD> Ну, ты просто гений! Я бы так не смог.


Да, ненадолго тебя хватило.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.08 18:13
Оценка: 3 (1) +1 -1
Здравствуйте, AndrewVK, Вы писали:

К сожалению, в этом рассказе, я не увидел две вещи которые вроде бы должны были присутствовать в данной теме.
А именно:
1. Я не увидел последовательный анализа проблемы.
2. Я не увидел ни одного конкретного слова про Nemerle (хотя вроде как ему и посвящена тема).
Посему не ясно с чем дискутировать.
Все что я могу — это разобрать разрозненные (на мой взгляд) высказывания и дополнить их или дать свои комментарии.

AVK>1) На практике я наблюдаю, что даже новые стандартные фичи языка используются очень и очень неспешно и с неохотой. Даже итераторы, которые еще в 2004 году появились, у многих вызывают изумление. Исходя из этого, я считаю, что серьезные изменения в самом языке, заточенные под конкретный проект, в промышленном программировании в большинстве случаев неприемлемы. И только в очень больших платформах, там где сейчас применяются собственные языки программирования, внесение изменений в язык на уровне платформы может быть оправдано.


В двух словах этот пункт говорит — "Я против синтаксических расширений потому как людей надо учить".
Сразу возникают два вопроса:
1. А автор темы вообще знает, что макросы в Nemerle не обязаны изменять синтаксис языка? Есть:
* Макросы уровня выражений. Их можно использовать как обычную функцию, но при этом они могут делать значительно больше чем просто фунции, так как выполняются во время компиляции и могут получать доступ как компилируемому коду (и проекту), так и к любым ресурсом в системе. Например, $-строка в Немерле — это макрос который не изменяет синтаксис. Или пример макроса который позволяет в мгновение локализовать локализовать всю программу не возясь при этом с АПИ ресурсов.
* Макро-атрибуты. Это такие же атрибуты как и те что автор темы привык использовать в C#. Только во время компиляции можно вместо них выполнить некоторые действия с проектом или его отдельной частью (например, функцией). Например, макросы из файла DesignPatterns.n: ProxyPublicMembers, AbstractFactory и Aggregate позволяют автоматизировать использование соответствующих паттернов проектирования. Это позволяет не заниматься копипэстом, а декларативно описывать желаемый паттерн и получать его реализацию автоматически. Более подробно об этих макросах можно прочесть здесь. Другими примерами могут служить макро-атрибуты Memoize (позволяющий автоматически кэшировать результаты вычисления для заднных аргументов методов), http://nemerle.org/Record_macroздесь]Record (который позволяет не писать конструкторы вручную).
Создается впечатление, что автор или не знает об этом, или пытается намеренно скрыть такую возможность, так как эта информация вырывается из стройного ряда его изложения.
2. Рассказы о том, что люди плохо учат новый синтаксис — это страшилки для не посвященных. Реально макросы вводящие новый синтаксис упрощают реализацию тех или иных участков программы. Например, такие макросы могут заменять использование громоздкого паттерна на компактный и интуитивно понятный код. Тут даже за примерами ходить не нужно. Конструкции "foreach, using, lock" которые в C# являются встроенными в Немерле являются макросами. Все кто использовал эти конструкции могут представить как было бы неприятно жить без подобных фенечек. Но в языке есть далеко не все, что хочется иметь. Скажем конструкция аналогичная using очень часто нужна когда нужно что-то на время активизировать, а потом, при раскрутке стека отключить. Например, если вам нужно что-то закладывать в стек перед обработкой, а потом — это что-то вынимать, то вам придется пользоваться жудко неудобной конструкцией try/finally и при этом еще еще и каждый раз явно описывать действия связанные с финализацией. Меж тем можно написать макрос который автоматом выполнет нужные действия. Тогда вместо награмождения кода можно будет написать push_with_auto_pop(mySteack, value) { ... }.
Где здесь та самая кривая обучения о которой ведет рассуждения автор? Я ее не вижу. Конструкция очевидна, интуитивно понятна и не требует дополнительного описания. А не понятные можно просто не использовать. Это ни чем не отличается от классов и методов с непнятными названиями или от методов с тучей непонятных параметров. Просто там где сейчас уродливый код мы можем написать чистый и понятный код.
Скажу больше. Позиция автора — это чистой воды обман. Не знаю уж осознанный или нет, но обман. Кривая обучения не снизится если в проекте не будут использоваться новые синтаксические конструкции. Она повысится! Почему? Да потому, что обучается человек прикладной логике используемой в программе. А ее тем проще понять чем она проще. И если что-то можно выразить специальным синтаксисом значительно проще чем без него будет проще и понять.

AVK>При этом, обращаю внимание, ничего против того, чтобы использовать идеологию Немерле для построения собственно языка под конкретный стандарт я не имею. Т.е. суть не в конкретной технологии, а в области ее использования.


Причем тут какой-то конкретный язык я так и не понял.

Времени нет. Так что продолжу разбор полетов позже.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 26.12.08 18:23
Оценка:
Здравствуйте, VladD2, Вы писали:

А мой пост
Автор: alvas
Дата: 26.12.08
можешь прокомментировать?
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[2]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.12.08 18:28
Оценка: +1 -1 :)
Здравствуйте, VladD2, Вы писали:

VD>1. А автор темы вообще знает


VD>Позиция автора — это чистой воды обман.


Ясно. В лес.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[7]: Что меня не устраивает в МП в Nemerle
От: IB Австрия http://rsdn.ru
Дата: 26.12.08 21:19
Оценка: -2
Здравствуйте, VladD2, Вы писали:

VD>Процитируй, плиз, кусок своего сообщения который давал бы ответ хотя бы на этот вопрос:

A>>>2. Майкрософт добавила атрибуты в .Net, но не дала инструментов (или дала но слабые) для работы с ними. Поэтому нужно писать всякие прокси, так сказать свою виртуальную машину. МП в Nemerle решает эту проблему на отлично.
Есть даже два.
Почему это не нужно конкретно AVK:

Последний момент, который я хотел обсудить — это АОП, или даже, в более широком смысле, инструментирование и ускорение кода. Я понимаю, что ситуации могут быть разными, и наверное тот же BLToolkit выиграет от портирования на Немерле. Но вот в моих задачах сей процесс нужно проводить не при компиляции, а в момент деплоймента. Поясню: инструментируемый код представлен в виде бинарников и я не имею права требовать перекомпиляции прикладного кода, если у меня вдруг произошли изменения в сервере, которые требуют генерируемый код изменить. Соответственно, compile time техники Немерле тут совсем не подходят, просто потому что никаких исходников, которые Немерле будет компилировыать, нет.


Почему этого не стал делать MS, и почему это в принципе может быть не очень здорово:

На практике я наблюдаю, что даже новые стандартные фичи языка используются очень и очень неспешно и с неохотой. Даже итераторы, которые еще в 2004 году появились, у многих вызывают изумление. Исходя из этого, я считаю, что серьезные изменения в самом языке, заточенные под конкретный проект, в промышленном программировании в большинстве случаев неприемлемы. И только в очень больших платформах, там где сейчас применяются собственные языки программирования, внесение изменений в язык на уровне платформы может быть оправдано.
При этом, обращаю внимание, ничего против того, чтобы использовать идеологию Немерле для построения собственно языка под конкретный стандарт я не имею. Т.е. суть не в конкретной технологии, а в области ее использования.
Итого — внесение изменений в компилятор для улучшения языка лично для меня с точки зрения промышленного программирования малополезно (при этом побаловаться для проектов, рассчитаных на одну-две хари фо фан я как бы и не против).

... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re[2]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 26.12.08 22:43
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD> Например, если вам нужно что-то закладывать в стек перед обработкой, а потом — это что-то вынимать, то вам придется пользоваться жудко неудобной конструкцией try/finally и при этом еще еще и каждый раз явно описывать действия связанные с финализацией. Меж тем можно написать макрос который автоматом выполнет нужные действия. Тогда вместо награмождения кода можно будет написать push_with_auto_pop(mySteack, value) { ... }.


Например в языках с развитой системой типов это делается обычной функцией. Зачем нужен макрос тут?
Re[9]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.08 23:30
Оценка: -1 :))
Здравствуйте, AndrewVK, Вы писали:

VD>> Ну, ты просто гений! Я бы так не смог.


AVK>Да, ненадолго тебя хватило.


Ну, вот... и похвалить нельзя.
Сразу ищут в этом подвох. А я искренне восхищаюсь тобой. Вот IT сам справиться не мог. И я не смог. И никто не смог. А ты смог! Причем смог не просто разобраться, но и сделать верные выводы. Это дорогого стоит и позволяет рассуждать о предмете глубоко и интересно.

Да и как по другому? Ведь если не верить твоим словам, то придется подозревать тебя в том, что ты говоришь не правду. А это конечно оскорбительно и безосновательно. Так что приходится только верить и восхищаться.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 01:07
Оценка: 1 (1) +1 -2
Здравствуйте, AndrewVK, Вы писали:

Итак, автор темы, как я предполагал, нашел в первом же моем вопросе "А автор темы вообще знает, что макросы в Nemerle не обязаны изменять синтаксис языка?" фатальный недостаток.

Он просто возмущен тем, что кто-то может сомневаться в том что автор может не знать что-то.
Приношу ему свои извинения. Это было сказано не со зла, а исключительно потому, что этот вопрос бы старательно обойден автором темы стороной. Я думал, что автор не знает данной тонкости, но это
Автор: AndrewVK
Дата: 26.12.08
сообщение меня убедила в обратно.
Ну, что же остается только задать вопрос: А почему же автор не упомянул о такой возможности? И почему он старательно пытается избежать ее обсуждения. Ведь, казалось бы, она снимает проблему изменения синтаксиса с которой боролся.

AVK>2) Еще одна сфера применения МП — создание DSL. И здесь есть имеем другую проблему — основной смысл применения DSL в моем случае — не расширение возможностей существующих языков, а наоборот, их сужение и жесткое ограничение заданными рамками. Для того чтобы минимизировать спектр возможных проблем и объем знаний, требуемх для использования.


Хм. Весьма странные рассуждения. Они скорее запутают неопытного читателя нежели что-то ему объяснят.
Обратимся за разъяснениями к Википедии.
http://ru.wikipedia.org/wiki/Предметно-ориентированный язык программирования
Предметно-ориентированный язык программирования (англ. domain-specific programming language, domain-specific language, DSL) — язык программирования, специально разработанный для решения определённого круга задач, в отличие от языков программирования общего назначения, например C, или языков моделирования общего назначения наподобие UML. Например языки Postscript, SQL и др.

Из определения ясно видно, что это не усеченные или расширенные языки программирования общего назначения, а совершенно другие языки описывающие предметную область и оперирующие терминами из этой области.

AVK>И для этого, как мне видится, хоть Nemerle и можно использовать, но подходит он для этих целей не очень, потому что даже его база весьма и весьма функциональна, хоть и маленькая совсем, а написание кода, проверяющего, нет ли чего лишнего в AST, очень непростая задача.


Продолжим разбираться в терминах. Итак DSL-и делятся на внешние и встроенные.
Пример внешнего ДСЛЯ-я файлы спецификации YACC и LEX. Это независимые DSL-и описывающие грамматику и синтаксис некоторого (конкретного) языка программирования которые превращаются в код (на языке общего назначения) парсера и лексере с помощью отдельной (внешней) мета-программ. Внешним он является, так как не встроен в другой язык, а живет своей отдельной жизнью.
Внутренний DSL (EDSL или DSLE) живет внутри другого языка. Примером внутреннего DSL могут являться: регулярные выражения, LINQ-запросы, $-строки (Nemerle, PHP или Руби), всевозможные спецификации (например, спецификации O/R-отображения на основе пользовательских атрибутов) и многое другое.
Удобстово встроенных ДСЛ-ей заключается в том, что они могут тесно взаимодействовать с языком общего назначения (ЯОН) в который они встроены. Кроме того ЯОН поддерживающие разработку встроены ДСЛ-ей (такие как Немерле) мгоут значительно облегчать создание встроенных ДСЛ-ей.

Так вот поддержка ДСЛ-ей заключается не в наложении ограничений или расширений к основному языку, а в том, что язык позволяет описать совершенно новую семантику, а иногда и синтаксис.

Немерел как раз такой язык. Возможность задания нового синтаксиса — одна из базовых фич макросов. Новая же семантика достигается средствами мета-программирования. Макрос принимает в качестве параметров код в виде AST и позволяет сгенерировать код который будет подставлен вместо вызова макроса. При этом макрос может использовать входные параметры как для включения их в выходной код, так и для получения некоторой дополнительной формации. Например, макрос foreach (хотя это по сути не ДСЛ, но он отлично демонстрирует принцип) получает на вход код коллекции, код описывающий переменную в которую будет помещено значение текущего элемента и код тела цикла. Макрос получает информацию о типе коллекции и генерирует специализированный код для массивов, списков, пртерна этумератор и интерфейсов энумератор. Код тела цикла подставляется в генерируемый код. В результате мы имеем высокопроизводительные реализации циклов для часто встречающихся коллекций, плюс понятные сообщения об ошибках и возможность дальнейшего развития этого макроса. Так foreach кроме всего расширен возможностью сопоставления с образцом и фильтрации данных. Что, многие разобравшиеся с языком, находят очень удобным.
Точно так же можно делать и ДСЛ-и. Язык предоставляет исключительную гибкость для их реализации. На сегодня Немерле предоставляет одну из лучших инфрастркутур для создания встроенных ДСЛ-ей в статически типизированных языках. Конкурировать с ним могут только Лисп и Хаскель. Причем у Немерле есть серьезные преимущества перед обоими. В прочем, ТемплэйтХаскель испльзует очень похожий на немерловый подход.

AVK>Короче, идеология, применяемая в MPS, DSL Tools, Oslo для этой задачи представляется мне более подходящей.


Короче не всегда быстрее и уж точно не всегда правильнее.
MPS, DSL Tools, Oslo — это как минимум не конкуренты Немерле хотя бы потому, что это средства создания внешних ДСЛ-ей.

Несомненно каждый подход имеет право на существование. Но только в области своего применения.
Скажем DSL Tools — это по сути средство создания визуальных моделлеров таких как UML, ER или диаграмм классов из VS.
Интересно, что Немерле может весьма эффективно применяться совместно с ним для генерации кода по модели. Обратное не имеет смысла. В общем, это разные инструменты которые можно использовать вместе.
MPS — это отдельная песня. Это RAD-средство создания внешних ДСЛ-ей. По возможностям от оно более ограничено нежели немерловые макросы хоят бы потому, что не может использовать мета-информацию о типах языка для которого производится генерация и тем, что MPS создает только внешние ДСЛ-и.
Но надо признать, что во многом MPS — это конкурент Немерле. Причем в отличии от других данный конкурент предлагает весьма интересные средства и подходы.
Осло — это вообще мутант предлагающий писать внешние ДСЛ-и на основе ХМЛ и весьма странных средств трансформации.

Короче, все перечисленные средства как-минимум не умеют делать то, что умеет делать Немрле. А по жизни являются узко специализированными решениями.

AVK>3) Следующая сфера применения кодогенерации (язык не поворачивается назвать это метапрограммированием) — визарды в средах разработки, которые генерируют первоначальный код. Не очень представляю, как тут может помочь Немерле, да и использование специального языка тут явно перебор.


Опять хочется задать автору вопрос.
Он действительно не знает о том, что кодогенерация используется не только в визардах, но и в куче других мест?
Или же он намеренно обманывает своих читателей пытаясь внушить им, что кодогенерация и выизарды — это близнецы-браться?

Да, несомненно. В визардах используется генерация код. И несомненно она там обычно очень примитивная. Но на визардах свет не закачивается.
Есть куча задач требующих генерации кода. И, кстати — эти задачи называются мета-программированием, как бы автор темы в это не верил.
Более того, зачастую нужда в визардах исчезает если мы имеем в своем арсенале мощные средства мета-программирования.
Так же пропадает и нужда в кодогенераторах.
Например, в проектах C# и VB.NET ресурсные файлы генерируются визуальным интерфейсом встроенным в VS. Он формирует ХМЛ-файл с описанием ресурсов. Но ХМЛ-файл нельзя использовать их программы. В программе нужно иметь код который прочел бы ресурсы из исполняемого модуля и представил бы их в удобном для программы виде. Для этого в VS придумали весьма кривое решение — Custom Tool. Это кодогенератор создаваемый на дотнет-языке и ассоциируемый (в реестре) с расширением файла. Когда Студия производит запись файла, она вызывает ассоциированный с ним компонент и тот генерирует код на нужном языке. Кривость данного решения очевидно. Ведь без студии мы не можем запустить данный генератор. К тому же создание такого генератора весьма не тривиальная задача.
Немерле позволяет создать макрос читающих описание ресурсов в ХМЛ и генерирующий классы-обертки которые становятся доступными даже в во время разработки. Данный макрос одинаково работает как при компиляции, так и в дизайн-тайме. При этом сложность создания такого макроса на порядок ниже нежели генератора на обычном языке, так как при этом используется вся мощь мета-подсистемы Немерле. Описанный макрос создал человек не являющийся гуру в Немерле. При этом ему понадобилось всего пара советов.

AVK>4) Генерация кода на основе DSL. Пример такого применения — DSL Tools. Вот здесь, в принципе, отчасти использование Немерле оправдано. Но есть тут одна засада. Дело в том, что разработка кодогенератора (любого, в том числе и по AST, с применением квазицитирования, паттерн-матчинга и алгебраических типов данных) нередко значительно сложнее, нежели написание генерируемого кода. И при поддержке, далеко не факт, что правка кодогенератора проще, чем модификация рукопашного кода при помощи современных средств рефакторинга.


Этот пункт я вообще понять не могу. С одной стороны требуется генерировать код, но так как это сложнее его написания вручную (кстати — это еще почему?), то мы просто отказываемся от генерации и пишем код вручную. Другими словами мы отказываемся от самой цели. Чудесный пример того как человек заблудился в трех соснах.

Возможно имелось в виду, что проще написать программу которая с помощью какого-нибудь StringBuilder-а и какой-то там матери сгенерирует нетривиальный код в виде строк?
Спешу заверить, что сгенерировать код с помощью квази-цитирования в сто раз проще. При этом доступна декомпозиция кода с помощью квази-цитат и вся мощь ФП, так как од по сути есть набор списков (дерево состоящее из списков).

AVK>5) Последний момент, который я хотел обсудить — это АОП, или даже, в более широком смысле, инструментирование и ускорение кода. Я понимаю, что ситуации могут быть разными, и наверное тот же BLToolkit выиграет от портирования на Немерле.


Не "неверно", а 100%. Только причем тут АОП? BLToolkit — это типичный пример встроенного DSL предназначенного для описания и организации DAL (уровня абстрагирования доступа к данным) реализованного на основе техники мета-программирования. Только IT использовал не продвинутые средства мета-программирования Немерле, а дико низкоуровневый Sustem.Reflectin.Emit (т.е. генерацию IL-а). Это дико усложнило задачу. Так, что надо отдать должное мастерству и упорству IT который сумел создать такую мощьную библиотеку столь неудобными для этого и низкоуровневыми средствами.
Кстати, BLToolkit отличный пример DSL-я не реализвемого средствами перечисленных автором темы, идеологически более правильных (по его словам) MPS, DSL Tools и Oslo. Все дело в том, что BLToolkit нуждается в информации о типах конкретных структур данных, а это невозможно без специального API данные для которого генерируются компилятором. Для BLToolkit такими данными являются данные рефлексии генерируемые компилятором и доступные в рантайме. В Немерле все те же данные можно получить во время компиялции, что с одной стороны увеличит быстродействие, так как не надо будет компилировать код в рантайме анализируя структуры данных, а с другой стороны его было бы проще реализовать так как генерировать код по средством квази-цитирования в сто раз проще.

AVK> Но вот в моих задачах сей процесс нужно проводить не при компиляции, а в момент деплоймента. Поясню:


Да не стоит. Собственно я знаю, что в задачи автора темы входила генерация типов по описанию хранимому в ХМЛ-файлах которое производилось во время развертывания приложения на сервере.
Это интересный подход, но его тоже можно осуществить на макросах если просто запускать компиляцию прикладных сборок во время развертывания. Точно так же делал и автор. Только он сначала генерировал код с помощью XSLT, а потом компилировал его стандартным компилятором C#.

AVK>инструментируемый код представлен в виде бинарников и я не имею права требовать перекомпиляции прикладного кода, если у меня вдруг произошли изменения в сервере, которые требуют генерируемый код изменить. Соответственно, compile time техники Немерле тут совсем не подходят, просто потому что никаких исходников, которые Немерле будет компилировыать, нет.


Если речь идет именно об модификации скомпилированных сборок, то конечно Немерле тут не поможет. Однако, как раз модификация скомпилированых сборок обычно делается от бедности средств времени компиляции. Скажем такие стандартные задачи АОП как логирование, профилирование и добавление аспектов намного удобнее делать во время компиляции.

К тому же никто не запрещает использовать средства инструментирования и вместе со средствами мета-программирования, каковым является Немерле. Зачем же противопоставлять эти подходы?

AVK>P.S. Еще раз, если кто то в корне со мной не согласен, прежде чем бросаться писать возмущенный ответ и разгромить меня в пух и прах, обратите внимание на наличие и содержание дисклеймера.


Мы видели твой дисламер. Но ты почему-то проигнорировал наши просьбы дать расскзать о проблемах МП в Немерле. Вместо этого ты почему-то рассказал нам о своих предубеждениях (ни на чем не основанных).
Единственное с чем я могу согласиться в твоих словах — немерле не замена средствам модификации IL-а, или средствам интсрументирования. Но зачем же их противопоставлять. Ведь это разные средства позволяющие добиться как похожих (АОП), так совершенно разных задач. Средства инструментирования весьма ограничены в возможностях и сложны в применении. Они не конкурент мета-программированию. Наоборот, они могут отлично дополнять МП.

Почему-то уверен, что ответов по существу не будет. Вместо этого снова будет вцеплена одна из фраз, я буду обвинен в хамстве, а автор темы снова провозгласит себя правым и обиженным. А жаль. Ведь только в честных спорах рождается истина.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 01:44
Оценка: 21 (3) +1
Здравствуйте, alvas, Вы писали:

A>1. Нужен road map. Если он есть — можно ссылку?


Можно даже без ссылок, а прямо inline-ом.
Роад-мап очень простой. В ближайшее время будет выпущена версия 1.0. Произойдет это после того как я доведу работы по поддержке LINQ до финала и после того как мы вычистим основные ошибки в компиляторе и интеграции.
Я надеюсь, что эта работа будет завершена в Январе. В крайнем случае в первой половине 2009-года.
Новых фич при этом добавляться не будут. Только если библиотеки разработанные сторонними авторами. Так возможно мы увидим библиотеку поддержки XML а-ля LINQ to XML и (опять же возможно) реализацию макры аналогичной фиче dynamic из C# 4.0.

A>2. Команде Nemerle придется ВСЕГДА гнаться за Майкрософт. Огонь и движение

A>

A>Microsoft ведёт по вам огонь, и это всего лишь огонь прикрытия для того чтобы они могли двигаться вперёд, а вы нет.


A>Пример — необходимость реализации поддержки Linq в Nemerle.

A>На очереди dynamic, ...

Что-то в этом эссе есть. Но Джоиль человек не традиционной ориентации в прямо и переносном смысле этого слова.
Я не разделяю его вглядов. По крайней мере не все или не на 100%.

Так я считаю, что МС ведет этот огонь не со зла. Это проблемы большой организации и борьбы за лидерство в ней. Я тут скорее согласен с Роном Барком рассуждавшем о фатальном недостатке — его писали не они.

Посему и результат борьбы кланов в МС тоже неоднозначный. Например, создание Linq я считаю выдающимся достижением. Облачить ФП в столь понятную многим форму, да еще решить на его основе проблему интеграции реляционных данных и языков программирования общего назначения — это действительно прорыв который достоин попадания в аналы истории. В прочем, идея в основном заимствованная у Хаскелевцев, но даже факт доведения ее до масс является выдающимся достижением.

Посему считаю, что Linq должны поддерживать все уважающие себя гибридные языки реализующиеся на платформе дотнет (да и не только).
К тому же поддержка Линк не так сложна. Скорее сложно было довести систему разрешения перегрузок Немерле (действующую в очень жестких условиях отложенной типизации), чтобы быть совместимыми с библиотекой входящей в .NET Framework 3.5, нежели с самим Query Pattern. Само же преобразование кода в деревья выражений вообще было реализовано на базе макросов. Так что МС напряг не очень сильно своим Линком. Но он заставил довести систему разрешения перегрузки до очень высокого уровня.

A>Я так понял тут уж ничего не поделаешь.


Ну, почему же не поделаешь?
Вот погляди на ситуация которая складывается сегодня...
Все новые фичи C# 4.0 (до выхода которого еще 1.5 года) уже поддерживаются Nemerle. Разве что dynamic реализован не в полной мере и не через DLR, а через рефлексию. Но ведь, черт побери, реализован! И это было сделано 2 года назад! То есть мы опередили огромный Майкрософт ах на 4 года! Это ли не успех?
И так почти по всем новым фичам МС. Даже Линк — это проявление ФП которое было в Немрле с рождения.
Ко-/контр-вариантность интерфейсов и делегатов уже давно поддерживается в Немерле.
В общем, Немерле уже поддерживает все то что будет не только C# 4.0, но и в C# 5.0 (ведь компилятор изначально доступен как компонент, МП не просто реализовано, а реализовано как базовая фича языка).

Таким образом мы обогнали MS (который, на мой взгляд, движется в правильном направлении, но уж очень экстенсивными методами и с огромным количеством ошибок) на много лет. Эта фора которую нужно не прое... эээ... не утртить .
Все что нужно языку на сегодня — это отсутствие багов в языке и IDE.

Кроме того нужно:
1. Более качественное IDE. Желательно безупречная. Но это большая работа, особенно в условиях когда сама IDE основана на COM.
2. Вести работы над упрощением API компилятора используемого для целей мета-программирования.
3. Написать множество стандартных макросов которые можно будет использовать как строительные блоки.
4. Ускорить работу генерируемого им исполняемого кода. А это значит, что нам нужно научить его инлайнить хотя бы базовые ФП-функции вроде Map, Fold, Zip и Filter. А так же локальные функции и лямбды передаваемые в них. В идеале же нужно использовать технику супер-компиляции которая бы позволила максимально устранить, что называется, performance penalty от использования ФП.
5. Ускорить работу компилятора. Отчасти это сделает пункт 4, но кроме того компилятор нужно сделать многопточным. Чтобы он мог масштабироваться за счет увеличения процессоры ядер.
6. Возможно нужно снять ограничения на то где может применяться макрос и из каких лексем он может состоять. Тогда даже разбор самого описания макроса можно реализовать по средствам макроса, а ДСЛ-и можно будет объявлять на уровне типов.

Вот только все эти пункты мы будет реализовывать во второй версии языка и компилятора. Перед этим нам придется произвести основательный рефкторинг компилятора. Разбить его на модули абстрагируемые интерфейсами. Разложить все типы по отдельным файлам. Дать более внятные имена некоторым типам.

A>3. ECMA стандарт даст гарантию невозможности ламающих изменений языка в мажорных версиях. Даже у Майкрософт если

код считают устаревшим — помечают атрибутом [obsolete], но это ворнинги — код скомпилится без проблем. Обратная совместимость это наше все.

Гарантия отсуствия ломающих изменений, по крайней мере серьезных — это бутсртипинг компилятора, т.е. то что компилятор компилирует сам себя. Это приводит к эволюционному его развитию. Без ломающих изменений вряд ли получится улучшить язык. Но я уверен, что они не будут очень болезненными. Скажем переименование АПИ — это ломающее изменение. Но без него не обойтись. К тому же можно постараться сохранить и старые названия пометив их как obsolete.

Что касается стандарта, то тут нужны добровольцы которые будут его создавать. Я вряд ли потяну это, так как и так много дел, плюс мой английский для этого не годится.

A>4. Больше информировать комьюнити что происходит в Команде Nemerle.


Постараемся.

A>ЗЫ. Я так понял что не получилось у грандов выбить гранты — так разместите "Donate" на сайт и к вам потянутся люди.


Кто бы этим занялся. Просто невозможно сделать все сразу и в одиночку. Нас мало и приходится тратить время на основную задачу — доведение компилятора до ума. Финишь уже близко, но надо работать.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Что меня не устраивает в МП в Nemerle
От: IT Россия linq2db.com
Дата: 27.12.08 01:57
Оценка: 145 (6) +2
Здравствуйте, AndrewVK, Вы писали:

AVK>1) На практике я наблюдаю, что даже новые стандартные фичи языка используются очень и очень неспешно и с неохотой. Даже итераторы, которые еще в 2004 году появились, у многих вызывают изумление.


Инженер, который не знает инструмента, с которым он работает, не может эффективно выполнять свои функции в принципе. С программистами, которые не хотят изучать новые технологии или даже противятся этому, рано или поздно начинаются проблемы из серии "тупой дизайн, кривой код". Причём чем выше статус такого человека в команде, тем разрушительнее последствия. Я не знаю как эти вещи связаны между собой, может это чистое совпадение, но в моей практике это совпадение сто процентное, что позволяет мне сделать вывод, что оно не случайно. Для меня это даже стало очень чётким индикатором, человек не интересуется, не может освоить новое — ничего хорошего от него не жди. Под таких людей нужно не подстраиваться, а пытаться их учить, а если не получается, то постараться от них избавится.

AVK>Исходя из этого, я считаю, что серьезные изменения в самом языке, заточенные под конкретный проект, в промышленном программировании в большинстве случаев неприемлемы. И только в очень больших платформах, там где сейчас применяются собственные языки программирования, внесение изменений в язык на уровне платформы может быть оправдано.


В промышленном программировании любой более менее серьёзный проект включает в себя фреймворк или библиотеку с общими компонентами. Это позволяет элементарно увеличить эффективность за счёт повторного использования кода. Использование макросов абсолютно ни чем не отличается от использования общих компонент, а в большинстве своих проявлений даже не отличимо визуально. И даже синтаксические макросы, которые не так часто и требуются, не сложнее в освоении, чем любая функция из библиотеки.

Главная проблема при изучении нового не в запоминании названия функций и конструкций языка. Главная проблема в освоении новых концепций. Тот же yield return не сложно запомнить, гораздо сложнее разобраться с ленивостью. А разобравшись будет уже не важно как это реализуется, функцией, макросом или языковой конструкцией. Ведь ни функции, ни макросы, ни ключевые слова сами по себе не вводят новых концепций, они их реализуют и являются всего лишь следствием, формой.

В общем, сложность использования макросов надумана и не имеет ничего общего с реальной действительностью. Это не сложнее, чем использование метода из библиотеки общих компонент.

AVK>2) Еще одна сфера применения МП — создание DSL. И здесь есть имеем другую проблему — основной смысл применения DSL в моем случае — не расширение возможностей существующих языков, а наоборот, их сужение и жесткое ограничение заданными рамками. Для того чтобы минимизировать спектр возможных проблем и объем знаний, требуемх для использования. И для этого, как мне видится, хоть Nemerle и можно использовать, но подходит он для этих целей не очень, потому что даже его база весьма и весьма функциональна, хоть и маленькая совсем, а написание кода, проверяющего, нет ли чего лишнего в AST, очень непростая задача.


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

AVK>Короче, идеология, применяемая в MPS, DSL Tools, Oslo для этой задачи представляется мне более подходящей.


Насколько мне известно, аббревиатура DSL в DSL Tools появилась по недоразумению. С DSL эти Tools имеет мало обощего.

AVK>3) Следующая сфера применения кодогенерации (язык не поворачивается назвать это метапрограммированием) — визарды в средах разработки, которые генерируют первоначальный код. Не очень представляю, как тут может помочь Немерле, да и использование специального языка тут явно перебор.


Элементарно. Добавляем в проект атрибут-макрос уровня сборки и этот атрибут разгребает весь подходящий xml (или чего там) в проекте и генерирует код. Custom Tools понятное дело идут лесом.

AVK>4) Генерация кода на основе DSL. Пример такого применения — DSL Tools. Вот здесь, в принципе, отчасти использование Немерле оправдано. Но есть тут одна засада. Дело в том, что разработка кодогенератора (любого, в том числе и по AST, с применением квазицитирования, паттерн-матчинга и алгебраических типов данных) нередко значительно сложнее, нежели написание генерируемого кода. И при поддержке, далеко не факт, что правка кодогенератора проще, чем модификация рукопашного кода при помощи современных средств рефакторинга.


Это опять лишь домыслы. Генерировать код на Немерле не сложнее, чем генерировать текст. Дело в том, что текст обычно генерируется последовательно, от начала до конца. Код в Немерле можно генерировать в произвольном порядке, что даёт определённую гибкость. А про правку сгенерированного кода и железной линейкой по пальцам тут уже сказали. И я с этим полностью согласен, т.к. встречался с таким баранизмом на практике.

AVK>5) Последний момент, который я хотел обсудить — это АОП, или даже, в более широком смысле, инструментирование и ускорение кода. Я понимаю, что ситуации могут быть разными, и наверное тот же BLToolkit выиграет от портирования на Немерле. Но вот в моих задачах сей процесс нужно проводить не при компиляции, а в момент деплоймента. Поясню: инструментируемый код представлен в виде бинарников и я не имею права требовать перекомпиляции прикладного кода, если у меня вдруг произошли изменения в сервере, которые требуют генерируемый код изменить. Соответственно, compile time техники Немерле тут совсем не подходят, просто потому что никаких исходников, которые Немерле будет компилировыать, нет.


Не знаю зачем ты добавил сюда этот пункт, но МП тут вообще ни при чём. Если у тебя задача не может использовать МП, или ООП, или ФП, то странно в этом обвинять МП, ООП, или ФП.

В общем, как-то всё не очень убедительно. Фактически я увидел две претенции:

1. Сложноть использования макросов.
2. Сложность написания макросов.

По первому пункту я уже всё сказал. Это не сложнее, чем использование классов, методов и атрибутов. Сложность не в макросах, сложность в концепциях, которые они реализуют. Но это в равной степени относится и к тем же классам, методам и атрибутам.

По второму пункту можно сказать, что да, написание макросов сложнее, чем, например, написание простого метода. Но ведь и эффект гораздо сильнее. Вообще написание библиотечного кода — это отдельный скил, который нужно тренировать. МП тоже скил, который тоже нужно тренировать. Во многом эти скилы пересекаются, так что не вижу в этом большой проблемы.
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 02:03
Оценка: +1
AVK>Дисклеймер:

Проблема немерле в том, что изумительная красота макросов пока никак не конвертируется в деньги.

Круто, что foreach можно разъять на детали. Круто -- pattern matching. Круто полностью от начала до конца понимать, что такое монады (не гони пацан, это уже из "Что меня не устраивает в хаскелле").

Короче, вся эта крутизна пока не подтверждена убедительной success story. А без success story как ты промотивируешь команду сесть и вложить неделю времени в академические одиссеи?
Re[2]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 02:31
Оценка: +1
IT>В общем, сложность использования макросов надумана и не имеет ничего общего с реальной действительностью. Это не сложнее, чем использование метода из библиотеки общих компонент.

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

Например, многие мои знакомые англичане достаточно бегло говорят на английском языке и даже не спотыкаются на таких конструкциях как "will have been". Как ты думаешь, сложность использования времён в английском языке тоже надумана?


IT>Элементарно. Добавляем в проект атрибут-макрос уровня сборки и этот атрибут разгребает весь подходящий xml (или чего там) в проекте и генерирует код. Custom Tools понятное дело идут лесом.


Понятное дело. Более того, если через полтора года что-то где в этом отлаженом механизме чем-то накроется -- нужно всего лишь найти того программиста, который это написал, кинуться ему в ноги, заплатить хороших денег -- и проблема решена. Куда проще чем попросить первого попавшегося и сунуть ему в зубы раздел MSDN по Custom Tools.



IT>можно сказать, что да, написание макросов сложнее, чем, например, написание простого метода. Но ведь и эффект гораздо сильнее. Вообще написание библиотечного кода — это отдельный скил, который нужно тренировать.


Директору конторы Васе Пупкину НУЖНА система расчёта, планирования и учёта километро-литров, ему с большим прибором на скилы которые там программисты тренируют в рабочее время.

Знаешь, в одной конторе провели чемпионат по Солитёру и всех трёх финалистов назавтра выперли. Так вот Солитёр не единственный непроизводственный "скил".
Re[3]: Что меня не устраивает в МП в Nemerle
От: IT Россия linq2db.com
Дата: 27.12.08 03:16
Оценка: +2
Здравствуйте, mihailik, Вы писали:

IT>>В общем, сложность использования макросов надумана и не имеет ничего общего с реальной действительностью. Это не сложнее, чем использование метода из библиотеки общих компонент.


M>Многим это покажется невероятным, но люди, хорошо понимающие определённую область знаний, обычно считают эту область знаний понятной.


M>Например, многие мои знакомые англичане достаточно бегло говорят на английском языке и даже не спотыкаются на таких конструкциях как "will have been". Как ты думаешь, сложность использования времён в английском языке тоже надумана?


К чему эта демагогия? Давай обойдёмся здесь без времён и англиских знакомых. Ты считаешь использование макросов сложным делом? Приведи пример, если сможешь, который демонстрирует эту сложность. Я со своей стороны попытаюсь приложить все усилия, чтобы понять в чём эта сложность состоит. АВК, кстати, привёл такой пример — yield return. Трудно видишь ли некоторым это понять. Согласен, трудно. А ленивость в Linq не трудно? Проблема ведь та же, но ни одного ключевого слова там нет. Одни сплошные функции. Так в конструкциях языка дело ли? Тоже самое и с макросами. Макросы — это форма, такая же как и классы, методы, языковые конструкции. Настоящая сложность не в них, а в концепциях, которые они реализуют. Если в твоих проектах используются библиотеки общих компонент, то сложность их использования и сложность использования макросов будет абсолютно одинаковой. Никакой разницы.

IT>>Элементарно. Добавляем в проект атрибут-макрос уровня сборки и этот атрибут разгребает весь подходящий xml (или чего там) в проекте и генерирует код. Custom Tools понятное дело идут лесом.


M>Понятное дело. Более того, если через полтора года что-то где в этом отлаженом механизме чем-то накроется -- нужно всего лишь найти того программиста, который это написал, кинуться ему в ноги, заплатить хороших денег -- и проблема решена. Куда проще чем попросить первого попавшегося и сунуть ему в зубы раздел MSDN по Custom Tools.


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

IT>>можно сказать, что да, написание макросов сложнее, чем, например, написание простого метода. Но ведь и эффект гораздо сильнее. Вообще написание библиотечного кода — это отдельный скил, который нужно тренировать.


M>Директору конторы Васе Пупкину НУЖНА система расчёта, планирования и учёта километро-литров, ему с большим прибором на скилы которые там программисты тренируют в рабочее время.


Директору может и всё равно, а начальнику IT департмента не всё равно. А если всё равно, то долго он начальником не будет.

M>Знаешь, в одной конторе провели чемпионат по Солитёру и всех трёх финалистов назавтра выперли. Так вот Солитёр не единственный непроизводственный "скил".


Что-то тебя сегодня на демагогию прорвало. Солитёры, чемпионаты Думаешь это делает твои умозаключения (кстати, какие?) более убедительными?
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 03:28
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, alvas, Вы писали:


A>>1. Нужен road map. Если он есть — можно ссылку?


Большое спасибо Но я думаю что на Nemerle.org это бы прочитало значительно больше людей.

A>>2. Команде Nemerle придется ВСЕГДА гнаться за Майкрософт.


Я не считаю что это Майкрософт делает со зла. Но Nemerle Team все равно придется дублировать все фичи МС. Спасибо что убедил меня в том что это не большая проблема для Nemerle Team.

VD>Кроме того нужно:


Вот это все нужно в road map

A>>3. ECMA стандарт даст гарантию невозможности ламающих изменений языка в мажорных версиях. Даже у Майкрософт если

VD>код считают устаревшим — помечают атрибутом [obsolete], но это ворнинги — код скомпилится без проблем. Обратная совместимость это наше все.

VD>Без ломающих изменений вряд ли получится улучшить язык. Но я уверен, что они не будут очень болезненными. Скажем переименование АПИ — это ломающее изменение.


Представь момент когда Nemerle стал мейнстримом. И что тебе скажут менеджеры проектов, когда после закачки обновлений прогибается код, написанный до этого? И плюс еще на сайте висит гордая надпись. "Переходите на 2.0, потому что мы через месяц прекращаем поддержку 1.0?" В общем я ничего не имею против ломающих изменений в бета, CTP, RC. Но мажорные версии должны полностью поддерживать возможности минорных. Иначе просто никто не рискнет использовать Nemerle в промышленных проектах.

PS. АПИ — это API? Я правильно понял?
PPS. Писали мы как-то один проект на .Net 2.0 бета. Говорю товарищу — а не опасно? Он — зато будем впереди планеты всей. Пришло время релиза .Net 2.0. Качнули, поставили. Прога запустилась. Ура! А тут сразу как полетели эксепшины. И что делать будем? Перекомплили исходники. И все заработало.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[8]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 03:42
Оценка:
Здравствуйте, VladD2, Вы писали:

Есть такой себе язык SCRIPT.NET. Он поддерживает Mutantic Objects. Что то типа анонимных типов. Такое нужно в хозяйстве?
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[9]: Что меня не устраивает в МП в Nemerle
От: Andrei F.  
Дата: 27.12.08 04:46
Оценка: +1 :)
Здравствуйте, AndrewVK, Вы писали:

Ясно, значит, какой реальный опыт. Но я отвлекся.
Резонерством я назвал потому, что это всё практически не имеет отношения к теме в заголовке — "недостатки в МП в Nemerle". Выяснилось, что он не в состоянии вложить мозги в головы дураков и грамотно сделать проектирование вместо программиста. Действительно, фатальный недостаток системы МП
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[3]: Что меня не устраивает в МП в Nemerle
От: Andrei F.  
Дата: 27.12.08 04:51
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Продемонстрируй, плиз, хотя бы один ДСЛ сужающий возможности исходного языка.


Например, возможность запретить использовать треды для низкоквалифицированных программистов. Или ограничение на unsafe-конструкции, как в C#. Или запрет обращаться к файловой системе и реестру напрямую в слое бизнес-логики. И т.д., и т.п.
Всё это имеет определенный смысл, хотя называть фатальным недостатком отсутствие такой возможности я бы не стал
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[4]: Что меня не устраивает в МП в Nemerle
От: IT Россия linq2db.com
Дата: 27.12.08 05:00
Оценка: +2
Здравствуйте, Andrei F., Вы писали:

AF>Например, возможность запретить использовать треды для низкоквалифицированных программистов. Или ограничение на unsafe-конструкции, как в C#. Или запрет обращаться к файловой системе и реестру напрямую в слое бизнес-логики. И т.д., и т.п.


Это не DSL. Это больше смахивает на FxCop.
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Что меня не устраивает в МП в Nemerle
От: Andrei F.  
Дата: 27.12.08 05:06
Оценка:
Здравствуйте, IT, Вы писали:

IT>Это не DSL. Это больше смахивает на FxCop.


В рамках языка такая фича полезнее. Например, когда я работал на ABBYY, то познакомился с целым талмудом страниц на 100 — "как писать нельзя".
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[6]: Что меня не устраивает в МП в Nemerle
От: IT Россия linq2db.com
Дата: 27.12.08 05:21
Оценка: +1
Здравствуйте, Andrei F., Вы писали:

IT>>Это не DSL. Это больше смахивает на FxCop.


AF>В рамках языка такая фича полезнее. Например, когда я работал на ABBYY, то познакомился с целым талмудом страниц на 100 — "как писать нельзя".


Ну дык не проблема. Пиши макрос-атрибут уровня сборки и пусть он бегает по коду и анализирует чего-кому можно, а кому нельзя. Например, в компиляторе есть макрос, который запрещает объявлять неизменяемые поля типа Location.
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Что меня не устраивает в МП в Nemerle
От: z00n  
Дата: 27.12.08 05:55
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Здравствуйте, VladD2, Вы писали:


VD>> Например, если вам нужно что-то закладывать в стек перед обработкой, а потом — это что-то вынимать, то вам придется пользоваться жудко неудобной конструкцией try/finally и при этом еще еще и каждый раз явно описывать действия связанные с финализацией. Меж тем можно написать макрос который автоматом выполнет нужные действия. Тогда вместо награмождения кода можно будет написать push_with_auto_pop(mySteack, value) { ... }.


VE>Например в языках с развитой системой типов это делается обычной функцией. Зачем нужен макрос тут?

Так повелось со времен лиспа: UNWIND-PROTECT. Это один из способов избежать преждевременного вычисления аргументов. Другие способы: ленивый язык(a-la Haskell) или передача функций (thunks) как аргументов. Для последнего желательно иметь 'красивый' синтаксис лямбд, как в Smalltalk или Scala например.

// Scala: http://scala.sygneca.com/patterns/loan

def withResource[A](f : Resource => A) : A = {
    val r = getResource()  // Replace with the code to acquire the resource
    try {
        f(r)
    } finally {
        r.dispose()
    }
}

// clients code
withResource{ r =>
    // do stuff with r....
}
Re[10]: Что меня не устраивает в МП в Nemerle
От: FR  
Дата: 27.12.08 06:28
Оценка: +1
Здравствуйте, Andrei F., Вы писали:

AF>Резонерством я назвал потому, что это всё практически не имеет отношения к теме в заголовке — "недостатки в МП в Nemerle". Выяснилось, что он не в состоянии вложить мозги в головы дураков и грамотно сделать проектирование вместо программиста. Действительно, фатальный недостаток системы МП


Популярность Лиспа, Dylan'а и Форта показывают что недостаток может и не фатальный, но очень существенный.
Re[4]: Что меня не устраивает в МП в Nemerle
От: FR  
Дата: 27.12.08 06:40
Оценка:
Здравствуйте, z00n, Вы писали:

VE>>Например в языках с развитой системой типов это делается обычной функцией. Зачем нужен макрос тут?

Z>Так повелось со времен лиспа: UNWIND-PROTECT. Это один из способов избежать преждевременного вычисления аргументов. Другие способы: ленивый язык(a-la Haskell) или передача функций (thunks) как аргументов. Для последнего желательно иметь 'красивый' синтаксис лямбд, как в Smalltalk или Scala например.

Можно как в D http://www.digitalmars.com/d/2.0/lazy-evaluation.html обойтись только леневыми аргументами функций.
Re[2]: Что меня не устраивает в МП в Nemerle
От: hi_octane Беларусь  
Дата: 27.12.08 10:02
Оценка: 38 (1)
M>Проблема немерле в том, что изумительная красота макросов пока никак не конвертируется в деньги.

Каждый свою success story имхо сам должен делать. Неважно в целом по жизни или в применении каких-то фич каких-то языков в какой-то предметной области. У кого-то вон milliondollarhomepage выстрелил — и success story офигительная и бизнес модель явно проще чем самое короткое описание пути конвертации yield return в деньги

M>Короче, вся эта крутизна пока не подтверждена убедительной success story.


Я Nemerle success story
Автор: hi_octane
Дата: 14.02.08
почти год назад выкладывал, и даже на вопросы отвечал. Проект тот и сейчас развивается.

M>А без success story как ты промотивируешь команду сесть и вложить неделю времени в академические одиссеи?


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

Как переходила на Nemerle наша небольшая команда
Автор: hi_octane
Дата: 18.02.08
я тоже писал. Кстати, времени отведённого на обучение фактически не было. Люди просто сели и начали писать — медленно и с точки зрения нашего единственного на тот момент функциональщика — косяча и через одно место. Но у Nemerle есть одно охренительное преимущество — не знаешь как сделать красиво — делай как на C# А потом функциональщик делал ревью и обьяснял — что здесь через одно место и здесь, и т.п. Да какой-то протормоз на этом получился, но мы как те мышки, которые кололись и плакали, но знали что катус колется только пока иголки не сгрызёшь. Так и вышло — сейчас у всех кризис-кризис, а нас заказчик развитием этого проекта загрузил по-полной.
Nemerle опыт применения success story
Re[4]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 10:03
Оценка: -1
IT> Трудно видишь ли некоторым это понять. Согласен, трудно.

Ты хотел пример, ты сам нашёл пример -- и сам видишь, что существование единичного примера ничего не доказывает.


IT> А ленивость в Linq не трудно? Проблема ведь та же, но ни одного ключевого слова там нет. Одни сплошные функции. Так в конструкциях языка дело ли? Тоже самое и с макросами. Макросы — это форма, такая же как и классы, методы, языковые конструкции. Настоящая сложность не в них, а в концепциях, которые они реализуют. Если в твоих проектах используются библиотеки общих компонент, то сложность их использования и сложность использования макросов будет абсолютно одинаковой. Никакой разницы.


Как противоречиво устроен человевеский мозг. Одновременно он может прекрасно понимать макросы немерле, и одновременно извергать такие зияющие логические противоречия.

НЕКОТОРЫЕ библиотеки сложны. Сложность использования НЕКОТОРЫХ библиотек сравнима с макросами немерле.


IT>Не вижу логической связи между этими двумя утверждениями. Получается, что если макросы, то кругом одни тупые кодеры, а если MSDN, первый попавшийся у нас гений, способный одной левой разобраться с таким редкосным гауном как Custom Tools.


Студент с улицы самостоятельно разберётся с Custom Tools в течении 3 дней (в среднем), какие бы ни были там омерзительные названия методов и ключей реестра.

60% студентов с улицы не осилят макросы немерле без посторонней помощи. Какие бы там ни были красоты внутреннего $.


M>>Директору конторы Васе Пупкину НУЖНА система расчёта, планирования и учёта километро-литров, ему с большим прибором на скилы которые там программисты тренируют в рабочее время.


IT>Директору может и всё равно, а начальнику IT департмента не всё равно. А если всё равно, то долго он начальником не будет.


Производственные проблемы уборщицы не должны тормозить работу фирмы. Если фирме нужны литры-километры в срок, то всё остальное должно следовать строго в фарватере.
Re[3]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 10:23
Оценка:
M>>Короче, вся эта крутизна пока не подтверждена убедительной success story.

_>Я Nemerle success story
Автор: hi_octane
Дата: 14.02.08
почти год назад выкладывал, и даже на вопросы отвечал. Проект тот и сейчас развивается.


Success story это не просто факт из жизни. Success story должна продавать что-то.

Из твоего рассказа я не очень понял, почему именно немерле и какую он бизнес-выгоду для проекта принёс.
Re[2]: Что меня не устраивает в МП в Nemerle
От: IB Австрия http://rsdn.ru
Дата: 27.12.08 10:31
Оценка: 8 (1)
Здравствуйте, VladD2, Вы писали:

VD>Он просто возмущен тем, что кто-то может сомневаться в том что автор может не знать что-то.

Влад, ты задрал. На долго тебя действительно не хватило.
Я далеко не во всем согласен с АВК, да и задачи у меня другие, но наблюдать со стороны твою демагогию крайне не приятно.

VD>Ну, что же остается только задать вопрос: А почему же автор не упомянул о такой возможности? И почему он старательно пытается избежать ее обсуждения. Ведь, казалось бы, она снимает проблему изменения синтаксиса с которой боролся.

Не снимает. Проблема не в том, что можно так не делать, проблема в том, что так делать в принципе можно, об этом говорилось уже ни раз.

VD>Хм. Весьма странные рассуждения. Они скорее запутают неопытного читателя нежели что-то ему объяснят.

Позволю себе напомнить, что тут не стояла цель что-то объяснить неопытному читателю. Андрей объяснял, опытным читателям, что именно его не устраивает в Nemerle, на именно его задачах. И именно этого вы от него и требовали.

VD>Из определения ясно видно, что это не усеченные или расширенные языки программирования общего назначения, а совершенно другие языки описывающие предметную область и оперирующие терминами из этой области.

То есть, ты утверждаешь, что переходя в термины предметной области ты не сужаешь набор возможностей? И не составит никаких проблем описать бухгалтерию точки общественного питания в терминах системы управления АЭС?

VD>Так вот поддержка ДСЛ-ей заключается не в наложении ограничений или расширений к основному языку, а в том, что язык позволяет описать совершенно новую семантику, а иногда и синтаксис.

С набором ограниченных возможностей.

[PR метапрограммирования поскипан...]

VD>Но ты почему-то проигнорировал наши просьбы дать расскзать о проблемах МП в Немерле. Вместо этого ты почему-то рассказал нам о своих предубеждениях (ни на чем не основанных).

Во-первых, никто не обещал рассказывать про проблемы МП в немерле, обещали рассказать чем не устраивает немерле именно AVK, и именно это и рассказали.
А во-вторых, рассказали на чем именно основаны "предубеждения".

VD>Почему-то уверен, что ответов по существу не будет. Вместо этого снова будет вцеплена одна из фраз, я буду обвинен в хамстве, а автор темы снова провозгласит себя правым и обиженным. А жаль.

А ты не хами и жалеть не придется.

VD>Ведь только в честных спорах рождается истина.

Возможно. Но только честно спорить ты не умеешь.
... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re[5]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 10:32
Оценка:
Здравствуйте, mihailik, Вы писали:

M>Студент с улицы самостоятельно разберётся с Custom Tools в течении 3 дней (в среднем), какие бы ни были там омерзительные названия методов и ключей реестра.


M>60% студентов с улицы не осилят макросы немерле без посторонней помощи. Какие бы там ни были красоты внутреннего $.


Это который string.Format, только продвинутый? Чтобы реально с ним начать работать думаю 3 дней много будет. Можно и за пару часов управиться.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[6]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 10:37
Оценка:
M>>60% студентов с улицы не осилят макросы немерле без посторонней помощи. Какие бы там ни были красоты внутреннего $.

A>Это который string.Format, только продвинутый? Чтобы реально с ним начать работать думаю 3 дней много будет. Можно и за пару часов управиться.


Ну, тогда конечно. Завтра же переходим на немерле, раз он при помощи sting.Format решает все проблемы.
Re[3]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 10:51
Оценка: +1
Здравствуйте, IB, Вы писали:

VD>>Он просто возмущен тем, что кто-то может сомневаться в том что автор может не знать что-то.

IB>Влад, ты задрал. На долго тебя действительно не хватило.
IB>Я далеко не во всем согласен с АВК, да и задачи у меня другие, но наблюдать со стороны твою демагогию крайне не приятно.

Ирония — да, оскорбление — нет. В чем демагогия то?

VD>>Хм. Весьма странные рассуждения. Они скорее запутают неопытного читателя нежели что-то ему объяснят.

IB>Позволю себе напомнить, что тут не стояла цель что-то объяснить неопытному читателю. Андрей объяснял, опытным читателям, что именно его не устраивает в Nemerle, на именно его задачах. И именно этого вы от него и требовали.

Если вы знаете о задачах автора, то можно более подробно. Все повествование завязано на них, но упоминание о них крайне туманно. К тому же на просьбы осветить этот вопрос автор отреагировал весьма странно
Автор: AndrewVK
Дата: 26.12.08
.

VD>>Почему-то уверен, что ответов по существу не будет. Вместо этого снова будет вцеплена одна из фраз, я буду обвинен в хамстве, а автор темы снова провозгласит себя правым и обиженным. А жаль.

IB>А ты не хами и жалеть не придется.

А можно хамскую цитату?

VD>>Ведь только в честных спорах рождается истина.

IB>Возможно. Но только честно спорить ты не умеешь.

И как это понимать?
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[7]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 10:58
Оценка:
Здравствуйте, mihailik, Вы писали:

M>>>60% студентов с улицы не осилят макросы немерле без посторонней помощи. Какие бы там ни были красоты внутреннего $.


Вы упомянули "красоты внутреннего $". Я переспросил — не это
Автор(ы): Сергей Туленцев, Владислав Чистяков
Дата: 23.05.2006
Производительность труда программиста в основном зависит от самого программиста. Однако даже самый опытный и знающий программист мало что может без подходящего инструмента. Эта статья открывает цикл статей об одном из таких инструментов, еще мало известном среди программистов, но очень многообещающем. Язык Nemerle, о котором пойдет речь в этих статьях, на первый взгляд очень похож на слегка улучшенный C#, но привносит многое из передовых исследовательских языков. Данная статья рассказывает об отличиях Nemerle от C# (как наиболее близкого языка)и является неформальным введением в язык.
(и дальше поиск по символу $ дает 83 совпадения) ли вы имели ввиду?
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[4]: Что меня не устраивает в МП в Nemerle
От: IB Австрия http://rsdn.ru
Дата: 27.12.08 11:55
Оценка: +2 -1
Здравствуйте, alvas, Вы писали:

A>Ирония — да, оскорбление — нет.

Ну вот лично я такую иронию воспринимал бы исключительно как оскорбление. Тем более, что его прямо попросили от подобной "иронии" удержаться и он даже обещал это сделать.

A>В чем демагогия то?

В том, что он передергивает практически каждое предложение и отвечает не на то что было написано, а на то что ему удобно.

A>Если вы знаете о задачах автора, то можно более подробно. Все повествование завязано на них, но упоминание о них крайне туманно.

Там упоминание очень конкретно. Он по пунктам расписал как именно он видит использование МП на своих задачах и почему немерле тут не подходит.

A>А можно хамскую цитату?

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

A>И как это понимать?

А что тут не понятного? В способы ведения честного спора "ирония" не входит.
... << RSDN@Home 1.2.0 alpha rev. 673>>
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re[5]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 12:03
Оценка:
Здравствуйте, IB, Вы писали:

A>>Если вы знаете о задачах автора, то можно более подробно. Все повествование завязано на них, но упоминание о них крайне туманно.

IB>Там упоминание очень конкретно. Он по пунктам расписал как именно он видит использование МП на своих задачах и почему немерле тут не подходит.

Спасибо за исчерпывающий ответ.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[2]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.12.08 12:09
Оценка: -1
Здравствуйте, Константин Л., Вы писали:

КЛ>можно разобью на 2?


КЛ>1. новые фичи осваиваются неохотно

КЛ>2. для пром. девелопмента лучше следовать стандартам, вольности неоправданы

КЛ>соглашусь частично только со 2м, тк если отталкиваться от п.1, то прогресс нафиг не нужен. макросы действительно хорошая штука, чтобы превратить код в кошмар. но я видел, как это делали используя обычные языки через жопу.


п.1 не означает что новое вводить не нужно просто нужно учитывать, что есть п.1 и никак без этого нельзя

Дело в том что комманды разработчиков меняются со временем и использование хлама вроде Неммерле существенно завышает входную планку.
Re[9]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 12:43
Оценка:
Здравствуйте, alvas, Вы писали:

A>Представь момент когда Nemerle стал мейнстримом. И что тебе скажут менеджеры проектов, когда после закачки обновлений прогибается код, написанный до этого? И плюс еще на сайте висит гордая надпись. "Переходите на 2.0, потому что мы через месяц прекращаем поддержку 1.0?" В общем я ничего не имею против ломающих изменений в бета, CTP, RC. Но мажорные версии должны полностью поддерживать возможности минорных. Иначе просто никто не рискнет использовать Nemerle в промышленных проектах.


В отличии от создателей D мы будем стараться избегать ломающих изменений по максимуму. Но язык пока далеко не мэйнстрим и этим нужно пользоваться. Лучше уж ломающие изменения чем архитектурный косяк.

A>PS. АПИ — это API? Я правильно понял?


Да.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 12:50
Оценка: +1 :))) :)
Здравствуйте, VladD2, Вы писали:

VD> достоин попадания в аналы истории.


Супер!!!
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[10]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 12:50
Оценка: +1
Здравствуйте, Andrei F., Вы писали:

AF>Ясно, значит, какой реальный опыт.


Перечитай дисклеймер.

AF>Резонерством я назвал потому, что это всё практически не имеет отношения к теме в заголовке — "недостатки в МП в Nemerle".


Перечитай название темы.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[10]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 12:50
Оценка: +2
Здравствуйте, VladD2, Вы писали:

VD>Ну, вот... и похвалить нельзя.

VD>Сразу ищут в этом подвох. А я искренне восхищаюсь тобой. Вот IT сам справиться не мог. И я не смог. И никто не смог. А ты смог! Причем смог не просто разобраться, но и сделать верные выводы. Это дорогого стоит и позволяет рассуждать о предмете глубоко и интересно.

Остапа понесло. Молодец, ты прекрасно продемонстрировал причину, по которой я не отвечал на твои вопросы.

VD>Да и как по другому?


Действительно. Не нахамишь — день зря прожит.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[2]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 12:50
Оценка: 75 (4) +4
Здравствуйте, IT, Вы писали:

IT>Инженер, который не знает инструмента, с которым он работает, не может эффективно выполнять свои функции в принципе.


Все это здорово и правильно. Но вот нету тут никакой бинарности. Спектр знания инструмента непрерывен. И человека, который не очень хорошо представляет себе концепцию итераторов, вполне можно использовать с положительным выхлопом.
Я тут уже мысль расшифровывал — вопрос не в принципиальной возможности или невозможности, вопрос даже не совсем технический, вопрос в банальном бабле. Ну то есть — в данном конкретном случае, что будет больше, выигрышь от улучшения языка или проигрышь в поиске программистов. Увы и ах, у меня нет никакой возможности формировать команду из элиты, приходится работать с тем, что есть. И это, конечно, не бестолковые индусы, это просто люди, у которых пока не наработан большой опыт. Они, конечно, со временем его приобретут, и буду не хуже тебя или меня. Но продукт то нужен здесь и сейчас. А благие намерения, увы, ничего не стоят.
Собственно, я не помню, высказывал я эту мысль или нет, но концепция языка программирования это не только и не столько технический вопрос. Язык только одним концом нацелен на техническую железку. Другим концом он нацелен на человека. И очевидно, что, таким образом, важнейшим фактором является ориентированность на человеческую психологию. Причем, учитывая сложность системы и все возрастающие технические возможности, эта ориентированность все больше и больше увеличивается.
Именно в этой особенности мне видится популярность таких языков, как php. Ведь с технической точки зрения — убожество, каких поискать.

IT>В промышленном программировании любой более менее серьёзный проект включает в себя фреймворк или библиотеку с общими компонентами.


Игорь, я этот аргумент уже мильен раз слышал, даже в этом топике. Мысль, которую я пытался раскрыть с самого начала — макросы работают на значительно более глубоком уровне и обладают значительно большими возможностями. Это конечно круто, но есть, увы, и обратная сторона. Чем больше мы подкручиваем средство разработки, будь то макросы или сложные фреймворки, тем дальше экосистема разработки уплывает от среднепотолочной. Надо искать золотую середину. Мне так кажется, что макросы в моих условиях уже за такой серединой.

IT>Главная проблема при изучении нового не в запоминании названия функций и конструкций языка. Главная проблема в освоении новых концепций.


Ну да. Я здесь же вчера писал ровно то же самое.

IT> А разобравшись будет уже не важно как это реализуется, функцией, макросом или языковой конструкцией.


Я думаю, все таки важно. Но не суть. Опять же, моя мысль не в том, что важна реализация. А в том, что в отсутствие макросов набор таких концепций зафиксирован, у меня есть немалые шансы, что, наняв разработчика со стороны, я обнаружу у него понимание таких концепций. А вот с нестандартными концепциями, реализованными макросами, у меня таких шансов уже заметно меньше.

IT> Ведь ни функции, ни макросы, ни ключевые слова сами по себе не вводят новых концепций, они их реализуют и являются всего лишь следствием, формой.


Я же уже вроде писал — ничего не имею против, если макросы используются для разработки языка в рамках, заданных well known стандартом. Ну так, чтобы я мог требовать знание этих концепций при приеме на работу, и иметь при этом шансы кого то нанять.

IT>В общем, сложность использования макросов надумана


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

IT>Ничего особенного, гораздо проще, чем, например, эмитить код. Ну потратишь ты на это дело несколько часов, да даже несколько дней. В рамках проекта на несколько месяцев, если от твоего DSL будет серьёзный эффект, то потраченное время окупится с лихвой.


Я тоже так думал. А на практике оказалось, что этот DSL приходится поддерживать постоянно. Если DSL этот — ключевое момент системы, это еще ничего. А вот если вспомогательный — сложно все таки мыслить концепциями генераторов, сложнее, чем просто писать целевой код.

AVK>>Короче, идеология, применяемая в MPS, DSL Tools, Oslo для этой задачи представляется мне более подходящей.


IT>Насколько мне известно, аббревиатура DSL в DSL Tools появилась по недоразумению.


Это спор о терминах. Лично я считаю, что все там по разумению. Вполне нормальное средство разработки графических domain specific языков.

AVK>>3) Следующая сфера применения кодогенерации (язык не поворачивается назвать это метапрограммированием) — визарды в средах разработки, которые генерируют первоначальный код. Не очень представляю, как тут может помочь Немерле, да и использование специального языка тут явно перебор.


IT>Элементарно. Добавляем в проект атрибут-макрос уровня сборки и этот атрибут разгребает весь подходящий xml (или чего там) в проекте и генерирует код.


Какой xml? Вот ты в студии выбираешь — добавить в проект новый класс. И студия генерит заготовку. Где там xml?

IT>Это опять лишь домыслы. Генерировать код на Немерле не сложнее, чем генерировать текст.


Опять же, ты неверно понял. Я нигде не писал, что генерировать код на Немерле сложнее, нежели генерировать текст. Я говорил о другом — нередко проще вообще ничего не генерировать. Это все я написал к тому, что была у меня задача создания довольно сложной модели и ее реализации в условиях цейтнота. Тогда я справился при помощи кодогенерации, и очень быстро получил результат. Но теперь, по проществии нескольких лет, приходится признать, что на поддержку генератора я затратил больше усилий, чем если бы я ничего не генерировал с самого начала и просто рефакторил бы готовый код.

IT>Не знаю зачем ты добавил сюда этот пункт, но МП тут вообще ни при чём.


Влад в соседней ветке утверждал, что любая кодогенерация это МП. По мне так называй как хочешь, непринципиально.

IT>1. Сложноть использования макросов.


Нет такой притензии.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[8]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 12:55
Оценка:
M>>>>60% студентов с улицы не осилят макросы немерле без посторонней помощи. Какие бы там ни были красоты внутреннего $.

A>Вы упомянули "красоты внутреннего $". Я переспросил — не это
Автор(ы): Сергей Туленцев, Владислав Чистяков
Дата: 23.05.2006
Производительность труда программиста в основном зависит от самого программиста. Однако даже самый опытный и знающий программист мало что может без подходящего инструмента. Эта статья открывает цикл статей об одном из таких инструментов, еще мало известном среди программистов, но очень многообещающем. Язык Nemerle, о котором пойдет речь в этих статьях, на первый взгляд очень похож на слегка улучшенный C#, но привносит многое из передовых исследовательских языков. Данная статья рассказывает об отличиях Nemerle от C# (как наиболее близкого языка)и является неформальным введением в язык.
(и дальше поиск по символу $ дает 83 совпадения) ли вы имели ввиду?


Нет, не так. Я сказал что макросы без посторонней помощи не осилить, а вы сказали, что красоты внутреннего $ это и есть макросы, и их можно за пару часов осилить.
Re[5]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 12:58
Оценка: +1
Здравствуйте, mihailik, Вы писали:

M>Студент с улицы самостоятельно разберётся с Custom Tools в течении 3 дней (в среднем), какие бы ни были там омерзительные названия методов и ключей реестра.


Названия методов и ключи реестра — это все незначительная шелуха. Гавенность Custom Tool глубже — он увязан со конкретной студией и увязан крайне нетривиально(слабо найти, к примеру, документацию, в каких случаях генератор запускается). Одна только необходимость коммитить генерируемый код — уже маразм еще тот.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[3]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 13:00
Оценка: -1 :))) :)
AVK>что будет больше, выигрышь от улучшения языка или проигрышь в поиске программистов
AVK>И это, конечно, не бестолковые индусы, это просто люди

Позволю себе исправить орфографию.

Правильно писать не "бестолковые индусы", а "безграмотное московское жлобьё".
Re[9]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 13:03
Оценка: +1
Здравствуйте, mihailik, Вы писали:

M>Нет, не так. Я сказал что макросы без посторонней помощи не осилить, а вы сказали, что красоты внутреннего $ это и есть макросы, и их можно за пару часов осилить.


Написание макросов — да, их использование — нет.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[2]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:05
Оценка:
Здравствуйте, mihailik, Вы писали:

M>Проблема немерле в том, что изумительная красота макросов пока никак не конвертируется в деньги.


Я вполне намеренно избегал обсуждения проблем Немерле как конкретного продукта. По поводу возможности использования существующего компилятора прямо здесь и сейчас в моей повседневной деятельности я уже писал неоднократно в других местах. Просто, коль скоро Влад неоднократно заявлял, что я приемлю только продукцию МС, я посчитал, что это он еще помнит.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[3]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:05
Оценка:
Здравствуйте, hi_octane, Вы писали:

_> Люди просто сели и начали писать — медленно и с точки зрения нашего единственного на тот момент функциональщика — косяча и через одно место. Но у Nemerle есть одно охренительное преимущество — не знаешь как сделать красиво — делай как на C# А потом функциональщик делал ревью и обьяснял — что здесь через одно место и здесь, и т.п.


Напоминаю, что я писал не про Неперле, а про метапрограммирование в Немерле.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[6]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 13:07
Оценка:
AVK>увязан крайне нетривиально(слабо найти, к примеру, документацию, в каких случаях генератор запускается). Одна только необходимость коммитить генерируемый код — уже маразм еще тот.

Генератор запускается когда студия решила, что файл изменился, или когда программист нажал правую кнопочку и попросил. Есть статья в MSDN Magazine, где все азы объясняются, любой нормальный программист с этого места может доточить напильником.

Проблема нажатия правой кнопочки и проблема генерируемого кода в репозитории стоит условно 400 баксов на весь проект. Изучение новой философии программирования может стоить всего проекта.
Re[3]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 13:11
Оценка: 21 (1) :)
Здравствуйте, AndrewVK, Вы писали:

AVK>Я тут уже мысль расшифровывал — вопрос не в принципиальной возможности или невозможности, вопрос даже не совсем технический, вопрос в банальном бабле. Ну то есть — в данном конкретном случае, что будет больше, выигрышь от улучшения языка или проигрышь в поиске программистов. Увы и ах, у меня нет никакой возможности формировать команду из элиты, приходится работать с тем, что есть. И это, конечно, не бестолковые индусы, это просто люди, у которых пока не наработан большой опыт. Они, конечно, со временем его приобретут, и буду не хуже тебя или меня. Но продукт то нужен здесь и сейчас.


Считаю ваш скептицизм с точки зрения бизнеса оправданным, но все равно неплохо выбрать в команде самого смышленого и дать ему задачу следить за технологическими тенденциями в свободное от работы время. А за это ему пообещать, что он не будет наказываться за опоздания на работу, например...
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[7]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:12
Оценка:
Здравствуйте, mihailik, Вы писали:

M>Генератор запускается когда студия решила


Для VS 2003. Для VS 2005 + — не только.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[3]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 13:14
Оценка: 1 (1) +3 -2
Здравствуйте, IB, Вы писали:

IB>Здравствуйте, VladD2, Вы писали:


VD>>Он просто возмущен тем, что кто-то может сомневаться в том что автор может не знать что-то.

IB>Влад, ты задрал. На долго тебя действительно не хватило.

Кого я задрал? Он что девочка обижаться на примитивные вопросы?
Тупо отбрасывает неугодные ему факты и строит "логику" на тех, что ему нужны.
Это чистой воды обман или незнание предмета обсуждения.

IB>Я далеко не во всем согласен с АВК, да и задачи у меня другие, но наблюдать со стороны твою демагогию крайне не приятно.


С начало не плох было бы продемонстрировать демагогию в моих словах.
Демагогия, а точнее софистика как раз сплошь и рядом в словах АВК.

VD>>Ну, что же остается только задать вопрос: А почему же автор не упомянул о такой возможности? И почему он старательно пытается избежать ее обсуждения. Ведь, казалось бы, она снимает проблему изменения синтаксиса с которой боролся.

IB>Не снимает. Проблема не в том, что можно так не делать, проблема в том, что так делать в принципе можно, об этом говорилось уже ни раз.

Это не аргумент. Синтаксические расширения — это не грипп. Их нельзя подхватить случайно. Запрети в своей конторе их использовать или дай разрешение на их введение только определенным лицам (т.е. себе любимому) и проблема исчезнет как класс.

К тому же вам сто раз говрили люди которые все это используют на практике — нет проблем от синтаксических макросов. Вообще нет. Над тем же Немерлом работали в разное время десятки человек и в вакханалию ничего не превратилось.
С точки зрения использования нет особой разницы вводится ли новый макрос, или новый класс. Последствия совершенно одинаковые.

Вот где действительно есть проблемы, так это в качестве написанных макросов. Оно должно быть на высоте, так как макра — это фактически плагин к компилятору и IDE, а значит она может повлиять на их работу. Но это опять же имеет прямую корреляцию с библиотеками. Не давайте кому попало писать критический код.

VD>>Хм. Весьма странные рассуждения. Они скорее запутают неопытного читателя нежели что-то ему объяснят.

IB>Позволю себе напомнить, что тут не стояла цель что-то объяснить неопытному читателю. Андрей объяснял, опытным читателям, что именно его не устраивает в Nemerle, на именно его задачах. И именно этого вы от него и требовали.

Андрей просто неверно трактует термины встроенный DSL и мета-программирование. Об этом я и говорил.

VD>>Из определения ясно видно, что это не усеченные или расширенные языки программирования общего назначения, а совершенно другие языки описывающие предметную область и оперирующие терминами из этой области.

IB>То есть, ты утверждаешь, что переходя в термины предметной области ты не сужаешь набор возможностей?

Да, и это нужно четко понимать если уж ты взял на вооружение ДСЛ-подход.
Ты не сужаешь и не расширяшь базовый язык. Ты вводишь в язык некий подъязык с совершенно другой семантикой, а возможно и синтаксисом. Это может быть сделано разными средствами (не только через МП), но после того как это сделано, рассматривать ДСЛ как сужение или расширение основного языка ошибочно и пагубно.

IB>И не составит никаких проблем описать бухгалтерию точки общественного питания в терминах системы управления АЭС?


Ты сейчас намеренно сказал глупость. Зачем?
Конечно описывать бухгалтерию в терминах АСУТП АЭС глупо. Скажу даже больше невозможно.
Но встроить в один язык два подъязыка-ДСЛ-я один из которых позволит описать предметную область бухгалтерии, а другой АСУТП АЭС можно. Вряд ли это потребуется в одном проекте, но это ведь не проблема?

VD>>Так вот поддержка ДСЛ-ей заключается не в наложении ограничений или расширений к основному языку, а в том, что язык позволяет описать совершенно новую семантику, а иногда и синтаксис.

IB>С набором ограниченных возможностей.

Не. С совершенно иной семантикой! Ты просто не пишешь на базовом языке, а пишешь на ДСЛ-е. Давай перейдем от абстракций к конкретике. Вот у нас есть конкретный ДСЛ — регулярные выражения. Как они сужают базовый язык? Да они к нему просто не имеют никакого отношения! Они романтически совсем другие. Разбор регулярных выражений можно реализовать на языке общего назначения (ЯОН), но нельзя выразить с его помощью.
Улавливаешь разницу? Ну, так вот используя скажем Шарп ты можешь реализовать класс который будет принимать ДСЛ регулярных выражений в качестве строки и производить сопоставление. И то, и другое будет производиться в рантайме. Скажем реализация регекспов в дотнете может скомпилировать их на лету чтобы ускорить их работу. Вот эта компиляци, а точнее генерация для нее кода — это и есть МП. Немерле же позволят:
1. Производить разбор и анализ ДСЛ-я в процессе компиляции.
2. Легко сгенерировать эффектинвый код, опять же во время компиляции.

Неужели это плохо?

VD>>Но ты почему-то проигнорировал наши просьбы дать расскзать о проблемах МП в Немерле. Вместо этого ты почему-то рассказал нам о своих предубеждениях (ни на чем не основанных).

IB>Во-первых, никто не обещал рассказывать про проблемы МП в немерле, обещали рассказать чем не устраивает немерле именно AVK, и именно это и рассказали.

Вообще-то обещал. Но в другой теме.

IB>А во-вторых, рассказали на чем именно основаны "предубеждения".


Да не очень то. А вот, то что это предубеждения ясно любому кто знаком с Немерле не по наслышке. Заметь не нашлось никого, кто хоть немного знал бы этот язык и при этом согласился бы с АВК.

VD>>Почему-то уверен, что ответов по существу не будет. Вместо этого снова будет вцеплена одна из фраз, я буду обвинен в хамстве, а автор темы снова провозгласит себя правым и обиженным. А жаль.

IB>А ты не хами и жалеть не придется.

А в чем хамство то? Для него хамство — это когда я называю вещи своими именами. Я говорю, что он намерено или нечаянно опускает из рассмотрения вещи с которыми он (по всей видимости) не может конструктивно спорить. Это хамство? тогда, рабята с вами вообще нельзя что-то обсуждать, так как хамством для вас является любое сомнение в вашей правоте. А не то что бы сомневался. Я отчетливо вижу отсутствие этой самой правоты.

VD>>Ведь только в честных спорах рождается истина.

IB>Возможно. Но только честно спорить ты не умеешь.

Да, конечно. Ты меня Вань извини, но слова АВК — это большей частью демагогия не имеющая никакого отношения к техническим аспектам. И все это проистекает из-за того, что человек пытается найти технические обоснования для сугубо субъективных предпочтений.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 13:16
Оценка:
M>>Генератор запускается когда студия решила

AVK>Для VS 2003. Для VS 2005 + — не только.


Какая разница? Генератор должен выдавать один и тот же результат сколько бы его не запускали при одинаковых параметрах.

Если генератор детерменированый, пусть запускается когда хочет. Если недетерминированый, сам виноват -- пусть свою недетерминированость кеширует где-то в скрытом файле.
Re[5]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 13:17
Оценка: +1 -3
Здравствуйте, IB, Вы писали:

A>>В чем демагогия то?

IB>В том, что он передергивает практически каждое предложение и отвечает не на то что было написано, а на то что ему удобно.

Не надо грязи. Иронизирую — да, но нельзя не иронизировать над набором заблуждений и неверных трактовок терминов.
А демагогии в моих словах нет вообще. Ух где она есть, так это в словах АВК.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:17
Оценка: +1
Здравствуйте, alvas, Вы писали:

A>но все равно неплохо выбрать в команде самого смышленого и дать ему задачу следить за технологическими тенденциями в свободное от работы время.


Злостный оффтопик, ну да ладно. Неплохо конечно. Но мало. Во-первых, все, я повторяю, все программисты обязаны быть в курсе ситуации в их области, о тенденциях. Во-вторых, в определенном количестве контор в штатах (и даже в России) есть более интересный подход. При этом в рамках конторы (не из 5 программистов, конечно) создается команда высококвалифицированных спецов, которая постоянно держит руку на пульсе. В особо продвинутых случаях такая команда превращается в отдельный департамент.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[9]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:26
Оценка:
Здравствуйте, mihailik, Вы писали:

M>Какая разница?


Есть разница.

M>Если генератор детерменированый, пусть запускается когда хочет.


Главное, чтобы он запускался тогда, когда хочу я. А сейчас у меня ни возможностей по управлению, ни даже какой то ясности. Товарищи подстраивают это все под свои сценарии, а мне остается только уповать на то, что мои сценарии не слишком отличаются.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[7]: Что меня не устраивает в МП в Nemerle
От: Lloyd Россия  
Дата: 27.12.08 13:30
Оценка:
Здравствуйте, mihailik, Вы писали:

AVK>>увязан крайне нетривиально(слабо найти, к примеру, документацию, в каких случаях генератор запускается). Одна только необходимость коммитить генерируемый код — уже маразм еще тот.


M>Генератор запускается когда студия решила, что файл изменился, или когда программист нажал правую кнопочку и попросил.


Не только. Например, когда в свойствах проекта меняешь default namespace, происходит запуск. Проверялось на t4.
Re[6]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 13:40
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Названия методов и ключи реестра — это все незначительная шелуха. Гавенность Custom Tool глубже — он увязан со конкретной студией и увязан крайне нетривиально(слабо найти, к примеру, документацию, в каких случаях генератор запускается). Одна только необходимость коммитить генерируемый код — уже маразм еще тот.


Ну, и почему бы вместо этого уродства не иметь возможность встроить код генерации в процесс компиляции на общих основаниях (как плагин)?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:46
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, и почему бы вместо этого уродства не иметь возможность встроить код генерации в процесс компиляции на общих основаниях (как плагин)?


Ничего не имею против.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[3]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 13:50
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Я тоже так думал. А на практике оказалось, что этот DSL приходится поддерживать постоянно. Если DSL этот — ключевое момент системы, это еще ничего. А вот если вспомогательный — сложно все таки мыслить концепциями генераторов, сложнее, чем просто писать целевой код.


Вот это, наверно, корень всего твоего не понимания.

Не надо мыслить концепциями генератора чтобы использовать макрос! Не-на-до!

Ты же не мыслишь концепциями генератора когда используешь, например, foreach? Не мылишь.

А меж тем foreach пример эдакого микро-ДСЛ-я прекрасно реализуемого в виде макроса.

Пойми, макрос должен вводить некую сущность более низкоуровневую чем сущности языка. Тогда макра будет восприниматься программистами как средство упростить свой код, выразить внятно что-то, что ранее им пришлось бы описывать нагромождением кода.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 13:54
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Это все я написал к тому, что была у меня задача создания довольно сложной модели и ее реализации в условиях цейтнота. Тогда я справился при помощи кодогенерации, и очень быстро получил результат. Но теперь, по проществии нескольких лет, приходится признать, что на поддержку генератора я затратил больше усилий, чем если бы я ничего не генерировал с самого начала и просто рефакторил бы готовый код.


Это потому, что генератор создавался средствами для этого не заточенными. Макросы поддерживать наного проще.
В прочем, всегда есть задачи которые можно решить с помощью МП, но не нужно.

ЗЫ

Не вижу почему из-за того, что иногда что-то проще сделать руками проще, надо всегда все делать руками.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:55
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Вот это, наверно, корень всего твоего не понимания.


Я просил мою персону не обсуждать здесь. Это так сложно?

VD>Ты же не мыслишь концепциями генератора когда используешь, например, foreach? Не мылишь.


Я не про использование, я про его написание.

VD>А меж тем foreach пример эдакого микро-ДСЛ-я прекрасно реализуемого в виде макроса.


Ничего не имею против реализации foreach средствами макросов, если удается обеспечить приемлемую производительность компилятора.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[3]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 13:56
Оценка:
Здравствуйте, AndrewVK, Вы писали:

IT>>Не знаю зачем ты добавил сюда этот пункт, но МП тут вообще ни при чём.


AVK>Влад в соседней ветке утверждал, что любая кодогенерация это МП. По мне так называй как хочешь, непринципиально.


Это утверждал даже не Влад, а само определение МП.

Другое дело, что не все МП имеет смысла (да и вообще возможно) создавать с использованием макросов. Вот визарды — это пример где макросы бесполезны, но это тем не менее МП в чистом виде. Сам визард — мета-программа.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:57
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это потому, что генератор создавался средствами для этого не заточенными.


Нет. Проблема именно в концепции.

VD> Макросы поддерживать наного проще.


Проще, но не намного. Я пробовал.

VD>Не вижу почему из-за того, что иногда что-то проще сделать руками проще, надо всегда все делать руками.


Потому что на моих задачах, уж так получается, первое встречается намного чаще.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[4]: Что меня не устраивает в МП в Nemerle
От: Lloyd Россия  
Дата: 27.12.08 13:57
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А меж тем foreach пример эдакого микро-ДСЛ-я прекрасно реализуемого в виде макроса.


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


Можешь пояснить что ты имел в виду? Ведь DSL — это буквально "язык предметной области", он по определению не может быть более "низкоуровневым чем сущности языка".
Re[4]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:58
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это утверждал даже не Влад, а само определение МП.


Это к IT, я спорить о терминах не буду.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[7]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 14:02
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, и почему бы вместо этого уродства не иметь возможность встроить код генерации в процесс компиляции на общих основаниях (как плагин)?


Ну, так и начни рассматривать макры, как такие плагины позволяющие решать проблемы которые другими средствами красиво не решишь. Тогда все сразу встанет на свои места.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 14:10
Оценка:
Здравствуйте, AndrewVK, Вы писали:

VD>>Вот это, наверно, корень всего твоего не понимания.


AVK>Я просил мою персону не обсуждать здесь. Это так сложно?


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

VD>>Ты же не мыслишь концепциями генератора когда используешь, например, foreach? Не мылишь.


AVK>Я не про использование, я про его написание.


А причем тут написание? Ты же говорил об использовании.

В прочем, то что делается макрой можно сделать только копи-пэстом. А поддержка копи-пэста — это самое плохое что можно придумать.

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

VD>>А меж тем foreach пример эдакого микро-ДСЛ-я прекрасно реализуемого в виде макроса.


AVK>Ничего не имею против реализации foreach средствами макросов, если удается обеспечить приемлемую производительность компилятора.


Удается. И еще удается исправлять баги допущенные создателями этого макроса. Так как од макроса намного более читабельный чем аналогичный код в "обычном" компиляторе.

Ну, что мы можем признать, что идеи макросов таки могут быть полезных хотя бы в каких-то областях?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 14:11
Оценка:
Здравствуйте, Lloyd, Вы писали:

VD>>А меж тем foreach пример эдакого микро-ДСЛ-я прекрасно реализуемого в виде макроса.


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


L>Можешь пояснить что ты имел в виду? Ведь DSL — это буквально "язык предметной области", он по определению не может быть более "низкоуровневым чем сущности языка".


Это опечатка. Я хотел написать "высокоуровневую".
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 14:15
Оценка:
Здравствуйте, AndrewVK, Вы писали:

VD>>Это потому, что генератор создавался средствами для этого не заточенными.


AVK>Нет. Проблема именно в концепции.


Несогласен. Но спорить не о чем, так как с заявлениями (без объяснений) спорить невозможно.

VD>> Макросы поддерживать наного проще.


AVK>Проще, но не намного. Я пробовал.


Уверен, что у тебя просто не было достаточного опыта в написании макросов. Не знаю к щастью ли, или к горю, но для написания не тривиальных макросов требуется немалый опыт. Он легко получается при работе в паре с более опытным (в этом аспеке) коллегой, но самому его прийдется нарабатывать годами. Это как ОО-дизайн. Все думаю, что все в нем понимаю, но реально в нем понимают еденицы.

VD>>Не вижу почему из-за того, что иногда что-то проще сделать руками проще, надо всегда все делать руками.


AVK>Потому что на моих задачах, уж так получается, первое встречается намного чаще.


А ты не допускаешь, что ты просто в чем-то ошибался?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 14:22
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, VladD2, Вы писали:


VD>>Это утверждал даже не Влад, а само определение МП.


AVK>Это к IT, я спорить о терминах не буду.


Да, уж Неразумно спорить с тем что можно проверить по словарю или энциклопедии.
http://ru.wikipedia.org/wiki/Метапрограммирование

Метапрограммирование — создание программ, которые создают другие программы как результат своей работы (либо — частный случай — изменяющие или дополняющие себя во время выполнения).
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.12.08 14:25
Оценка: +1
Здравствуйте, IT, Вы писали:

AVK>>1) На практике я наблюдаю, что даже новые стандартные фичи языка используются очень и очень неспешно и с неохотой. Даже итераторы, которые еще в 2004 году появились, у многих вызывают изумление.


IT>Инженер, который не знает инструмента, с которым он работает, не может эффективно выполнять свои функции в принципе. С программистами, которые не хотят изучать новые технологии или даже противятся этому, рано или поздно начинаются проблемы из серии "тупой дизайн, кривой код".


По этой причине людям стараются дать технологии, которые не отнимают времени на освоение.

>Причём чем выше статус такого человека в команде, тем разрушительнее последствия. Я не знаю как эти вещи связаны между собой, может это чистое совпадение, но в моей практике это совпадение сто процентное, что позволяет мне сделать вывод, что оно не случайно. Для меня это даже стало очень чётким индикатором, человек не интересуется, не может освоить новое — ничего хорошего от него не жди. Под таких людей нужно не подстраиваться, а пытаться их учить, а если не получается, то постараться от них избавится.


Да, это хороший подход. Работает исключительно в коммандах из топ-разработчиков.

С плохими технологиями всегда так — чуть что, виноватые не создатели технологии, а тупые разрабы, потому что видители у топов все отлично.

IT>В промышленном программировании любой более менее серьёзный проект включает в себя фреймворк или библиотеку с общими компонентами. Это позволяет элементарно увеличить эффективность за счёт повторного использования кода. Использование макросов абсолютно ни чем не отличается от использования общих компонент, а в большинстве своих проявлений даже не отличимо визуально. И даже синтаксические макросы, которые не так часто и требуются, не сложнее в освоении, чем любая функция из библиотеки.


Это тебе кажется, что не сложнее. А реально — много сложнее. Примерно на порядок.

У меня был случай, когда я понаписывал макросов а товарищи по проекту отказались их использовать и долбили копи-пастом.

Во второй раз я решил проблему радикально — отказался от макросов и изменил фреймворк так что мои фичи использовались безо всякого геморроя.

IT>Главная проблема при изучении нового не в запоминании названия функций и конструкций языка. Главная проблема в освоении новых концепций. Тот же yield return не сложно запомнить, гораздо сложнее разобраться с ленивостью.


На этом срубается примерно 90% разработчиков, а остальные 10% рассматривать как целевую аудиторию для новых технологий как минимум несерьезно.

IT>В общем, сложность использования макросов надумана и не имеет ничего общего с реальной действительностью. Это не сложнее, чем использование метода из библиотеки общих компонент.


Сложности нет. Сложность в людях.

IT>А про правку сгенерированного кода и железной линейкой по пальцам тут уже сказали. И я с этим полностью согласен, т.к. встречался с таким баранизмом на практике.


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

IT>По первому пункту я уже всё сказал. Это не сложнее, чем использование классов, методов и атрибутов. Сложность не в макросах, сложность в концепциях, которые они реализуют. Но это в равной степени относится и к тем же классам, методам и атрибутам.


Это справедливо только для разработчиков топ-уровня.
Re[4]: Что меня не устраивает в МП в Nemerle
От: Lloyd Россия  
Дата: 27.12.08 14:27
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это потому, что генератор создавался средствами для этого не заточенными. Макросы поддерживать наного проще.

VD>В прочем, всегда есть задачи которые можно решить с помощью МП, но не нужно.

А можно я вклинюсь в беседу высоких мужей и задам оч. приземленный вопрос?
Предположим, что в код вкралась ошибка.
Если мы писали весь код руками или часть его была сгенерирована с помощью чего-то типа DSL Tools или t4, то локализовать ошибку будет не очень сложно, достаточно запустить отладчик и повторить сценарий, приводящий к ошибке.
А как быть в том случае, если использовали макросы немерле? Исходника-то как такового нет.
Re[8]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 14:31
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, так и начни рассматривать макры, как такие плагины позволяющие решать проблемы которые другими средствами красиво не решишь.


Я описывал, что меня не устраивает. Расширяемость компилятора, возможность сравнительно быстро реализовывать конструкции языка, удобство генерации кода — все это претензий у меня не вызывает.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[6]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 14:31
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>>>Вот это, наверно, корень всего твоего не понимания.


AVK>>Я просил мою персону не обсуждать здесь. Это так сложно?


VD>Я обсуждаю твои словам которые считаю полнейшим заблуждением.


Ты обсуждаешь мое понимание.

VD> Научисть воспринимать критику своих слов конструктивно.




VD> Иначе с тобой нельзя будет ни о чем говорить.




AVK>>Я не про использование, я про его написание.


VD>А причем тут написание?


В исходном топике все есть. Главное — рассматривать все последовательно, а не тасовать мои слова как удобно

VD> Ты же говорил об использовании.


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

VD>В общем, если ты имеешь негативный опыт написания мета-программ, то возможно нужно задуматься о проблемах которые к этому привели, а не искать фатальный недостаток в МП.


Я не ищу фатальный недостаток в МП, более того, я его широко использую. Я даже не ищу фатальный недостаток в концепциях Немерле. Посмотри заголовок темы — он очень точно отражает то, о чем я писал.

VD> Для эффетивновго использования МП нужно иметь скилы в МП


Я их, видимо, не имею? Или к чему это?

VD>Ну, что мы можем признать, что идеи макросов таки могут быть полезных хотя бы в каких-то областях?


А чего признавать то? Я обратного и не утверждал? Ты с кем споришь?
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[6]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 14:31
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Уверен, что у тебя просто не было достаточного опыта


Дисклеймер, п.3

VD> Все думаю, что все в нем понимаю, но реально в нем понимают еденицы.


Прекрасное подтверждение того, о чем я писал.

AVK>>Потому что на моих задачах, уж так получается, первое встречается намного чаще.


VD>А ты не допускаешь, что ты просто в чем-то ошибался?


Допускаю. Но точно так же допускаю, что не ошибался.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[5]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 14:35
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>А можно я вклинюсь в беседу высоких мужей и задам оч. приземленный вопрос?

L>Предположим, что в код вкралась ошибка.
L>Если мы писали весь код руками или часть его была сгенерирована с помощью чего-то типа DSL Tools или t4, то локализовать ошибку будет не очень сложно, достаточно запустить отладчик и повторить сценарий, приводящий к ошибке.
L>А как быть в том случае, если использовали макросы немерле? Исходника-то как такового нет.

Макросы могут генерировать текст на который отображается отладочная информация.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 14:37
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>По этой причине людям стараются дать технологии, которые не отнимают времени на освоение.


Хороший пример тому каменный молоток и современный станок с ЧПУ?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Что меня не устраивает в МП в Nemerle
От: Lloyd Россия  
Дата: 27.12.08 14:41
Оценка: +1
Здравствуйте, VladD2, Вы писали:

L>>А как быть в том случае, если использовали макросы немерле? Исходника-то как такового нет.


VD>Макросы могут генерировать текст на который отображается отладочная информация.


Могут или генерируют?
Есть ли средства, позволяющие отследить, каким именно макросом был сгенерирована та или иная строчка?
Какой код генерируют? Если даже элементарные конструкции for/foreach/etc. — суть макросы, то будет ли этот конечный код читаемым?
Re[7]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 14:52
Оценка:
Здравствуйте, Lloyd, Вы писали:

VD>>Макросы могут генерировать текст на который отображается отладочная информация.


L>Могут или генерируют?

L>Есть ли средства, позволяющие отследить, каким именно макросом был сгенерирована та или иная строчка?

Здравая мысль
К Владу: Может необходимо предусмотреть дебаг и релиз режимы для макросов?
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[4]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.12.08 15:07
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Ikemefula, Вы писали:


I>>По этой причине людям стараются дать технологии, которые не отнимают времени на освоение.


VD>Хороший пример тому каменный молоток и современный станок с ЧПУ?


Да. Технологии в разработке ПО это нечто, позволяющее вовлечь в процесс как можно 1 больше безграмотных людей и 2 в минимально возможное время и дабы 3 результат они рожали обратно в минимально возможное время.

Т.е. экономится время в кубе.

Поскольку в процесс вовлекаются безграмотные люди, стало быть проверять технологии надо именно на них.

А IT вот радикально подошел — раз безграмотные, значит гнать в три шеи.

И твоя позиция, кстати говоря, ничем от IT не отличается.

С новым инструментом надо решать вопрос — почему им смогут пользоваться дебилы.

Если ты не можешь ответить на этот вопрос в плане Немерле — извини, ты не понимаешь, что такое прогресс.

Не надо рассказывать, что де сложность конструкцый де одинаковая и тд и тд.

Большинство людей на собеседовании (C# .Net 2.0) не знают про

виртуальные методы
индексеры
итераторы
эвенты (add и remove многих убивает наповал)
и много чего еще.

При чем, бывает, люди уверены в том, что все эти конструкции я сам и придумал.

где тут разница в сложности — понятия не имею, может быть просто объем знаний у каждого разный и скорость пополнения оного разная.

С какого бодуна они станут твой Неммерле осваивать — неясно.

А между тем, см. выше, без малого, 100% софта пишут безграмотные специалисты.

Итого — Немерле узкоузкоузконишевой инструмент.

Пока что получается так — Немерле у специалистов уровня АВК и ниже вызывает реакцию отторжения и требует гигантских временно-денежных затрат на подавление оной реакции.
Re[5]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 15:22
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

I>С новым инструментом надо решать вопрос — почему им смогут пользоваться дебилы.


"Дебилы" не смогут писать макросы, но они могут их использовать. В чем сложность использования макроса $ или foreach?
Не знаешь как писать? Пиши как на C# — hi_octane здесь
Автор: hi_octane
Дата: 27.12.08
доступно все описал.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[2]: Что меня не устраивает в МП в Nemerle
От: Mike Chaliy Украина http://chaliy.name
Дата: 27.12.08 15:27
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Осло — это вообще мутант предлагающий писать внешние ДСЛ-и на основе ХМЛ и весьма странных средств трансформации.


В Осло пока нет встроенной потдержки ХМЛ дслек...
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
А тут я живу и пишу...
http://developers.org.ua/buttons/ua_developer.gif
Re[6]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.12.08 15:36
Оценка:
Здравствуйте, alvas, Вы писали:

I>>С новым инструментом надо решать вопрос — почему им смогут пользоваться дебилы.


A>"Дебилы" не смогут писать макросы, но они могут их использовать. В чем сложность использования макроса $ или foreach?


Т.е. VladD2 понаписывает макросов на все случаи жизни ?

Я в это не поверю.
Re[3]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.12.08 15:48
Оценка:
Здравствуйте, hi_octane, Вы писали:

M>>Проблема немерле в том, что изумительная красота макросов пока никак не конвертируется в деньги.


_>Каждый свою success story имхо сам должен делать.


Ага, должен Это слово чаще всего встречается, когда речь идеть о хилых инструментах, всегда находятся отношения долженствования.

_>Не обязательно сажать всю команду на неделю. Можно и пару самых динамичных людей посадить за какую-то не особо критичную часть проекта, а потом пусть расскажут всем что хорошее было а чего хотели но не было. А если команда не может выделить какой-то процент своих людей на исследования — то жить такой команде придётся на скучном саппорте устаревшего кода.


На практике надо посадить на немерле не только всю комманду, но и людей, которые потенциально могут стать частью этой комманды.

При этом надо будет показать, что производительность труда на голову выше чем у конкурентов.
Re[4]: Что меня не устраивает в МП в Nemerle
От: IB Австрия http://rsdn.ru
Дата: 27.12.08 15:52
Оценка: 8 (1)
Здравствуйте, VladD2, Вы писали:

VD>Кого я задрал?

Меня.

VD>С начало не плох было бы продемонстрировать демагогию в моих словах.

Например, в ответ на описание того как AVK использует DSL, ты примотался к определению DSL, хотя собственно про определение DSL речь вообще ни шла, да и не интересно оно. Вообще, в целом, твой ответ напоминает анекдот про студента выучившего только билет про блох.

VD>Это не аргумент.

Для меня — аргумент.

VD> Запрети в своей конторе их использовать или дай разрешение на их введение только определенным лицам (т.е. себе любимому) и проблема исчезнет как класс.



VD>К тому же вам сто раз говрили люди которые все это используют на практике — нет проблем от синтаксических макросов.

На это сто раз уже отвечали, пойдем по кругу?

VD>Андрей просто неверно трактует термины встроенный DSL и мета-программирование. Об этом я и говорил.

Даже если это и так, то речь идет не о терминах. Все прекрасно поняли что именно он делает и почему для этого не годится Nemerle.
Если ты не согласен — у тебя есть два варианта:
1. Объяснить AVK, что на самом деле Nemerle для этого годится.
2. Объяснить AVK, для чего еще мог бы пригодится Nemerle в его задачах, тем более, что ты о них знаешь.
Вместо этого ты домотался до терминологии, что совершенно не существенно в данном контексте, это и называется — прикладная демагогия.

VD>Да, и это нужно четко понимать если уж ты взял на вооружение ДСЛ-подход.

VD>Ты не сужаешь и не расширяшь базовый язык.
Отлично. Ну, а AVK надо именно сузить, а нерасширить => Nemerle здесь не подходит, о чем он и написал.
Таким образом, мы выяснили, что AVK, знал о чем писал и правильно оценил возможности Nemerle. Как следствие, твои наезды совершенно беспочвенны, хотя возможно используемая терминология ввела тебя в заблуждение.

VD>Неужели это плохо?

Возможно хорошо, просто AVK это не нужно или не устраивает из-за побочных эффектов.

VD> Я говорю, что он намерено или нечаянно опускает из рассмотрения вещи с которыми он (по всей видимости) не может конструктивно спорить.

Он упускает из рассмотрения вещи, которые есму не нужны в его работе, о чем было ясно сказано.
... << RSDN@Home 1.2.0 alpha rev. 673>>
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re[3]: Что меня не устраивает в МП в Nemerle
От: yumi  
Дата: 27.12.08 16:13
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>У меня был случай, когда я понаписывал макросов а товарищи по проекту отказались их использовать и долбили копи-пастом.

I>Во второй раз я решил проблему радикально — отказался от макросов и изменил фреймворк так что мои фичи использовались безо всякого геморроя.

Макросов на чем? Отказались по какой причине?
Lisp is not dead. It’s just the URL that has changed:
http://clojure.org
Re[6]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.12.08 16:22
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Уверен, что у тебя просто не было достаточного опыта в написании макросов. Не знаю к щастью ли, или к горю, но для написания не тривиальных макросов требуется немалый опыт. Он легко получается при работе в паре с более опытным (в этом аспеке) коллегой, но самому его прийдется нарабатывать годами. Это как ОО-дизайн. Все думаю, что все в нем понимаю, но реально в нем понимают еденицы.


К горю разумеется.

Технология(инструмент) должна избавить людей от кода, который ты хочешь переложить на макросы.
Re[4]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.12.08 16:31
Оценка:
Здравствуйте, yumi, Вы писали:

I>>У меня был случай, когда я понаписывал макросов а товарищи по проекту отказались их использовать и долбили копи-пастом.

I>>Во второй раз я решил проблему радикально — отказался от макросов и изменил фреймворк так что мои фичи использовались безо всякого геморроя.

Y>Макросов на чем? Отказались по какой причине?


Не важно на чем, макросы похожи на coroutines. Отказался потому что люди их не использовали, сколько бы я ни объяснял.
Re[7]: Что меня не устраивает в МП в Nemerle
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.12.08 16:39
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, alvas, Вы писали:


I>>>С новым инструментом надо решать вопрос — почему им смогут пользоваться дебилы.


A>>"Дебилы" не смогут писать макросы, но они могут их использовать. В чем сложность использования макроса $ или foreach?


I>Т.е. VladD2 понаписывает макросов на все случаи жизни ?


А что, Nemerle уже стал авторским проектом Влада и, при этом, Влад оставил за собой исключительное право разработки макросов?

Кроме того, если у разработчика возникнет понимание МП в Nemerle (а иначе как он придет к желанию покрыть макросами все его возможные потребности?), то он уже вполне может считаться "недебилом" и начать потихоньку писать их самостоятельно.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[7]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 16:44
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:


I>Т.е. VladD2 понаписывает макросов на все случаи жизни ?


То есть, VladD2 не дебил, а это значит что он может написать мокросы которые нужны ему и другим.
Но это не значит, что только VladD2 не дебил. Таких людей много, а значит много кто сможет писать макры.
Скажем много кто пишет мета-код на основе шаблонов С++, но это ужасно сложно и неудобно. Но люди пишут. Писать мары на Немерле в сто раз проще. И значит их смогут писать куда большее число людей чем мета-код на С++ (например).
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 16:45
Оценка: :)
Здравствуйте, Ikemefula, Вы писали:

I>>>У меня был случай, когда я понаписывал макросов а товарищи по проекту отказались их использовать и долбили копи-пастом.

I>>>Во второй раз я решил проблему радикально — отказался от макросов и изменил фреймворк так что мои фичи использовались безо всякого геморроя.

Y>>Макросов на чем? Отказались по какой причине?


I>Не важно на чем, макросы похожи на coroutines. Отказался потому что люди их не использовали, сколько бы я ни объяснял.


— Да дерьмо этот ваш Корузо.
— По чему это?
— Петька вчера напел.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 27.12.08 17:21
Оценка: -1
Здравствуйте, AndrewVK, Вы писали:

VD>>Ну, что мы можем признать, что идеи макросов таки могут быть полезных хотя бы в каких-то областях?


AVK>А чего признавать то? Я обратного и не утверждал? Ты с кем споришь?


Фанаты ассоциируют себя с предметом фанатизма, а максималисты фразу "в МП Немерле мне нравится это" слышат как "МП в Немерле мне не нравится вообще, взять хотя бы это".
Вот мы и имеем, что имеем.
Надо было в дисклеймере ещё красными большими буквами написать, что кроме того, что не нравится, есть ещё и то, что нравится, хотя это и очевидно, но видимо не для всех.
Re[3]: Что меня не устраивает в МП в Nemerle
От: IT Россия linq2db.com
Дата: 27.12.08 17:34
Оценка: 37 (1) +1
Здравствуйте, AndrewVK, Вы писали:

AVK>Игорь, я этот аргумент уже мильен раз слышал, даже в этом топике. Мысль, которую я пытался раскрыть с самого начала — макросы работают на значительно более глубоком уровне и обладают значительно большими возможностями. Это конечно круто, но есть, увы, и обратная сторона. Чем больше мы подкручиваем средство разработки, будь то макросы или сложные фреймворки, тем дальше экосистема разработки уплывает от среднепотолочной. Надо искать золотую середину. Мне так кажется, что макросы в моих условиях уже за такой серединой.


В том-то и дело, что это не проблема макросов. Макросы всего лишь средство выражения твоих решений. Если твои решения сложны для использования в твоей команде, то неважно как эти решения будут реализованы. Как раз макросами наоборот можно выразить это проще и доступнее. Возьмём тот же $-макрос из Немерле и сравним со string.Format:

$"Output: $a"
string.Format("Output: {0}", a)

Сравни и прикинь, что будет легче объяснить и где будет меньше ошибок как по незнанию, так и по невнимательности.

Вообще я пока не встречал макросов, которые было бы труднее использовать чем функции. Это просто не имеет смысла. Если легче и понятнее использовать функцию, то используется функция. Обычно же, если появление макроса оправдано, то он решает куда более широкий круг задач, чем аналогичное решение без макросов. Те же сплайс-строки, приведённые выше не только проще в использовании и нагляднее, но они ещё и безопасней, менее подвержены ошибкам. И так практически всегда.

IT>> Ведь ни функции, ни макросы, ни ключевые слова сами по себе не вводят новых концепций, они их реализуют и являются всего лишь следствием, формой.


AVK>Я же уже вроде писал — ничего не имею против, если макросы используются для разработки языка в рамках, заданных well known стандартом. Ну так, чтобы я мог требовать знание этих концепций при приеме на работу, и иметь при этом шансы кого то нанять.


Ты не можешь требовать знания ваших внутренних концепций, которые реализованы в ваших внутренних проектах. Человеку придётся учится, а тебе придётся его учить. Это обычный процесс, который даже для опытных девелоперов занимает несколько месяцев, чтобы въехать во все детали проекта. А в большинстве случаев во все детали никто никогда не въезжает. Потому что нафиг не надо. Работает у соседа соседский код и хорошо.

IT>>В общем, сложность использования макросов надумана


AVK>Видишь ли, я про сложность использования макросов ничего не писал. Я про сложности, порождаемые их использованием. А использовать да, использовать их просто, не могу не согласиться.


Что-то ты меня совсем запутал. Использовать просто, но простота использования порождает сложность. Какую сложность? Я не понимаю.

IT>>Ничего особенного, гораздо проще, чем, например, эмитить код. Ну потратишь ты на это дело несколько часов, да даже несколько дней. В рамках проекта на несколько месяцев, если от твоего DSL будет серьёзный эффект, то потраченное время окупится с лихвой.


AVK>Я тоже так думал. А на практике оказалось, что этот DSL приходится поддерживать постоянно. Если DSL этот — ключевое момент системы, это еще ничего. А вот если вспомогательный — сложно все таки мыслить концепциями генераторов, сложнее, чем просто писать целевой код.


Любой общий компонент требуется поддерживать постоянно. Точнее не постоянно, а поначалу пока он утрясается и потом, когда нужно подстроиться под новые функциональные требования. Это касается любого компонента. Макросы и DSLи не исключение.

IT>>Элементарно. Добавляем в проект атрибут-макрос уровня сборки и этот атрибут разгребает весь подходящий xml (или чего там) в проекте и генерирует код.

AVK>Какой xml? Вот ты в студии выбираешь — добавить в проект новый класс. И студия генерит заготовку. Где там xml?

Я подумал ты о Custom Tools. А в данном случае если студия генерирует, то пусть себе генерирует.

IT>>Это опять лишь домыслы. Генерировать код на Немерле не сложнее, чем генерировать текст.


AVK>Опять же, ты неверно понял. Я нигде не писал, что генерировать код на Немерле сложнее, нежели генерировать текст. Я говорил о другом — нередко проще вообще ничего не генерировать. Это все я написал к тому, что была у меня задача создания довольно сложной модели и ее реализации в условиях цейтнота. Тогда я справился при помощи кодогенерации, и очень быстро получил результат. Но теперь, по проществии нескольких лет, приходится признать, что на поддержку генератора я затратил больше усилий, чем если бы я ничего не генерировал с самого начала и просто рефакторил бы готовый код.


У тебя скорее всего precompile-time генерация. Так с ней всегда так. Легко получить первоначальный результат, а потом начинаются пробуксовки до полной остановки. Проблема в негибкости и в ограниченности возможностей.
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 17:57
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>В том-то и дело, что это не проблема макросов.


Я считаю, что все таки макросов.

IT>Как раз макросами наоборот можно выразить это проще и доступнее.


Все таки мы говорим об разных вещах. Я не про то, что макросами нельзя выразить доступно.

IT>Сравни и прикинь, что будет легче объяснить и где будет меньше ошибок как по незнанию, так и по невнимательности.


Ты неверно ставишь вопрос. Мне не нужно опытному программисту объяснять ничего про C# и BCL, он обязан это знать, на эту тему есть мильен книг и статей.

IT>Вообще я пока не встречал макросов, которые было бы труднее использовать чем функции.


Охотно верю.

IT> Это просто не имеет смысла. Если легче и понятнее использовать функцию, то используется функция. Обычно же, если появление макроса оправдано, то он решает куда более широкий круг задач


Да. Именно! Я как раз это и говорю — макрос мощнее и гибче обычного фреймворка.

IT>Что-то ты меня совсем запутал.


Ты сам себя запутал. Мои слова в исходном сообщении следует понимать буквально. Не стоит додумывать то, чего там нет.

IT> Использовать просто, но простота использования порождает сложность. Какую сложность?


Сложность вползания в сильно отличающуюся языковую среду, которая на долго живущем проекте обязательно будет эволюционировать в нечто уникальное. Эта проблема есть и сейчас, безусловно. Но, по крайней мере, сейчас это сдерживается рамками стандарта языка.
Если же урезать мощность макров с целью этого избежать, то, мне кажется, можно придумать какие то более простые решения, легче реализуемые, более дружелюбные к рефакторингу и IDE и т.д.

IT>Любой общий компонент требуется поддерживать постоянно.


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

AVK>>Какой xml? Вот ты в студии выбираешь — добавить в проект новый класс. И студия генерит заготовку. Где там xml?


IT>Я подумал ты о Custom Tools.


Я уже заметил. Вобще, в этом топике каждый думает о своем, вместо того, чтобы внимательно прочитать, что я пишу. Я не столько на вопросы отвечаю, сколько опровергаю утверждения о том, что я говори то то и то то.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[8]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.12.08 18:46
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>То есть, VladD2 не дебил, а это значит что он может написать мокросы которые нужны ему и другим.

VD>Но это не значит, что только VladD2 не дебил. Таких людей много, а значит много кто сможет писать макры.

Теоритически это так.

VD>Скажем много кто пишет мета-код на основе шаблонов С++, но это ужасно сложно и неудобно. Но люди пишут. Писать мары на Немерле в сто раз проще. И значит их смогут писать куда большее число людей чем мета-код на С++ (например).


Откуда взялись твои оценки сложности ? Здесь то и зарыта собака.

Разумеется, если разработчик в состоянии осилить такую глубину и большую, то ему будет легче. Речь то не об этом.

Судя потому, что люди плохо понимают виртуальные методы, интефейсы, индексеры, итераторы и эвенты, любое новшество это уже чрезмерное усложнение.
Re[8]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.12.08 18:51
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Кроме того, если у разработчика возникнет понимание МП в Nemerle (а иначе как он придет к желанию покрыть макросами все его возможные потребности?), то он уже вполне может считаться "недебилом" и начать потихоньку писать их самостоятельно.


Ну, так, и что ?

Все дело в этом вот если.
Re[4]: Что меня не устраивает в МП в Nemerle
От: hi_octane Беларусь  
Дата: 27.12.08 18:53
Оценка:
_>>Каждый свою success story имхо сам должен делать.

I>Ага, должен Это слово чаще всего встречается, когда речь идеть о хилых инструментах, всегда находятся отношения долженствования.


Не хочу превращать тему в флейм, обсуждением абсолютных характеристик (мощность, хилость и их производных) неких инструментов. Можно ли считать .NET языки в которых нет вообще МП, хилыми? Заодно и к теме топика вернёмся

I>При этом надо будет показать, что производительность труда на голову выше чем у конкурентов.


Опять флейм. Кого и в чём надо убедить — сильно зависит и от того где работаешь и от того какую должность там занимаешь.
Re[4]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 19:06
Оценка: -3 :)
IT> Возьмём тот же $-макрос из Немерле и сравним со string.Format:

IT>$"Output: $a"

IT>string.Format("Output: {0}", a)

IT>Сравни и прикинь, что будет легче объяснить и где будет меньше ошибок как по незнанию, так и по невнимательности.

IT>Вообще я пока не встречал макросов, которые было бы труднее использовать чем функции.

Я тебе открою глаза: ты сам две строчки выше написал пример макроса, который труднее использовать чем функцию.

7 букв 5 спецсимволов -- это клиника. А приведённый код на C# понятен любому вменяемому программисту планеты.
Re[6]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 19:21
Оценка: :))
I>>Не важно на чем, макросы похожи на coroutines. Отказался потому что люди их не использовали, сколько бы я ни объяснял.

VD>- Да дерьмо этот ваш Корузо.

VD>- По чему это?
VD>- Петька вчера напел.

Именно правильное сравнение. Пока Петька вчера напеть на немерле не может, будет он в пользовании только у Карузо.
Re[10]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 19:25
Оценка: :)
M>>Какая разница?

AVK>Есть разница.


Есть?


M>>Если генератор детерменированый, пусть запускается когда хочет.


AVK>Главное, чтобы он запускался тогда, когда хочу я.


Легко -- правой кнопочкой и Run Custom Tool.
Re[8]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 19:26
Оценка:
M>>Генератор запускается когда студия решила, что файл изменился, или когда программист нажал правую кнопочку и попросил.

L>Не только. Например, когда в свойствах проекта меняешь default namespace, происходит запуск. Проверялось на t4.


И это правильно, как правило генерируемый код наследует default namespace.

Или ты имеешь в виду, что это мешает?
Re[4]: Что меня не устраивает в МП в Nemerle
От: hi_octane Беларусь  
Дата: 27.12.08 19:45
Оценка: +1
M>Из твоего рассказа я не очень понял, почему именно немерле и какую он бизнес-выгоду для проекта принёс.

Уже конкретный оффтопик попёр. Если продублируешь вопрос в той теме на которую я давал линку — отвечу.
Re[4]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.12.08 19:52
Оценка: +1 -1
Здравствуйте, IT, Вы писали:


IT>$"Output: $a"

IT>string.Format("Output: {0}", a)

IT>Сравни и прикинь, что будет легче объяснить и где будет меньше ошибок как по незнанию, так и по невнимательности.


Я на полном серьезе считаю, что второй вариант проще. Кода больше, но он и сообщает много больше.

Первый опускает все подробности, а программисту в голове по любому нужно держать их в голове.

Для объяснения "делает всякое со строкой" разумеется проще первый.

А вот для нормального использования надо знать все, что спрятано за коротенькой строчкой.

Попробуй объяснить это человеку, который не в теме и сразу поймешь в чем дело.

Второй пример без объяснений понятен любому, кто хотя бы пару месяцев осваивал программирование.

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


В том то и дело. Это и поднимает порог для входа.

IT>Что-то ты меня совсем запутал. Использовать просто, но простота использования порождает сложность. Какую сложность? Я не понимаю.


Ну примерно так -бинарный код самый простой из языков программирования он же самый сложный

Простота использования очевидна — пиши себе единицы и нули сколько влезет и как попало.

Сложность тоже очевидна — никому не ясно, что же там делается то.
Re[5]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.12.08 20:04
Оценка:
Здравствуйте, hi_octane, Вы писали:

I>>Ага, должен Это слово чаще всего встречается, когда речь идеть о хилых инструментах, всегда находятся отношения долженствования.


_>Не хочу превращать тему в флейм, обсуждением абсолютных характеристик (мощность, хилость и их производных) неких инструментов. Можно ли считать .NET языки в которых нет вообще МП, хилыми? Заодно и к теме топика вернёмся


Про хилый я говорю в контексте распространения технологии. Ну, шаблоны С++ куруть и мощь. Однако людей их умеющих, единицы, стало быть хилый подход.

I>>При этом надо будет показать, что производительность труда на голову выше чем у конкурентов.


_>Опять флейм. Кого и в чём надо убедить — сильно зависит и от того где работаешь и от того какую должность там занимаешь.


Это не флейм, это в тему про истории успеха. Как ты можешь убедить меня, например, работая в своей конторке — неясно.

А во всех конторках ты вряд ли поработаешь.
Re[5]: Что меня не устраивает в МП в Nemerle
От: rameel https://github.com/rsdn/CodeJam
Дата: 27.12.08 20:06
Оценка: +2
Здравствуйте, mihailik, Вы писали:

M>7 букв 5 спецсимволов -- это клиника. А приведённый код на C# понятен любому вменяемому программисту планеты.


Я как бы просмотрел последние сообщения IT, пример упомянутого макроса не нашел, или же имелся ввиду вот этот

$"Output: $a"
string.Format("Output: {0}", a)

но где здесь 5 спецсимволов и где здесь клиника?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 >>
Re[9]: Что меня не устраивает в МП в Nemerle
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.12.08 20:11
Оценка: +2
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, kochetkov.vladimir, Вы писали:


KV>>Кроме того, если у разработчика возникнет понимание МП в Nemerle (а иначе как он придет к желанию покрыть макросами все его возможные потребности?), то он уже вполне может считаться "недебилом" и начать потихоньку писать их самостоятельно.


I>Ну, так, и что ?


А то, что если понимания не возникнет, то и потребности в макросах на все случаи жизни у него не будет, и будет он писать в C#-like стиле, постепенно вникая в технологию, необходимость и целесообразность применения МП. И учитывая

По этой причине людям стараются дать технологии, которые не отнимают времени на освоение.


я в упор не понимаю, почему это преподносится как аргумент против МП в Nemerle, когда он явно является аргументом "за"

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[7]: Что меня не устраивает в МП в Nemerle
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.12.08 20:11
Оценка: :)
Здравствуйте, mihailik, Вы писали:

I>>>Не важно на чем, макросы похожи на coroutines. Отказался потому что люди их не использовали, сколько бы я ни объяснял.


VD>>- Да дерьмо этот ваш Корузо.

VD>>- По чему это?
VD>>- Петька вчера напел.

M>Именно правильное сравнение. Пока Петька вчера напеть на немерле не может, будет он в пользовании только у Карузо.


А что есть такого у Карузо, чего не может быть у Петьки в данном случае? Ну, кроме отсутствия желания, разумеется.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[6]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.12.08 20:17
Оценка: -2 :)
Здравствуйте, rameel, Вы писали:

R>Я как бы просмотрел последние сообщения IT, пример упомянутого макроса не нашел, или же имелся ввиду вот этот


R>
R>$"Output: $a"
R>string.Format("Output: {0}", a)
R>

R>но где здесь 5 спецсимволов и где здесь клиника?

Где там 5 спецсимволов, неясно.

Но вот код такой просто клиника.

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

Прозрачности в первой строке около нуля, как объяснить например студенту первого курса подобное — неясно. Вот она, сложность.

Далеко ходить не надо.

Есть два цикла, for и foreach

Первый суть алгоритмическая структура для итераций, а второй это очень, очень, очень сложная штукенция.

использовать если бездумно, то проще foreach

А если хоть немного думать при использовании, то только этот цикл требует разъяснения чуть не всего что есть в .Net вообще.
Re[8]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 27.12.08 20:24
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>А что есть такого у Карузо, чего не может быть у Петьки в данном случае? Ну, кроме отсутствия желания, разумеется.


Все рождены в равенстве и с равными возможностями!
Re[8]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.12.08 20:42
Оценка: -1 :)
Здравствуйте, kochetkov.vladimir, Вы писали:

M>>Именно правильное сравнение. Пока Петька вчера напеть на немерле не может, будет он в пользовании только у Карузо.


KV>А что есть такого у Карузо, чего не может быть у Петьки в данном случае? Ну, кроме отсутствия желания, разумеется.


Желание и стартовая позиция. Лучше всего, когда профессию люди осваивают с глубокого детства, такие люди достигают максимальных успехов.

Технологии должны экономить время путем вовлечения в разработку безграмотных толп людей.

Если нечто этим свойством не обладает, то это не технология вовсе.

У них, безграмотных толп, гарантировано желания нет чего то осваивать и тем не менее это не становится преградой для распространения технологии.

А вот с плохими технологиями вечно возникают оправдания, что де люди суть тупое быдло, ничем не интересуются и тд и тд.

Вот например, у нас на проекте работают

1 Тестировщики
2 Девелоперы
3 Алгоритмисты(это девелоперы но завязаные на очень узкую часть — алгоритмы которые придумывают математики)
4 Математики
5 специалисты по предметной области

интересы девелопера в математике отсутствуют, как и во всех других областях, а вот математики точно так же не имеют интереса кроме как в математике.
Ровно так же со всеми остальными.

Т.е. здесь имеет место вовлечение безграмотных масс в разработку, ибо должную подготовку по разработке ПО имеет только п.2.

P.S.

Вобщем то данный топик крутится вокруг одного вопроса — оценка сложности конструкций.

Игра приобрела такой расклад — одна часть считает что $"Output :$a" сложно, а вторая наоборот, считает что легко.

Как разрешить этот вопрос со сложностью — неясно.
Re[11]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 20:45
Оценка:
Здравствуйте, mihailik, Вы писали:

AVK>>Главное, чтобы он запускался тогда, когда хочу я.


M>Легко -- правой кнопочкой и Run Custom Tool.


А если в солюшене файлов с custom tool несколько сотен?
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[7]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 20:46
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Т.е. VladD2 понаписывает макросов на все случаи жизни ?


I>Я в это не поверю.


Это отличный шанс для вашего бизнеса — как говорят американцы.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[4]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 20:48
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>На практике надо посадить на немерле не только всю комманду, но и людей, которые потенциально могут стать частью этой комманды.


I>При этом надо будет показать, что производительность труда на голову выше чем у конкурентов.


Nemerle создает стандартные .Net сборки. Так что достаточно посадить одного инструментальщика.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[7]: Что меня не устраивает в МП в Nemerle
От: rameel https://github.com/rsdn/CodeJam
Дата: 27.12.08 21:20
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

R>>
R>>$"Output: $a"
R>>string.Format("Output: {0}", a)
R>>

R>>но где здесь 5 спецсимволов и где здесь клиника?

I>Где там 5 спецсимволов, неясно.


I>Но вот код такой просто клиника.


Да ну А обоснования будут?

I>Прозрачности в первой строке около нуля, как объяснить например студенту первого курса подобное — неясно. Вот она, сложность.


Студенту однофигственно придется объяснять что первое что второе. Причем, не факт, что первый вариант сложнее для понимания. PHP (да не в суе будет упомянут) тому яркий пример, там сплайс-строки умудряются применять и люди, знакомые с программированием лишь поверхностно.

Так что вопрос прозрачности больше тут связан как мне кажется с инертностью мышления и силой привычки
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 >>
Re[9]: Что меня не устраивает в МП в Nemerle
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.12.08 21:22
Оценка: 44 (3) +1
Здравствуйте, VoidEx, Вы писали:

VE>Здравствуйте, kochetkov.vladimir, Вы писали:


KV>>А что есть такого у Карузо, чего не может быть у Петьки в данном случае? Ну, кроме отсутствия желания, разумеется.


VE>Все рождены в равенстве и с равными возможностями!


Я же вроде уточнил, что говорю о данном случае?

Я правильно понимаю, что это сейчас было утверждение "метапрограммистами не становятся, ими рождаются"? Я уже не раз приводил (в том числе и тут, в ФП) аналогию с рисованием. Рисовать можно научить любого. Научить же передавать через рисунок свои чувства (а тем более, чувства других людей), практически нереально, этому необходимо учится самому, имея некоторый врожденный фундамент и желание/стремление. Восприимчивость к такого рода самобучению и называют талантом. Так вот, освоить МП — это как научиться использовать новую технику в рисунке. Никаких талантов для этого не требуется, чистый формализм и механика. А вот то, как художник/программер эту технику будет применять в своих работах — это уже формализм совсем не всегда. Но и тут никаких новых талантов, кроме тех, что у хорошего художника/программера уже есть, и не нужно.

Забавно, пока писал про техники, вспомнил, как мы осваивали в школе на уроках живописи, одну из оных. Ее суть сводилась к следующему: в качестве холста для работы выступал кусок оргстекла, нужного размера. Рисунок наносился на стекло кистью, с использованием крайне размоченной на палитре акварели (точнее даже, воды с небольшим добавлением акварели), очень крупными и весьма условными мазками. После этого, холст (мы использовали ватман) обильно пропитывался водой и нашлепывался на это стекло. Сверху ложился еще один кусок стекла, и весь этот бутерброд придавливался чем-нибудь тяжелым (чтобы холст не покоробило от влаги). Когда краска высыхала, холст отдирался от обоих стекол и, сначала просто влажной кисточкой, а потом пером с тушью уточнялись контуры рисунка, смазанные из-за водянистости техники и смещений холста при нашлепывании.

Работы, выполненные этой техникой, получались безумно красивые воздушные, легкие цвета, плавные переходы оттенков, интересные артефакты и фактуры из-за неравномерной концентрации красок, которые потом можно было обыграть дополнительной тушевкой и контуром. И это при том, что общая композиция рисунка оставалась практически в полном соответствии с задуманной.

Эта техника отличалась от всех остальных, ранее нами изученных, в т.ч. и следующим:

1. Позволяла крайне быстро получить работы необычайной красоты и выразительности
2. Основной базис для рисунка со всеми его богатыми фактурами и переходами выполнялся не художником, а другим, более огрубленным рисунком, нанесенным заранее на стекло.
3. Овладение пером и навыками уточнения контуров хоть и потребовало некоторое время, но результат того стоил однозначно
4. Концентрация творческой составляющей, преимущественно на последней стадии позволила целиком и полностью посвятить себя на ней передаче своих эмоций, а не размазывать этот процесс по всем этапам, как в других техниках.

Вот и с чего это я про нее сейчас вспомнил?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[6]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 21:26
Оценка: -3 :))) :)
R>но где здесь 5 спецсимволов и где здесь клиника?

1) $
2) "
3) :
4) $
5) "

Клиника: 5 спецсимволов на 7 букв. Птичий язык Write Only типа перла.
Re[12]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 21:33
Оценка: :)
AVK>А если в солюшене файлов с custom tool несколько сотен?

Тогда потрать 10 минут и напиши програмулинку, чтобы вызывало. Обычно все Custom Tool имеют программируемый API.
Re[10]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 27.12.08 21:39
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Я правильно понимаю, что это сейчас было утверждение "метапрограммистами не становятся, ими рождаются"?

Разумеется. Ну т.е. становление тоже имеет место, но далеко не 100%, и даже скорее всего не 50. Захотеть тоже надо уметь. Гены сильная штука. В принципе можно и кролика научить курить (вопрос времени и денег), но вот есть люди, какие есть. Есть даже неспособные понять указатели.

KV>Я уже не раз приводил (в том числе и тут, в ФП) аналогию с рисованием. Рисовать можно научить любого.

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

KV>Так вот, освоить МП — это как научиться использовать новую технику в рисунке. Никаких талантов для этого не требуется, чистый формализм и механика.

И время и деньги. И способности. Вон тут монады некоторые понять не в силах. И таких наверняка большинство. А ключевое слово какое-нибудь присобачить, делающее то же самое — это поймёт почти любой. Вроде нет разницы, а вроде вот она.

В любом случае это не по теме, у AVK есть вроде как более конкретные претензии. Но большинством это вопринимается "МП в Немерле ненужное говно, им никто не в состоянии овладеть и оно сложное". И они считают своим долгом рассказать, как можно человека научить понять простую макру, хотя к теме это отношения не имеет. Некоторые идут ещё дальше и слышат "Немерле говно". Потому и ответы в стиле "можно писать как на C#". Казалось бы, причём тут МП?
Re[7]: Что меня не устраивает в МП в Nemerle
От: rameel https://github.com/rsdn/CodeJam
Дата: 27.12.08 21:51
Оценка: :)
Здравствуйте, mihailik, Вы писали:

R>>но где здесь 5 спецсимволов и где здесь клиника?


M>1) $

M>2) "
M>3) :
M>4) $
M>5) "

M>Клиника: 5 спецсимволов на 7 букв. Птичий язык Write Only типа перла.


Скажите мне, что это стеб А то невольно вспоминается разговор про синтаксический оверхед господина Губанова

ЗЫ.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 >>
Re[4]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 22:03
Оценка:
Здравствуйте, IT, Вы писали:

IT>$"Output: $a"

IT>string.Format("Output: {0}", a)

IT>Сравни и прикинь, что будет легче объяснить и где будет меньше ошибок как по незнанию, так и по невнимательности.


Плюс проверка типов параметров во время компиляции.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[9]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 22:12
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Откуда взялись твои оценки сложности ? Здесь то и зарыта собака.


I>Разумеется, если разработчик в состоянии осилить такую глубину и большую, то ему будет легче. Речь то не об этом.


I>Судя потому, что люди плохо понимают виртуальные методы, интефейсы, индексеры, итераторы и эвенты, любое новшество это уже чрезмерное усложнение.


Это проблема думать на Блабе
Автор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[5]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 22:15
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, IT, Вы писали:



IT>>$"Output: $a"

IT>>string.Format("Output: {0}", a)

IT>>Сравни и прикинь, что будет легче объяснить и где будет меньше ошибок как по незнанию, так и по невнимательности.


I>Я на полном серьезе считаю, что второй вариант проще. Кода больше, но он и сообщает много больше.


А если я тебе скажу что во втором варианте могут быть рантайм ошибки, а первый их отловит на этапе компиляции?
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[10]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 27.12.08 22:21
Оценка:
Здравствуйте, alvas, Вы писали:

A>Это проблема думать на Блабе
Автор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.

И?
Re[6]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 27.12.08 22:23
Оценка:
Здравствуйте, alvas, Вы писали:

A>А если я тебе скажу что во втором варианте могут быть рантайм ошибки, а первый их отловит на этапе компиляции?

Расскажите мне, как он их отловит. Вдруг и правда?
А то у меня подозрение, что он может отловить только одну рантайм ошибку, которая может быть во втором случае.
Re[11]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 22:26
Оценка:
Здравствуйте, VoidEx, Вы писали:

A>>Это проблема думать на Блабе
Автор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.

VE>И?

Нужно переходить на следующий уровень мышления.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[7]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 27.12.08 22:36
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Здравствуйте, alvas, Вы писали:


A>>А если я тебе скажу что во втором варианте могут быть рантайм ошибки, а первый их отловит на этапе компиляции?

VE>Расскажите мне, как он их отловит. Вдруг и правда?
VE>А то у меня подозрение, что он может отловить только одну рантайм ошибку, которая может быть во втором случае.

Прошу прощения, перепутал с макросом printf
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[12]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 28.12.08 01:00
Оценка:
Здравствуйте, alvas, Вы писали:

A>>>Это проблема думать на Блабе
Автор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.

VE>>И?

A>Нужно переходить на следующий уровень мышления.

Кому нужно? Кому нужно, чтобы большое кол-во программистов перешло на следующий уровень мышления?
Re[4]: Что меня не устраивает в МП в Nemerle
От: IT Россия linq2db.com
Дата: 28.12.08 01:07
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

S>Вот есть, допустим, автоматический генератор SQL запросов по некоторой модели.


S>И вот оказывается, допустим, что в одном из запросов тебе вынь да полож потребовалось, допустим, обратиться не к таблице, а к параметризованному view. Обучать генерилку поддерживать параметризованные view — дорого; это окупится только если таких view у тебя применяется много. В исключительном случае тебе проще будет руками поправить сгенерированный запрос.


Настоящая проблема precompile генерации не в том, что трудно писать генераторы, а в том, что precompile генераторами трудно, если вообще возможно гибко управлять. Т.е. вместо того, чтобы подойти к двери и прочитать табличку занято, мы начинаем ходить вокруг да около, заглядывать в замочную скважину и ждать пока оттуда кто-то выйдет или туда войдёт. Т.е. более менее сложная генерация должна делаеться на основе невнятных эвристик.

Для твоего примера в той же compile или run-time генерации можно для параметризации view задействовать, например, атрибут и добавить небольшую ветку в генератор, анализирующий этот атрибут в подходящем месте. Пользователь сам указывает, что он хочет, проблема решена, затрат минимум и главное никаких эвристик по вторичным половым признакам, что и делает эти генераторы сложными.
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Что меня не устраивает в МП в Nemerle
От: IT Россия linq2db.com
Дата: 28.12.08 01:13
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Откровенно говоря — это все не конкретные какие-то рассуждения. Слишком много нюансов. Правильно спроектированный генератор не должен приодить к проблемам при изменении модели или свойств генерируемого кода. Тем более, что конечная модель у такого генератора — это скорее всего текст (или на худой конец какое-то АСТ вроде System.Linq.Expressions.Expression).


VD>В любом случае менять сгенерированный текст — это самое хреновое решение.


Ну, на самом деле есть два способа работы с precompile генераторами:

1. Сгенерировал и забыл про генератор.
2. Сгенерировал и забыл про изменение кода.

Первый вариант тоже имеет право на жизнь и часто используется. У меня в конторе народ генерирует генератором Linq2SQL набор классов по БД, зачем вычищает оттуда весь мусор и уже далее поддерживает этот код вручную. В принципе, ничего плохого в этом нет. Небольшая автоматизации на начальном этапе.
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[10]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.12.08 01:58
Оценка:
Здравствуйте, alvas, Вы писали:

A>Здравствуйте, Ikemefula, Вы писали:


I>>Откуда взялись твои оценки сложности ? Здесь то и зарыта собака.


I>>Разумеется, если разработчик в состоянии осилить такую глубину и большую, то ему будет легче. Речь то не об этом.


I>>Судя потому, что люди плохо понимают виртуальные методы, интефейсы, индексеры, итераторы и эвенты, любое новшество это уже чрезмерное усложнение.


A>Это проблема думать на Блабе
Автор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.


Я не понял что ты хотел сказать.
Re[8]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.12.08 02:22
Оценка: +1
Здравствуйте, rameel, Вы писали:

R>Да ну А обоснования будут?


А надо ? Не мог бы ты еще больше текста скипать ?

I>>Прозрачности в первой строке около нуля, как объяснить например студенту первого курса подобное — неясно. Вот она, сложность.


R>Студенту однофигственно придется объяснять что первое что второе. Причем, не факт, что первый вариант сложнее для понимания.


Придется объяснять это так. А вот первую строку придется объяснять через вторую, как ни крути.

Вот например

http://www.rsdn.ru//article/nemerle/Amplifier.xml
Автор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.


VladD2 сам объясняет через C# код и удивляется где же сложность.

R>Так что вопрос прозрачности больше тут связан как мне кажется с инертностью мышления и силой привычки


У человека должны образоваться определенные причинно-следственные связи и только потом он сможет использовать новые знания.

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

Такой инструмент, как логика, работает только там, где у человека правильные причинно-следственные связи.
Re[5]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.12.08 02:23
Оценка:
Здравствуйте, alvas, Вы писали:

I>>На практике надо посадить на немерле не только всю комманду, но и людей, которые потенциально могут стать частью этой комманды.


I>>При этом надо будет показать, что производительность труда на голову выше чем у конкурентов.


A>Nemerle создает стандартные .Net сборки. Так что достаточно посадить одного инструментальщика.


Я это всё понимаю, теоретически тип-топ.
Re[13]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 02:42
Оценка: +1
Здравствуйте, VoidEx, Вы писали:

A>>Нужно переходить на следующий уровень мышления.

VE>Кому нужно? Кому нужно, чтобы большое кол-во программистов перешло на следующий уровень мышления?

Прикол в том что и не нужно. Nemerle имеет их несколько.

писать как на c# — блаб
в функциональном стиле — up
макросы nemerle — up
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[11]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 02:46
Оценка:
Здравствуйте, Ikemefula, Вы писали:

A>>Это проблема думать на Блабе
Автор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.


I>Я не понял что ты хотел сказать.


Если читал статью выше — то здесь
Автор: VoidEx
Дата: 28.12.08
продолжение дискуссии
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[6]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 02:49
Оценка:
Здравствуйте, Ikemefula, Вы писали:

A>>Nemerle создает стандартные .Net сборки. Так что достаточно посадить одного инструментальщика.


I>Я это всё понимаю, теоретически тип-топ.


А практически?
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[10]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.12.08 02:50
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Так вот, освоить МП — это как научиться использовать новую технику в рисунке. Никаких талантов для этого не требуется, чистый формализм и механика. А вот то, как художник/программер эту технику будет применять в своих работах — это уже формализм совсем не всегда. Но и тут никаких новых талантов, кроме тех, что у хорошего художника/программера уже есть, и не нужно.


Это очень плохая аналогия.
Re[14]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 28.12.08 02:53
Оценка:
Здравствуйте, alvas, Вы писали:

A>Прикол в том что и не нужно. Nemerle имеет их несколько.


A>писать как на c# — блаб

A>в функциональном стиле — up
A>макросы nemerle — up

А что ж не пишут?
Re[8]: Что меня не устраивает в МП в Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.12.08 02:55
Оценка: :)))
Здравствуйте, rameel, Вы писали:

M>>1) $

M>>2) "
M>>3) :
M>>4) $
M>>5) "

M>>Клиника: 5 спецсимволов на 7 букв. Птичий язык Write Only типа перла.


R>Скажите мне, что это стеб А то невольно вспоминается разговор про синтаксический оверхед господина Губанова


Стеб или нет, но язык действительно птичий Write Only.
Re[14]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 02:56
Оценка: +1
Здравствуйте, alvas, Вы писали:

A>>>Нужно переходить на следующий уровень мышления.

VE>>Кому нужно? Кому нужно, чтобы большое кол-во программистов перешло на следующий уровень мышления?

A>Прикол в том что и не нужно. Nemerle имеет их несколько.


A>писать как на c# — блаб

A>в функциональном стиле — up
A>макросы nemerle — up

Nemerle — в отличие, например, от Хаскеля позволяет писать
и в импиритивном — "как в c#"
и в функциональном стиле.

Поэтому порог вхождения значительно ниже.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[15]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 03:00
Оценка:
Здравствуйте, VoidEx, Вы писали:

A>>Прикол в том что и не нужно. Nemerle имеет их несколько.


A>>писать как на c# — блаб

A>>в функциональном стиле — up
A>>макросы nemerle — up

VE>А что ж не пишут?


Так так и пишут. hi_octane хорошо это описал на примере своего проекта. Кроме того если посмотреть исходники Nemerle Team — это хорошо заметно. Более подробно здесь
Автор(ы): Сергей Туленцев, Владислав Чистяков
Дата: 23.05.2006
Производительность труда программиста в основном зависит от самого программиста. Однако даже самый опытный и знающий программист мало что может без подходящего инструмента. Эта статья открывает цикл статей об одном из таких инструментов, еще мало известном среди программистов, но очень многообещающем. Язык Nemerle, о котором пойдет речь в этих статьях, на первый взгляд очень похож на слегка улучшенный C#, но привносит многое из передовых исследовательских языков. Данная статья рассказывает об отличиях Nemerle от C# (как наиболее близкого языка)и является неформальным введением в язык.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[10]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 28.12.08 03:03
Оценка: +2
Здравствуйте, alvas, Вы писали:

A>Это проблема думать на Блабе
Автор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.


Кстати, парадокс Блаба — сладкая самообманка для "элиты", потому-то её так и любят пользователи крутых (по всем параметрам крутых!), но непризнанных (возможно пока, хотя насчёт ЛИСПа уже почти и сомнений нет, у Немерле ещё всё впереди) языков, автоматически записывая остальных в Блабы, даже если понимают, что это не так.
И уж это чья угодно проблема, но никак не программистов, которые выбирают язык.
Re[15]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 28.12.08 03:12
Оценка:
Здравствуйте, alvas, Вы писали:

A>Nemerle — в отличие, например, от Хаскеля позволяет писать

A>и в импиритивном — "как в c#"
A>и в функциональном стиле.

A>Поэтому порог вхождения значительно ниже.


[offtop]
И потому же все разрекламированные функциональные фишки, вроде элементарного распараллеливания, так упорно рекламируемые в том числе и Немерлистами, куда-то деваются.

Очень иронично, когда компилятор чуть ли не самого мощного в МП языка пилят ради нетривиального изменения, а теперь вот хотят урезать и функциональность макросов, ибо распараллелить компилятор стало очень сложно.
[/offtop]
Re[8]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 03:12
Оценка:
Здравствуйте, alvas, Вы писали:

A>>>А если я тебе скажу что во втором варианте могут быть рантайм ошибки, а первый их отловит на этапе компиляции?

VE>>Расскажите мне, как он их отловит. Вдруг и правда?
VE>>А то у меня подозрение, что он может отловить только одну рантайм ошибку, которая может быть во втором случае.

A>Прошу прощения, перепутал с макросом printf


Если использовать printf
Автор(ы): Владислав Чистяков
Дата: 09.12.2006
В статье на базе практических примеров разбирается что такое макросы Nemerle, что они могут и как их создавать.
вместо $, то

printf("Output = %d", a); // делает проверку типов параметров во время компиляции
string.Format("Output: {0:D}", a); // в рантайме
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[11]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 03:15
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Здравствуйте, alvas, Вы писали:


A>>Это проблема думать на Блабе
Автор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.


VE>Кстати, парадокс Блаба — сладкая самообманка для "элиты", потому-то её так и любят пользователи крутых (по всем параметрам крутых!), но непризнанных (возможно пока, хотя насчёт ЛИСПа уже почти и сомнений нет, у Немерле ещё всё впереди) языков, автоматически записывая остальных в Блабы, даже если понимают, что это не так.

VE>И уж это чья угодно проблема, но никак не программистов, которые выбирают язык.

Совершенно согласен, но для Nemerle ее нет. Я описал почему.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[9]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 28.12.08 03:21
Оценка: -1
Здравствуйте, alvas, Вы писали:

A>Если использовать printf
Автор(ы): Владислав Чистяков
Дата: 09.12.2006
В статье на базе практических примеров разбирается что такое макросы Nemerle, что они могут и как их создавать.
вместо $, то


A>printf("Output = %d", a); // делает проверку типов параметров во время компиляции

A>string.Format("Output: {0:D}", a); // в рантайме


Слов нет. Более 200 строк на объяснение, как это работает.
А вот здесь 14 очевидных строчек. У Cayenne функция кушает меньше форматов, но в любом случае способ Nemerle шокирует по сравнению с Cayenne.
Re[10]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 03:25
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Здравствуйте, alvas, Вы писали:


A>>Если использовать printf
Автор(ы): Владислав Чистяков
Дата: 09.12.2006
В статье на базе практических примеров разбирается что такое макросы Nemerle, что они могут и как их создавать.
вместо $, то


A>>printf("Output = %d", a); // делает проверку типов параметров во время компиляции

A>>string.Format("Output: {0:D}", a); // в рантайме


VE>Слов нет. Более 200 строк на объяснение, как это работает.

VE>А вот здесь 14 очевидных строчек. У Cayenne функция кушает меньше форматов, но в любом случае способ Nemerle шокирует по сравнению с Cayenne.

200 строк как это сделать. Как это использовать описано здесь
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[10]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 03:27
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Слов нет. Более 200 строк на объяснение, как это работает.

VE>А вот здесь 14 очевидных строчек. У Cayenne функция кушает меньше форматов, но в любом случае способ Nemerle шокирует по сравнению с Cayenne.

Так как это полный аналог функции на c++. То в вашем посте можно заменить слово Nemerle на c++.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[12]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 28.12.08 03:27
Оценка:
Здравствуйте, alvas, Вы писали:

A>Совершенно согласен, но для Nemerle ее нет. Я описал почему.


Вот почему в статьях про Хаскель о ней написано, а в статье про Немерле — нет.
Я ничего не перепутал?
Re[13]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 03:28
Оценка:
Здравствуйте, VoidEx, Вы писали:

A>>Совершенно согласен, но для Nemerle ее нет. Я описал почему.


VE>Вот почему в статьях про Хаскель о ней написано, а в статье про Немерле — нет.

VE>Я ничего не перепутал?

Ага
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[11]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 28.12.08 03:35
Оценка:
Здравствуйте, alvas, Вы писали:

A>200 строк как это сделать. Как это использовать описано здесь


А у Cayenne что? Тоже как сделать. 14 строк.
Re[11]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 28.12.08 03:35
Оценка:
Здравствуйте, alvas, Вы писали:

A>Так как это полный аналог функции на c++. То в вашем посте можно заменить слово Nemerle на c++.


С какой такой радости?
Re[12]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 03:41
Оценка:
Здравствуйте, VoidEx, Вы писали:

A>>200 строк как это сделать. Как это использовать описано здесь


VE>А у Cayenne что? Тоже как сделать. 14 строк.


Что есть Cayenne?
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[12]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 03:42
Оценка:
Здравствуйте, VoidEx, Вы писали:

A>>Так как это полный аналог функции на c++. То в вашем посте можно заменить слово Nemerle на c++.


VE>С какой такой радости?


Потому что "это полный аналог функции на c++"
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[13]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 28.12.08 03:42
Оценка:
Здравствуйте, alvas, Вы писали:

VE>>А у Cayenne что? Тоже как сделать. 14 строк.


A>Что есть Cayenne?


Статья же на вики. Функциональный язык программирования с dependent types.
Re[14]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 03:44
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>>>А у Cayenne что? Тоже как сделать. 14 строк.


A>>Что есть Cayenne?


VE>Статья же на вики. Функциональный язык программирования с dependent types.


Если ты заметил я даю прямые ссылки там где нужно разъяснение. Так почему бы и тебе не сделать то же самое?
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[14]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 03:45
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Здравствуйте, alvas, Вы писали:


VE>>>А у Cayenne что? Тоже как сделать. 14 строк.


A>>Что есть Cayenne?


VE>Статья же на вики. Функциональный язык программирования с dependent types.

здесь

Cayenne is the capital of French Guiana, an overseas région and département of France located in South America. The city stands on a former island at the mouth of the Cayenne River on the Atlantic coast.

http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[7]: Что меня не устраивает в МП в Nemerle
От: yumi  
Дата: 28.12.08 03:46
Оценка: +3 :))
Здравствуйте, mihailik, Вы писали:

M>1) $

M>2) "
M>3) :
M>4) $
M>5) "

M>Клиника: 5 спецсимволов на 7 букв. Птичий язык Write Only типа перла.


$"Output: $a"
string.Format("Output: {0}", a)


Ну ':' ты зря посчитал, это элемент строки, а не спец. символ. Итого будет 4 спец. символа. Давай по аналогии посчитаем количество спец. символов в шарпе:
1. '.'
2. '('
3. '"'
4. "{"
5. "0"
6. "}"
7. """
8. ","
9. ")"

Итого 9 против 4-х, Шарп то, поклиничнее будет

А если по делу, то там ведь всего один спец. символ '$' и концепция стоящая за ним, проста как две копейки. Человека который не сможет понять такое я ни на одном проекте не встречал, если вам приходится работать с такими людьми, то мне вас искренне жаль.
Lisp is not dead. It’s just the URL that has changed:
http://clojure.org
Re[12]: Что меня не устраивает в МП в Nemerle
От: alvas  
Дата: 28.12.08 03:49
Оценка:
Здравствуйте, VoidEx, Вы писали:

A>>200 строк как это сделать. Как это использовать описано здесь


VE>А у Cayenne что? Тоже как сделать. 14 с