Здравствуйте, Mamut, Вы писали:
M>Я тебе написал много чего по делу.
Мне твои писания на фиг не упали. Я и сам могу много хорших планов и идей написать.
Мне помощь нужна. Вот в том же пиаре.
Сколько раз тебе говорить?... Неравнодушен к проекту? Видишь проблемы? Присоединяйся и помоги их исправить.
То что я могу я делаю.
Тот же использование гитхабы мы переосмыслили и теперь переодически сливаемся с мастером, чтобы люди видели.
Твичу по мере продвижения. Твитить о каждом комите смысла не вижу.
Пишу статьи которые является документацией и одновременно средством популяризации. По мере приближения к релизному состоянию буду пытаться больше писать.
Считаешь, что этого недостаточно? Присоединяйся и помогай. Я больше уже физически не могу.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Ikemefula, Вы писали:
I>linq это имелось ввиду query comprehension, а не сама либа. Полагаю, "идентичная реализация" это костыли в Немерле которые планируется убрать в ближайшие годы ?
Т.е. синтаксис? Он просто особо никому не нужен. У немерловых макросов были проблемы с его чистой реализацией, а хардкодить в язык не хотелось. С Nitra таких проблем не будет. Так что в будущем и синтаксис будет поддержан. Причем будет возможность его расширять и сделать недостающие операторы.
Я правильно понимаю, что это то преимущество, которое предопределило успешность шарпа?
I>Полноценный вывод типов это пока единтсвенный аргумент в твою пользу.
Тебе просто очень хочется игнорировать другие. Тот же паттерн матчинг в Немерле начиная с 2003-го года. Но тебе на это плевать. Ты выискиваешь аргументы чтобы оправдать заведомо ущербную полицию. Было бы странно услышать от тебя объективный анализ.
I>Похоже ктото не удосужился посмотреть, что же он пишет I>"в точности такой набор фич"
Назови мне что-то что будет в C# 7.0 и чего не было в Nemerle 0.3.
Фейспалмщиг фигов.
I>"с практически идентичной реализацией" I>И вот оказывается, и фичи были другими, и никакой идентичной реализации не было
Оказывается, что ты так хочешь доказать свою правоту, что полностью не способен на объективность. Мне это не интересно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
WH>Ибо как только у тебя в языке появляются зависимости, которые нужно обрабатывать не в порядке парсинга то всё. Акшены не работают.
+1
Именно по этому в последних версиях ANTLR-а сделана поддержка автоматического формирования дерева разбора в котором поддерживается паттерн "Посетитель", а автор советует использовать именно этот подход.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Именно по этому в последних версиях ANTLR-а сделана поддержка автоматического формирования дерева разбора в котором поддерживается паттерн "Посетитель", а автор советует использовать именно этот подход.
На посетителе тоже далеко не уедешь. Много на наших волкерах можно сделать?
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>На посетителе тоже далеко не уедешь. Много на наших волкерах можно сделать?
Практически что угодно. Это же базовый механизм посещения узлов дерева! Обходи дерево 100500 раз и считай (вручную) все что хочешь.
Вопрос только в сложности реализации.
Собственно нитровские DSL-и маппинга и типизации всего лишь упрощают и систематизируют этот процесс. Но упрощают настолько радикально, что из неподъемной задачи на 10 человеколет она превращается в задачу на 1-2 человекомесяцев и снижает требования к квалификации программиста. А, так все можно сделать "Посетителем" .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Практически что угодно. Это же базовый механизм посещения узлов дерева! Обходи дерево 100500 раз и считай (вручную) все что хочешь.
Я не спорю с тем, что всё можно написать на машине Тьринга.
Только объём работы будет за гранью добра и зла.
А если объём работы начинает превышать некий придел, то задача становится нерешаемой.
VD>Собственно нитровские DSL-и маппинга и типизации всего лишь упрощают и систематизируют этот процесс. Но упрощают настолько радикально, что из неподъемной задачи на 10 человеколет она превращается в задачу на 1-2 человекомесяцев и снижает требования к квалификации программиста. А, так все можно сделать "Посетителем" .
Во-во. Кто не верит, пусть попробует типизировать C# посетителем.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Только объём работы будет за гранью добра и зла.
Я об этом парой строк ниже и написал.
WH>А если объём работы начинает превышать некий придел, то задача становится нерешаемой.
Есть такое дело.
WH>Во-во. Кто не верит, пусть попробует типизировать C# посетителем.
Ну, вот Майкрософту и ДжетБрэйнсу это удалось. Вопрос только какими силами и какие силы нужны на поддержку этих решений. Впрочем пока у них есть на это ресурсы (доход от продуктов), то им по фигу.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, xvost, Вы писали:
X>Вот, допустим, завтра к вам в команду придёт PMM. Какие задачи ты будешь ему ставить? Что он будет делать?
К сожалению, не придет.
А задачи я бы с ним сам и сформулировал.
Исходный послы таковы.
Имеем продукт предназначенный для разработчиков которые хотят:
1. Создавать языки.
2. Расширять имеющиеся языки.
3. Создавать SDL-и (как встраиваемый в другие языки, так и оформляемые в виде отдельных форматов файлов) интегрирующиеся с языками программирования общего назначения.
4. Которые хотят повысить уровень абстракции в своей прикладной области, получить более интегрированные фрейворки и уменьшить объем кода необходимый для решения их задач и которых ограничивают рамки современных языков программирования общего назначения.
Продукт предлагает набор языков для описания грамматики, типизации и т.п. В результате получается плагин к РеШарперу и граф символов описывающий программу (на созданном на Нитра языке) и пригодное для дальнейшей обработки и генерации кода (или других вещей).
Для писателей расширений предлагается легко создавать расширения (синтаксические и/или семантические) к имеющимся языкам (например, C# или Nemerle).
Нужно продумать действия по доведению до народа "крутости" Нитры, ее целей и круга решаемых ею задач. Наладить те самые постоянные твиты.
Короче, определение конкретных действий сама по себе отдельная и не простая задача.
До конца кода то что у нас есть будет доступно в галереях NuGet-а и плагинов ReSharper-а. Собственно нужно подтолкнуть народ к их изучению и сделать так, чтобы люди не ушли ничего не поняв.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
I>>linq это имелось ввиду query comprehension, а не сама либа. Полагаю, "идентичная реализация" это костыли в Немерле которые планируется убрать в ближайшие годы ?
VD>Т.е. синтаксис? Он просто особо никому не нужен.
Твои сведения устарели лет на 5. Это раньше его не пользовали. А потом постепенно распробовали и сейчас это норма. Что собтсвенно и показывает, с какой скоростью массы осваивают даже простейшее кунгфу.
I>>Полноценный вывод типов это пока единтсвенный аргумент в твою пользу.
VD>Тебе просто очень хочется игнорировать другие. Тот же паттерн матчинг в Немерле начиная с 2003-го года. Но тебе на это плевать.
Паттерн матчинг не пролез ни в один мейнстримный язык. Ты сам то понимаешь ?
I>>Похоже ктото не удосужился посмотреть, что же он пишет I>>"в точности такой набор фич"
VD>Назови мне что-то что будет в C# 7.0 и чего не было в Nemerle 0.3.
Слова "в точности" и "идентично" имеют определенный смысл, который в твоей интерпретации отсутствует.
Я не удивлюсь, если вдруг окажется, что подобие матчинга в стейтменте catch() ты назовёшь "взяли из немерла"
Кстати, дарю идею — берём какой нибудь древний язык, декларативный, что бы было подобие query , называем его прото-Немерле, вуаля — query comprehension позаимствован из Немерле !!!!111расрасодинодин
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, novitk, Вы писали:
N>>В ANTLR можно делать все через actions. Хотя это и менее элегантно и декларативно, чем ваши "зависимые свойства". WH>Это было в Nemerle.Peg WH>https://github.com/rsdn/nemerle/blob/master/snippets/peg-parser/Json/Nemerle.Json/JsonParser.n WH>Сделать на этом можно очень не много. На практике ничего сложнее построения АСТ акшены не могут. WH>Ибо как только у тебя в языке появляются зависимости, которые нужно обрабатывать не в порядке парсинга то всё. Акшены не работают.
Строишь в акшинах pull-based data flow и вперед. Вы же так и делаете в вашем DSL?
Здравствуйте, Mamut, Вы писали:
M>Влад, ты этому сообщению поставил минус. Можешь объяснить, в чем novitk неправ?
N2 это раннее название для Nitra. Nemerle 2 будет сделан на Nitra.
В Скале нет очень многого что мы хотим сделать в Nitra и результаты чего будут доступны в Nemerle 2, а так же в расширяемом C# и в кучи других языков, которые можно поднять на Nitra.
Автор эти строк просто не понимает о чем он ведет речь.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Ikemefula, Вы писали:
I> Зайди в репу Немерле и ты по пальцам сосчитаешь эту кипящую массу. Когда есть реальная масса этузиастов и она реально кипит, то стастистика коммитов выглядит совершенно иначе. I>Следовательно в Немерле мы видим чтото другое, не массы и не кипение.
Дык, ты заходи в рапозиторий Nitra. Там сейчас куется будущее Nemerle и многого другого.
Сам язык давно стабилен и не требует расширений. Те недостатки, которые есть у текущей реализации устранить эволюционным путем. Ну, а для революционного пути делается Nitra.
I>Уже 10 лет подобных лозунгов.
10 лет лозунгов — это про Майкрософт. Причем сначала это лозунги "это не надо, это слишком сильная пушка", потом молчание, а потом "вы этого ждали всю жизнь".
Еще 10 лет трепачи разные бегают и злословят, вместо того чтобы помочь чем-то.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, novitk, Вы писали:
N>В ANTLR можно делать все через actions. Хотя это и менее элегантно и декларативно, чем ваши "зависимые свойства".
Это из серии — "У нас же есть ассемблер! Значит мы можем решать любые задачи.".
Если бы этих экшенов хватало, то никто бы ни стал городить каких-то Нитр, или даже автоматически генерировать дерево разбора (parse tree), как это сделали в ATNLR 4.0.
У этих твоих экшенов куча минусов:
1. Они гвоздями прибиты к синтаксису.
2. Они вычисляются в определенном порядке (порядке разбора парсером текста).
2. Они вычисляются ровно один раз.
Для современных языков это неприемлемо. В том же C# нужно многократно обходить AST, чтобы вычислить все значения и произвести все связывания.
Наши зависимые свойства позволяют описать всю типизацию любого ЯП. При этом поддерживается расширение языка вплоть до динамического (например, как в Nemerle, с помощью директивы using).
N>P.S. Док очень плохой.
Это ценная информация, но хотелось бы деталей. Пойми, мы в этом деле варимся и глаз замылен.
N>Сделай законченный маленький пример, как в моей ссылке.
Там описывается язык состоящий из переменных и их присвоений. Демонстрируется описание АСТ, маппинг дерева разбора на АСТ, связывание, и другая мелочевка.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, novitk, Вы писали:
N>Строишь в акшинах pull-based data flow и вперед.
Ну, да. Строишь набор ассемблерных инструкций и вперед. Делов то?
Как говорил мой отец — "Трепач находка для шпиёнов.".
Попробуй найти пример таких акшенов.
N>Вы же так и делаете в вашем DSL?
Нет. У нас своя вычислительная модель. Мы не строим полный граф зависимостей в памяти. Вместо этого мы вычисляем все при обходе дерева и мемомизируем результаты на нем. Для оптимизации во время компиляции строится локальный граф зависимостей и вычисления сортируются в соответствии с ним.
Короче, детали реализации не важны. Важно что это быстро и что пользователь пишет декларативный, очень высокоуровневый код не зависящий от порядка вычисления и деталей расположения узлов АСТ друг относительно друга.
В АНТЛР ничего подобного нет даже близко. Там вообще нет ничего связанного с типизацией.
Наш же язык не ограничен одними зависимыми свойствами. У нас есть и объеявление АСТ поддерживающее множественное наследование. И язык отображения (маппинга) данных с дерева разбора на АСТ.
В итоге ты описываешь язык на высокоуровневых ДСЛ-ях, а такие штуки как подсветка и навигация по символам, автодополнение при вводе и прочие IDE-фишки получаются автоматически.
Уж если сравнивать Нитру, то никак не АНТЛР-ом, а с Spoofax или (на худой конец) с Xtext (реализованным на баз того самого ANTLR).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>А нытье твое достало. Мне и без тебя сложно.
Мне, человеку со стороны, который только только зашел на форум про Немерле и только на эту ветку, уже так надоело занудство этого Mamut'а. Он твердит одно и то же, одно и то же. Почему бы его просто не забанить?
Здравствуйте, DarkEld3r, Вы писали:
DE>Обозначу свою позицию: на С#, да и вообще под .NET не пишу, так что Немерле мне "не подходит". Но почитать всегда было интересно, да и "взлёту" языка был бы рад, хотя бы потому, что нормальных макросов "в мейнстриме" очень хочется, а успех Немерле был бы движением в эту сторону.
Нитру мы делаем с прицелом на кроскомпиляцию да и на возможную в будущем переносимость.
Собственно тем кому не интересен дотнет может быть интрересно создание бэкэнда для Java или LLVM с последующим портированием на них Nitra и Nemerle.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>N2 это раннее название для Nitra. Nemerle 2 будет сделан на Nitra.
Возможно, хотя было бы логично называть N2 использовать для Nemerle 2,учитывая легаси с N1.
VD>В Скале нет очень многого что мы хотим сделать в Nitra и результаты чего будут доступны в Nemerle 2,
Я в курсе, что вы хотите более мощные макросы. Что еще?
Здравствуйте, VladD2, Вы писали:
N>>Строишь в акшинах pull-based data flow и вперед. VD>Ну, да. Строишь набор ассемблерных инструкций и вперед. Делов то?
Кто сказал про "руками"? Возьму что-нибудь такое https://github.com/akaihola/lusmu
И не надо пожалуйста кидаться, что это Питон и нет DSL. У меня такое есть для Скалы с DSL-ом и шлюхамиoтлаженное.
VD>Как говорил мой отец — "Трепач находка для шпиёнов.".
Градус хамства надо бы снизить, хотя кому я это говорю.
VD>Попробуй найти пример таких акшенов.
Это ортогональные вещи. Акшены это просто дверь в другие миры, всех примеров не привести. Одни делают двигатели, другие ставят его на вертолет или машину. Вы решили делать и то и другое, вот и скрестили все в комбинированный DSL. Я пока не вижу особой пользы, так как люблю мух отдельно от котлет, но я не делаю компиляторы с C#.
VD>В АНТЛР ничего подобного нет даже близко. Там вообще нет ничего связанного с типизацией.
Согласен, но он и не претендует.
VD>Наш же язык не ограничен одними зависимыми свойствами. У нас есть и объеявление АСТ поддерживающее множественное наследование. И язык отображения (маппинга) данных с дерева разбора на АСТ.
Я уже понял, что у вас куча ДСЛ-ов, но я не уверен, что хочу с ними разбираться.
VD>Уж если сравнивать Нитру, то никак не АНТЛР-ом, а с Spoofax или (на худой конец) с Xtext (реализованным на баз того самого ANTLR).
Я в курсе, но я не сравнивал Нитру с АНТЛР-ом. Я предлагал продвигать компоненту из Нитры, которая:
а) вроде бы закончена
б) нужна многим
в) по словам Wolfhaund-a "впереди планеты всей"
Здравствуйте, VladD2, Вы писали:
N>>P.S. Док очень плохой. VD>Это ценная информация, но хотелось бы деталей. Пойми, мы в этом деле варимся и глаз замылен.
Например возьми ваш expression parser и добавь в него какие-то вычисления используя ваши "зависимые свойства", например сколько в AST "плюсов" или еще чего.
VD>В качестве маленького примера можно посмотреть: VD>https://github.com/JetBrains/Nitra/tree/master/Grammars/NitraMappingSample
Пример должен быть маленьким и законченным, а у вас не ясно что надо описывать, а что идет из библиотеки (TableScope, etc).
Пример относительно маленький и законченый. Это мелкий язык с переменными и выражениями. Единственное что — эта реализация производит вычисление выражения во время компиляции (т.е. обработки АСТ), т.е. евляется мета-языком. Он для демонстрации на презентации и создан за час. Описал этот пример здесь