Nemerle & Nitra
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.01.17 00:09
Оценка: 12 (1)
#Имя: wiki.nemerle

Nemerle 2 & Cx#


Nemerle 2.x & Cx#

Nitra


[Nitra] Сборник материалов по Nitra

Languages powered by Nitra

Nitra Syntax — The syntax of .nitra files

Nitra: Backend

Nitra IDE plug-ins

[Nitra] Динамическое расширение синтаксиса

[Nitra] IDE plug-in

Создание нового проекта Nitra

Создание нового набора тестов для языка

Отладка связывания и визуализация
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 15.08.2017 22:50 VladD2 . Предыдущая версия . Еще …
Отредактировано 23.03.2017 2:40 VladD2 . Предыдущая версия .
Отредактировано 20.03.2017 13:58 VladD2 . Предыдущая версия .
Отредактировано 08.03.2017 0:14 VladD2 . Предыдущая версия .
Отредактировано 07.03.2017 12:54 VladD2 . Предыдущая версия .
Отредактировано 03.02.2017 15:44 VladD2 . Предыдущая версия .
Отредактировано 03.02.2017 15:43 VladD2 . Предыдущая версия .
Отредактировано 26.01.2017 11:35 VladD2 . Предыдущая версия .
Отредактировано 12.01.2017 0:58 VladD2 . Предыдущая версия .
Отредактировано 12.01.2017 0:57 VladD2 . Предыдущая версия .
Отредактировано 12.01.2017 0:55 VladD2 . Предыдущая версия .
Отредактировано 12.01.2017 0:54 VladD2 . Предыдущая версия .
Отредактировано 12.01.2017 0:13 VladD2 . Предыдущая версия .
Re: Nemerle & Nitra
От: Kolesiki  
Дата: 12.01.17 12:30
Оценка:
Влад, ты перезаписал мои изменения (см. версию в 4:00). Может, возьмёшь мою версию и доправишь?
Re[2]: Nemerle & Nitra
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.01.17 13:22
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Влад, ты перезаписал мои изменения (см. версию в 4:00). Может, возьмёшь мою версию и доправишь?


Не понял. О чем речь?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Nemerle & Nitra
От: Kolesiki  
Дата: 13.01.17 19:02
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Не понял. О чем речь?


Статья Nemerle 2 & Cx#:

Изменено 12.01.2017 4:01 VladD2.
Изменено 12.01.2017 4:00 Kolesiki.
Изменено 12.01.2017 3:49 VladD2.
Изменено 12.01.2017 3:03 VladD2.
Изменено 12.01.2017 2:13 VladD2.
Создано 12.01.2017 2:07 VladD2.

Вот эту версию ты перезаписал в 4:01
Re[4]: Nemerle & Nitra
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.01.17 09:48
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Статья Nemerle 2 & Cx#:


K>Изменено 12.01.2017 4:01 VladD2.

K>Изменено 12.01.2017 4:00 Kolesiki.

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

Ладно, сейчас дифну и внесу правки вручную.

Спасибо за помощь!
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Nemerle & Nitra
От: Kolesiki  
Дата: 14.01.17 10:58
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Да, жаль.


Кто ж знал, что два маньяка, в 4 утра(!! как гитлир) будут редактировать одно и то же.

VD>К сожалению у нас нет защиты от параллельного редактирования.


Да защиту не обязательно, хотя бы маркер "этот файл был взят на редактирование тем-то тогда-то".
Re: Nemerle & Nitra
От: Kolesiki  
Дата: 14.01.17 11:44
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>

Nemerle 2 & Cx#


Насчёт перевода на английский... даже не знаю, стóит ли. Из всего потока мыслей, наш "иностранный друг" поймёт разве что стадии компилляции (и это действительно нужный материал). Опять же, нужна чуть более удобная для восприятия версия, где по списку будет легко найти, что сделано/не сделано.
Думаю, вот этот раздел стадий компилляции стоит вынести в отдельную статью и расширить, сделав её как общую документацию к компиляторостроению и роли Нитры во всём этом. Даже пометить цветом, что за вас делает Нитра и как мало вам остаётся реализовать.
Re[6]: Nemerle & Nitra
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.01.17 13:57
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Да защиту не обязательно, хотя бы маркер "этот файл был взят на редактирование тем-то тогда-то".


