Здравствуйте, VladD2, Вы писали:
VD>PEG позволяет снять большинство ограничений в области расширения синтаксиса. В Н2 планируется полностью отказаться от парсера в пользу макросов нового поколения. Мы уже знаем как их реализовать, но остаются сомнения в самом синтаксисе новых макросов.
Я сам люблю языки с богатым синтаксисом, но ИМХО у вас получается что-то вроде "языка с синтаксисом, определяемым пользователем"... Вы не боитесь, что каждая новая программа на Nemerle будет по сути программой на каком-то новом языке, и что людям, желающим разобраться в некоторой программе или подключиться к какому-то проекту, каждый раз придется изучать не только архитектуру и бизнес-логику проекта, а еще и учить заново новый язык?
Здравствуйте, x-code, Вы писали:
XC>Я сам люблю языки с богатым синтаксисом, но ИМХО у вас получается что-то вроде "языка с синтаксисом, определяемым пользователем"... Вы не боитесь, что каждая новая программа на Nemerle будет по сути программой на каком-то новом языке, и что людям, желающим разобраться в некоторой программе или подключиться к какому-то проекту, каждый раз придется изучать не только архитектуру и бизнес-логику проекта, а еще и учить заново новый язык?
Это фобия. На самом деле для этого нет никаких причин. Цель программы решить какую-либо задачу и сложность программы прежде всего зависит от сложности задачи (эссенциальная сложность), а так же от сложности использования инструментов (акцидентальная сложность). Макросы нацелены на решение акцидентальной сложности, а задач, как мне кажется, где правильный выбор инструмента может дать прирост на порядок очень мало, следовательно, в проекте будет преобладать обыкновенный, а не макро код.
Могу сказать на примере http://uniquation.ru/ru/ что использование макросов позволило сократить код на 25%. Из них 20% дали использование стандартных макросов из библиотеки Nemerle, а 5% — самописных. Притом, код самописных макросов занимает около 1% от всего кода.
Здравствуйте, x-code, Вы писали:
VD>>PEG позволяет снять большинство ограничений в области расширения синтаксиса. В Н2 планируется полностью отказаться от парсера в пользу макросов нового поколения. Мы уже знаем как их реализовать, но остаются сомнения в самом синтаксисе новых макросов.
XC>Я сам люблю языки с богатым синтаксисом, но ИМХО у вас получается что-то вроде "языка с синтаксисом, определяемым пользователем"... Вы не боитесь, что каждая новая программа на Nemerle будет по сути программой на каком-то новом языке, и что людям, желающим разобраться в некоторой программе или подключиться к какому-то проекту, каждый раз придется изучать не только архитектуру и бизнес-логику проекта, а еще и учить заново новый язык?
Не боимся, это не бага, а фича языка. Об эту тему уже много копий поломано, только те, кто реально использовал nemerle особых проблем с кастомным синтаксисом не испытывали.
Вкратце: изучение нового синтаксиса проще изучения уже написанных классов и методов в новом проекте. Совершенно новый язык, конечно же, никто не пишет. А те конструкции которые добавляются, понимаются лучше чем их аналог на рукопашном коде (иначе нет никакого смысла их вводить).
Здравствуйте, x-code, Вы писали:
XC>Я сам люблю языки с богатым синтаксисом, но ИМХО у вас получается что-то вроде "языка с синтаксисом, определяемым пользователем"...
Я же просил не превращать тему в помойку. Ведь очевидно, что если люди что-то делают, то они понимают, что и зачем делают.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Рысцов Денис, Вы писали:
РД>Здравствуйте, x-code, Вы писали:
XC>>Я сам люблю языки с богатым синтаксисом, но ИМХО у вас получается что-то вроде "языка с синтаксисом, определяемым пользователем"... Вы не боитесь, что каждая новая программа на Nemerle будет по сути программой на каком-то новом языке, и что людям, желающим разобраться в некоторой программе или подключиться к какому-то проекту, каждый раз придется изучать не только архитектуру и бизнес-логику проекта, а еще и учить заново новый язык?
РД>Это фобия.
Это не фобия, это вполне ожидаемое развитие — часть пользователей будет использовать стиль синтаксиса А, часть — Б, и так до N.
Для N = 2 можно посмотреть, что стало с Перлом. Каждый перловик относится к одной из двух бригад — одни любят всякие $$ и неявные функции, а другие предпочитают нормальные имена и явные функции. Каждая группа считает код написаный другой группой говнокодом и приступая к работе с чужим кодом выкидыет его нахрен.
Для того же N = 2 получаем обычный C++ и С++ с темплейтами в духе СТЛ, Буст и Александреску. В итоге С++ лагерь состоит из трех враждующих групп, каждая из которых считает код других говнокодом. Доходит до смешного — код с использованием СТЛ и Буст переписывается с нуля на код без СТЛ и Буст (и наоборот)
В случае с Немерле это будет язык с ОЧЕНЬ высокой зависимостью от культуры разработки, а следовательно останется уделом гиков. Это означает что из гигантов им никто не заинтересуется, потому что гигантам нужны инструменты которые хорошо проникают в массы (С#, Java, Python, JS). Поскольку Немерле и так никуда толком не проникает, можно ожидать что он так и останется упражнением для мозгов местной братвы.
Здравствуйте, Ikemefula, Вы писали:
РД>>Это фобия.
I>Это не фобия, это вполне ожидаемое развитие — часть пользователей будет использовать стиль синтаксиса А, часть — Б, и так до N.
Фобия, фобия. Практика это четко показывает.
I>Для N = 2 можно посмотреть, что стало с Перлом. Каждый перловик относится к одной из двух бригад — одни любят всякие $$ и неявные функции, а другие предпочитают нормальные имена и явные функции.
Казалось бы причем тут расширяемость?
Плюс двух же, а не N (где N > 2), правда? Так к чему себя пугать выдуманными историями?
I>Для того же N = 2 получаем обычный C++ и С++ с темплейтами в духе СТЛ, Буст и Александреску. В итоге С++ лагерь состоит из трех враждующих групп, каждая из которых считает код других говнокодом. Доходит до смешного — код с использованием СТЛ и Буст переписывается с нуля на код без СТЛ и Буст (и наоборот)
Да у нас каждый второй считает код на писанный не им говном. И что?
Языки и технологии используются в рамках проекта. В этих рамках конечно же должны быть единые правила игры. Это так даже с обычными правилами форматирования.
I>В случае с Немерле это будет язык с ОЧЕНЬ высокой зависимостью от культуры разработки, а следовательно останется уделом гиков.
Ну, вот сейчас на Н1 ведется разработка Н2. Некоторые из вызвавшихся принять в нем участие студенты (т.е. об опыте и культуре говорить не приходится). И где эти страшные проблемы? А их нет! Поднимается только два вопроса: пробелы vs. табы, и сокращенные имена vs. полные.
I>Это означает что из гигантов им никто не заинтересуется, потому что гигантам нужны инструменты которые хорошо проникают в массы (С#, Java, Python, JS). Поскольку Немерле и так никуда толком не проникает, можно ожидать что он так и останется упражнением для мозгов местной братвы.
Это миф. На самом деле будь за плечами Немерла большая контора и ее пиар, он бы проник в массы со скоростью которая и не снилась никому. И народ бы его на ура принял. А сказки которые ты и другие теоретики тут мусируете просто высасаны из пальца. Никто из тех кто применял Немерл на практике с тобой не согласится. Поверь, никто!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Скипнул, ибо результаты те же что и 3 года назад
VD>Это миф. На самом деле будь за плечами Немерла большая контора и ее пиар, он бы проник в массы со скоростью которая и не снилась никому. И народ бы его на ура принял. А сказки которые ты и другие теоретики тут мусируете просто высасаны из пальца. Никто из тех кто применял Немерл на практике с тобой не согласится. Поверь, никто!
" будь за плечами Немерла большая контора и ее пиар" — это вариация песенки про волшебника в голубом вертолёте.
Микрософт(Sun) не просто пиарила C#(Java), они прилагали усилия что бы языком могли пользоваться девелоперы самой разной квалификации. А Немерле затачивается исключительно под гиков.
На одном проекте можно применить что угодно и даже получится както контролировать. А как быть, если я, скажем, захочу погуглить в инете какие то реализации нужных мне фич, ты можешь гарантировать что все они будут в одном и том же стандарте выполнены ? Сейчас уже хватает проблем с разными библиотеками-технологиями даже если забыть про С++ и Перл. К этому винигрету ты хочешь добавить еще и винигрет синтаксисов Немерле
Здравствуйте, Ikemefula, Вы писали:
I>" будь за плечами Немерла большая контора и ее пиар" — это вариация песенки про волшебника в голубом вертолёте.
Ну, а если сказка станет былью, то изменишь свое мнение?
I>Микрософт(Sun) не просто пиарила C#(Java), они прилагали усилия что бы языком могли пользоваться девелоперы самой разной квалификации. А Немерле затачивается исключительно под гиков.
Вот это не правда. Немерл как язык проще Шарпа в использовании и освоении. Это создание маросов не простая задача. А их использование ничем не отличается от использования встроенных операторов.
I>На одном проекте можно применить что угодно и даже получится както контролировать. А как быть, если я, скажем, захочу погуглить в инете какие то реализации нужных мне фич, ты можешь гарантировать что все они будут в одном и том же стандарте выполнены ?
Я могу гарантировать, что если ты найдешь реализацию на С++, то без переписывания ты ее уже не сможешь на C# использовать. И могу тебе гарантировать, что реализация написанная на C# может быть просто помещена в проект немерла без изменений! Ты не забыл, что немерл компилирует C# прямо из коробки?
Кончено если ты найдешь код который использует хитрый макрос, то тебе придется использовать и этот макрос, или написать его аналог. Но вряд ли ты найдешь в Интернете что-то для частной задачи. А с общими алгоритмами проблем не будет.
I>Сейчас уже хватает проблем с разными библиотеками-технологиями даже если забыть про С++ и Перл. К этому винигрету ты хочешь добавить еще и винигрет синтаксисов Немерле
На самом деле это и есть библиотеки. Просто не подготовленному сознанию тяжело это понять. И проблемы у них одни и те же. Хорошую библиотеку будет легко использовать, плохую — нет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
I>>" будь за плечами Немерла большая контора и ее пиар" — это вариация песенки про волшебника в голубом вертолёте.
VD>Ну, а если сказка станет былью, то изменишь свое мнение?
Если это в ближайшем будущем, скажем через 10 лет, то вполне возможно. А если чуть позже, то не уверен что смогу вспомнить что же я писал на этом форуме про Немерле
I>>Микрософт(Sun) не просто пиарила C#(Java), они прилагали усилия что бы языком могли пользоваться девелоперы самой разной квалификации. А Немерле затачивается исключительно под гиков.
VD>Вот это не правда. Немерл как язык проще Шарпа в использовании и освоении. Это создание маросов не простая задача. А их использование ничем не отличается от использования встроенных операторов.
Это тебе так кажется, потому что ты его уже знаешь. А я вот не считаю, что Немерл проще C#
VD>Я могу гарантировать, что если ты найдешь реализацию на С++, то без переписывания ты ее уже не сможешь на C# использовать.
Программу на С++ бывает сложно использовать на самом С++, так что это плохой аргумент.
>И могу тебе гарантировать, что реализация написанная на C# может быть просто помещена в проект немерла без изменений! Ты не забыл, что немерл компилирует C# прямо из коробки?
Это палка о двух концах. Зачем людям учить Немерле, если оный Немерле компилирует C# искаропки ? Пиши на C# и всех делов
[q]
>Не согласен. Взять тот же Qt — это своего рода язык, который надо отдельно изучать. Я знаю С++, но покажи мне программу на Qt — с ходу не разберусь. А почему? Qt не знаю.
Вы не поверите — но даже те жалкие крохи с сигналами и foreach в Qt доставляют огромные проблемы огромному количеству программистов. А теперь представьте себе, что будет если налево и направо использовать полноценные DSL?
[/q]
Здравствуйте, Ikemefula, Вы писали:
I>Микрософт(Sun) не просто пиарила C#(Java), они прилагали усилия что бы языком могли пользоваться девелоперы самой разной квалификации. А Немерле затачивается исключительно под гиков.
А можно развить мысль? C языком для гиков у меня хаскель ассоциируется, nemerle предельно прост до некоторого уровня. Это уровень сложных макросов, но он все равно сильно ниже чем уровень требующийся для любого другого инструмента с аналогичными возможностями.
Здравствуйте, Ziaw, Вы писали:
I>>Микрософт(Sun) не просто пиарила C#(Java), они прилагали усилия что бы языком могли пользоваться девелоперы самой разной квалификации. А Немерле затачивается исключительно под гиков.
Z>А можно развить мысль? C языком для гиков у меня хаскель ассоциируется, nemerle предельно прост до некоторого уровня.
На уровне "hello world" все языки простые. Даже на уровне "факториал".
>Это уровень сложных макросов, но он все равно сильно ниже чем уровень требующийся для любого другого инструмента с аналогичными возможностями.
Вобще говоря сложными макросами мало кто умеет пользоваться
Здравствуйте, Ikemefula, Вы писали:
Z>>А можно развить мысль? C языком для гиков у меня хаскель ассоциируется, nemerle предельно прост до некоторого уровня.
I>На уровне "hello world" все языки простые. Даже на уровне "факториал".
Я же написал, на любом уровне покрывающем возможности C# и F# nemerle ничуть не сложнее. Почти все конструкции один в один.
>>Это уровень сложных макросов, но он все равно сильно ниже чем уровень требующийся для любого другого инструмента с аналогичными возможностями.
I>Вобще говоря сложными макросами мало кто умеет пользоваться
Ты наверное хотел сказать: мало кто умеет их грамотно писать. Пользоваться ими достаточно просто.
Здравствуйте, Ziaw, Вы писали:
Z>Я же написал, на любом уровне покрывающем возможности C# и F# nemerle ничуть не сложнее. Почти все конструкции один в один.
Здравствуйте, Ikemefula, Вы писали:
Z>>Я же написал, на любом уровне покрывающем возможности C# и F# nemerle ничуть не сложнее. Почти все конструкции один в один.
I>PM взрывает мозг новичкам
Сначала взрывает, потом они не понимают, как без него можно обходиться.
Это не монады и не асинхронные продолжения, концепция-то проста, взрывает только потому, что их опыт говорит о совсем другом смысле этого кода.
def x = SomeRecord(10); // здесь идет вызов конструктораmatch (x)
{
| SomeRecord(10) => {...} // а здесь проверка, что в x находится SomeRecord созданный с параметром 10
| SomeRecord(y) => {...} // а здесь проверка, что в x находится SomeRecord созданный с любым другим параметром, параметр будет помещен в переменную y с которой можно оперировать в блоке
}
Я не устраиваю ликбез, а демонстрирую, что дело в том, что синтаксис вызова конструктора используется в совсем другом смысле. Как только приходит понимание этого — ПМ перестает пугать и начинает безмерно радовать.
Здравствуйте, Ziaw, Вы писали:
I>>PM взрывает мозг новичкам Z>Сначала взрывает, потом они не понимают, как без него можно обходиться.
бОльшая часть так и не осваивает его
Z>Это не монады и не асинхронные продолжения, концепция-то проста, взрывает только потому, что их опыт говорит о совсем другом смысле этого кода.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, Рысцов Денис, Вы писали:
РД>>Это фобия. На самом деле для этого нет никаких причин.
I>
>>Не согласен. Взять тот же Qt — это своего рода язык, который надо отдельно изучать. Я знаю С++, но покажи мне программу на Qt — с ходу не разберусь. А почему? Qt не знаю.
I>Вы не поверите — но даже те жалкие крохи с сигналами и foreach в Qt доставляют огромные проблемы огромному количеству программистов. А теперь представьте себе, что будет если налево и направо использовать полноценные DSL? I>
Заметь, это совсем не мешает хорошей популярности Qt. Еще надо отметить, что это С++, программировать на котором, не понимая, что происходит под капотом абсолютно нереально.
В .net с этим попроще, foreach люди понимают гораздо раньше чем пишут свою первую реализацию с IEnumerable. А как работает под капотом yield знают совсем немногие, это не мешает широко его использовать.
Если человеку незнающему stl или boost показать код на них — не разберутся. А почему? Синтаксис мешает? Нет, инструмент надо знать. Именно знать, возможность разобраться как это все работает просто читая код stl появляется только у тех, кто с этим stl уже не один пуд соли съел.
Все то же самое можно сказать и про расширение синтаксиса. Ну появится Qt в котором вместо
Здравствуйте, Ziaw, Вы писали:
Z>Если человеку незнающему stl или boost показать код на них — не разберутся. А почему? Синтаксис мешает? Нет, инструмент надо знать. Именно знать, возможность разобраться как это все работает просто читая код stl появляется только у тех, кто с этим stl уже не один пуд соли съел.
Z>Все то же самое можно сказать и про расширение синтаксиса. Ну появится Qt в котором вместо Z>
Здравствуйте, Ikemefula, Вы писали:
Z>>Сначала взрывает, потом они не понимают, как без него можно обходиться. I>бОльшая часть так и не осваивает его
Ссылку на исследования можно?
Я вот пока еще не видел людей которые бы могли программировать и не понимали паттернматчинг.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Ikemefula, Вы писали:
I>Если появится N вариантов синтаксиса, это однозначно повысит сложность вхождения.
А откуда возьмется Н вариантов синтаксиса для одной конкретной библиотеки?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн