Re[9]: Недостатки макросистемы Nemerle
От: hi_octane Беларусь  
Дата: 02.10.13 20:25
Оценка:
J>Телепатия промазала, так что жду рекомендаций с нетерпением

Телепатия промазала потому что информации мало Среда разработки тоже своя? Какие цели? LLVM/.NET/JVM/C/аль ещё чего? В какой срок календарный и в человеко-месяцах уложиться хотите? Будут ли на этом языке гиганские проекты (т.е. критично ли время компиляции) или это скрипт который максимум 1-2 странички откомпилировать должен? Нужен ли отладчик?

Самая базовая рекомендации — прочитать статьи по N2. Прикинуть, если срок выхода своего языка примерно с календарный год — то наверное проще либо дождаться рабочей связки Nitra-N2, либо попытаться выйти на b2b с Jetbrains и предложить им доплату за ускоренную реализацию того что именно вам нужно (т.е. чтоб за ваш счёт зондер команду доукомплектовали).
Re[3]: Недостатки макросистемы Nemerle
От: CodingUnit Россия  
Дата: 02.10.13 20:58
Оценка: +1 :)
Здравствуйте, jazzer, Вы писали:

J>Меня интересует система в целом, не текущие баги, которые можно исправить без изменения макросистемы, ее синтаксиса и т.п.

J>Если в двух словах — можно ли считать макросистему Немерле, как она описана в статьях/спецификациях, совершенной? Или с тех пор нашлись фатальные недостатки, которые можно пофиксить, только изменив саму систему? (при этом syntax не интересует (там можно не одну сотню копий сломать), но интересует все остальное).

Вообще странный вопрос изначально, я так понимаю вы новичок в Немерле, а к языку в данном случае надо подходить не что в нем плохого, а что в нем хорошего и работает и чем он лучше остальных. Вы задаете вопрос про макросистему, совершенна ли она, совершенного нет ничего в этом мире, но ее можно наверное назвать вполне достаточной и полноценной средой метапрограммирования, сравнить просто не с чем, поэтому какие то мелкие недостатки, недоработки, вполне обходятся и 95% случаев макросистемы достаточно для реализации любой задачи на этапе компиляции, которая теоритически реализуема в контексте понятия трансформации на этапе компиляции.
Re[3]: Недостатки макросистемы Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.10.13 12:00
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Это где-то обсуждалось уже?


Периодически темы появляются.

J>Т.е. все остальное, кроме расширенного синтаксиса, хорошо и устраивает?


Не, конечно. Но с чего-то надо начинать.

J>Это чисто технические ограничения текущей реализации? Или принципиальные ограничения самой макросистемы, как она в данный момент сформулирована?


Это просто баги и недоработки.

Из архитектурных проблем я бы выделил только то, что макросы оперируют нетипизированным АСТ, и получение информации о типах (внутри макроса) превращается в довольно сложные приседания. Это поднимает порог вхождения.

Ну, ограничения парсера и то что он вручную написан, я так понял, тебе не интересны. Да и сказал я о них.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Недостатки макросистемы Nemerle
От: Аноним  
Дата: 03.10.13 12:15
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Из архитектурных проблем я бы выделил только то, что макросы оперируют нетипизированным АСТ, и получение информации о типах (внутри макроса) превращается в довольно сложные приседания. Это поднимает порог вхождения.


Т.е. Н2 всегда будет оперировать только типизированным АСТ? или в случае если требуеться тип переменной будет приостанавливаться макрос и развертываться другие макросы того же уровня вложенности?
Re[5]: Недостатки макросистемы Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.10.13 13:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Т.е. Н2 всегда будет оперировать только типизированным АСТ?


Скорее всего будет возможность трансформировать АСТ без типизации, но если для преобразования нужна типизация, то она должна будет производиться только после окончания типизации.

В первом случае никакой информации о типах не будет вообще. И пути получить ее тоже. Во втором она будет в полном объеме и сразу.