Проблема в том, что нет такого понятия "взят на редактирование". Это всего лишь форма которая может быть закрыта без записи. Отследить факт закрытия окна не просто. Разве что слать через каждую секунду сообщение на сервер "я открыта".
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Nemerle & Nitra
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.01.17 13:59
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Кто ж знал, что два маньяка, в 4 утра(!! как гитлир) будут редактировать одно и то же.


Кстати, зря ты стал "е" на "ё" менять. Смысл это не менят, а вот куча правок на ровном месте появляется. В русском допустимо использовать "е" вместо "ё". Весь софт на это рассчитан. Даже поиск и проверка орфографии.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Nemerle & Nitra
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.01.17 14:07
Оценка:
Здравствуйте, Kolesiki, Вы писали:

Перевод я уже начал.

http://rsdn.org/wiki/wiki.nitra.dotnetlanguages.enu

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

K>Насчёт перевода на английский... даже не знаю, стóит ли. Из всего потока мыслей, наш "иностранный друг" поймёт разве что стадии компилляции (и это действительно нужный материал).


А чем же наши иностранные друзья хуже то? Тем более, что там есть прямые к ним отсылки. @sirinath там нагенерировал мыслей по поводу системы типво и вообще предложил впихнуть в язык все что в голову придет. Я именно ему попытался объяснить (целым разделом) почему это не надо делать на первых порах.

K>Опять же, нужна чуть более удобная для восприятия версия, где по списку будет легко найти, что сделано/не сделано.


Это уже надо в milestone-ах. Вот как это в Нитре выглядит.
https://github.com/rsdn/nitra/wiki/Milestone-2

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


Вынесем. Было бы что. Организовать текст проще чем его написать по английски.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Nemerle & Nitra
От: Kolesiki  
Дата: 14.01.17 16:05
Оценка:
По поводу статьи "Описание языка описания расширяемых парсеров «Nitra»":

Замечание глобальное: много деталей, за которыми не видно леса. Напоминает автогенерённую документацию по аннотациям методов. Если человеку вывалить все инструменты сразу, он просто офигеет и потеряется! Но если по очереди доставать инструменты для каждой задачи, всё будет легко и понятно.

Калькулятор. Самый ужасный, порочный и неправильный пример в области компиляторов — он даёт совсем другое представление о работе, нежели должно быть при работе с АСТ. Мне кажется, куда удобнее был бы простейший язык, типа:

a = 4 + 6 * 3 // переменные и две операции разного приоритета
? a + 1 // печать выражения


Для этого языка создаётся грамматика, АСТ, а затем генерируется код да на том же C#! Но главное, это именно тот процесс, который должен пройти каждый джедай компиляторов — грамматика, дерево разбора, АСТ, связывание имён, обход дерева, генерация кода. Минимальность языка гарантирует, что мы не потеряемся в дебрях, а "разнообразие" — что мы обязательно задействуем основные инструменты Нитры. Разумеется, нужно в каждом удобном случае объяснять, чем нам помогла Нитра, сделав работу за нас.

Да, и ни слова не увидел про ту бриллиантовую фичу, ради которой был потрачен целый год исследований — восстановление после ошибок. Его тоже неплохо бы описать: что мы имели ДО него, что имеем сейчас и как это здорово (лучше в применении к конкретному примеру на игрушечном языке).

После такого примера будет легче увидеть, что за всемогутер у нас в руках — просто перечисление фич не даст ощутить всю (по)мощь Нитры.
Отредактировано 14.01.2017 20:30 VladD2 . Предыдущая версия .
Re[7]: Nemerle & Nitra
От: Kolesiki  
Дата: 14.01.17 16:09
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Кстати, зря ты стал "е" на "ё" менять. Смысл это не менят, а вот куча правок на ровном месте появляется.


Тебя беспокоит количество затёртых байт? Для меня "ё" — полноценная буква алфавита, её проще ВСЕГДА писать, чем думать в каждом случае, не случится ли разночтения! Да и потом, я ж не заставляю — просто самому приятно читать полноценный текст.
Re[7]: Nemerle & Nitra
От: Kolesiki  
Дата: 14.01.17 16:13
Оценка:
Здравствуйте, VladD2, Вы писали:

