Научно-технический Клуб > Общие вопросы НТК
Создание ИС
druidm:
Кто нибудь создавал генераторы кода информационных систем на основе таблиц решений? или какого-то друго метода?
avl:
Я иногда тесты генерю из разного рода формальных описаний.
Сейчас кстати генераторы на вспомогательных задачах часто используют, особенно, Микрософт - у них все такое корявое, что без генераторов там никак, вручную все эти согласующие хрени замучаешься ваять :).
А вот чтобы центральную задачу решали путем генерации - достаточно редко. Тем не менее сейчас есть сильная тенденция генерить промежуточный, связующий код.
avl:
Обычно используется такой подход: придумывают язык, на котором удобно было бы описывать специфичные проблемы - Domain Specific Langauge.
Ну и потом его реализуют. Тут есть два варианта, либо самому писать транслятор, что вобщем-то не трудно, но у пользователей возникает проблема изучения нового языка, интеграции его с другими программами и так далее. В-общем, мне этот вариант представляется тупиковым.
Более мощный подход, состоит в расширении существующего языка. Таким образом, не нужно учить новый язык и интерграция с другим ПО проходит легче. Тем более, что мощные языки программирования поддерживают возможность расширения. А в некоторых, например Лисп, Хаскел, это составляет основу языка.
druidm:
--- Цитировать --- Обычно используется такой подход: придумывают язык, на котором удобно было бы описывать специфичные проблемы - Domain Specific Langauge.
Ну и потом его реализуют.
--- Конец цитаты ---
согласен, что придумывание языка дело тупиковое.
Поэтому и спрашивал, не о расширении какого-то конкретного языка или придумывание такого же - хрен редьки не слаще.
я имел ввиду создание некоего алфавита (интуитивно понятного), которым описывется решение задачи, а уже из этого решения генерится код на нужно языке программирования.
avl:
--- Цитировать ---
--- Цитировать --- Обычно используется такой подход: придумывают язык, на котором удобно было бы описывать специфичные проблемы - Domain Specific Langauge.
Ну и потом его реализуют.
--- Конец цитаты ---
согласен, что придумывание языка дело тупиковое.
Поэтому и спрашивал, не о расширении какого-то конкретного языка или придумывание такого же - хрен редьки не слаще.
--- Конец цитаты ---
Расширение существующего языка - как раз очень удобная штука, ибо остается совместимость с существующим кодом и навыками.
--- Цитировать ---я имел ввиду создание некоего алфавита (интуитивно понятного), которым описывется решение задачи, а уже из этого решения генерится код на нужно языке программирования.
--- Конец цитаты ---
Интуитивно понятного вообще языка не бывает. Интутивно понятный - это тот который адекватен какой-то конкретной проблемной области. Его и называют Domain Specific Language.Если язык интуитивно-понятный, то производительность труда возрастает на порядок: т.е. код в строчках пишется примерно с такой же скоростью, но результирующая программа выходит на порядок короче.
Из таких высокоуровневых языков обычно генерируют программу на языке более низкого уровня. А если сравнивать сгенерированный код, то скорость уже выходит очень большая. Я как-то наваял за неделю около 200-300 кб кода, который генерил несколько мегабайтов кода в результате и еще кучу документации. Вручную я бы это год наверное писал.
Навигация
Перейти к полной версии