Программирование микроконтроллеров на ДРАКОНе

Но почему-то забылось не совсем.
Тут подвернулась поездка. Снова нашёл, закачал файл в электронную книжку, взял с собой. В поезде всё равно делать нечего.
Медленно и со вкусом прочитал.
И — понял! Это просто клад!
По возвращении уже думал только об одном: где бы найти инструмент для работы?
К счастью, такой инструмент нашелся.
Попробовал небольшие примерчики — вроде какой то код генерится. Переписал на ДРАКОНе довольно запутанную функцию из реального проекта.
Функция заработала сразу! Более того, при переносе алгоритма в дракон-схему, я обнаружил, что у меня в ней была ошибка! Эта функция работала уже довольно давно, не в одной сотне изделий. Ошибка не была фатальной, она возникала редко, и компенсировалась переподключением к серверу. Но она была!
В тексте на Си её было незаметно. А при попытке перенести алгоритм на дракон-схему, ошибка стала не просто заметной — алгоритм в этом месте «не вырисовывался»!
С тех пор прошло чуть больше года. Я программирую только на ДРАКОНе.
Попытаюсь сказать несколько слов о том, что это мне дало, и как выглядит процесс.
Написание программы распалось на два этапа — проработка алгоритма, и собственно программирование.
Главное в любой программе — алгоритм. В ДРАКОНе он рисуется, точнее — составляется из графических элементов. Очень похожих на элементы блок-схем.
Но есть несколько строгих правил, которые не позволяют схеме превратиться в запутанный клубок линий, квадратов и ромбиков.
Правила, на первый взгляд, простые. Но эффект от их применения — колоссальный!
На ДРАКОНЕ запутанный и непонятный алгоритм нарисовать просто нельзя. И наоборот, любой сложный алгоритм, нарисованный согласно этим правилам, становится очень понятным.
При разработке алгоритма теперь его не надо держать в голове при написании текста программы. Работа сводится к визуальному конструированию алгоритма. Это гораздо легче. Не требуется такое сосредоточение, как обычно. Так как нарисованный алгоритм очень понятен — работу можно спокойно прервать в любой момент, потом легко вернутся к её продолжению.
И только когда весь алгоритм «отлизан» — переходим к собственно программированию. В чём оно теперь заключается? В том, что для каждой иконы нужно написать код, который выполнит то, что написано на этой иконе. Как правило это 1 строчка. На высоких уровнях иерархии проекта — это может быть вызов одной функции, или одного метода класса (заметим, что все функции и классы тоже нарисованы на ДРАКОНЕ). На нижнем уровне — это может быть изменение одного бита.
В этом месте, наверняка, у многих вырвется вопрос: — «Ну и зачем весь этот огород, если код всё равно надо писать самому?!».
Не торопитесь!
В чём сложность программирования? (с тем, что программирование — сложная работа, думаю, никто спорить не будет?).
Разве в написании строчек типа printf(«Hello, Word»);?
Станет ли сложной программа от того, что мы напишем 1000 подобных строчек? А 10000?
Нет, она не станет от этого сложной. Сложной программу делают сложные взаимосвязи между её частями.
Так вот, на этапе программирования икон об этом думать уже не надо.
Совсем. Вообще. Никак. Не надо, и всё тут!
Всё, что нужно — аккуратно запрограммировать ОДНУ икону. Только ОДНУ! Когда будем программировать другую — про предыдущую уже можно не вспоминать. В тот код, который сгенерирует редактор — смотреть не нужно. Так же, как мы не смотрим в машинные коды, полученные после компиляции.
Программирование на этом этапе превратилось в чисто техническую процедуру. Несложную.
Уже перестал удивляться тому, что программы работают сразу после включения…
=======
Как начать использовать ДРАКОН?
Нужно потрудится. Нужно прочитать книгу «Язык Дракон».
Прочитать неспеша и вдумчиво.
Мне помогло, что я её читал в поезде, где не было отвлекающих факторов. Книга написана очень хорошо, просто, доходчиво, интересно. drakon-practic.ru/drakon.pdf
Если по прочтении возникло желание попробовать ( а я не сомневаюсь, что возникнет ) — тогда скачивайте ИС ДРАКОН, и начинайте. drakon-practic.ru/is_drakon.zip
Не пытайтесь получить представление о языке по приводимым видеороликам. Их цель совершенно другая.
Дело в том, что сегодня за пределами РосКосмоса почти нет инструментов, пригодных для практической работы с языком ДРАКОН. «ИС ДРАКОН» пишется на голом энтузиазме одним человеком, в свободное время.
На сегодняшний день справка к программе устарела. Начать работу по ней очень трудно. Я кое как разобрался — и что бы помочь другим преодолеть этот этап — записал пару видеоуроков. Самое ценное в которых — это куда ткнуть мышкой, что бы получить то или это.
Понятно же, что программа, которая в процессе этих уроков создаётся, может быть написана в текстовом редакторе за пару минут без всех этих хлопот. Делать на основе этого урока заключение о языке — это тоже самое, что писать рецензию на «Война и Мир» по «Мама мыла раму».
Но конечно же, Вы начнёте с видеороликов! Ну что же. Имеющий уши — услышит, имеющий глаза — увидит.
drakon-practic.ru/is_drakon_part1.zip
drakon-practic.ru/is_drakon_part2.zip
drakon-practic.ru/is_drakon_part3.zip
drakon-practic.ru/is_drakon_part4.zip
Видеоролики уроков теперь размещены и на youtube:
- +7
- 10 января 2012, 23:57
- efanov
Это я прочитал:) Перефразирую вопрос — в оболочку ИС ДРАКОН можно добавить другие языки? Насколько я понял из своего верхоглядства — это программа всего лишь помогает визуально представить и структурировать алгоритм программы, который потом наполняешь программой! так? то есть по сути в этих блоках можно писать на любом языке, а потом выданную оболочкой текст программы скормить компилятору?
Наверное, так нельзя. Программа ведь сама генерирует переходы между иконами. Например, для Си вставляет goto, а для Оберона, в котором goto нету, она его эмулирует подручными средствами.
Если Вам действительно нужна трансляция для другого языка — думаю, самое простое — попросить автора сделать её.
Если Вам действительно нужна трансляция для другого языка — думаю, самое простое — попросить автора сделать её.
Кроме всего ещо надо знать и другие языки программирования, как я понял? Насколько глубоко надо знать другие языки чтоб работать из Драконо?
Для начинающих в программирование вообще, насколько трудным этот язык есть? По видео все достаточно просто и непринужденно.
Как я понял этот язык пригодин не только для микроконтролеров?
Для начинающих в программирование вообще, насколько трудным этот язык есть? По видео все достаточно просто и непринужденно.
Как я понял этот язык пригодин не только для микроконтролеров?
Моя работа — программирование микроконтроллеров. Мне нужно знать архитектуру программируемого контроллера, и язык программирования. Насколько глубоко — сложно сказать, тут нету чётких критериев.
Собственно язык ДРАКОН никак не привязан ни к какому языку программирования или процессору. Это вообще НЕ язык программирования. Он определяет правила графического изображения алгоритмов деятельности. Например, есть сообщения об успешном применении ДРАКОНА для описания бизнес-процессов.
Собственно язык ДРАКОН никак не привязан ни к какому языку программирования или процессору. Это вообще НЕ язык программирования. Он определяет правила графического изображения алгоритмов деятельности. Например, есть сообщения об успешном применении ДРАКОНА для описания бизнес-процессов.
А как там выглядит многопоточность? Ну например у меня в главном цикле реализован алгоритм обработки данных и связи с внешним миром, а параллельно исполняется ещё пяток потоков на прерываниях. Насколько наглядно представление такой ситуации в среде?
И один очень важные момент — в видео не демонстрируется содержание полученных drt файлов, а это важно. Я не поленился, скачал:
+ это таки простой текстовый файл, его спокойно можно положить под контроль версий
— это кошмар какой-то — куча невнятных цифирей (походу, какие-то идентификаторы и абсолютные координаты блоков), тройные кавычки и жуткие конструкции типа «Инициализиро-,»«вать процессор»"", мета-информация никак не отделена от данных, а самой ценной информацией, походу, автор считал копирайт =).
В общем, над форматом данных похоже не думали вообще =).
И один очень важные момент — в видео не демонстрируется содержание полученных drt файлов, а это важно. Я не поленился, скачал:
+ это таки простой текстовый файл, его спокойно можно положить под контроль версий
— это кошмар какой-то — куча невнятных цифирей (походу, какие-то идентификаторы и абсолютные координаты блоков), тройные кавычки и жуткие конструкции типа «Инициализиро-,»«вать процессор»"", мета-информация никак не отделена от данных, а самой ценной информацией, походу, автор считал копирайт =).
В общем, над форматом данных похоже не думали вообще =).
Я применяю ДРАКОН вместе с FreeRTOS, и не испытываю каких либо проблем с многопоточностью. Как это выглядит? Как и любая другая дракон-схема — красиво. В языке есть специальные иконы «запустить параллельный процесс», но я их не использую, как то и без них всё ясно.
>И один очень важные момент — в видео не демонстрируется содержание полученных drt файлов, а это важно.
Вот уж чего меня интересует меньше всего — как там что то хранится. Да хоть японскими иероглифами! Чем это может быть важно для меня, пользователя? Я туда не заглядываю никогда. Я знаю, что там текстовый формат. Структуру автор опубликовал, кто то даже писал какие-то трансляторы из этих файлов.
Сейчас посмотрел файл (возбудили интерес). По моему, очень компактный формат. Даже без описания можно разобраться, что к чему. А почему нужно боятся тройных кавычек? Там ещё и запятых много…
> В общем, над форматом данных похоже не думали вообще =).
Формат данных в этих файлах — это сфера интересов разработчиков подобных программ. Судя по тому, что Вам он представляется важным — Вы один из них. Не могли бы Вы заняться созданием собственного варианта дракон-редактора?
>И один очень важные момент — в видео не демонстрируется содержание полученных drt файлов, а это важно.
Вот уж чего меня интересует меньше всего — как там что то хранится. Да хоть японскими иероглифами! Чем это может быть важно для меня, пользователя? Я туда не заглядываю никогда. Я знаю, что там текстовый формат. Структуру автор опубликовал, кто то даже писал какие-то трансляторы из этих файлов.
Сейчас посмотрел файл (возбудили интерес). По моему, очень компактный формат. Даже без описания можно разобраться, что к чему. А почему нужно боятся тройных кавычек? Там ещё и запятых много…
> В общем, над форматом данных похоже не думали вообще =).
Формат данных в этих файлах — это сфера интересов разработчиков подобных программ. Судя по тому, что Вам он представляется важным — Вы один из них. Не могли бы Вы заняться созданием собственного варианта дракон-редактора?
>> Формат данных в этих файлах — это сфера интересов разработчиков подобных программ. Судя по тому, что Вам он представляется важным — Вы один из них.
Вы ошибаетесь — никогда не занимался созданием подобных программ. Да и вообще «программирование в картинках» не особо одобряю =). Важным он мне кажется, потому что там хранятся исходные данные проекта, с которыми так или иначе работать придётся. Его обязательно надо класть под контроль версий, и надо иметь возможность сравнивать, что изменилось от версии к версии. То что формат текстовый позволяет сравнивать версии файла простым дифом, но сам формат не особо очевиден — боюсь без особого опыта тупить придётся долго, что бы понять что к чему. Конечно со временем ко всему привыкнуть можно… =) Либо нужно мутить графическую диффилку.
Вы ошибаетесь — никогда не занимался созданием подобных программ. Да и вообще «программирование в картинках» не особо одобряю =). Важным он мне кажется, потому что там хранятся исходные данные проекта, с которыми так или иначе работать придётся. Его обязательно надо класть под контроль версий, и надо иметь возможность сравнивать, что изменилось от версии к версии. То что формат текстовый позволяет сравнивать версии файла простым дифом, но сам формат не особо очевиден — боюсь без особого опыта тупить придётся долго, что бы понять что к чему. Конечно со временем ко всему привыкнуть можно… =) Либо нужно мутить графическую диффилку.
Понятно. Вы рассматриваете программирование как изолированный процесс.
На самом деле — это только часть работы при создании какого либо устройства. Ещё там есть схемы принципиальные электрические, чертежи печатных плат, чертежи механических узлов. Вся эта информация обрабатывается исключительно в графических редакторах. Файлов при этом создаётся уйма, у каждого свой формат. И каждый файл нужен и важен, приходится беспокоится о сохранности всех. У программных файлов тут нет особых привилегий.
На самом деле — это только часть работы при создании какого либо устройства. Ещё там есть схемы принципиальные электрические, чертежи печатных плат, чертежи механических узлов. Вся эта информация обрабатывается исключительно в графических редакторах. Файлов при этом создаётся уйма, у каждого свой формат. И каждый файл нужен и важен, приходится беспокоится о сохранности всех. У программных файлов тут нет особых привилегий.
Так я что ж, спорю с этим? Просто сейчас речь идёт о программировании. Но раз уж зашла речь, у KiCAD, например, формат файлов текстовый и вполне читабельный, диффом сравнивается легко, у Altium Designer формат двоичный, но есть встроенный диффер, позволяющий легко искать отличия, и интеграция в SVN. А вот с механическими кадами сложнее — я работаю в основном в Autodesc Inventor, формат файлов бинарный, закрытый и никаких инструментов сравнения нет — это такой жуткий гемор… Приходится ориентироваться только на комментарии к коммиту и, соответственно, очень подробно эти комментарии писать.
В общем, ничего хорошего в нечитабельном формате файлов я не вижу, зачем ровняться на худшее?
В общем, ничего хорошего в нечитабельном формате файлов я не вижу, зачем ровняться на худшее?
> зачем ровняться на худшее?
Проблема в том, что равняться пока некуда — для зыка ДРАКОН редактор ИС ДРАКОН на сегодня и есть лучшее.
Проблема в том, что равняться пока некуда — для зыка ДРАКОН редактор ИС ДРАКОН на сегодня и есть лучшее.
Да причём здесь драконы то? Что мешает авторам этой среды ровняться на тот же KiCAD? Почему не сделать формат хранения файлов человеко-читаемым?
>> Да где же Вы видите авторов?!
Да я и не смотрю туда — какое мне дело до того, сколько человек работало над программой? К сожалению от осознания того, что «Автор то один» программа лучше не становится. Вы ИМХО передёргиваете — качество архитектуры программы не от количества программистов зависит. Функциональность — да, зависит, а идеологические вопросы в проектах такого масштаба всё равно, как правило, один человек решает.
Да я и не смотрю туда — какое мне дело до того, сколько человек работало над программой? К сожалению от осознания того, что «Автор то один» программа лучше не становится. Вы ИМХО передёргиваете — качество архитектуры программы не от количества программистов зависит. Функциональность — да, зависит, а идеологические вопросы в проектах такого масштаба всё равно, как правило, один человек решает.
чем более сложен процесс разработки, тем важнее каждый его шаг протоколировать. Каждый. И если кто-то изменил чертеж, дорисовал там одну линию, нужно чтко знать
1. когда это было сделано
2. кто это сделал
3. дать возможность этому человеку написать где-то, зачем он это сделал
И самое важное: иметь возможность откатить эти изменения, вернуться к предыдущей версии.
Этот процесс можно вести как отдельно по каждому файлу, так и более комплексно — не суть.
1. когда это было сделано
2. кто это сделал
3. дать возможность этому человеку написать где-то, зачем он это сделал
И самое важное: иметь возможность откатить эти изменения, вернуться к предыдущей версии.
Этот процесс можно вести как отдельно по каждому файлу, так и более комплексно — не суть.
На сколько оптимальным получается результат компиляции полученной из дракона программы? Сравнивали?
Просто насторожило замечание что переходы между блоками в Си осуществляются с помощью goto, и есть подозрение что программа может выйти перегруженной перекрестными ссылками (после бэйсика мне все кто мог вдалбливали в мозг что использование goto — моветон)
Просто насторожило замечание что переходы между блоками в Си осуществляются с помощью goto, и есть подозрение что программа может выйти перегруженной перекрестными ссылками (после бэйсика мне все кто мог вдалбливали в мозг что использование goto — моветон)
goto меняется на JMP и это самая простая и логичная для компилятора инструкция. Т.е. код получается оптимальней чем без goto где компилятору надо думать как выйти из функции — с возвратом параметров, али без них. Проблема goto в создавании нечитабельных текстов программ. Тут же тексты программ никого не интересуют.
Идеология ДРАКОНа, с моей точки зрения, действительно правильная. Позволяет с легкостью создавать сложные, «красивые» алгоритмы. Уделено большое внимание «читабельности», эргономике алгоритма. А вот «ИС ДРАКОН» эргономикой особо не отличается, я бы даже сказал, несколько противоречит эргономическим требованиям, изложенным в идеологии самого ДРАКОНа. Если довести её «до ума», не использовать превосходных эпитетов при описании идеологии, то получится довольно хороший инструмент для написания программ, особенно полезный для обучения программированию новичков.
Радует, что это отечественная разработка, но, к сожалению, как и все отечественное, идея является прекрасной, а вот реализация иногда хромает и это мягко сказано.
Радует, что это отечественная разработка, но, к сожалению, как и все отечественное, идея является прекрасной, а вот реализация иногда хромает и это мягко сказано.
Присоеденяюсь к вышесказанному!:) Если бы кто то довел ее до ума, и добавил гибкости, то я бы с удовольствием бы даже купил ее за разумные деньги. Как сын подрастет, то ему объяснять алгоритмы и составление программ самое оно будет! Да и мне самому, с моими незаточенными мозгами под программирование в самый раз!:)
Главное в любой программе — алгоритм. В ДРАКОНе он рисуется, точнее — составляется из графических элементов. Очень похожих на элементы блок-схем.
О Господи, еще один LabView.
Так вот, на этапе программирования икон об этом думать уже не надо.
Совсем. Вообще. Никак. Не надо, и всё тут!
Всё, что нужно — аккуратно запрограммировать ОДНУ икону. Только ОДНУ! Когда будем программировать другую — про предыдущую уже можно не вспоминать.
Гы-гы, эта парадигма называется структурное программирование. :) Опять костыль для тех, кто не умеет алгоритмизовать без облегчалок…
У кого не заточены, тем стоит затачивать, саморазвитие еще никому не мешало. Тем более, что умение алгоритмизовать и оптимизировать задачу сильно помогает и вообще по жизни. :)
> умение алгоритмизовать и оптимизировать задачу сильно помогает и вообще по жизни. :)
Как раз эти умения и развивает ДРАКОН. :)
Как раз эти умения и развивает ДРАКОН. :)
Ну вообще, в идеологии дракона программист совершенно лишнее звено. Балласт. Собственно широкое внедрение этой системы позволило радикально сократить штат программистов, доверив написание программы непосредственно инженерам.
идеологии дракона программист совершенно лишнее звено
Мне кажется, что Вы переоцениваете роль ЯП в программировании. Программа рождается в голове разработчика в виде идеи/концепции/алгоритма. Среда разработки и ЯП – это лишь инструмент для реализации данной идеи. Ели алгоритм «кривой» — то ни одна среда разработки и ни один ЯП это не смогут исправить. Заслуга в том, что «Буран» мог совершать автоматическую посадку – это заслуга разработчиков ПО, а не конкретного ЯП.
Аналогично в электронике. Конкретное схемотехническое решение рождается в голове разработчика. А CAD-система лишь инструмент для реализации этого решения.
Ну, концепция ДРАКОНа однозначно имеет право на жизнь.
Я просто хочу сказать, что в программировании нет «серебренных пуль» — эффективность реализации конечной задачи напрямую завидит от уровня разработчика. И ни одни ЯП не позволяет качественно поднять этот уровень просто благодаря использованию именно этого ЯП.
Позволяет избежать определенных ошибок — это да, но поднять уровень разработчика – нет.
Я просто хочу сказать, что в программировании нет «серебренных пуль» — эффективность реализации конечной задачи напрямую завидит от уровня разработчика. И ни одни ЯП не позволяет качественно поднять этот уровень просто благодаря использованию именно этого ЯП.
Позволяет избежать определенных ошибок — это да, но поднять уровень разработчика – нет.
Вот тут я, пожалуй, не соглашусь. Инструмент больше влияет на распределение ошибок между первыми двумя типами (синтаксические и рантайм), чем на количество ошибок в целом. Это, в свою очередь, оказывает влияние на затраты времени (и, соответственно, производительность) программиста. Например, одна из главных причин моего прохладного отношения к скриптовым языкам — значительное количество ошибок, которые в том же С/С++ или в жабе ловятся еще на этапе компиляции, в них «плавно перетекает» в ошибки времени выполнения, которые диагностировать и исправить значительно затратнее по времени, чем синтаксические ошибки.
Синтаксические ошибки, в отличие от рантайм, отлавливаются сразу. А отловленная ошибка — исправленная ошибка. И тут язык влияет сильно. Например, в Delphi традиционную сишную ошибку if(var=10){...} сделать просто невозможно, тогда как в С она проявится только в рантайме, и не так уж проста для отлова. Здесь же еще и алгоритм представлен графически, что делает его более наглядным, плюс дополнительные правила. Собсна, топикстартер сам же сказал про то, что перенеся алгоритм в блоксхему — сразу поймал в нем ошибку.
Хотя, конечно, от той грабли, из-за которой взорвалась Ariane-5 это не спасет, но все же.
Хотя, конечно, от той грабли, из-за которой взорвалась Ariane-5 это не спасет, но все же.
Та традиционная сишная ошибка давно (лет 15, а то и все 20) легко отлавливается по ворнингам компилятора (а в проектах покрупнее ворнинги часто приравнивают к ошибкам). Это я к тому, что пример не очень удачный. Но это не принципиально, важнее другое: ситуация с нахождением ошибки топикстартером, как раз, иллюстирует влияние инструмента на распределение ошибок.
К слову, представление алгоритма в графическом виде, как по мне, мало интересно. В более-менее сложной системе гораздо интереснее диаграммы взаимодействия. Во встороенных системах, подозреваю, не меньшую (а то и большую) ценность представляют диаграммы переходов, причем в явном виде. То, что я вижу в примерах/уроках в основном, как раз, и есть диаграммы переходов, только в неявном виде и скрытые под слоем, собственно, алгоритмов. Если к этому еще добавить объекты, будет совсем хорошо, хотя, подозреваю, в нынешнюю концепцию дракона это не совсем вписывается.
P.S. было бы любопытно поглядеть живьем на него, но перспектива ставить ради этого винду меня как-то не греет.
К слову, представление алгоритма в графическом виде, как по мне, мало интересно. В более-менее сложной системе гораздо интереснее диаграммы взаимодействия. Во встороенных системах, подозреваю, не меньшую (а то и большую) ценность представляют диаграммы переходов, причем в явном виде. То, что я вижу в примерах/уроках в основном, как раз, и есть диаграммы переходов, только в неявном виде и скрытые под слоем, собственно, алгоритмов. Если к этому еще добавить объекты, будет совсем хорошо, хотя, подозреваю, в нынешнюю концепцию дракона это не совсем вписывается.
P.S. было бы любопытно поглядеть живьем на него, но перспектива ставить ради этого винду меня как-то не греет.
К слову, представление алгоритма в графическом виде, как по мне, мало интересно.Стандартный случай.
Зовет к себе главный конструктор. Мол, чего-то я не понимаю, как твоя программа работает.
Давай объясняй.
И начинается. Поиск, выдергивание и распечатка фрагментов, перевод с машинного на русский, объяснение тонкостей программирования и системных нюансов… Канитель на полдня.
И насколько проще было бы, если бы программа изначально задавалась в виде графического алгоритма и была к нему привязана намертво.
То есть, не так, что нарисовали вначале алгоритм, «потому что положено», потом 20 раз изменили, а в результате конечная программа ничего общего с ним не имеет. ДРАКОН подразумевает неразрывную связь в течение лайфтайма.
Ещё один нюанс: дракон позволяет оптимизировать алгоритм в целом, не зарываясь в мелкие детали и конкретику типа имен переменных функций. В книге «Как улучшить работу ума» описан рантайм чисто дракона, без привязки к конкретному языку программирования. При выполнении по шагам иконы подсвечиваются по очереди, что очень наглядно отражает суть алгоритма.
То есть, это позволяет проверить сам абстрактный алгоритм ещё до того, как написана первая строка кода. И очень подходит для программирования «сверху вниз», от общего к частному, с постепенным увеличением детализации вплоть до конкретных операторов и имен переменных.
В этом «стандартном» случае диаграмма переходов куда как полезнее, чем алгоритм всей программы в целом. Посмотрите на примеры, там постоянно встречается «а вот если то, то устанавливаем состояние такое-то» в перемешку с остальной логикой. В итоге переходы между состояниями приходится держать в голове. Так а в чем смысл тогда графического представления, если столь важную информацию приходится собирать ползая по всей схеме? В том же С для подобных целей я могу, например, просто записать диаграмму переходов в виде таблицы и это будет намного удобнее для работы самому, на порядок проще для чтения и понимания другим программистом и во много раз удобнее для пояснения неспециалисту (конечно, если он школу не прогуливал, а учебники читал, а не курил).
Концентрация на алгоритме и программировании «сверху вниз», как по мне, здорово отдают нафталином. Это не плохо и не хорошо, просто из другой эпохи, программирование здорово изменилось с тех пор.
Концентрация на алгоритме и программировании «сверху вниз», как по мне, здорово отдают нафталином. Это не плохо и не хорошо, просто из другой эпохи, программирование здорово изменилось с тех пор.
Та традиционная сишная ошибка давно (лет 15, а то и все 20) легко отлавливается по ворнингам компилятора (а в проектах покрупнее ворнинги часто приравнивают к ошибкам). Это я к тому, что пример не очень удачный. Но это не принципиально, важнее другое: ситуация с нахождением ошибки топикстартером, как раз, иллюстирует влияние инструмента на распределение ошибок.да то понятно. но как я говорил, проект достался в наследство, и эти части были задавлены прагмами. причем, целыми блоками… клиника конечно, но править ни времени ни желания не было…
P.S. было бы любопытно поглядеть живьем на него, но перспектива ставить ради этого винду меня как-то не греет.в вине? ;)
кста, обнаружил забавную особенность (вина) — не хочет конфигуриться (./configure) ни по ssh, ни в сессии vnc. подавай ему живые физические иксы %) полдня вчера убил на поиски… %)
Согласен! Но у меня затачивание в другую сторону идет, и менять все — значит терять наработанный опыт, а так — недостающее костылями дополняется!:))) Тем более что некоторым это просто хобби, и по жизни могут стоять перед ними другие проблемы, задачи, которые имеют совсем другой подход!:) Интересно будет на работе попробовать дракон для брэйн штурма внедрить! Хотя врядли получиться!:(
Может это придирка, но структурное программирование — это парадигма С. Его основа — разбиение программы на функции.
Какая здесь парадигма — честно говоря, не знаю. Но и плохого в повышении уровня парадигмы не вижу. В конце концов, задача — написать работающую программу. Если оно существенно облегчает эту задачу — что ж в этом плохого? Тем паче, по видимому, с накладными расходами у этой системы дела обстоят вполне неплохо.
Какая здесь парадигма — честно говоря, не знаю. Но и плохого в повышении уровня парадигмы не вижу. В конце концов, задача — написать работающую программу. Если оно существенно облегчает эту задачу — что ж в этом плохого? Тем паче, по видимому, с накладными расходами у этой системы дела обстоят вполне неплохо.
Опять костыль для тех, кто не умеет алгоритмизовать без облегчалок…Ну вообще-то, эти костыли направлены именно на то, чтобы очистить алгоритмизирование от рутины. Асм тоже костыль же, для тех кто не может запомнить команды ядра, их двоичную структуру и карту памяти собственной программы. А С для тех, кто не не может упомнить не только это, но и паутину собственных GOTO и GOSUB (ну или JMP/CALL, что то же самое).
структурное программирование — это парадигма С
Хм. А разве парадигма привязана к конкретному языку? Суть парадигмы структурного программирования — разбиение программы на логически законченные блоки и дедуктивный подход.
Какая здесь парадигма — честно говоря, не знаю. Но и плохого в повышении уровня парадигмы не вижу.
Зависит от задачи, на самом деле.
А разве парадигма привязана к конкретному языку? Суть парадигмы структурного программирования — разбиение программы на логически законченные блоки и дедуктивный подход.Нет, не привязана разумеется. Но в С она представлена можно сказать эталонно. Здесь же явно другая. А на логически законченные блоки программу делят и парадигмы модульного программирования, и объектно-ориентированного. В структурном таким блоком является функция или процедура (и то, и другое — разновидность подпрограмм), в модульном — модуль, в ООП — объект.
Зависит от задачи, на самом деле.Задача, обычно, просто исключает некоторые парадигмы из-за того, что они делают невозможным решение задачи (так, например, выбрав основой проекта attiny10 без ОЗУ — исключаем gcc из списка возможных инструментов, ему нужна RAM и стек) своими накладными расходами или иными особенностями. Ну, еще бывает, что она делает какие-то парадигмы неудобными. Но в общем, обычно от чего получше приходится отказываться не потому что оно плохо, а потому, что с ним данную задачу не решить.
О умнейший и заточеный, что ж Вы на LabView гоните. Вы хоть ради приличия почитайте что это, для чего и для кого это нужно, и посмотрите какие вещи на этой системе делают и где они работают, а потом будете ляля.
К слову о заточенности. Я никогда не считал и не считаю себя программистом. Мозг у меня тоже работает в немного другом направлении. Однако почему-то у меня получается писать программы базового уровня, не используюя при этом тучи облегчалок.
С LabView (а заодно и Matlab), спасибо родной кафедре, знаком непосредственно. Слава Богу, прошло оно и забыл я все это как страшный сон.
Ну OK, погорячился, не совсем похоже на LabView. Скорее, еще один FlowCode.
Вы хоть ради приличия почитайте что это, для чего и для кого это нужно
С LabView (а заодно и Matlab), спасибо родной кафедре, знаком непосредственно. Слава Богу, прошло оно и забыл я все это как страшный сон.
Ну OK, погорячился, не совсем похоже на LabView. Скорее, еще один FlowCode.
Однако почему-то у меня получается писать программы базового уровня, не используюя при этом тучи облегчалок.Ключевое слово — «базового». Дальше уже приходится прибегать к специальным мерам. И зачастую примеры «С++ и ООП нафиг не нужен, xxx написано на С и прекрасно работает», при ближайшем рассмотрении, выявляют, что внутри как раз таки ООП парадигма, только реализованная средствами С вручную.
Да и даже на ассемблере большинство уже пишет в С-подобной парадигме. Разбиение на функции, локальные переменные и все такое.
По мне так смахивает на возвращение к ассемблеру. А когда на асме пишешь программу то приходится по любому такой алгоритм в голове держать, получаться просто удобная программа для рисования алгоритмов с небольшими бонусами. Еще наверное может помочь не промахнуться когда куски кода копируешь и вставляешь.
Оффтоп: при быстрой прокрутке глаз прочитал «ДРАКОНирование микроконтроллеров»
- Dima-simfer
- 11 января 2012, 23:50
- ↓
Запустил ИС Дракон, а все меню вопросами вместо букв :( Причем если что то создать, то на схеме и внизу в строке помощи все читабельно, только все меню вопросами. Можно как нибудь вылечить?
Винды немецкие, регион и все языковые настройки на Россию поставлены…
Винды немецкие, регион и все языковые настройки на Россию поставлены…
а еще мб старая болячка с кодовой страницей. я так понимаю, ХРень стоит — у нее эта бага почти фичей стала… %)
Вот так выглядит. Вверху вопросы в строке меню и во всех менюшках. в среднем поле все нормально, схему создаешь — тоже все нормально показывает, писать на русском можно. В нижней строчке (там видно на картинке слово «просмотр») тоже русский отображается. Короче какая то неразбериха

Типичная грабля. Лучше всего попинать автора на предмет фикса.
Еще, если оно на Delphi/BCB — можно попробовать подредактировать ресурсы форм внутре exe. Подкорректировать шрифт либо перевести на английский.
Еще, если оно на Delphi/BCB — можно попробовать подредактировать ресурсы форм внутре exe. Подкорректировать шрифт либо перевести на английский.
Из переписки автора ИС Дракон
Здравствуйте.Решение проблемы
Пробовал программу Dragon_2011_10_17.
В панели меню вместо кириллицы изображаются
знаки вопроса, хотя текст в окнах читается.
В версии Drakon2009_02_03, тоже самое.
У меня Windows 7 Home Premium 64 английская
с дополнительными языками, для не-юникод
программ установлен русский язык.
В Win XP Pro, наблюдается тоже самое.
Можете ли наставить на путь истинный?
Спасибо
Владимир
Здравствуйте, Геннадий.
Спасибо за подсказку.
Просмотрел сообщение.
Менял системные языковые настройки.
Нашел, что настройка Formats влияет
на отображение верхней строки меню,
хотя мне казалось, что она предназначена
для других настроек.
Буду учиться работать с программой.
Спасибо
Владимир
- Dragonedit
- 13 января 2012, 18:09
- ↑
- ↓
Ориентации на конкретный ассемблер нет.
Для графического элемента формируются комметарии, т.е. после знака ";", генерируется код с IF-ами и GOTO, вне комментариев генерируются метки соответствующие адресам переходов графического алгоритма. Текст программного приложения графического элемента должен содержать ассемблерный код, он будет помещен после сформированного комментария.
Таким образом производится сборка ассемблерного кода всего алгоритма.
Наработки практики программирования в ИС Дракон на других языках кроме Си нет.
Возможно кому нибудь этло понадобится.
Для графического элемента формируются комметарии, т.е. после знака ";", генерируется код с IF-ами и GOTO, вне комментариев генерируются метки соответствующие адресам переходов графического алгоритма. Текст программного приложения графического элемента должен содержать ассемблерный код, он будет помещен после сформированного комментария.
Таким образом производится сборка ассемблерного кода всего алгоритма.
Наработки практики программирования в ИС Дракон на других языках кроме Си нет.
Возможно кому нибудь этло понадобится.
- Dragonedit
- 16 января 2012, 18:17
- ↑
- ↓
ИМХО, тыцалка мышкой для тех кто неумеет писать код. Продолжение глупости вроде визуального IDE с рюшечками и автодополнения.
Именно для них! А зачем нужны те кто умеет писать код? Если код смогут писать те кто его не умеет писать.
Исключительно вопрос качества и стоимости сопровождения. Не поверишь, но в чем-то подобный подход, используется, например, в софте который управляет поставками электронных компонентов на автомобильных заводах европы. Только рисование такой «блок-схемы» из десяти кубиков и доводка того что написано в каждом кубике стоит несколько мульенов нерусских денег.
Вторая сторона медали в том что между разработкой програмного обеспечения и написанем кода — пропасть. Если первое это искуство, то второе — ремеслиничество. Эть как яйца Фаберже и лепка кувшинов в соседней деревне.
Вторая сторона медали в том что между разработкой програмного обеспечения и написанем кода — пропасть. Если первое это искуство, то второе — ремеслиничество. Эть как яйца Фаберже и лепка кувшинов в соседней деревне.
Дракон появился же не просто так. При создании Бурана потребовался софт для его автоматического полета. Прикинули, что надо 100500 программистов и куча времени на создание ТЗ для них. Плюс потом еще куча глухих телефонов и прочих непонятнок. Времени не было, т.к. штаты вовсю свой шаттл уже гоняли. Плюнули и сделали систему (точнее три, которые после были слиты в Дракон) позволяющую писать код прямо инженерам. И получилось таки.
Что-то есть у меня подазруха, что на Буране эта фигня аналоговая была.
Смотри, в тоже время (1988-ой) Союз ТМ-7 брал на борт как запасной бортовой компутер калькулятор Электроника МК52. Много на нем не напрограмиш с Драконами, С++ и Паскалем. ;-)
Смотри, в тоже время (1988-ой) Союз ТМ-7 брал на борт как запасной бортовой компутер калькулятор Электроника МК52. Много на нем не напрограмиш с Драконами, С++ и Паскалем. ;-)
Судя по мемуарам пусконаладчиков все там было уже вполне себе цифровое, по крайней мере во многих местах. О драконе и связи его с бураном и космическими программами тех лет говорится тоже очень много где, в том числе и авторами. Там правда оно не то, что представлено в этом посте. Тут скорей подобие по мотивам. Там же с жесткой завязкой всего на свою ОС, свой комп и железо.
Есть такая штука, CoDeSys, среда программирования для языков стандарта IEC 61131-3. Среди них есть один потрясающий язык, SFC. Он напоминает внешне ДРАКОНа, но это несколько иное. Там корни растут из сетей Петри (это где-то 60-е годы прошлого века) и основной фокус сотоит в том, что в сетях есть так называемый маркер — флажок, показывающий активный блок (там называют его шагом, я для себя называю фазой) и есть простые правила его дывижения по сети. Вот именно продвижение маркера и есть ход исполнения программы.
Кроме шагов есть переходы. Есть еще и действия. Переходы и действия пишутся на любом из доступных языков (в Кодесисе я пишу на паскале-подобном ST).
То есть, что похоже: тоже вроде блок-схемы, тоже внутренности программмируются на одном из «обычных» языков программирования, тоже бесподобная наглядность и легкость разработки.
Но, ИМХО, главное различие в том, что ДРАКОН позволяет представить программу в виде ЛЕГКОКОДИРУЕМОЙ БСА, а SFC — реальная программа. Например, когда я отлаживаю программу. я вижу (в той же Кодесис) активные шаги.
Да, и сопровождение КДС совсем иное. Там целое сообщество. Правдв, от этого и некоторая косность возникает, естественно.
Может я и ошибаюсь в том, что написал о ДРАКОНе. Тогда прошу извинить. Я только вчера узнал о его существовании и толком не очень понял. Но вещь очень понравилась. Уже представил, как здорово — контроллеры программировать на SFC, микроконтроллеры — на ДРАКОНе. Визуализация бешенная :)
Кроме шагов есть переходы. Есть еще и действия. Переходы и действия пишутся на любом из доступных языков (в Кодесисе я пишу на паскале-подобном ST).
То есть, что похоже: тоже вроде блок-схемы, тоже внутренности программмируются на одном из «обычных» языков программирования, тоже бесподобная наглядность и легкость разработки.
Но, ИМХО, главное различие в том, что ДРАКОН позволяет представить программу в виде ЛЕГКОКОДИРУЕМОЙ БСА, а SFC — реальная программа. Например, когда я отлаживаю программу. я вижу (в той же Кодесис) активные шаги.
Да, и сопровождение КДС совсем иное. Там целое сообщество. Правдв, от этого и некоторая косность возникает, естественно.
Может я и ошибаюсь в том, что написал о ДРАКОНе. Тогда прошу извинить. Я только вчера узнал о его существовании и толком не очень понял. Но вещь очень понравилась. Уже представил, как здорово — контроллеры программировать на SFC, микроконтроллеры — на ДРАКОНе. Визуализация бешенная :)
Посмотрел видеоролики примеров. Впечатлило. Хочу попробовать. Но пока не понял как получается прошивка. Кто-нибудь пояснит?
Извините, но место уточнить не могу. Вообще результатом написания программы является прошивка. Как она делается?
Вообще результатом написания программы является прошивка. Как она делается?Оба ролика именно об этом — как сделать прошивку. Выполняются следующие шаги:
— Запускаем среду, создаём графические дракон-схемы алгоритма.
— Во все иконы вписываем команды на выбранном языке программирования.
— Нажимаем клавишу Ctr+F9. Дракон-Редактор записывает файлы с исходными текстами нашей программы.
— Компилируем и линкуем эти файлы компилятором и линкером для выбранного языка.
— Линкер записывает файл, пригодный для «заливки» в процессор.
Вот это
— Компилируем и линкуем эти файлы компилятором и линкером для выбранного языка.
— Линкер записывает файл, пригодный для «заливки» в процессор.
делает внешняя программа или сам ДРАКОН?
— Компилируем и линкуем эти файлы компилятором и линкером для выбранного языка.
— Линкер записывает файл, пригодный для «заливки» в процессор.
делает внешняя программа или сам ДРАКОН?
Ну что ж. поскольку у меня проблемы начинаются именно на моменте перехода от схемы к программе то должно помочь и развить фантазию и образное мышление.
Попробуем посмотрим подумаем…
а пока почитаем.
Попробуем посмотрим подумаем…
а пока почитаем.
тут вспомнилось…
«Я применяю ДРАКОН вместе с FreeRTOS»
efanov
Пример можете показать?
очень хочется посмотреть как выглядит реализация многопоточности касательно AVR в драконе.
«Я применяю ДРАКОН вместе с FreeRTOS»
efanov
Пример можете показать?
очень хочется посмотреть как выглядит реализация многопоточности касательно AVR в драконе.
Вот Дракон-Лист из реального проекта.