K>>Да защиту не обязательно, хотя бы маркер "этот файл был взят на редактирование тем-то тогда-то".


VD>Проблема в том, что нет такого понятия "взят на редактирование". Это всего лишь форма которая может быть закрыта без записи.


Неважно. Главное — если текст вообще не трогали, видно, что я его могу спокойно взять на редакцию. Или если его взяли редактировать 2 дня назад — можно спокойно перезаписывать. Короче, с "иногда работающим" маркером намного лучше, чем вообще без него, согласен?
Re[3]: Nemerle & Nitra
От: Kolesiki  
Дата: 14.01.17 16:36
Оценка:
Здравствуйте, VladD2, Вы писали:

K>>Насчёт перевода на английский... даже не знаю, стóит ли. Из всего потока мыслей, наш "иностранный друг" поймёт разве что стадии компилляции (и это действительно нужный материал).


VD>А чем же наши иностранные друзья хуже то?


Тем, что они не знают всей кухни и не в курсе, что мы иногда любим растекаться мыслью по древу То есть в самом-то тексте ты всё правильно написал — есть понимание, что и почему. Но это я знаю тебя и твой проект. А для них это поделка "странных русских" и в её описании должно быть меньше тем для раздумий, тупо алгоритм: "есть Нитра, берёшь и пилишь грамматику!". К примеру, говоря о CCI: "Скорее всего, лучше заменить его на код из Roslyn" — зачем им это знать? (или давать повод для споров) Моё мнение — нужно вообще сторониться Рослин-кода и взять какой-нибудь Cecil (если его возможностей достаточно).
Т.е. на басурманский лучше переводить только те вещи, в которых мы сами уверены и которые будут заметно полезны. Вот стадии компиляции я прочёл с большим интересом, им тоже этот раздел понравится.


K>>Опять же, нужна чуть более удобная для восприятия версия, где по списку будет легко найти, что сделано/не сделано.

VD>Это уже надо в milestone-ах. Вот как это в Нитре выглядит.

Нет, речь не о том и не в такой форме. Мы говорим об "абстрактном" компиляторе, который вынужден проходить какие-то стадии и что-то делать. У тебя это расписано. Но для них (остального мира) мы должны объяснить наглядно, разжёвывая каждую стадию и поясняя, что за нас уже сделано самой Нитрой (или планируется). Milestone — это уже конкретные этапы конкретного продукта, кратко расписанные для удобочитаемости.

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


VD>Вынесем. Было бы что. Организовать текст проще чем его написать по английски.


Ну вот, список стадий уже есть! Ты даже написал про уже сделанные модули, но они нужны в самом списке, а не подстрочником.


Вопрос не в тему: про объединении C+#x$% и Nemerle-2 ты упомянул, что "АСТ можно вынести в общий модуль" — это как и зачем?? АСТ — это же структура в памяти, причём у каждого языка — своя (несмотря на подавляющую схожесть). Рантаймовую структуру вынести в модуль??
Re[4]: Nemerle & Nitra
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.01.17 22:36
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>К примеру, говоря о CCI: "Скорее всего, лучше заменить его на код из Roslyn" — зачем им это знать?


K>Затем, что это одна из актуальных задач. Сейчас бэкэнд на CCI, но надо попробовать сделать бэкэнд основанный на Roslyn. Это должно быть не очень сложно, так как в Roslyn тупо откопипастили CCI.


K>Моё мнение — нужно вообще сторониться Рослин-кода и взять какой-нибудь Cecil (если его возможностей достаточно).


Это потому что ты незнаком с некоторыми деталями.

Дело в том, что МС расплодил кучу платформ и только Roslyn-овский компилятор позволяет поддерживать их все. Даже у CCI есть проблемы. А у Cecil их еще больше, плюс откровенные баги, которые могут возрождаться (отказываться после исправления).