Многие финты ушами которые делаются макросами немерла можно будет делать из DSL-я типизации, а не в коде преобразования.

Мы попросту не будет требовать от пользователя преобразования кода перед типизацией. Задача пользователя:
1. Придумать синтаксис.
2. Описать как синтаксис отображается на символы (которыми могут не иметь ничего общего с типами языков программирования общего назначения).
3. Описать ограничения (констрэйны) между символами в рамках синтаксических конструкций.
4. Написать код трансформации из символов в требуемый формат. При этом исполнимый формат вроде дотнетных сборок будет всего лишь одним из возможных форматов.

А>или в случае если требуеться тип переменной будет приостанавливаться макрос и развертываться другие макросы того же уровня вложенности?


Что за переменной? Найтра на этом уровне будет оперировать символами.

Попробую пояснить это на примере самой Найтры.

В основе найтры лежит язык описывающий парсеры. Он оперирует такими понятиями как "синтаксический модуль" и "правило". Для них описываются и создаются соотвесчтвюущие иерархии символов.

Мы описываем синтаксис языка Найтра, символы языка Найтра, и отображение из синтаксиса в символы. Так же мы описывает проверку корректности ссылок и т.п. (что называется — типизируем).

Далее мы имеем момент когда все Найтра-файлы из проекта спарсены, отображены на символы (т.е. созданы все необходимые символы, хрянящие всю информацию о грамматиках и т.п.) и проверена корректность этих символов. Вот теперь мы можем преобразовать символы в исполняемый код парсеров (т.е. в дотнет сборки).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Недостатки макросистемы Nemerle
От: Аноним  
Дата: 05.10.13 10:17
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>В основе найтры лежит язык описывающий парсеры. Он оперирует такими понятиями как "синтаксический модуль" и "правило". Для них описываются и создаются соотвесчтвюущие иерархии символов.


VD>Мы описываем синтаксис языка Найтра, символы языка Найтра, и отображение из синтаксиса в символы. Так же мы описывает проверку корректности ссылок и т.п. (что называется — типизируем).


VD>Далее мы имеем момент когда все Найтра-файлы из проекта спарсены, отображены на символы (т.е. созданы все необходимые символы, хрянящие всю информацию о грамматиках и т.п.) и проверена корректность этих символов. Вот теперь мы можем преобразовать символы в исполняемый код парсеров (т.е. в дотнет сборки).



рефал что ли?

макросы будут разных уровней или просто будет макрос?
Re[7]: Недостатки макросистемы Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.10.13 13:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А>рефал что ли?


Nitra

А>макросы будут разных уровней или просто будет макрос?


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

На сегодня Nitra использует сама себя для парсинга и типизации. Генерация же кода осуществляется средствами макросов (и не только) Немерла. В дальнейшем мы просто заменим генерацию кода на аналогичные механизмы Nitra (в основном речь о квази-цитировании). Немерл же будет воспроизведен на Nitra. В общем, полный бутсрапинг .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Недостатки макросистемы Nemerle
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 13.10.13 10:50
Оценка:
Здравствуйте, hi_octane, Вы писали:

J>>Спасибо! А можно немножко подробнее (ссылки на примеры тоже приветствуются)? Я ж не настоящий сварщик

_>Ну вот например добавление IDisposable
Автор: VladD2
Дата: 26.08.11
из-за стадий рассыпано на два макроса, и с первого раза такое новичку написать такое сложно. Много информации можно получить поискав по "BeforeInheritance" с ником автора VladD2 (он обычно подробно по стадиям рассказывает).


Из за таких проблем есть большой смысл начать новый язык с новой макросистемой . Добавление IDisposable и многих других похожих вещей нужно сделать максимально простым, что бы даже новичок в метапрограммировании мог самостоятельно освоить без какой либо помощи. Т.е. макросистема должна быть заточена под типичные кейсы изначально, не так как в Немерле: "Макры мы написали, щас придумаем, как залудить типичные кейсы". То есть, телега должна быть позади лошади
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.