Эта функция выполняется как задача FreeRTOS, причём, в 16 экземплярах. В иконах, там где это нужно, записаны вызовы функций FreeRTOS. Например, в иконе «2мс» записано: «vTaskDelay(2);», а в иконе «Захватить память» записано: «xSemaphoreTake( xMutex_eeprom_use, portMAX_DELAY );».

Эта функция выполняется как задача FreeRTOS, причём, в 16 экземплярах. В иконах, там где это нужно, записаны вызовы функций FreeRTOS. Например, в иконе «2мс» записано: «vTaskDelay(2);», а в иконе «Захватить память» записано: «xSemaphoreTake( xMutex_eeprom_use, portMAX_DELAY );».
Так, так 2 мс на задержку после передачи по RS-485…
Прерывания нихт?
зы присматриваюсь я мало-маленько к rtos но если это там так делается то не надо
Прерывания нихт?
зы присматриваюсь я мало-маленько к rtos но если это там так делается то не надо
2 мс на задержку после передачи по RS-485Не после передачи, а перед началом передачи, после включения драйвера в режим передачи.
Прерывания нихт?Откуда такой вывод? Из того, что этот алгоритм не запихнут в обработчик прерывания?
В прерывании делается минимум: принятый байт кладётся в очередь. И всё. Нагружать прерывание протокольными делами я не стал. По той причине, что на шине RS485 подключено много устройств, с разными длинами и структурами пакетов.
присматриваюсь я мало-маленько к rtos ноИнтересно, а как можно «присмотрется» к FreeRTOS, глядя на этот алгоритм? Да, в некоторых иконах тут есть вызовы API FreeRTOS. Но в передыдущей модели этого устройства алгоритм был тот же самый, хотя FreeRTOS в том варианте не было…
В описании датчика уровня топлива LLS прописано:«Мастер может отсылать команду не ранее чем через 0.5ms после получения полного ответа от устройства на предыдущую команду.» Точность отработки интервалов в данном устройстве — 1мс. Если задать задержку 1 мс, она будет плавать от 0 до 1 мс. При задании 2мс — от 1 до 2 мс.
Большое спасибо за освещение данной темы и популяризацию альтернативных (относительно мэйнстрима) средств и методов разработки.
Жаль только, что проект (насколько я понял) не опенсорсный. Особенно круто было бы реализовать в виде плагина к популярным IDE (типа eclipse, C::B) и добавить реверсивный режим. Но это я уж совсем размечтался…
Жаль только, что проект (насколько я понял) не опенсорсный. Особенно круто было бы реализовать в виде плагина к популярным IDE (типа eclipse, C::B) и добавить реверсивный режим. Но это я уж совсем размечтался…
По ИС ДРАКОН возникли некоторые измышлизмы:
1. Ее использование не отменяет необходимость знания Си (или другого используемого),
2. Генерирование кода в виде переходов goto является неудобочитаемым. Почему нельзя избавиться от этой беды? Или автор просто не может сделать иначе?
3. Сам дизайн программы и ее эргономика находятся на примитивном уровне.
1. Ее использование не отменяет необходимость знания Си (или другого используемого),
2. Генерирование кода в виде переходов goto является неудобочитаемым. Почему нельзя избавиться от этой беды? Или автор просто не может сделать иначе?
3. Сам дизайн программы и ее эргономика находятся на примитивном уровне.
1. «знание языка си» может ограничиваться вызовом готовых функций из библиотеки. И то на самом нижнем уровне, при максимальной детализации. Здравое зерно в этом есть.
2. А ассемблер, генерированный компилятором, удобочитаем? Си-код в этом случае не больше, чем буферная прослойка, к тому же обильно (и автоматически) посыпанная комментариями из алгоритма
Конкретный язык в этом случае вообще имеет второстепенную роль, что возводит дракон ещё на более высокую ступень по отношению к любым другим языкам.
Перекодировка с си на делфи и обратно одним щелчком галочки — слабо?
3. Обидеть художника всякий горазд :)
2. А ассемблер, генерированный компилятором, удобочитаем? Си-код в этом случае не больше, чем буферная прослойка, к тому же обильно (и автоматически) посыпанная комментариями из алгоритма
Конкретный язык в этом случае вообще имеет второстепенную роль, что возводит дракон ещё на более высокую ступень по отношению к любым другим языкам.
Перекодировка с си на делфи и обратно одним щелчком галочки — слабо?
3. Обидеть художника всякий горазд :)
Если внимательней посмотришь, то увидишь что ДРАКОН и Algoritm Bilder совершенно разные по сути, несмотря на внешнее сходство. А так, штука вполне хорошая, для любительских разработок хорошо подойдет.
Ну, не совсем! ДРАКОН и Algoritm Bilder — это в первую очередь идея, и от того насколько она хороша зависит ее жизнеспособность. За хорошей идеей пойдут еще разработчики, и будут дальше разрабатывать, и дальше совершенствовать эту идею. А AVRstudio в первую очередь коммерческая приманка для продажи чипов. И куда пойдет Атмел, туда и нам придеться идти. Или искать что то другое:)
А вот чтобы так не произошло проект и стоит сделать open source. Только в этом случае к разработке подключатся и другие программисты, он быстрее сможет набрать популярность. Пока исходники будут закрыты и разработкой будет заниматься один человек развитие проекта будет очень медленным, да и исчезнуть он может, как Вы и написали.
Прежде, чем начинать новый проект, надо усвоить опыт ИС Дракона.
ИС Дракон — это первопроходец, это развитие в течении 4-х лет.
В истории Дракона в 2007г. уже организовывалась большая группа для разработки, но заглохла.
С развитием ИС Дракон, сам язык получил большое развитие. Язык Дракон из идеи, никем и нигде не применяемой, стал реальным и универсальным инструментом.
ИС Дракон — это первопроходец, это развитие в течении 4-х лет.
В истории Дракона в 2007г. уже организовывалась большая группа для разработки, но заглохла.
С развитием ИС Дракон, сам язык получил большое развитие. Язык Дракон из идеи, никем и нигде не применяемой, стал реальным и универсальным инструментом.
- Dragonedit
- 17 января 2012, 21:02
- ↑
- ↓
Насколько я понимаю, существует специализация у программистов. Вопрос, сделают ли программисты микроконтроллеров среду разработки на языке Дракон для общего и широкого применения?
- Dragonedit
- 17 января 2012, 23:46
- ↑
- ↓
МК для многих — хобби. Я, например — программер-прикладник, среда разработки — вполне в области моей специализации. Не думаю, что я такой один, так что, если перевести ИС Дракон на коллективную опенсорную схему разработки — вполне может найтись несколько человек с различными интересами, которые и обеспечат хорошую применимость ИС Дракон в областях своих интересов.
Заодно это в значительной мере обезопасит ИС Дракон от смерти в случае если автор перестанет ее развивать. В мире опенсорса не так уж мало примеров программ, брошенных изначальным автором и подхваченных другими, из достаточно известных можно назвать, например, ffd-show (весьма неплохой бесплатный видеокодек, в большинстве сборок именно он декодирует большинство форматов), Media Player Classic (один из наиболее прямых плееров на базе DirectShow).
Заодно это в значительной мере обезопасит ИС Дракон от смерти в случае если автор перестанет ее развивать. В мире опенсорса не так уж мало примеров программ, брошенных изначальным автором и подхваченных другими, из достаточно известных можно назвать, например, ffd-show (весьма неплохой бесплатный видеокодек, в большинстве сборок именно он декодирует большинство форматов), Media Player Classic (один из наиболее прямых плееров на базе DirectShow).
При проверке схемы ИС Дракон выдаёт сообщение о наличии критических ошибках ввода, как только убираешь блок «Обычный цикл» ошибки пропадают, что это за ошибка, что я делаю не так?
ИС ДРАКОН таким образом протестует против бессмысленных (пустых) циклов ожидания. На схеме около некоторых точек ввода Вы видите знаки вопроса. ИС ДРАКОН ожидает, что в этих точках должны совершатся какие то полезные действия. Несмотря на эти предупреждения, код генерируется правильный. В реальной (не учебной) программе пустые циклы вряд ли останутся, и эти предупреждения исчезнут.
Ещё один вопрос, пока нигде не могу найти ответ, что такое А-приложение и Б-приложение, для чего их нужно или можно использовать?
На иконах внизу справа есть 3 квадратика. При нажатии на любой квадратик открывается текстовый редактор. Можно записать текст, и он будет сохранятся «внутри иконы». 3-й квадрат — это «программное приложение». Сюда Вы пишете операторы Вашей программы. Из них потом будет сгенерирован текст программы. А 1-й и 2-й квадратики — это и есть приложения А и Б. Их можно использовать для разных нужд. Например, написать расширенный комментарий к иконе. Или какие-то спецификации. Любой текст.
Спасибо за ответ! Про третий квадрат в Ваших видеоматериалах очень хорошо освещено, а вот первые два меня и заинтересовали, про первые квадратики в заголовках приложения ответ я нашёл на форуме OberonCore, а вот что они представляют в иконаках не нашёл(хотя и подозревал, что то же самое), но вдруг представляют ещё какие-нибудь возможности… кроме информационных.
Посмотрел эту программу — как будто на 20 лет время ушло. 95% нужно сначала продумать (шампуры, дороги царские и прочее), сам анализ прост после таких формальных ограничений. Над графикой и управлением еще работать и работать. Сам давно использую Visual Studio от MS и Enterprise Architect — и для С# и для баз данных и для С/С++ embedded. Сильно радует что там нет русских букв (и проблем с ними связанных). Размер программ несколько больше, но это меня не огорчает. Конечно если бы автор сделал плагин для анализа в какую-нибудь (можно и не в EA) систему — это было бы удобно (и вполне востребовано).
Скачать TCL/Tk — там написано.
Я уже заценил :)