Мы спроектировали все так, что в принципе можно сделать несколько бэкэндов. Наличие Roslyn-вского бэкэнда никак не мешает наличию CCI-го и Cecil-вского. Да хоть LLVM-го или Java-ного. Но Roslyn-вский дает поддержку определенных платформ, плюс в из кода Рослина можн узнать некоторые решения при генерации кода (которые не тривильны), так что изучение Roslyn-а по любому полезно. Плюс одно может быть кому-то интересно для самообразования (повышения скилов).

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


Ну, может у меня на моей колокольни глаз замылен и я вижу все не так как следует, но по-моему, я описал как раз те вопросы которые должны возникнуть у потенциальных разработчиков. Я, как раз, отталкивался от вопросов которые мне уже задавали (в том числе на https://gitter.im/rsdn/nemerle).

K>Нет, речь не о том и не в такой форме. Мы говорим об "абстрактном" компиляторе, который вынужден проходить какие-то стадии и что-то делать. У тебя это расписано. Но для них (остального мира) мы должны объяснить наглядно, разжёвывая каждую стадию и поясняя, что за нас уже сделано самой Нитрой (или планируется). Milestone — это уже конкретные этапы конкретного продукта, кратко расписанные для удобочитаемости.


Честно говоря все равно не понял в чем разница. Milestone — это и есть разжевывание.

K>Кратко, вот в том списке стадий компиляции нужно пометить жирным, что Нитра должна делать за нас (всё, и сделанное, и планируемое),


Нитра — это инструмент. Она за нас ничего не делает. Она предоставляет средства реализации. Ну, как C# или C++. Чтобы понять, что она предоставляет лучше прочесть статьи по ней. К сожалению они тоже все на русском и ты сам тут рядом предъявлял к ним претензии. Возможно поможет чтение Реализация языка программирования Mini C на Nitra
Автор: VladD2
Дата: 12.01.17
.

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


Говорить о сделано / не сделано можно только в рамках проектов. Вот в проекте Cx# (он же CSharp.Grammar) коне что сделано. И я описал что. Можно по подробнее расписать этот и другие проекты. Но боюсь, что здесь детализация тоже же будет размывать картину.

K>Вот тогда один взгляд на список сразу даст понимание состояния проекта. Да, альтернативы туда тоже нужно внести, может даже блок-схемой: разные бэкенды, разные платформы и т.п.


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

Я уже несколько раз закидывал идею начала работы над языками, но все хлапали глазки и даже не вступали в дискуссию. А когда дискуссия спонтанно завязалась на https://gitter.im/rsdn/nemerle, быстро выяснилось, что она перешла в обсуждение где найти по больше фич, которые желательно впихнуть в язык. Вот только я и сам знаю что можно впихнуть я язык. А проблема не в этом, а в том, чтобы начать этот язык равивать.

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

За все время откликнулся только один человек Василий Кириченко. Он даже сделал тот самый пример Mini-C на котором я убедился, что человек со стороны вполне может освоить Нитру. Но потом он тихо исчез. Было еще 2-3 человека которые дальше разговоров не пошли.

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

K>Ну вот, список стадий уже есть! Ты даже написал про уже сделанные модули, но они нужны в самом списке, а не подстрочником.


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

K>Вопрос не в тему: про объединении C+#x$% и Nemerle-2 ты упомянул, что "АСТ можно вынести в общий модуль" — это как и зачем??


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

K>АСТ — это же структура в памяти,


Ну и что что в памяти? У тебя объект — это тоже "структуры в памяти", но чтобы они были тебе же нужно описать классы? Вот и в АСТ нужно описать типы АСТ на освновании которых будут уже структуры в памяти создаваться (в рантайме). Все правила типизации описываются на этих структурах (т.е. на АСТ). И об этом я тоже сказал.

K>причём у каждого языка — своя (несмотря на подавляющую схожесть).


Опять таки и об этом я скзал. 80% таких структур будет одинаковыми (идентичными). Нет смысл описывать их для каждого языка. Уникальные вещи воде паттерн-матчинга — надо. Но кроме них есть еще куча общих вещей. На то он и AST. Первая буква в слове "AST" помнишь, что означает? Это — Abstract. На то он и абстракный, чтобы не зависит от конкретного языка.

K>Рантаймовую структуру вынести в модуль??


У тебя явно путанница между стадиями. АСТ — это рантайм структура компилятора, а не самого языка. Вот текст на языке разбирается и переводится (в памяти компилятора) в АСТ. На АСТ-е прозводятся вычисления и по аннотированному АСТ просзводится уже генерация кода (это упрощенно).

Я описал, что есть проект DotNetLang в котором и собран общий для всех языков АСТ. Уникальный АСТ будет в проектах конкретных языков. Но его будет не много.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 14.01.2017 22:44 VladD2 . Предыдущая версия .
Re[2]: Nemerle & Nitra
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.01.17 23:57
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>По поводу статьи "Описание языка описания расширяемых парсеров «Nitra»":


K>Замечание глобальное: много деталей, за которыми не видно леса. Напоминает автогенерённую документацию по аннотациям методов. Если человеку вывалить все инструменты сразу, он просто офигеет и потеряется! Но если по очереди доставать инструменты для каждой задачи, всё будет легко и понятно.


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

K>Калькулятор. Самый ужасный, порочный и неправильный пример в области компиляторов — он даёт совсем другое представление о работе, нежели должно быть при работе с АСТ. Мне кажется, куда удобнее был бы простейший язык, типа:


K>
K>a = 4 + 6 * 3 // переменные и две операции разного приоритета
K>? a + 1 // печать выражения
K>


Такой пример есть — [Nitra] Пример простого языка вычисляющего выражения, но и его забраковал, в свое время.

Калькулятор — это классический пример. Его сделали еще во времена когда у нас не поддерживалась типизация (АСТ, символы, области видимости, связывание). Считай, что его сделали по традиции. К тому же он демонстрирует, как работать с деревом разбора без типизации (в режиме простого парсера).

K>Да, и ни слова не увидел про ту бриллиантовую фичу, ради которой был потрачен целый год исследований — восстановление после ошибок. Его тоже неплохо бы описать: что мы имели ДО него, что имеем сейчас и как это здорово (лучше в применении к конкретному примеру на игрушечном языке).


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

Восстановление работает. Для жизни хватает. Не без проблем, но все же. В крайних случаях можно спец-правила писать.

K>После такого примера будет легче увидеть, что за всемогутер у нас в руках — просто перечисление фич не даст ощутить всю (по)мощь Нитры.


Я тут уже приводил гифки анимированные. На них видно как работает редактирвоание и восстановление. Скоро один наш общий знакомый должен выкатить первый коммерческий язык на Nitra. У него уже есть большие видео с процессом редактирования кода на его языке.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Nemerle & Nitra
От: Kolesiki  
Дата: 15.01.17 02:29
Оценка:
Здравствуйте, VladD2, Вы писали:

Про букву "Ё":

http://cdn.fishki.net/upload/post/2017/01/13/2190042/7328f3d915a151170780bd884a18e658.jpg

Если бы было написано "съё", неоднозначностей уже бы не было.


K>>Моё мнение — нужно вообще сторониться Рослин-кода и взять какой-нибудь Cecil (если его возможностей достаточно).


VD>Дело в том, что МС расплодил кучу платформ и только Roslyn-овский компилятор позволяет поддерживать их все.


эээ.... "кучу" — это ".NET windows only" и ".NET Core"? Ладно, пусть даже две. А они решили ту самую проблему Немерли, когда код выдавался только под платформу, где запускался компилятор?

VD> Даже у CCI есть проблемы. А у Cecil их еще больше


Хм... ладно, это не сильно важно, но API Cecil'а мне понравился больше. Изделия от MS — они мало того, что сильно упали в качестве со временем, так ещё несут на себе крест совместимости (старый код им, видители, жалко выкидывать). Я б на них не поставил.


VD> плюс в из кода Рослина можн узнать некоторые решения при генерации кода (которые не тривильны)


Влад, вы же сделали целый компилятор — неужели у MS опять остались "секреты правильного кода"?? Вроде ж и ECMA стандарт даже есть.

VD> так что изучение Roslyn-а по любому полезно. Плюс одно может быть кому-то интересно для самообразования (повышения скилов).


"Не слушайте советы по похудению от людей, толще вас". Я верю, что там могут быть зарыты жемчужины программизма, но ковыряться во всей этой куче от людей, не способных написать нормальную IDE — увольте. Да и язык(C#), как оказалось, пилят далеко не лучшие умы нашей галактики.
12 лет эти "специалисты" зрели до multiple return values, default parameter value, всё так же сидят на протухших итераторах (диапазоны рулят), а хорошей GUI'ни нет до сих пор. Можно выдвигать тысячи оправданий во всхлиппертоблогах, но настоящий инженер никогда не выпустит муйню — совесть не позволит.


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


Т.е. смысл статьи — "побежали писать Немерлю"?? Не, Влад, там было что угодно, но только не это. Ты даёшь инфу, но не даёшь чётких указаний, задач. Есть только вкрапления "вот это не сделано", но чтобы за это взяться, нужны более подробные пояснения.

VD>Честно говоря все равно не понял в чем разница. Milestone — это и есть разжевывание.


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


K>>Кратко, вот в том списке стадий компиляции нужно пометить жирным, что Нитра должна делать за нас (всё, и сделанное, и планируемое),

VD>Нитра — это инструмент. Она за нас ничего не делает. Она предоставляет средства реализации. Ну, как C# или C++. Чтобы понять, что она предоставляет лучше прочесть статьи по ней.

Ты говоришь формально правильный, но бесполезный текст. Нитра — это прежде всего недоделанный проект. Что в нём сделано — ты уже отметил, но в виде беседы за пивом: "В них сделано не всё, так что там есть над чем поработать" — вот так никто помогать не сядет.
Прямо в каждой стадии, которую ты описал, нужно дать чёткий список: DONE/TODO. Причём если задача крупная, разбивать до осознаваемых проблем. Это как большой план действий, состоящий из множества мелких задач.

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


Ровно наоборот — хорошая "общая картина" + внятные подробности в каждом пункте — прекрасная иллюстрация для новичков.


VD>Реализация языка программирования Mini C на Nitra


Вот сейчас только кончил читать. Кратко — это ужас. Ощущаю себя школьником, который пришёл на 1 курс, а ему за одну лекцию рассказали о кварках, позитронах и тут же непринуждённо набросали чертёж коллайдера. ЭТО НЕ РАБОТАЕТ.
МиниС — это всё равно БОЛЬШОЙ язык для того, чтобы въехать в Нитру. Но если с грамматикой (порождающей Parse Tree) я как-то более-менее разобрался, то мэппинг и связывание пролетели коллайдерным шумом мимо мозга. Вот сейчас я примерно такой:

https://pp.vk.me/c604316/v604316071/16fbd/qQ-I_Qey5IA.jpg


Влад, по-моему сейчас слово "Нитро-всемогутер" начинает приобретать отрицательный смысл. Это та же самая ошибка, на которую напоролись космические архитекторы WPF'а — излишнее обобщение идей. Декларативность — это клёво, но только там, где есть статика, неизменность, никаких кастомизаций или "иногда другого поведения". Вот тот же мэпинг я бы тупо написал в коде — это куда очевиднее, чем учить крючкотворства ещё одного DSL'я. Он хоть и DSL, но он не особо упрощает проблему! Лучше для юзерского кода написать хелперы, упрощающие жизнь.
Другими словами, _я_бы_ пересмотрел концепцию Нитры и там, где DSL превращается в кашу всевозможных параметров и уточнений, сделал бы юзерский код — вот там пусть они и изгаляются.


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


Твоё видение порождает во мне такую картину: стоит Влад, перед ним куча брёвен и нечто, напоминающее взорванный блиндаж (будущий дом). На вопросы о размерах, чертежах, инструментах, Влад бросается к первому бревну и начинает куда-то вставлять, попутно призывая хватать остальные брёвна и тоже пристраивать. Это хуже вавилонской башни!
Влад, всё как раз наоборот — пока люди не поймут всей картины и чёткого понимания задачи, они не смогут ни за что взяться — это как бы очевидно даже кэпу.
Сначала нужно въехать в сам проект, в компиляторные стадии, модули, затем посмотреть на свои силёнки и меру интереса к конкретным задачам, а потом уже, осознав сложность конкретной задачи, браться за неё.


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


Сложность. Ты можешь быть гением, построившим прямо в мозге новую вселенную, но ты должен понимать — не только лишь все въедут в твои теории (которые, к слову, надо ещё уметь объяснить). Но даже имея ясное видение, ты не создашь ничего практического, если это будет чертовски сложно. Всё гениальное — просто. В Нитре я этой простоты не вижу. Подозреваю, другие — тоже. Плюс сюда сложность самой задачи как таковой.
Если Нитру можно упростить — упрощай, прялка с вёслами не взлетит.


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


Ну как видишь, в этот форум заходят люди! Значит сама идея им нравится. Но Нитра проста только на первых стадиях (да и там слегка наворочено), а дальнейшие описания просто убивают мозг.
По мне, так вообще "конструктор языков" — идея для кафедр и скучающих профессоров. Язык (если он гибкий и мощный) — он вообще ОДИН нужен.
Вот им Немерля и была. Но у Немерли был говённый каркас, что убивало перспективы развития. ВОТ ЕГО бы надо было переписать, отполировать синтаксис, добавить недостающие точки расширения и вуаля — ваяй себе макросы, да синтаксисы! Неужели что-то нужно помимо одного мощного Немерля??


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


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


VD> Но, к сожалнеию нет даже простого фитбэка.


Уже дал — сложность. Идя тропой автоматизации всего и вся, это неизбежность — ты просто вынужден делать сложный DSL, чтобы учесть все аспекты "реальных" языков (тут ещё аж с Питоном лезли). Да и честно, много кому нужны "конструкторы"? Грамматики, мэппинги — это скучно, люди хотят простые макросы — чтобы две строчки и бац — у тебя новый синтаксис!


K>>Ну вот, список стадий уже есть! Ты даже написал про уже сделанные модули, но они нужны в самом списке, а не подстрочником.


VD>Я не понимаю, что такое подстрочник. Включать их в сам список — это значит еще больше его раздувать.


Подстрочник — это сноски у книг. Зачем лазить в отдельный раздел, когда нужно прямо в списке? Да, раздувать, что с того? Жалко пикселей?
Этот список мне тем и понравился, что он хорошо обозревает работу компилера. Туда ещё б деталей и список работ — тогда это был бы удобный чуть ли не "учебник". Жалко места — сунь задачи под схлопывающуюся область.


K>>Вопрос не в тему: про объединении C+#x$% и Nemerle-2 ты упомянул, что "АСТ можно вынести в общий модуль" — это как и зачем??


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


Я ж не Ломоносов — прочёл и всё понял! Да и судя по тому, что я понял, в модуль выносится не АСТ, а АСТ-классы! Точнее слова — лучше тебя понимают.

VD> На то он и абстракный, чтобы не зависит от конкретного языка.


Согласен, круто. Но опять см. замечание про количество языков. Мне бы и одного Немерля хватило бы до конца жизни. А Цешарп — тот пускай мелкософт пилит, всё равно никакого смысла бежать впереди них нет — они что запланировали, то и пилят (вместе с зарплатой ). Твои/наши революции им нафик не нужны — у них "интыпрайз", совместимость, костыли архитектуры... задолбали 12 лет тошнить по фиче в год.

Ну, я высказался, ты сам думай. Вокруг полно неглупых людей, но если даже им что-то мешает, пора в консерватории что-то менять.
Re[5]: Nemerle & Nitra
От: ionoy Эстония www.ammyui.com
Дата: 15.01.17 12:02
Оценка: +1
Здравствуйте, VladD2, Вы писали:

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


VD>Я уже несколько раз закидывал идею начала работы над языками, но все хлапали глазки и даже не вступали в дискуссию. А когда дискуссия спонтанно завязалась на https://gitter.im/rsdn/nemerle, быстро выяснилось, что она перешла в обсуждение где найти по больше фич, которые желательно впихнуть в язык. Вот только я и сам знаю что можно впихнуть я язык. А проблема не в этом, а в том, чтобы начать этот язык равивать.


Тут такое дело. Ты фактически говоришь: "Пацаны помогите мне коллайдер построить. Сначала сделаем ускоритель, потом ловушку, ну ещё кабинка для сторожа нужна."
А надо говорить так: "Пацаны, мне электрощиток надо установить в 7 комплексе, параметры такие-то." Глядишь кто-нибудь и отзовётся.

Люди обычно не хотят брать на себя большую ответственность. Может стоит самому начать разработку, попутно составляя список конкретных небольших заданий с краткой инструкцией как к ним подступиться.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Отредактировано 15.01.2017 12:02 ionoy . Предыдущая версия .
Re[3]: Nemerle & Nitra
От: Kolesiki  
Дата: 15.01.17 15:42
Оценка:
Здравствуйте, VladD2, Вы писали:

K>>Калькулятор. Самый ужасный, порочный и неправильный пример в области компиляторов


VD>Калькулятор — это классический пример.


Классический, но одинаково бестолковый в применении конкретно к компиляторам. Разбор выражений — да. Компиляторы — НЕТ! Через пример человек обязан прощупать узлы АСТ, генерацию кода. В калькуляторе ничего этого нет — тупо замена АСТ-узлов вычисляющими функциями. Это совсем не то, что должно быть в реальном проекте.


VD>А что тут рассказывать то? Без восстановления вся Nitra на фиг не нужна.


ггг Ну вот, я и спросил — какой именно профит даёт "восстановление в Нитре"? И что-то мне подсказывает, грамматика тоже должна быть слегка прогнута под "восстановление"?...


VD>Восстановление работает. Для жизни хватает.


Влад, ты не решай сгоряча, просто у меня тут крамольная мысль: Взять Нитру и использовать от неё только парсер (это, я так понял, улучшенный PEG?). Пишем на парсере Немерлю-2, попутно устраняя косяки и правильно реализуя расширение грамматики. Куча легаси кода никуда не пропадёт, просто придётся слегка обновить. Может даже натянуть синтаксис чуть ближе к C#. А далее пусть энтузазисты пилят свои расширения поверх удобного, компактного ядра!

Один конкретный язык пилить куда проще "языкового всемогутера". Тем более, что Немерля и является своеобразным конструктором — ты можешь вводить новый синтаксис! А классы — они везде классы.
Такой более приземлённый проект имеет куда большие шансы на завершение. Если расширить синтаксис может любой похапэшник, то возиться с целым конструктором компиляторов могут считанные единицы. Да и откровенно, какой коммерческой фирме нужен "лепитель языков"? Вот, индусофт — и те тянут ВАСИК чисто из маразма одного из боссов, единственный их полноценный язык — C#. А "многоязыковая платформа .NET" никому в пень не упёрлась — пара маргиналов струячат на F#, вот и вся "многоязыковость". Другими словами, "конструктор" не продашь, а вот язык — запросто!
А если к нему дописать IDE, написанную на нём же (без легаси-*овна от мелкософта), то вообще будет универсальный инструмент! (многие без IDE просто не будут даже смотреть на язык)

Иногда в долгой дороге нужно не упорство, а смелость признаться, что идёшь не туда и вовремя повернуть.
Re[6]: Nemerle & Nitra
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.01.17 21:14
Оценка:
Здравствуйте, ionoy, Вы писали:

I>Тут такое дело. Ты фактически говоришь: "Пацаны помогите мне коллайдер построить. Сначала сделаем ускоритель, потом ловушку, ну ещё кабинка для сторожа нужна."

I>А надо говорить так: "Пацаны, мне электрощиток надо установить в 7 комплексе, параметры такие-то." Глядишь кто-нибудь и отзовётся.

Тут хоть мытьем, хоть катаньем, все ничего не делается.

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

Ты на своем опыте понимаешь, что любые вопросы можно было решить обращаясь ко мне.

Был еще Кириченко. Он даже сваял Мини С. Но потом тоже пропал.

В общем, работа сложная. Это не просто побалываться. Тут надо разбираться. Тратить много времени.

Вот ты бы или Хардейс смогли бы внести свой вклад. Но вам в лом. У вас свои задачи/"игрушки" есть. Я как бы даже могу вас понять, но мне то от этого не легче.

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

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


Да ни вопрос. Был бы хоть кто-то вызвавшийся помогать. Задачку любой сложности придумаем за 5 минут.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.