Автор Тема: Создание ИС  (Прочитано 7004 раз)

Оффлайн druidm

  • Новичок
  • Сообщений: 44
    • Остров Будущего
    • E-mail
Создание ИС
« : 02 Март 2007, 10:08:54 »
Кто нибудь создавал генераторы кода информационных систем на основе таблиц решений? или какого-то друго метода?
 

Оффлайн avl

  • Hero Member
  • *****
  • Сообщений: 1 101
    • http://
    • E-mail
Создание ИС
« Ответ #1 : 02 Март 2007, 11:45:08 »
Я иногда тесты генерю из разного рода формальных описаний.
Сейчас кстати генераторы на вспомогательных задачах часто используют, особенно, Микрософт - у них все такое корявое, что без генераторов там никак, вручную все эти согласующие хрени замучаешься ваять :).
А вот чтобы центральную задачу решали путем генерации - достаточно редко. Тем не менее сейчас есть сильная тенденция генерить промежуточный, связующий код.

Оффлайн avl

  • Hero Member
  • *****
  • Сообщений: 1 101
    • http://
    • E-mail
Создание ИС
« Ответ #2 : 02 Март 2007, 12:00:32 »
Обычно используется такой подход: придумывают язык, на котором удобно было бы описывать специфичные проблемы - Domain Specific Langauge.
Ну и потом его реализуют. Тут есть два варианта, либо самому писать транслятор, что вобщем-то не трудно, но у пользователей возникает проблема изучения нового языка, интеграции его с другими программами и так далее. В-общем, мне этот вариант представляется тупиковым.
Более мощный подход, состоит в расширении существующего языка. Таким образом, не нужно учить новый язык и интерграция с другим ПО проходит легче. Тем более, что мощные языки программирования поддерживают возможность расширения. А в некоторых, например Лисп, Хаскел, это составляет основу языка.

Оффлайн druidm

  • Новичок
  • Сообщений: 44
    • Остров Будущего
    • E-mail
Создание ИС
« Ответ #3 : 06 Март 2007, 09:08:19 »
Цитировать
Обычно используется такой подход: придумывают язык, на котором удобно было бы описывать специфичные проблемы - Domain Specific Langauge.
Ну и потом его реализуют.
согласен, что придумывание языка дело тупиковое.

Поэтому и спрашивал, не о расширении какого-то конкретного языка или придумывание такого же - хрен редьки не слаще.

я имел ввиду создание некоего алфавита (интуитивно понятного), которым описывется решение задачи, а уже из этого решения генерится код на нужно языке программирования.

Оффлайн avl

  • Hero Member
  • *****
  • Сообщений: 1 101
    • http://
    • E-mail
Создание ИС
« Ответ #4 : 06 Март 2007, 12:41:42 »
Цитировать
Цитировать
Обычно используется такой подход: придумывают язык, на котором удобно было бы описывать специфичные проблемы - Domain Specific Langauge.
Ну и потом его реализуют.
согласен, что придумывание языка дело тупиковое.

Поэтому и спрашивал, не о расширении какого-то конкретного языка или придумывание такого же - хрен редьки не слаще.
Расширение существующего языка - как раз очень удобная штука, ибо остается совместимость с существующим кодом и навыками.
Цитировать
я имел ввиду создание некоего алфавита (интуитивно понятного), которым описывется решение задачи, а уже из этого решения генерится код на нужно языке программирования.
Интуитивно понятного вообще языка не бывает. Интутивно понятный - это тот который адекватен какой-то конкретной проблемной области. Его и называют Domain Specific Language.Если язык интуитивно-понятный, то производительность труда возрастает на порядок: т.е. код в строчках пишется примерно с такой же скоростью, но результирующая программа выходит на порядок короче.
Из таких высокоуровневых языков обычно генерируют программу на языке более низкого уровня. А если сравнивать сгенерированный код, то скорость уже выходит очень большая. Я как-то наваял за неделю около 200-300 кб кода, который генерил несколько мегабайтов кода в результате и еще кучу документации. Вручную я бы это год наверное писал.
« Последнее редактирование: 06 Март 2007, 12:44:10 от avl »

Оффлайн druidm

  • Новичок
  • Сообщений: 44
    • Остров Будущего
    • E-mail
Создание ИС
« Ответ #5 : 08 Март 2007, 21:07:49 »
Цитировать
Интуитивно понятного вообще языка не бывает. Интутивно понятный - это тот который адекватен какой-то конкретной проблемной области. Его и называют Domain Specific Language.Если язык интуитивно-понятный, то производительность труда возрастает на порядок: т.е. код в строчках пишется примерно с такой же скоростью, но результирующая программа выходит на порядок короче.
Из таких высокоуровневых языков обычно генерируют программу на языке более низкого уровня. А если сравнивать сгенерированный код, то скорость уже выходит очень большая. Я как-то наваял за неделю около 200-300 кб кода, который генерил несколько мегабайтов кода в результате и еще кучу документации. Вручную я бы это год наверное писал.
Программа пишется для решения конкретной задачи. В этой конкретной области и хочется найти интуитивно понятный инструмент (или создать его).