Отметил ряд положительных моментов.
1. OpenSource.
2. Кодогенератор отделен от редактора. Идеологически правильно.
3. Формат хранения дракон-схем — SQLite3. Открытый и понятный.
Я тоже склоняюсь всегда к использованию понятных и общепринятых форматов, типа БД или xml
4. Изначальная кросс-платформенность
Я уже заценил :)

Отметил ряд положительных моментов.
1. OpenSource.
2. Кодогенератор отделен от редактора. Идеологически правильно.
3. Формат хранения дракон-схем — SQLite3. Открытый и понятный.
Я тоже склоняюсь всегда к использованию понятных и общепринятых форматов, типа БД или xml
4. Изначальная кросс-платформенность
Посмотрел поподробнее — ну надо же!
Рядом со всеми составными файлами .tcl находятся точно такие же .drn
Следовательно, так и есть. Среда написана на драконе и затем транслирована в Tcl/Tk.
Будет время, поколупаюсь поконкретнее.
Пытался установить на андроидный планшет, поскольку он всегда со мной, в отличие от ПЦ.
Tcl установил, запустил, но споткнулся на либе sqlite3-tcl.
Кстати говоря, предыдущая среда тоже имеет свои преимущества. Вот если бы их объединить…
И начинать надо со стандартизации формата хранения дракон-схем.
Рядом со всеми составными файлами .tcl находятся точно такие же .drn
Следовательно, так и есть. Среда написана на драконе и затем транслирована в Tcl/Tk.
Будет время, поколупаюсь поконкретнее.
Пытался установить на андроидный планшет, поскольку он всегда со мной, в отличие от ПЦ.
Tcl установил, запустил, но споткнулся на либе sqlite3-tcl.
Кстати говоря, предыдущая среда тоже имеет свои преимущества. Вот если бы их объединить…
И начинать надо со стандартизации формата хранения дракон-схем.
То, что сгенерировалось — тоже в принципе понравилось.
/* Autogenerated with DRAKON Editor 1.8 */
#include "01.Insertion.h"
static void Cook lunch(void);
static void Cook potatoes(void);
static void Make salad(void);
static void Prepare meat(void);
static void Cook lunch(void) {
/* item 4 */
Make salad
/* item 5 */
Cook potatoes
/* item 6 */
Prepare meat
return;
}
static void Cook potatoes(void) {
/* item 16 */
Peel potatoes
/* item 17 */
Boil potatoes
/* item 18 */
Add butter
return;
}
static void Make salad(void) {
/* item 10 */
Wash vegetables
/* item 11 */
Slice vegetables
/* item 12 */
Blend vegetables
return;
}
static void Prepare meat(void) {
/* item 22 */
Cut in pieces
/* item 23 */
Stuff with garlic
/* item 24 */
Bake in oven
return;
}
Идея понравилась — мне бы пригодилось. Вот только реализацию под асм не понял. Генеряться только метки. Подставлять свои операторы переходов можно либо в готовом файле — что затрется новой версией (плохо), либо ставить доп блоки с переходами — что запутает программу (очень плохо). Или я что то не понял?
Нужно просто помочь автору поправить программу в части генерации ассемблерного текста. Он очень охотно откликается на такие просьбы, и оперативно вносит исправления.
Ранее писал, повторю здесь:
Для графического элемента формируются комметарии, т.е. после знака ";", генерируется код с IF-ами и GOTO, вне комментариев генерируются метки соответствующие адресам переходов графического алгоритма. Текст программного приложения графического элемента должен содержать ассемблерный код, он будет помещен после сформированного комментария.
Таким образом производится сборка ассемблерного кода всего алгоритма.
Для графического элемента формируются комметарии, т.е. после знака ";", генерируется код с IF-ами и GOTO, вне комментариев генерируются метки соответствующие адресам переходов графического алгоритма. Текст программного приложения графического элемента должен содержать ассемблерный код, он будет помещен после сформированного комментария.
Таким образом производится сборка ассемблерного кода всего алгоритма.
- Dragonedit
- 21 января 2012, 11:03
- ↑
- ↓
В вашем программном приложении ассемблерный код должен реалиловывать все о чем написано в сгенерированном комментарии, т.е. обработку данных, проверку условий и выполнение условных и бецусловных переходов на сгенерированные метки.
Заголовок процедуры (объявления) помещается в начальной часть программного кода схемы, завершение процедуры помещается в конечной части.
Заголовок файла (лбъявления)помещается в начальной части иконы «Модуль» в схеме «Гном», завершение файла помещается в конечной части. В тексте иконы помещается имя генерируемого файла и список собираемых схем.
После трансляции файла ошибки устаняются в ИС Дракон и трансляция повторяется.
Заголовок процедуры (объявления) помещается в начальной часть программного кода схемы, завершение процедуры помещается в конечной части.
Заголовок файла (лбъявления)помещается в начальной части иконы «Модуль» в схеме «Гном», завершение файла помещается в конечной части. В тексте иконы помещается имя генерируемого файла и список собираемых схем.
После трансляции файла ошибки устаняются в ИС Дракон и трансляция повторяется.
- Dragonedit
- 21 января 2012, 11:15
- ↑
- ↓
Вы предлагаете отслеживать еще и метки? А если в алгоритме что-то поменяется — менять самому все переходы?
Метки соответствую номерам графических элементам, При перестройке алгоритма, у графических элементов номера не меняются, т.е. адреса переходов сохраняться. Для новых элементов надо прописать их программный код, если вы перенесли лиану (связь), то необходимо и соответственно изменить адрес перехода в соответствии с изменением в комментарии.
Вопрос, что же даст Дракон при программировании на ассемблере? Вы предварительно создаете и отлаживаете алгоритм, и получаете структуру программы с метками и сообщениями о необходимых переходах.
Вопрос, что же даст Дракон при программировании на ассемблере? Вы предварительно создаете и отлаживаете алгоритм, и получаете структуру программы с метками и сообщениями о необходимых переходах.
- Dragonedit
- 21 января 2012, 11:38
- ↑
- ↓
В программном приложении иконы «Развилка» я написал:
cmp R1,R2;
В тексте программы на этом месте появилось:
;if not (cmp R1,R2) then goto L11
Как это можно использовать?
cmp R1,R2;
В тексте программы на этом месте появилось:
;if not (cmp R1,R2) then goto L11
Как это можно использовать?
Я бы предусмотрел два кубика в развилке — вставка команд на да и на нет. И еще кубик замены команды гото на адресе. А то что генерится для си применять опасно и противоречит принципам дракона (как я понял). Получается что то что должно помогать — может здорово потом запутать.
ИС Дракон не ориентирован на конкретный ассембмлер, он дает указания в комментариях, что должно выполнятся в асм коде.
- Dragonedit
- 21 января 2012, 11:41
- ↑
- ↓
ИС Дракон вообще не ориентирован на конкретные языки. Программист должен умет использовать язык одного из семейства языков в среде ИС Дракон. Утверждение о «программировании без программиста» — это миф.
- Dragonedit
- 21 января 2012, 11:46
- ↑
- ↓
На конкретный ассемблер ориентировать не надо — им нет числа. Но у всех современных есть механизм макросов. Если вместо конкретных команд генерировать макросы, которым в качестве параметра передавать текст программного приложения иконы — то ИС сможет «обслужить» огромное количество разных языков без дополнительных усилий с Вашей стороны…
Конкретного асма в данном случае нет. Все они одинаковы. Но вот главное удобство дракона — автоматическая генерация переходов для асма не работает, а жаль.
Ефанов задает вопрос — написал «cmp R1,R2;»
На иконах не надо писать в терминах языка программирования, на иконах должно быть написано в терминах прикладной области, т.к. алгоритм разрабатывается в терминах прикладной области, а реализация смысла текста иконы выполняется на языке программирования в программном приложении иконы.
На иконах не надо писать в терминах языка программирования, на иконах должно быть написано в терминах прикладной области, т.к. алгоритм разрабатывается в терминах прикладной области, а реализация смысла текста иконы выполняется на языке программирования в программном приложении иконы.
- Dragonedit
- 21 января 2012, 11:57
- ↑
- ↓
Комментарии к каждой иконе вы получаете в сгенерированно тексте программного файла, Соответствующий комментарию асм код вы должны поместить в программное приложение этой иконы. При следующей генерации кода в программном файле будет комментарий и асм код к данной иконе.
- Dragonedit
- 21 января 2012, 12:13
- ↑
- ↓
программнй код не обязательно генерировать в файл, его можно получить в текстовом окне сообщений при выборе 4-го квадрата схемы или иконы «Модуль».
- Dragonedit
- 21 января 2012, 12:16
- ↑
- ↓
Вы приступите к программированию с ИС Дракон с сриого простого, и по мере освоения, усложняйте задачу.
- Dragonedit
- 21 января 2012, 11:49
- ↑
- ↓
Неужели нельзя просто сделать конфигурируемый кодогенератор, в котором можно будет настраивать свои языки?
Присоеденяюсь к вопросу! Причем конфигурацию задавать в формате текстового файла, то можно будет настраивать не только языки программирования, но и вообще все что угодно, лишь бы хватило фантазии! Так что просим автора это осуществить! Просим!
777grey
777grey
Вообще же, универсальные вещи всегда сложные, иногда не оправдывают надежды, не всегда востребованы и пользоваться ими сложно.
Может что нибудь конкретнее.
Так что просим автора это осуществить! Просим!Какм это сделать?
777grey
Причем конфигурацию задавать в формате текстового файла, то можно будет настраивать не только языки программирования, но и вообще все что угодно, лишь бы хватило фантазии!Предложите формат текстого файла для этих целей.
Вообще же, универсальные вещи всегда сложные, иногда не оправдывают надежды, не всегда востребованы и пользоваться ими сложно.
Может что нибудь конкретнее.
- Dragonedit
- 22 января 2012, 15:31
- ↑
- ↓
Смотря что именно нужно хранить. Если структуры данных описания ожидаются достаточно сложные, то можно взять, например, XML. Или JSON.
По поводу «универсальных вещей». Если говорить «вообще», то тут ответа нет, как лучше, универсальное или специализарованное. Если же применительно к инструментам разработки софта, то тут универсальность приветствуется практически всегда, достаточно посмотреть на эклипс или имакс. Да и мелкософт со своей визуалстудией тоже, почему-то, пытается соорудить универсальную среду разработки. «Наверное они что-то знают» :)
По поводу «универсальных вещей». Если говорить «вообще», то тут ответа нет, как лучше, универсальное или специализарованное. Если же применительно к инструментам разработки софта, то тут универсальность приветствуется практически всегда, достаточно посмотреть на эклипс или имакс. Да и мелкософт со своей визуалстудией тоже, почему-то, пытается соорудить универсальную среду разработки. «Наверное они что-то знают» :)
Да и мелкософт со своей визуалстудией тоже, почему-то, пытается соорудить универсальную среду разработки.И достаточно успешно, разработчики всяких компиляторов вроде GPCP, Nemerle или Chrome (ныне Delphi Prism) как правило прикручивают их именно к MSVS.
Да и настроек там столько, что даже мне страшно)
Но при этом среда удобна и достаточно легко осваивается на базовом уровне. Хотя BDS мне в этом плане нравится даже больше.
Вообще же, универсальные вещи всегда сложные, иногда не оправдывают надежды, не всегда востребованы и пользоваться ими сложно.Зато вокруг закрытых и ограниченных приходится плясать в бубном и обвешивать костылями.
Для какого-нить однокнопочного перекодировщика видео для айфона это еще приемлемо, но программистские инструменты должны быть гибкие и расширяемые. Что до сложности… Программист не домохозяйка. Впрочем, при должном дизайне гибкость совсем не обязательно комплектуется сложностью.
Предложите формат текстого файла для этих целей.Тащемта это задача программиста — формат разработать. Здесь никто (кроме автора) даже не знает как работает кодогенератор в ИС Дракон и какая ему нужна информация. Так что могу дать только общее предложение — XML :)
Мне одному будет сложновато подобное предложить, банально не хватит знании. Но можно обратиться с этим вопросом к сообществу, и сообща выработать формат такого файла. Тут куча крутых специалистов из разных сфер творчества. Можно даже топик написать по этому вопросу, где все смогут высказаться.
Например как это вижу я: есть конфигурационный фаил, имеющий текстовый формат, и подробная справка по этому файлу. Любой пользователь может взять у кого то подобный фаил нужного ему языка и использовать его до тех пор, пока он ему нужен.Если нужного ему языка нет, то он может открыть его блокнотом, и сверяясь со справкой вставить нужные команды того языка, который ему нужен.
Таким образом в кратчайшие сроки редактор будет заточен под разные языки и под разные компиляторы! Если где ошибаюсь, то пожалусто исправте меня!
Например как это вижу я: есть конфигурационный фаил, имеющий текстовый формат, и подробная справка по этому файлу. Любой пользователь может взять у кого то подобный фаил нужного ему языка и использовать его до тех пор, пока он ему нужен.Если нужного ему языка нет, то он может открыть его блокнотом, и сверяясь со справкой вставить нужные команды того языка, который ему нужен.
Таким образом в кратчайшие сроки редактор будет заточен под разные языки и под разные компиляторы! Если где ошибаюсь, то пожалусто исправте меня!
Сейчас необходимо сделать актуальную справку к программе.
К вопросу о других языках, необходимы:
1. конкретный заказчик с которым можно работать, уже знающий ИС Дракон,
2. конкретным язык. В нем:
3. оператор — комментарий до конца строки,
4. оператор — if,
5. оператор — goto,
6. операция — not.
В другом варианте — сделать сложно.
К вопросу о других языках, необходимы:
1. конкретный заказчик с которым можно работать, уже знающий ИС Дракон,
2. конкретным язык. В нем:
3. оператор — комментарий до конца строки,
4. оператор — if,
5. оператор — goto,
6. операция — not.
В другом варианте — сделать сложно.
- Dragonedit
- 22 января 2012, 17:39
- ↑
- ↓
1. конкретный заказчик с которым можно работать, уже знающий ИС Дракон,Давайте я попробую
2. конкретным язык.ASM, С, возможно — какие то другие
оператор — комментарий до конца строки,#OPERATOR_COMMENT
4. оператор — if,#OPERATOR_IF(x)
На место «х» подставлять текст из иконы «Развилка»
5. оператор — goto,#OPERATOR_GOTO(x)
На место «х» подставлять имя метки, куда переходим
6. операция — not.#OPERATOR_NOT
Кроме того, нужно дать возможность пользователю самому также задать префикс ( в данном примере "#OPERATOR_".
3. оператор — комментарий до конца строки,И в чем проблема вынести все это в конфиг, в духе этого (на примере синтаксиса ini-файла)?
4. оператор — if,
5. оператор — goto,
6. операция — not.
[C]
comment=//%comment%
if=if(%statement1% == %statement2%) {%operators%};
goto=goto %label%;
not=!%statement%
[Pascal]
comment=//%comment%
if=if %statement1% = %statement2% begin %operators% end;
goto=goto %label%;
not=not %statement%
Кроме того, лично я бы формировал из схемы дерево данных, в духе
и передавал его во внешний плагин-кодогенератор, с интерфейсом в духе
Таким образом, можно хоть картинку из исходника сгенерить, а не только текст.
TIconType = (itCondition, itOperation, ...);
PIcon = ^TIcon;
TIcon = record
IconType: TIconType;
IconText, ProgramText, AuxText1, AuxText2: PChar;
NextIcon1, NextIcon2: PIcon;
end;
и передавал его во внешний плагин-кодогенератор, с интерфейсом в духе
function GenerateCode(RootIcon: PIcon; OutFile: PChar): HRESULT;
Таким образом, можно хоть картинку из исходника сгенерить, а не только текст.
(хоть к теме весьма прохладен… ;) )
еще необходимо описать некие разделители типа таб, перевод строки, и тп.
например из описания паскаля:
чтобы потом оно выписалось во что-то типа:
еще необходимо описать некие разделители типа таб, перевод строки, и тп.
например из описания паскаля:
if=if %statement1% = %statement2% \r begin \r\t %operators% \r end;
чтобы потом оно выписалось во что-то типа:
if %statement1% = %statement2%
begin
%operators%
end;
Всем.
Спасибо за внимание к ИС Дракон и предложения к сотрудничеству. Прошу повременить с предложениями по развитию.
Мне нужно сделать актуальную справку к ИС Дракон, только потом будет возможность расширять программу.
Время ожидания можно использовать для освоения языка Дракон и ИС Дракон, наработке опыта их применения, не только для программирования, но и для алгоритмизации деятельности и знаний, разработке сопутствующей документации.
Еще важно перейти от индивидуального использования к коллективной практике применения.
С уважением, Геннадий Тышов.
Спасибо за внимание к ИС Дракон и предложения к сотрудничеству. Прошу повременить с предложениями по развитию.
Мне нужно сделать актуальную справку к ИС Дракон, только потом будет возможность расширять программу.
Время ожидания можно использовать для освоения языка Дракон и ИС Дракон, наработке опыта их применения, не только для программирования, но и для алгоритмизации деятельности и знаний, разработке сопутствующей документации.
Еще важно перейти от индивидуального использования к коллективной практике применения.
С уважением, Геннадий Тышов.
- Dragonedit
- 22 января 2012, 19:16
- ↑
- ↓
А мне вот не понравилось… Прямоугольнички и линии токо рисуешь, ни связи между ними — любой элемент как хочешь двигать можно, теряя связь с другими элементами, ни автоматического сдвига, если что то добавить в середину надо… Пейнт с предопределенными фигурами… Хотя я может просто невкурил. Хотя желания дальше вкуривать нет, по моему ИС Дракон лучше для работы приспособлен…
Почему ждем?
Здесь выложен новый выпуск ИС Дракон от 23.01.2012. Финальная версия, предполагается будет стабильной.
Здесь выложен новый выпуск ИС Дракон от 23.01.2012. Финальная версия, предполагается будет стабильной.
- Dragonedit
- 25 января 2012, 18:12
- ↑
- ↓
Можно сделать перевод на другой язык.
Язык должен позволять записывать текстовые файлы в формате ANSI.
Перевод выполняется программой — переводчиком на сайте Google. Пользователь может отредактировать файл словаря.
Пишите, какой нужен язык?
Язык должен позволять записывать текстовые файлы в формате ANSI.
Перевод выполняется программой — переводчиком на сайте Google. Пользователь может отредактировать файл словаря.
Пишите, какой нужен язык?
- Dragonedit
- 26 января 2012, 21:23
- ↑
- ↓
Condor
В поставке есть папка с файлами словарей на английском и немецких языках переводов всех текстов интерфейса. Необходимый файл, соответствующий локализации компьютера, скопируйте в папку программы.
Переводы выполнены программой переводчиком на сайте Google. Вы можете сами корректировать перевод в редакторе «Блокнот».
Сделайте и о результате расскажите здесь.
В поставке есть папка с файлами словарей на английском и немецких языках переводов всех текстов интерфейса. Необходимый файл, соответствующий локализации компьютера, скопируйте в папку программы.
Переводы выполнены программой переводчиком на сайте Google. Вы можете сами корректировать перевод в редакторе «Блокнот».
Сделайте и о результате расскажите здесь.
- Dragonedit
- 27 января 2012, 18:36
- ↑
- ↓
Нечто подобное имеете в виду? ;)

