Nemerle
От: x-code  
Дата: 01.02.11 06:45
Оценка: +3 :))
Здравствуйте, VladD2, Вы писали:

VD>PEG позволяет снять большинство ограничений в области расширения синтаксиса. В Н2 планируется полностью отказаться от парсера в пользу макросов нового поколения. Мы уже знаем как их реализовать, но остаются сомнения в самом синтаксисе новых макросов.


Я сам люблю языки с богатым синтаксисом, но ИМХО у вас получается что-то вроде "языка с синтаксисом, определяемым пользователем"... Вы не боитесь, что каждая новая программа на Nemerle будет по сути программой на каком-то новом языке, и что людям, желающим разобраться в некоторой программе или подключиться к какому-то проекту, каждый раз придется изучать не только архитектуру и бизнес-логику проекта, а еще и учить заново новый язык?


05.02.11 20:47: Ветка выделена из темы Синтаксис для синтаксических макросов Nemerle 2.0
Автор: VladD2
Дата: 31.01.11
— kochetkov.vladimir
05.02.11 20:48: Перенесено модератором из 'Философия программирования' — kochetkov.vladimir
Re: Nemerle
От: Рысцов Денис  
Дата: 01.02.11 07:07
Оценка: +3
Здравствуйте, x-code, Вы писали:

XC>Я сам люблю языки с богатым синтаксисом, но ИМХО у вас получается что-то вроде "языка с синтаксисом, определяемым пользователем"... Вы не боитесь, что каждая новая программа на Nemerle будет по сути программой на каком-то новом языке, и что людям, желающим разобраться в некоторой программе или подключиться к какому-то проекту, каждый раз придется изучать не только архитектуру и бизнес-логику проекта, а еще и учить заново новый язык?


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

Могу сказать на примере http://uniquation.ru/ru/ что использование макросов позволило сократить код на 25%. Из них 20% дали использование стандартных макросов из библиотеки Nemerle, а 5% — самописных. Притом, код самописных макросов занимает около 1% от всего кода.
Re: Nemerle
От: Ziaw Россия  
Дата: 01.02.11 07:19
Оценка: +3
Здравствуйте, x-code, Вы писали:

VD>>PEG позволяет снять большинство ограничений в области расширения синтаксиса. В Н2 планируется полностью отказаться от парсера в пользу макросов нового поколения. Мы уже знаем как их реализовать, но остаются сомнения в самом синтаксисе новых макросов.


XC>Я сам люблю языки с богатым синтаксисом, но ИМХО у вас получается что-то вроде "языка с синтаксисом, определяемым пользователем"... Вы не боитесь, что каждая новая программа на Nemerle будет по сути программой на каком-то новом языке, и что людям, желающим разобраться в некоторой программе или подключиться к какому-то проекту, каждый раз придется изучать не только архитектуру и бизнес-логику проекта, а еще и учить заново новый язык?


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

Вкратце: изучение нового синтаксиса проще изучения уже написанных классов и методов в новом проекте. Совершенно новый язык, конечно же, никто не пишет. А те конструкции которые добавляются, понимаются лучше чем их аналог на рукопашном коде (иначе нет никакого смысла их вводить).
Re: Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.02.11 13:20
Оценка:
Здравствуйте, x-code, Вы писали:

XC>Я сам люблю языки с богатым синтаксисом, но ИМХО у вас получается что-то вроде "языка с синтаксисом, определяемым пользователем"...


Я же просил не превращать тему в помойку. Ведь очевидно, что если люди что-то делают, то они понимают, что и зачем делают.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 01.02.11 16:54
Оценка: 12 (5) +2 -1
Здравствуйте, Рысцов Денис, Вы писали:

РД>Здравствуйте, x-code, Вы писали:


XC>>Я сам люблю языки с богатым синтаксисом, но ИМХО у вас получается что-то вроде "языка с синтаксисом, определяемым пользователем"... Вы не боитесь, что каждая новая программа на Nemerle будет по сути программой на каком-то новом языке, и что людям, желающим разобраться в некоторой программе или подключиться к какому-то проекту, каждый раз придется изучать не только архитектуру и бизнес-логику проекта, а еще и учить заново новый язык?


РД>Это фобия.


Это не фобия, это вполне ожидаемое развитие — часть пользователей будет использовать стиль синтаксиса А, часть — Б, и так до N.

Для N = 2 можно посмотреть, что стало с Перлом. Каждый перловик относится к одной из двух бригад — одни любят всякие $$ и неявные функции, а другие предпочитают нормальные имена и явные функции. Каждая группа считает код написаный другой группой говнокодом и приступая к работе с чужим кодом выкидыет его нахрен.