Пусть язык называется Domain Specific я не против :-)
Вопрос: Таблицы решений использовали в качестве такого языка?

PS: генераторы кода я тоже писал. Недавно натолкнулся на эти "расширеные таблицы решений" вот и заинтересовался вопросом.

Оффлайн avl

  • Hero Member
  • *****
  • Сообщений: 1 101
    • http://
    • E-mail
Создание ИС
« Ответ #6 : 09 Март 2007, 11:08:29 »
Цитировать
Вопрос: Таблицы решений использовали в качестве такого языка?

PS: генераторы кода я тоже писал. Недавно натолкнулся на эти "расширеные таблицы решений" вот и заинтересовался вопросом.
Что такое таблицы решений - не в курсе. Но к таблицам я скептично отношусь, они только в простых случаях удобны.

Оффлайн vvk

  • Участник
  • *
  • Сообщений: 108
Создание ИС
« Ответ #7 : 12 Март 2007, 12:12:33 »
Присоединяюсь к вопросу. Что такое таблицы решений?
Множество предикатов первого порядка, представленных в виде фактов?

Оффлайн druidm

  • Новичок
  • Сообщений: 44
    • Остров Будущего
    • E-mail
Создание ИС
« Ответ #8 : 12 Март 2007, 12:36:54 »
То что я нашел по таблицам решений, можно прочитать на Вики:
http://en.wikipedia.org/wiki/Decision_table

Со мной работал человек, который уже более 30 лет программит. И от него я услышал о таблицах решений (он ее называет машина теорий).
В течении 10 лет он для себя создал инструмент на основе расширенных таблиц решений. Этот инструмент позволяет заполнять заполнять эти таблицы данными описывающими реакцию системы в различных состояниях.

На основании этой информации и генерируется исходный код (от 90% до 100%) информационной системы. Который компилируется и получается готовый продукт.

 

Оффлайн avl

  • Hero Member
  • *****
  • Сообщений: 1 101
    • http://
    • E-mail
Создание ИС
« Ответ #9 : 12 Март 2007, 14:02:54 »
Я где-то видел статью про интересную методику, которая позволяла описывать поведение сложных систем простыми средствами: в этой методики состояние системы расщеплялось на так называемые моды, которые описывались независимо, а потом описывалось их взаимодействие. Причем через простые конструкции типа вышеозначенных таблиц решений.
Прикольно, но достаточно муторно. В принципе, там где нужно четко специфицировать поведение или для тестирования это полезно. Коди тесты из них напрямую генерятся.

Оффлайн avl

  • Hero Member
  • *****
  • Сообщений: 1 101
    • http://
    • E-mail
Создание ИС
« Ответ #10 : 12 Март 2007, 14:05:07 »
Есть еще более хитрое направление - микромодели. Типа, микромодель описывает какой-то один аспект софта. И в-принципе можно с помощью микромодели описать их взаимодействие. В принипе, идея та же, только микромодель задается с помощью обычной логики первого порядка.

Оффлайн druidm

  • Новичок
  • Сообщений: 44
    • Остров Будущего
    • E-mail
Создание ИС
« Ответ #11 : 13 Март 2007, 14:07:02 »
Цитировать
Я где-то видел статью про интересную методику, которая позволяла описывать поведение сложных систем простыми средствами: в этой методики состояние системы расщеплялось на так называемые моды, которые описывались независимо, а потом описывалось их взаимодействие. Причем через простые конструкции типа вышеозначенных таблиц решений.
Прикольно, но достаточно муторно. В принципе, там где нужно четко специфицировать поведение или для тестирования это полезно. Коди тесты из них напрямую генерятся.
да, что-то в таком духе.

При составлении ТЗ и функциональной спецификации все равно нужно описывать "моды" и их взаимодействие, поэтому здорово было, если после этого не нужно было кодить, а все генерировалось.

Оффлайн Jeka

  • Hero Member
  • *****
  • Сообщений: 2 326
Re: Создание ИС
« Ответ #12 : 04 Июнь 2011, 02:49:47 »
Кто нибудь создавал генераторы кода информационных систем на основе таблиц решений? или какого-то друго метода?
 

Практически не делал, но представление имею. Тут теорию автоматов мутить надо, но писанины будет много. Есть альтернативный вариант: писать свой интерпретатор языка.