Re[5]: Nemerle & Nitra
От: Kolesiki  
Дата: 15.01.17 02:29
Оценка:
Здравствуйте, VladD2, Вы писали:

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



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


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) я как-то более-менее разобрался, то мэппинг и связывание пролетели коллайдерным шумом мимо мозга. Вот сейчас я примерно такой:




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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

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


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

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