Для того же N = 2 получаем обычный C++ и С++ с темплейтами в духе СТЛ, Буст и Александреску. В итоге С++ лагерь состоит из трех враждующих групп, каждая из которых считает код других говнокодом. Доходит до смешного — код с использованием СТЛ и Буст переписывается с нуля на код без СТЛ и Буст (и наоборот)

В случае с Немерле это будет язык с ОЧЕНЬ высокой зависимостью от культуры разработки, а следовательно останется уделом гиков. Это означает что из гигантов им никто не заинтересуется, потому что гигантам нужны инструменты которые хорошо проникают в массы (С#, Java, Python, JS). Поскольку Немерле и так никуда толком не проникает, можно ожидать что он так и останется упражнением для мозгов местной братвы.
Re[3]: Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.02.11 18:17
Оценка: -6 :)
Здравствуйте, Ikemefula, Вы писали:

РД>>Это фобия.


I>Это не фобия, это вполне ожидаемое развитие — часть пользователей будет использовать стиль синтаксиса А, часть — Б, и так до N.


Фобия, фобия. Практика это четко показывает.

I>Для N = 2 можно посмотреть, что стало с Перлом. Каждый перловик относится к одной из двух бригад — одни любят всякие $$ и неявные функции, а другие предпочитают нормальные имена и явные функции.


Казалось бы причем тут расширяемость?

Плюс двух же, а не N (где N > 2), правда? Так к чему себя пугать выдуманными историями?


I>Для того же N = 2 получаем обычный C++ и С++ с темплейтами в духе СТЛ, Буст и Александреску. В итоге С++ лагерь состоит из трех враждующих групп, каждая из которых считает код других говнокодом. Доходит до смешного — код с использованием СТЛ и Буст переписывается с нуля на код без СТЛ и Буст (и наоборот)


Да у нас каждый второй считает код на писанный не им говном. И что?

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

I>В случае с Немерле это будет язык с ОЧЕНЬ высокой зависимостью от культуры разработки, а следовательно останется уделом гиков.


Ну, вот сейчас на Н1 ведется разработка Н2. Некоторые из вызвавшихся принять в нем участие студенты (т.е. об опыте и культуре говорить не приходится). И где эти страшные проблемы? А их нет! Поднимается только два вопроса: пробелы vs. табы, и сокращенные имена vs. полные.

I>Это означает что из гигантов им никто не заинтересуется, потому что гигантам нужны инструменты которые хорошо проникают в массы (С#, Java, Python, JS). Поскольку Немерле и так никуда толком не проникает, можно ожидать что он так и останется упражнением для мозгов местной братвы.


Это миф. На самом деле будь за плечами Немерла большая контора и ее пиар, он бы проник в массы со скоростью которая и не снилась никому. И народ бы его на ура принял. А сказки которые ты и другие теоретики тут мусируете просто высасаны из пальца. Никто из тех кто применял Немерл на практике с тобой не согласится. Поверь, никто!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 01.02.11 19:29
Оценка:
Здравствуйте, VladD2, Вы писали:

Скипнул, ибо результаты те же что и 3 года назад

VD>Это миф. На самом деле будь за плечами Немерла большая контора и ее пиар, он бы проник в массы со скоростью которая и не снилась никому. И народ бы его на ура принял. А сказки которые ты и другие теоретики тут мусируете просто высасаны из пальца. Никто из тех кто применял Немерл на практике с тобой не согласится. Поверь, никто!


" будь за плечами Немерла большая контора и ее пиар" — это вариация песенки про волшебника в голубом вертолёте.

Микрософт(Sun) не просто пиарила C#(Java), они прилагали усилия что бы языком могли пользоваться девелоперы самой разной квалификации. А Немерле затачивается исключительно под гиков.

На одном проекте можно применить что угодно и даже получится както контролировать. А как быть, если я, скажем, захочу погуглить в инете какие то реализации нужных мне фич, ты можешь гарантировать что все они будут в одном и том же стандарте выполнены ? Сейчас уже хватает проблем с разными библиотеками-технологиями даже если забыть про С++ и Перл. К этому винигрету ты хочешь добавить еще и винигрет синтаксисов Немерле
Re[5]: Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.02.11 21:33
Оценка: :))
Здравствуйте, Ikemefula, Вы писали:

I>" будь за плечами Немерла большая контора и ее пиар" — это вариация песенки про волшебника в голубом вертолёте.


Ну, а если сказка станет былью, то изменишь свое мнение?

I>Микрософт(Sun) не просто пиарила C#(Java), они прилагали усилия что бы языком могли пользоваться девелоперы самой разной квалификации. А Немерле затачивается исключительно под гиков.