Это окно редактирования настроечного модуля.
Есть еще непосредственно XML, доступный для прямого исправления:
"<?xml version=«1.0» encoding=«windows-1251»?>
__ПРОГР &name;;
__НАЧАЛО _10 &address;;
*
__АДРП &address;;
,&address;);
__КОНЕЦ;
М#
:
;
__БПВТ АВХ3.Д2;
__КОНС 111753;
__КОНС _8 &address;;
__БПВТ АВХ3.Д2;
__КОНС 111776;
__КОНС _8 &address;;
__ВСТ &address;;
__БП &address;;
__БПВТ AВХ1.Д2;
_КОНС _8 &adrtime;;
_КОНС _8 &address;;
+
1000
10000
2
__КОНЕЦ;
__КОНЕЦ;
"

Это окно редактирования настроечного модуля.
Есть еще непосредственно XML, доступный для прямого исправления:
"<?xml version=«1.0» encoding=«windows-1251»?>
__ПРОГР &name;;
__НАЧАЛО _10 &address;;
*
__АДРП &address;;
,&address;);
__КОНЕЦ;
М#
:
;
__БПВТ АВХ3.Д2;
__КОНС 111753;
__КОНС _8 &address;;
__БПВТ АВХ3.Д2;
__КОНС 111776;
__КОНС _8 &address;;
__ВСТ &address;;
__БП &address;;
__БПВТ AВХ1.Д2;
_КОНС _8 &adrtime;;
_КОНС _8 &address;;
+
1000
10000
2
__КОНЕЦ;
__КОНЕЦ;
"
Нет, это из другой среды. На протяжении нескольких лет мы создаем нечто подобное (система автоматизации процессов создания и верификации управляющих программ с элементами визуального программирования), но для спецзаказчика. В том числе есть генератор управляющей программы, с настройкой на различные ассемблеры или языки высокого уровня, для чего создана отдельная программа-конфигуратор. Сами настройки хранятся в файле XML. Вроде о подобном идет речь, поэтому и привел как возможный пример.
Здесь об описании различных языков программирования для ИС Дракон.
- Dragonedit
- 31 января 2012, 18:51
- ↑
- ↓
Прикольная книга. Им бы тексты для сект писать xD. Затягивает. Половину прочитал. Действительно простые правила, и действительно читабельность в разы увеличивается.
На уроках информатики начал применять некоторые эти правила. Без дракона, на простых блок-схемах.
На уроках информатики начал применять некоторые эти правила. Без дракона, на простых блок-схемах.
- ProgrammerForever
- 25 января 2012, 12:42
- ↓
Какого дьявола видео запаковано в exe? Или это такой новый метод обучения — просмотр без возможности перемотки???
- batman12345
- 25 января 2012, 14:43
- ↓
Как Вам сказать… Пропагандируешь — пропагандируй. Или этот язык не для линуксоидов? Тогда укажи это в шапке. Впрочем, чего это я разкомандовался? Оставь всё как есть! Ё-моё, опять директива. А-а-а-а-а-а-а-а!!!
- batman12345
- 26 января 2012, 07:51
- ↑
- ↓
Впрочем, для себя я проблему решил сдёрнув видео с ютуба плагином Оперы.
- batman12345
- 26 января 2012, 07:57
- ↑
- ↓
В чём проблема-то? Купите доменное имя, оплатите хостинг, купите программу для записи роликов, более крутую, чем у меня — и сделайте всё хорошо и правильно. Это будет гораздо лучше, чем тявкать тут на караван.
Можно я встряну в вашу милую беседу? Спасибо.
Но зачем же всё покупать? Есть море безплатных хостингов, да и покупать программы не наш метод. ;-))). Не бери в голову этот оффтопик — брюзжу.
А за уроки — благодарю! Переписываю сейчас один проектик под Дракона, интересно что получится…
Но зачем же всё покупать? Есть море безплатных хостингов, да и покупать программы не наш метод. ;-))). Не бери в голову этот оффтопик — брюзжу.
А за уроки — благодарю! Переписываю сейчас один проектик под Дракона, интересно что получится…
- batman12345
- 26 января 2012, 09:44
- ↑
- ↓
Бесплатного на самом деле, ничего не бывает. Бесплатный хостинг «гарантирует», что на страничке будет реклама какого-нибудь непотребства. Бесплатная программа для захвата экрана не позволяла сделать файлы, пригодные для выкладывания на ютьюб. А насчёт видео в exe — мне просто очень понравился авторский формат, который в 5-6 мегабайтном файле сохраняет 15 минутный ролик без потери качества. Как альтернатива «стандартному» ролику на ютьюбе. Который в 10 раз больше, а показывает «размытое» видео.
PS: Все материалы на странице лежат с разрешения их авторов.
PS: Все материалы на странице лежат с разрешения их авторов.
Ну, положим, караван из одного человека несколько… скажем так, жидковат. Да и иметь мнение отличное от вашего и высказывать его, вовсе не значит тявкать.
иметь мнение отличное от вашего и высказывать егоИ имейте, и высказывайте. Но если в «высказывании» употребляется определение «дебилизм» — то это, всё таки, тявканье!
По поводу «каравана из одного человека» — неверно. Тут довольно много людей высказались положительно о языке, и даже об уроках. Так что — вполне себе «караван».
оххх… забавно. но давайте обратимся к истокам. «собака лает, караван идет». заметьте, «лает», а не «тявкает». минус автору высказывания за излишне вольную трактовку.
далее. «караван» — это асм, С с плюсами, делфи, перл с пхп и прочие UML. а дракон… так, скажем честно, очередная поделка энтузиаста. не более того. и уж никак не «караван»…
далее. «караван» — это асм, С с плюсами, делфи, перл с пхп и прочие UML. а дракон… так, скажем честно, очередная поделка энтузиаста. не более того. и уж никак не «караван»…
А с чего вы взяли, что все, кто высказался положительно о языке и об содержимом уроков имеют отношение к вашему «каравану» в котором вы один пакуете видео, формат которого, собственно, и стал причиной минимум двух резких высказываний в ваш адрес?
К слову, формат EXE для видеоуроков это даже не дебилизм, это вообще за пределами добра и зла… Так что с вами еще по доброму, могли и шашкой рубонуть.
К слову, формат EXE для видеоуроков это даже не дебилизм, это вообще за пределами добра и зла… Так что с вами еще по доброму, могли и шашкой рубонуть.
Ну если учесть используемый кодек видео (он ориентирован именно на обучающие ролики по программам) — не такой уж дебилизм. Любые альтернативы, ориентированные на нормальное видео, дадут худшую четкость при заметно большем размере.
Годное обучающее видео. Отличное качество, и никаких сомнительных исполняемых файлов. Алсо качественное видео с экрана можно записать и обработать даже VirtualDub'ом, при прямоте рук достаточной, чтобы расставить несколько галочек (иначе же не помогут никакие платные кодеки, ни драконы, и т.д.).
Если это Ваше видео, и, следовательно сайт www.bsvi.ru тоже Ваш — снимаю шляпу, и готов её даже съесть. Но очень сильно сомневаюсь в этом. Потому что люди, которые что то делают сами — умеют ценить также и труд других людей.
Посмотрел. Да, качество на удивление хорошее.
Вот только там 42МБ на 5 минут, а тут 7МБ на 18 минут при не меньшем качестве. А обучающие ролики в составе КОМПАС 5.11, помнится мне, вообще весили по 2.5 метра при длительности 5-10 минут и сжатии видео без потери качества. Тоже самовоспроизводящиеся.
Кроме того, на ютуб это видео тоже залито теперь, как я понимаю. Так что кто не желает связываться с подобным самовоспроизводящимся видео — могут посмотреть там.
Вот только там 42МБ на 5 минут, а тут 7МБ на 18 минут при не меньшем качестве. А обучающие ролики в составе КОМПАС 5.11, помнится мне, вообще весили по 2.5 метра при длительности 5-10 минут и сжатии видео без потери качества. Тоже самовоспроизводящиеся.
Кроме того, на ютуб это видео тоже залито теперь, как я понимаю. Так что кто не желает связываться с подобным самовоспроизводящимся видео — могут посмотреть там.
Поскольку картинка статическая в основном, паковать её видеокодеками нецелесообразно.
Скорее всего применяется gif-подобный алгоритм. Кодирование изменений в ограниченных областях с ограниченной палитрой.
Скорее всего применяется gif-подобный алгоритм. Кодирование изменений в ограниченных областях с ограниченной палитрой.
Не только. Она еще и имеет специфические характеристики — мало цветов, резкие переходы, etc. Под все это алгоритм и заточен.
Кроме того, в принципе может применяться тот же подход, что в радмине — запись команд GDI.
Короче, это специализированный инструмент и по параметрам он лучше. Но по этой же причине требует специализированный плеер.
Другое дело, что сейчас это не так уж и оправдано. 42 метра давно уже никого не напрягают.
Кроме того, в принципе может применяться тот же подход, что в радмине — запись команд GDI.
Короче, это специализированный инструмент и по параметрам он лучше. Но по этой же причине требует специализированный плеер.
Другое дело, что сейчас это не так уж и оправдано. 42 метра давно уже никого не напрягают.
По теме:
Скомпилил в AVRstudio5 — полёт нормальный.
Хочется, однако, попенять автору ИС Дракон: сам-то язык вполне эргономичный, а вот ИС ни разу не интуитивная. Позапрошлый век какой-то. Без учебного фильма просто плюнул бы и забыл. Вот почему в России всегда так: задумка блестящая — исполнение никудышное.
Кстати, интересно — автор ИС Дракон пишет ИС Дракон в ИС Дракон? :)))
Скомпилил в AVRstudio5 — полёт нормальный.
Хочется, однако, попенять автору ИС Дракон: сам-то язык вполне эргономичный, а вот ИС ни разу не интуитивная. Позапрошлый век какой-то. Без учебного фильма просто плюнул бы и забыл. Вот почему в России всегда так: задумка блестящая — исполнение никудышное.
Кстати, интересно — автор ИС Дракон пишет ИС Дракон в ИС Дракон? :)))
- batman12345
- 26 января 2012, 12:18
- ↓
Скомпилил в AVRstudio5 — полёт нормальный.Очень хорошо, значит при создании ИС Дракон решены все функциональные задачи.
Хочется, однако, попенять автору ИС Дракон: сам-то язык вполне эргономичный,Очень хорошо, с языком познакомились и он вас устраивает (есть улучшение работы ума).
а вот ИС ни разу не интуитивная.Для вас не интутивна — это понятно, вы впервые встретились с новым классом программы — инструментом техники мышления.
Позапрошлый век какой-то.Все сделано для того, чтобы ваше внимание не отвлекалось на внешние оформительские детали и концентрировалось на решении стоящей перед вами задачи.
Вот почему в России всегда так: задумка блестящая — исполнение никудышное.Не согласен с вами, вы же быстро поняли язык и быстро освоили ИС.
ИС Дракон при написании не использовался, применялась обычная технология программирования на Делфи.
- Dragonedit
- 26 января 2012, 21:06
- ↑
- ↓
Все сделано для того, чтобы ваше внимание не отвлекалось на внешние оформительские детали и концентрировалось на решении стоящей перед вами задачи.Вот только не нужно возводить аскетизм в абсолют. Ведь следуя даже логике визуального разделения (смыслового и функционального) пиктограммы смотрелись бы куда уместнее (и красивше), чем 6 одинаковых стрелочек «Лист»,«Версия»,«Х».
А чем плоха подсветка синтаксиса?
Почему при наличии ошибок не подсвечиваются ошибочные иконы при проверке? — ищи эти номерочки по всему листу :(((
Несколько невнятно реализована иерархия листов в проекте.
Всё о чём я пишу — это же и есть банальная эргономика, не так ли?
применялась обычная технология программирования на Делфинеудивительно
- batman12345
- 27 января 2012, 06:55
- ↑
- ↓
Почему при наличии ошибок не подсвечиваются ошибочные иконы при проверке? — ищи эти номерочки по всему листу :(((Процедуда поиска предельно простая. Выделить номер или строку с номером и выполните соответствующий пункт в меню или нажмите горячую клавишу.
- Dragonedit
- 27 января 2012, 17:52
- ↑
- ↓
Пытался сегодня перенести объёмную функцию в дракон.
Накололся на довольно досадные грабли.
При вставке условия внутри ветки выбора правый выход слипся со следующей веткой выбора, которая правее.
Если перенести лиану непосредственно под условие, то разлипается и образует маленькую петельку.
А вот если там уже стоят какие-то действия и надо их объехать, то уже никак.
По крайней мере я ниасилил.
Накололся на довольно досадные грабли.
При вставке условия внутри ветки выбора правый выход слипся со следующей веткой выбора, которая правее.
Если перенести лиану непосредственно под условие, то разлипается и образует маленькую петельку.
А вот если там уже стоят какие-то действия и надо их объехать, то уже никак.
По крайней мере я ниасилил.
Если ИС Дракон неправильно прорисовала линии, то для устранения проблем можно двигать углы линий при нажатой клавише Shift.
Я посмотрел, но не понял — а что же Вы там хотели сделать? Зря вы звук не включили.
И ещё, если позволите — совет: Вы строите алгоритм в последней ветке. Не надо этого делать. Последняя ветка — это ветка выхода. Лучше всего, если в ней будет всего одна икона: «Конец».
И ещё, если позволите — совет: Вы строите алгоритм в последней ветке. Не надо этого делать. Последняя ветка — это ветка выхода. Лучше всего, если в ней будет всего одна икона: «Конец».
Я в общем-то сделал на какой то момент времени, обводную петлю вокруг второй ветки выбора.
Справа должно быть ещё 2 таких же ветки, но они почему-то слипаются с петлей от развилки, и их уже никак не разлепить. Вот в чем вопрос.
Справа должно быть ещё 2 таких же ветки, но они почему-то слипаются с петлей от развилки, и их уже никак не разлепить. Вот в чем вопрос.
В том видео, которое я посмотрел, ИС Дракон ведёт себя адекватно, не позволяя нарушить правила построения Дракон-схемы.
Икона «Конец» должны быть крайней справа. Поэтому, ИС Дракон не позволяет заземлять лианы в этой ветке.
Но первое, что нужно сделать — вставить новую ветку правее «Обработка данных АЦП», и перенести туда (выделить всё между «Измерение уровня» и «Конец», затем Сtrl+C/Ctrl+V) всё из крайней правой ветки. Назвать новую ветку «Измерение уровня», а крайнюю справа — «Выход». В ней должна остаться только икона конец.
Икона «Конец» должны быть крайней справа. Поэтому, ИС Дракон не позволяет заземлять лианы в этой ветке.
почему-то слипаются с петлей от развилки,А как должно быть по Вашему замыслу? Напишите конкретно, примерно так: «Из иконы 31 по выходу „Да“ алгоритм должен пойти ...»
Но первое, что нужно сделать — вставить новую ветку правее «Обработка данных АЦП», и перенести туда (выделить всё между «Измерение уровня» и «Конец», затем Сtrl+C/Ctrl+V) всё из крайней правой ветки. Назвать новую ветку «Измерение уровня», а крайнюю справа — «Выход». В ней должна остаться только икона конец.
Понятно. Немножко погодя эти вещи перестанут Вас беспокоить, и всё будет получатся «само собой». Для начала я могу Вам посоветовать «заземлить» лианы от икон 56 и 22. Именно в таком порядке. Посмотрите на получившуюся схему, и решайте, что с ней делать дальше.
Строить длинные ветви Дракон не запрещает, но лучше не злоупотреблять этим. Лучше сделать несколько веток. При этом, в одной ветке нужно решать одну задачу, имя котрой выносить в «шапку». Алгоритм от этого становится яснее.
Например, на Вашей схеме есть смысл сделать ветки «Старт цикла измерений»,«Первый отсчёт», «Второй отсчёт», «Третий отсчёт». А еще лучше номера заменить чем то, что более подходит по смыслу. У меня на аналогичной схеме есть ветки «Напряжение борт сети» «Напряжение аккумулятора» и так далее…
Строить длинные ветви Дракон не запрещает, но лучше не злоупотреблять этим. Лучше сделать несколько веток. При этом, в одной ветке нужно решать одну задачу, имя котрой выносить в «шапку». Алгоритм от этого становится яснее.
Например, на Вашей схеме есть смысл сделать ветки «Старт цикла измерений»,«Первый отсчёт», «Второй отсчёт», «Третий отсчёт». А еще лучше номера заменить чем то, что более подходит по смыслу. У меня на аналогичной схеме есть ветки «Напряжение борт сети» «Напряжение аккумулятора» и так далее…
Посмотрел ваше видео.
Вы неоднократно пытаетесь пересадить лиану.
После выбора в контекстном меню пункта «Пересадить лиану», лиана обрывается и повисает, вы выбираете точку ввода для присоединения лианы. Предлагаю мысленно представить ломанную линию до точки присоединения, при этом она не должна пересекать другие линии. Если это требование не будет выполнено, то пересадка лианы не будет произведена.
Вы неоднократно пытаетесь пересадить лиану.
После выбора в контекстном меню пункта «Пересадить лиану», лиана обрывается и повисает, вы выбираете точку ввода для присоединения лианы. Предлагаю мысленно представить ломанную линию до точки присоединения, при этом она не должна пересекать другие линии. Если это требование не будет выполнено, то пересадка лианы не будет произведена.
- Dragonedit
- 28 января 2012, 15:03
- ↑
- ↓
каким образом в среде Тышова, писать код для ветвлений на assembler. Судя инструкции к программе ассемблер как язык включен в «другие» по своей лексике и структуре. Каким то образом можно использовать генерируемые средой метки? Как макроподстановку в коде?
- digitalinvitro
- 27 января 2012, 05:08
- ↓
Вы просматриваете сгенерированные комментарии к каждой иконе и в П тексте иконы пишите соответствующий ассемблерный код, используя в нем указанные метки. Потом выполняете генерацию программного кода, т.е. ассемблерного, выполняете его трансляцию и отрабатывает ошибки, доработки выполняете в П текстах Дракон-схемы, так до завершения программирования.
Таким образом ИС Дракон генерирует только комментарии, метки и структуру программы, весь ассемблерны код необходимо написать самостоятельно.
Таким образом ИС Дракон генерирует только комментарии, метки и структуру программы, весь ассемблерны код необходимо написать самостоятельно.
- Dragonedit
- 27 января 2012, 05:56
- ↑
- ↓
" в П тексте иконы пишите соответствующий ассемблерный код, используя в нем указанные метки."
понятно, т.е. в конструкцию if() подстановка goto возможна, а в ассемблерную конструкцию подстановка метки не возможна? Так будет всегда или планируется «шаблонизация» языковых конструкции, вполне бы устроило подстановка метки в какой либо заранее описанный токен. Для примера &label_then как адрес перехода (метка) при истинности условия. И выражения mnemocode &label_then как общая конструкция условного перехода. В конце концов condition подставляется в исходный текст на Си в конструкцию if(....).
понятно, т.е. в конструкцию if() подстановка goto возможна, а в ассемблерную конструкцию подстановка метки не возможна? Так будет всегда или планируется «шаблонизация» языковых конструкции, вполне бы устроило подстановка метки в какой либо заранее описанный токен. Для примера &label_then как адрес перехода (метка) при истинности условия. И выражения mnemocode &label_then как общая конструкция условного перехода. В конце концов condition подставляется в исходный текст на Си в конструкцию if(....).
- digitalinvitro
- 27 января 2012, 08:51
- ↑
- ↓
Уважаемые участники блога, заинтересованные в АСМ.
Приношу свои извинения, программа в этой части не проработана, т.к. ассемблерный код формируется не корректно.
Сейчас ИС Дракон дорабатывается и будет вам предоставлен через 1 день.
Приношу свои извинения, программа в этой части не проработана, т.к. ассемблерный код формируется не корректно.
Сейчас ИС Дракон дорабатывается и будет вам предоставлен через 1 день.
- Dragonedit
- 27 января 2012, 18:04
- ↑
- ↓
Уважаемые участники блога, заинтересованные в АСМ.
Приношу свои извинения, за 1 день не сделал, работа по данной теме продолжается.
Приношу свои извинения, за 1 день не сделал, работа по данной теме продолжается.
- Dragonedit
- 29 января 2012, 20:37
- ↑
- ↓
Резюмирую для себя все прочитанное. В целом концепцию приняли. Выделились основные группы «недовольных»:
— те, кто полностью не принял (им можно только посоветовать не портить нервы себе и другим и оставить топик),
— не довольные эргономикой и интуитивностью (мне бы хватило, например, добавления анг языка и добавление названий полей ввода),
— желающие реальной поддержки других языков программирования (поскольку сообщество ориентировано на микроконтроллеры, где пишут не только на С но и на паскале, асме и еще бог знает на чем, было бы не плохо их поддержать),
— ну и просто не довольные всем.
Не этично и глупо что-то требовать от авторов. Остается только просить и ждать. Проект в развитии и многое еще может измениться.
— те, кто полностью не принял (им можно только посоветовать не портить нервы себе и другим и оставить топик),
— не довольные эргономикой и интуитивностью (мне бы хватило, например, добавления анг языка и добавление названий полей ввода),
— желающие реальной поддержки других языков программирования (поскольку сообщество ориентировано на микроконтроллеры, где пишут не только на С но и на паскале, асме и еще бог знает на чем, было бы не плохо их поддержать),
— ну и просто не довольные всем.
Не этично и глупо что-то требовать от авторов. Остается только просить и ждать. Проект в развитии и многое еще может измениться.
Прошу прощения что влезаю в Ваше резюме, но на кончике пера можно сказать в ИС Дракон — как в интегрированную среду проситься форма «отладки», хотелось бы видеть как алгоритм работает на схеме.
От автора согласен просить глупо, а возможно ли где то на форуме easyelectronics обсуждать ИС-Дракон в применении к МК.
От автора согласен просить глупо, а возможно ли где то на форуме easyelectronics обсуждать ИС-Дракон в применении к МК.
- digitalinvitro
- 27 января 2012, 12:03
- ↑
- ↓
Не понял вас. Вы предлагаете из пошагового отладчика просмотреть последовательность выполнения икон в дракон схемах?
Сейчас для этого есть следующие средства:
1. В меню пункт «Найти схему или икону с номером».
2. При программировании на Си. При выполнении вашей программы можно получить последовательность выполняемых икон. Для этого необходимо маличие макросов «trassa_macro(NN)» и «trassa_macro_ns(NN)», и установка в меню пункта «Макрос трассировки к иконам с меткой».
Сейчас для этого есть следующие средства:
1. В меню пункт «Найти схему или икону с номером».
2. При программировании на Си. При выполнении вашей программы можно получить последовательность выполняемых икон. Для этого необходимо маличие макросов «trassa_macro(NN)» и «trassa_macro_ns(NN)», и установка в меню пункта «Макрос трассировки к иконам с меткой».
- Dragonedit
- 28 января 2012, 15:43
- ↑
- ↓
«trassa_macro(NN)» и «trassa_macro(NN)» имена макросов объявляются в заголовочном файле и для ИС Дракон являются предопределенными. Именно они вставляются ИС Драконом в сгенерированный Си код.
- Dragonedit
- 28 января 2012, 16:05
- ↑
- ↓
То что это имена макросов я понял, меня больше интересовало на каком (человеческом) языке это слово. В английском такого нет.
На транслите. Это же очевидно. Так что я скорее склонен в этом намек видеть, а не вопрос.
Автор ИС Дракон с английским явно не дружит.
Автор ИС Дракон с английским явно не дружит.
Возможно надо писать иначе, но так было сделано и возражений не поступило.
По поводу английского верно, основной язык 1С.
По поводу английского верно, основной язык 1С.
- Dragonedit
- 28 января 2012, 18:08
- ↑
- ↓
На первой странице «Трасса» используется исключительно как название фирмы. А оно разумеется не переводится, а транслитерируется.
Да и не знающих английский более чем достаточно, вспомнить хотя бы «Институт белки». Там тоже в списке ляпов транслита хватает.
Да и не знающих английский более чем достаточно, вспомнить хотя бы «Институт белки». Там тоже в списке ляпов транслита хватает.
Меня условно можно отнести к «недовольным», хотя я, скорее, «недоумевающий».
Я ко всякому инструменту для програмеров подхожу со своей програмерской колокольни. Относительно каждого инструмента я пытаюсь понять, вобщем, две вещи — сначала то, какие задачи им можно решать (или, по крайней мере, какие задачи собирался им решать автор) и насколько он хорош для решения этих задач. Так вот относительно ДРАКОНА я так и не могу дойти до второй части, потому что никак не могу найти ответ на первую. Да, тут много написано и постоянно подчеркивается акцент ДРАКОНа на алгоритме, хотя акцент, на самом деле, на блок-схеме, которые в реальной програмерской жизни давно перестали использовать в виду бесполезности. Я попытался тонко намекнуть о существовании таких вещей, например, как диаграмма переходов. Но такое ощущение, что я писал об этом на английском. Так что я наблюдаю «движняк» вокруг ДРАКОНа с недоумением, поскольку не понимаю какие реальные (а не декларируемые) задачи он позволяет решать в реальной же жизни. То, что на нем писали программы, увы, на вопрос не отвечает, можна и микроскопом гвозди забивать, а бухгалтерию на асме писать. Пока из внятных ответов я вижу только два — рисовать блок-схемы и объяснять начальнику «как это работает», причем обе задачи сугубо виртуальные. Может авторы что-то смогут внятно объяснить зачем же нужен ДРАКОН и для решения каких задач он предназначен?
Я ко всякому инструменту для програмеров подхожу со своей програмерской колокольни. Относительно каждого инструмента я пытаюсь понять, вобщем, две вещи — сначала то, какие задачи им можно решать (или, по крайней мере, какие задачи собирался им решать автор) и насколько он хорош для решения этих задач. Так вот относительно ДРАКОНА я так и не могу дойти до второй части, потому что никак не могу найти ответ на первую. Да, тут много написано и постоянно подчеркивается акцент ДРАКОНа на алгоритме, хотя акцент, на самом деле, на блок-схеме, которые в реальной програмерской жизни давно перестали использовать в виду бесполезности. Я попытался тонко намекнуть о существовании таких вещей, например, как диаграмма переходов. Но такое ощущение, что я писал об этом на английском. Так что я наблюдаю «движняк» вокруг ДРАКОНа с недоумением, поскольку не понимаю какие реальные (а не декларируемые) задачи он позволяет решать в реальной же жизни. То, что на нем писали программы, увы, на вопрос не отвечает, можна и микроскопом гвозди забивать, а бухгалтерию на асме писать. Пока из внятных ответов я вижу только два — рисовать блок-схемы и объяснять начальнику «как это работает», причем обе задачи сугубо виртуальные. Может авторы что-то смогут внятно объяснить зачем же нужен ДРАКОН и для решения каких задач он предназначен?
Поскольку в нынешней портянке из 250+ отзывов очень тяжело ориентироваться (особенно с 7" планшетки), я создал тему на форуме.
Предлагаю всем заинтересованным участникам обсуждения переместиться туда, а автору статьи поместить ссылку на тему на видном месте.
Предлагаю всем заинтересованным участникам обсуждения переместиться туда, а автору статьи поместить ссылку на тему на видном месте.
ИС Доработан для программирования на различных, произвольных языках программирования и ассемблеров. Смотрите здесь
- Dragonedit
- 08 февраля 2012, 20:52
- ↑
- ↓
Комментарии (279)
RSS свернуть / развернуть