Сообщение Re: Nemerle & Nitra от 14.01.2017 16:05
Изменено 14.01.2017 20:30 VladD2
Re: Nemerle & Nitra
По поводу статьи "Описание языка описания расширяемых парсеров «Nitra»":
Замечание глобальное: много деталей, за которыми не видно леса. Напоминает автогенерённую документацию по аннотациям методов. Если человеку вывалить все инструменты сразу, он просто офигеет и потеряется! Но если по очереди доставать инструменты для каждой задачи, всё будет легко и понятно.
Калькулятор. Самый ужасный, порочный и неправильный пример в области компиляторов — он даёт совсем другое представление о работе, нежели должно быть при работе с АСТ. Мне кажется, куда удобнее был бы простейший язык, типа:
[code]
a = 4 + 6 * 3 // переменные и две операции разного приоритета
? a + 1 // печать выражения
[code]
Для этого языка создаётся грамматика, АСТ, а затем генерируется код да на том же C#! Но главное, это именно тот процесс, который должен пройти каждый джедай компиляторов — грамматика, дерево разбора, АСТ, связывание имён, обход дерева, генерация кода. Минимальность языка гарантирует, что мы не потеряемся в дебрях, а "разнообразие" — что мы обязательно задействуем основные инструменты Нитры. Разумеется, нужно в каждом удобном случае объяснять, чем нам помогла Нитра, сделав работу за нас.
Да, и ни слова не увидел про ту бриллиантовую фичу, ради которой был потрачен целый год исследований — восстановление после ошибок. Его тоже неплохо бы описать: что мы имели ДО него, что имеем сейчас и как это здорово (лучше в применении к конкретному примеру на игрушечном языке).
После такого примера будет легче увидеть, что за всемогутер у нас в руках — просто перечисление фич не даст ощутить всю (по)мощь Нитры.
Замечание глобальное: много деталей, за которыми не видно леса. Напоминает автогенерённую документацию по аннотациям методов. Если человеку вывалить все инструменты сразу, он просто офигеет и потеряется! Но если по очереди доставать инструменты для каждой задачи, всё будет легко и понятно.
Калькулятор. Самый ужасный, порочный и неправильный пример в области компиляторов — он даёт совсем другое представление о работе, нежели должно быть при работе с АСТ. Мне кажется, куда удобнее был бы простейший язык, типа:
[code]
a = 4 + 6 * 3 // переменные и две операции разного приоритета
? a + 1 // печать выражения
[code]
Для этого языка создаётся грамматика, АСТ, а затем генерируется код да на том же C#! Но главное, это именно тот процесс, который должен пройти каждый джедай компиляторов — грамматика, дерево разбора, АСТ, связывание имён, обход дерева, генерация кода. Минимальность языка гарантирует, что мы не потеряемся в дебрях, а "разнообразие" — что мы обязательно задействуем основные инструменты Нитры. Разумеется, нужно в каждом удобном случае объяснять, чем нам помогла Нитра, сделав работу за нас.
Да, и ни слова не увидел про ту бриллиантовую фичу, ради которой был потрачен целый год исследований — восстановление после ошибок. Его тоже неплохо бы описать: что мы имели ДО него, что имеем сейчас и как это здорово (лучше в применении к конкретному примеру на игрушечном языке).
После такого примера будет легче увидеть, что за всемогутер у нас в руках — просто перечисление фич не даст ощутить всю (по)мощь Нитры.
Re: Nemerle & Nitra
По поводу статьи "Описание языка описания расширяемых парсеров «Nitra»":
Замечание глобальное: много деталей, за которыми не видно леса. Напоминает автогенерённую документацию по аннотациям методов. Если человеку вывалить все инструменты сразу, он просто офигеет и потеряется! Но если по очереди доставать инструменты для каждой задачи, всё будет легко и понятно.
Калькулятор. Самый ужасный, порочный и неправильный пример в области компиляторов — он даёт совсем другое представление о работе, нежели должно быть при работе с АСТ. Мне кажется, куда удобнее был бы простейший язык, типа:
Для этого языка создаётся грамматика, АСТ, а затем генерируется код да на том же C#! Но главное, это именно тот процесс, который должен пройти каждый джедай компиляторов — грамматика, дерево разбора, АСТ, связывание имён, обход дерева, генерация кода. Минимальность языка гарантирует, что мы не потеряемся в дебрях, а "разнообразие" — что мы обязательно задействуем основные инструменты Нитры. Разумеется, нужно в каждом удобном случае объяснять, чем нам помогла Нитра, сделав работу за нас.
Да, и ни слова не увидел про ту бриллиантовую фичу, ради которой был потрачен целый год исследований — восстановление после ошибок. Его тоже неплохо бы описать: что мы имели ДО него, что имеем сейчас и как это здорово (лучше в применении к конкретному примеру на игрушечном языке).
После такого примера будет легче увидеть, что за всемогутер у нас в руках — просто перечисление фич не даст ощутить всю (по)мощь Нитры.
Замечание глобальное: много деталей, за которыми не видно леса. Напоминает автогенерённую документацию по аннотациям методов. Если человеку вывалить все инструменты сразу, он просто офигеет и потеряется! Но если по очереди доставать инструменты для каждой задачи, всё будет легко и понятно.
Калькулятор. Самый ужасный, порочный и неправильный пример в области компиляторов — он даёт совсем другое представление о работе, нежели должно быть при работе с АСТ. Мне кажется, куда удобнее был бы простейший язык, типа:
a = 4 + 6 * 3 // переменные и две операции разного приоритета
? a + 1 // печать выражения
Для этого языка создаётся грамматика, АСТ, а затем генерируется код да на том же C#! Но главное, это именно тот процесс, который должен пройти каждый джедай компиляторов — грамматика, дерево разбора, АСТ, связывание имён, обход дерева, генерация кода. Минимальность языка гарантирует, что мы не потеряемся в дебрях, а "разнообразие" — что мы обязательно задействуем основные инструменты Нитры. Разумеется, нужно в каждом удобном случае объяснять, чем нам помогла Нитра, сделав работу за нас.
Да, и ни слова не увидел про ту бриллиантовую фичу, ради которой был потрачен целый год исследований — восстановление после ошибок. Его тоже неплохо бы описать: что мы имели ДО него, что имеем сейчас и как это здорово (лучше в применении к конкретному примеру на игрушечном языке).
После такого примера будет легче увидеть, что за всемогутер у нас в руках — просто перечисление фич не даст ощутить всю (по)мощь Нитры.