Вот это не правда. Немерл как язык проще Шарпа в использовании и освоении. Это создание маросов не простая задача. А их использование ничем не отличается от использования встроенных операторов.

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


Я могу гарантировать, что если ты найдешь реализацию на С++, то без переписывания ты ее уже не сможешь на C# использовать. И могу тебе гарантировать, что реализация написанная на C# может быть просто помещена в проект немерла без изменений! Ты не забыл, что немерл компилирует C# прямо из коробки?

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

I>Сейчас уже хватает проблем с разными библиотеками-технологиями даже если забыть про С++ и Перл. К этому винигрету ты хочешь добавить еще и винигрет синтаксисов Немерле


На самом деле это и есть библиотеки. Просто не подготовленному сознанию тяжело это понять. И проблемы у них одни и те же. Хорошую библиотеку будет легко использовать, плохую — нет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.02.11 09:18
Оценка:
Здравствуйте, VladD2, Вы писали:

I>>" будь за плечами Немерла большая контора и ее пиар" — это вариация песенки про волшебника в голубом вертолёте.


VD>Ну, а если сказка станет былью, то изменишь свое мнение?


Если это в ближайшем будущем, скажем через 10 лет, то вполне возможно. А если чуть позже, то не уверен что смогу вспомнить что же я писал на этом форуме про Немерле

I>>Микрософт(Sun) не просто пиарила C#(Java), они прилагали усилия что бы языком могли пользоваться девелоперы самой разной квалификации. А Немерле затачивается исключительно под гиков.


VD>Вот это не правда. Немерл как язык проще Шарпа в использовании и освоении. Это создание маросов не простая задача. А их использование ничем не отличается от использования встроенных операторов.


Это тебе так кажется, потому что ты его уже знаешь. А я вот не считаю, что Немерл проще C#

VD>Я могу гарантировать, что если ты найдешь реализацию на С++, то без переписывания ты ее уже не сможешь на C# использовать.


Программу на С++ бывает сложно использовать на самом С++, так что это плохой аргумент.

>И могу тебе гарантировать, что реализация написанная на C# может быть просто помещена в проект немерла без изменений! Ты не забыл, что немерл компилирует C# прямо из коробки?


Это палка о двух концах. Зачем людям учить Немерле, если оный Немерле компилирует C# искаропки ? Пиши на C# и всех делов
Re[2]: Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.02.11 13:24
Оценка: :))
Здравствуйте, Рысцов Денис, Вы писали:

РД>Это фобия. На самом деле для этого нет никаких причин.


В соседнем треде:

http://rsdn.ru/forum/philosophy/4141145.1.aspx
Автор: Eye of Hell
Дата: 03.02.11

[q]
>Не согласен. Взять тот же Qt — это своего рода язык, который надо отдельно изучать. Я знаю С++, но покажи мне программу на Qt — с ходу не разберусь. А почему? Qt не знаю.



Вы не поверите — но даже те жалкие крохи с сигналами и foreach в Qt доставляют огромные проблемы огромному количеству программистов. А теперь представьте себе, что будет если налево и направо использовать полноценные DSL?
[/q]
Re[5]: Nemerle
От: Ziaw Россия  
Дата: 04.02.11 07:51
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Микрософт(Sun) не просто пиарила C#(Java), они прилагали усилия что бы языком могли пользоваться девелоперы самой разной квалификации. А Немерле затачивается исключительно под гиков.


А можно развить мысль? C языком для гиков у меня хаскель ассоциируется, nemerle предельно прост до некоторого уровня. Это уровень сложных макросов, но он все равно сильно ниже чем уровень требующийся для любого другого инструмента с аналогичными возможностями.
Re[6]: Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 04.02.11 12:30
Оценка:
Здравствуйте, Ziaw, Вы писали:

I>>Микрософт(Sun) не просто пиарила C#(Java), они прилагали усилия что бы языком могли пользоваться девелоперы самой разной квалификации. А Немерле затачивается исключительно под гиков.


Z>А можно развить мысль? C языком для гиков у меня хаскель ассоциируется, nemerle предельно прост до некоторого уровня.


На уровне "hello world" все языки простые. Даже на уровне "факториал".

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


Вобще говоря сложными макросами мало кто умеет пользоваться
Re[7]: Nemerle
От: Ziaw Россия  
Дата: 04.02.11 14:06
Оценка:
Здравствуйте, Ikemefula, Вы писали:

Z>>А можно развить мысль? C языком для гиков у меня хаскель ассоциируется, nemerle предельно прост до некоторого уровня.


I>На уровне "hello world" все языки простые. Даже на уровне "факториал".


