On Sun, 28 May 2006, Konstantin Savenkov wrote:
...
>> Чем это принципиально, кроме имен и деталей, отличается от того, что ты
>> предлагаешь ?
> Тем, что то, что предлагаю я, компилируется g++, а не mmt ...
И в предыдущем письме:
> и набор макросов, разворачивающих MM-style описание
В том то и дело, что mmt как раз и разворачивает "MM-style описание"
в С++, с использованием в отображении базовых классов, которые я приводил.
При этом он выполняет еще несколько полезных функций.
Собственно, что делает mmt:
1. Отображение ММ на C++, при этом:
- скрываются всякие "нагромождения" С++ (то, что Анатолий
называл "ритуальными плясками") и детали интерфейсов
библиотеки моделирования;
- добавляется полезная информация, например, о номерах
строк и номерах операторов в тексте;
2. Выпоняется _полный_ синтаксический и семантический анализ
операторов ММ, что сделать "на макросах" достаточно затруднительно.
(не вполне удачный опыт - язык описания моделей СММ КБО).
3. Диагностика формируется в терминах ММ-языка.
Не соглашусь, что она плоха. Если кто-то заметил там
ошибки в сообщениях - пишите bug report-ы, это легко пофиксеть.
Решать задачу "фильтрации" и "русификации" диагностики g++
- это криво и очень громоздко.
(неудачный опыт - см. тот же СММ)
4. Строится синтаксическре дерево, которое может быть очень полезно
для решения задач анализа, трансляции, оптимизации и т.д.
5. На исходное множество возможностей С (С++) накладывается
ряд ограничений, что еще никому не было вредно.
Короче,
по моему опыту, "хороший" транслятор ММ никому не помешает.
Сейчас можно обсуждать, что он _как он есть_ не очень хорош,
деревом разбора пользоваться невозможно и т.д.,
но это, imho, не аргумент чтобы заменить его на C++.
> Какой транслятор MM->C ?
mmt: MM -> C++
>> Ты о чем вообще ?!
> Я о том, по каким причинам нужно лишнее звено в виде транслятора ММ-языка?
По-моему это явная провокация со стороны Кости :)
> Я не предлагаю всё заменить на что-то другое или, упаси боже, переписать
> заново. Вопрос -- почему не использовать чистый С++ (ну ладно, грязный, с
> макросами). Take it easy.
Вот именно, что "грязный" и "с макросами".
Как это не странно может звучать, "неповоротливость" схемы Язык +
отображение на С++ оказывает хорошую услугу при развитии средства.
В ЛВК уже пережили несколько проектов с "самопальными" библиотеками
моделирования. Так вот, легкость и бессистемность их модификации +
"личные заглюки" их авторов сделали их гораздо менее
прозрачными и, в итоге, менее востребованными, чем ММ.
ММ (и любой специальный язык) по определению будет более минималистичен
и более консервативен, чем любая библиотека.
Оказывается, что это - хорошо.
Я голосую за Язык + Транслятор.
Макс