Я же написал, на любом уровне покрывающем возможности C# и F# nemerle ничуть не сложнее. Почти все конструкции один в один.

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


I>Вобще говоря сложными макросами мало кто умеет пользоваться


Ты наверное хотел сказать: мало кто умеет их грамотно писать. Пользоваться ими достаточно просто.
Re[8]: Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 04.02.11 14:17
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Я же написал, на любом уровне покрывающем возможности C# и F# nemerle ничуть не сложнее. Почти все конструкции один в один.


PM взрывает мозг новичкам
Re[9]: Nemerle
От: Ziaw Россия  
Дата: 04.02.11 14:42
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

Z>>Я же написал, на любом уровне покрывающем возможности C# и F# nemerle ничуть не сложнее. Почти все конструкции один в один.


I>PM взрывает мозг новичкам


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

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

def x = SomeRecord(10); // здесь идет вызов конструктора
match (x)
{
  | SomeRecord(10) => {...} // а здесь проверка, что в x находится SomeRecord созданный с параметром 10
  | SomeRecord(y) => {...} // а здесь проверка, что в x находится SomeRecord созданный с любым другим параметром, параметр будет помещен в переменную y с которой можно оперировать в блоке
}


Я не устраиваю ликбез, а демонстрирую, что дело в том, что синтаксис вызова конструктора используется в совсем другом смысле. Как только приходит понимание этого — ПМ перестает пугать и начинает безмерно радовать.
Re[10]: Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 04.02.11 14:54
Оценка: -1
Здравствуйте, Ziaw, Вы писали:

I>>PM взрывает мозг новичкам

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

бОльшая часть так и не осваивает его

Z>Это не монады и не асинхронные продолжения, концепция-то проста, взрывает только потому, что их опыт говорит о совсем другом смысле этого кода.


Я про новичков в программировании.
Re[3]: Nemerle
От: Ziaw Россия  
Дата: 04.02.11 14:59
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, Рысцов Денис, Вы писали:


РД>>Это фобия. На самом деле для этого нет никаких причин.


I>

>>Не согласен. Взять тот же Qt — это своего рода язык, который надо отдельно изучать. Я знаю С++, но покажи мне программу на Qt — с ходу не разберусь. А почему? Qt не знаю.


I>Вы не поверите — но даже те жалкие крохи с сигналами и foreach в Qt доставляют огромные проблемы огромному количеству программистов. А теперь представьте себе, что будет если налево и направо использовать полноценные DSL?

I>

Заметь, это совсем не мешает хорошей популярности Qt. Еще надо отметить, что это С++, программировать на котором, не понимая, что происходит под капотом абсолютно нереально.

В .net с этим попроще, foreach люди понимают гораздо раньше чем пишут свою первую реализацию с IEnumerable. А как работает под капотом yield знают совсем немногие, это не мешает широко его использовать.

Если человеку незнающему stl или boost показать код на них — не разберутся. А почему? Синтаксис мешает? Нет, инструмент надо знать. Именно знать, возможность разобраться как это все работает просто читая код stl появляется только у тех, кто с этим stl уже не один пуд соли съел.

Все то же самое можно сказать и про расширение синтаксиса. Ну появится Qt в котором вместо
connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int)));

можно будет писать
CONNECT(a.valueChanged(int), b.setValue(int));


Это как-то повысит порог вхождения в Qt?
Re[4]: Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 04.02.11 15:08
Оценка: :)
Здравствуйте, Ziaw, Вы писали:

Z>Если человеку незнающему stl или boost показать код на них — не разберутся. А почему? Синтаксис мешает? Нет, инструмент надо знать. Именно знать, возможность разобраться как это все работает просто читая код stl появляется только у тех, кто с этим stl уже не один пуд соли съел.


Z>Все то же самое можно сказать и про расширение синтаксиса. Ну появится Qt в котором вместо

Z>
Z>connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int)));
Z>

Z>можно будет писать
Z>
Z>CONNECT(a.valueChanged(int), b.setValue(int));
Z>


Z>Это как-то повысит порог вхождения в Qt?


Если появится N вариантов синтаксиса, это однозначно повысит сложность вхождения.
Re[11]: Nemerle
От: WolfHound  
Дата: 04.02.11 15:11
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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

I>бОльшая часть так и не осваивает его
Ссылку на исследования можно?
Я вот пока еще не видел людей которые бы могли программировать и не понимали паттернматчинг.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: Nemerle
От: WolfHound  
Дата: 04.02.11 15:14
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Если появится N вариантов синтаксиса, это однозначно повысит сложность вхождения.

А откуда возьмется Н вариантов синтаксиса для одной конкретной библиотеки?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.