Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Язык ДРАКОН
Шарага > Soft - НЕ железо > Программирование МК
Страницы: 1, 2, 3, 4, 5
MrYuran
http://drakon-practic.ru/
Обсуждение у ДиХалта

Обсудим?
Давно хотел попробовать, да все никак... Вот нашелся добрый чел, спропагандировал.
Интерес чисто академический, на практике вряд ли можно пока применить.
Так же, как и фортообразные метасистемы.
orthodox
Цитата(MrYuran @ 11.1.2012, 11:01) *
http://drakon-practic.ru/
Обсуждение у ДиХалта

Обсудим?
Давно хотел попробовать, да все никак... Вот нашелся добрый чел, спропагандировал.
Интерес чисто академический, на практике вряд ли можно пока применить.
Так же, как и фортообразные метасистемы.

Скачал PDF , почитал.
Можно , наверное, пользоваться и без среды-IDE, чисто для
разложения задачи. Наверное, и у них с этого начиналось, мне кажется...
А в целом идея более чем здравая..

Цитата(_pasha @ 11.1.2012, 11:31) *

Идеи носятся в воздухе, ага.
Вопрос, что есть приоритетом в разработке подобных систем.
Пока и в драконе - приоритет есть необразованность постановщика задачи в программировании.
Что есть плохо. («Я мог бы ехать по навигатору с коробкой-автоматом, но я все равно не еду, так как водить не умею»)
Но здравое зерно в как бы отделении «чисто железных» элементов от
программирования как бы, что ведет возможно к унификации где-то там, за счет
неформального запрета изящной чисто программистской оптимизации...
Что в конечном итоге ведет к приближению к исходной задаче, но лишает
иногда таких вкусных вариантов из-за абстрагирования от нее...
Ну ладно, надежность зато...
MrYuran
Цитата(GuruKiller @ 11.1.2012, 12:30) *
Или подождём dxp smile.gif

Насчет ОС я пошутил, на самом деле параллельно абсолютно.
_pasha
Цитата(orthodox @ 11.1.2012, 11:43) *
А в целом идея более чем здравая..

Вот мне такие идеи пока больше в реверс-направлении нравятся. Типа understand или Crystal_FLOW
К сожалению, фришных такинет. Или что-то поменялось?
MrYuran
Цитата(_pasha @ 11.1.2012, 14:06) *
Вот мне такие идеи пока больше в реверс-направлении нравятся. Типа understand или Crystal_FLOW
К сожалению, фришных такинет. Или что-то поменялось?

А мне - двунаправленные. Таких точно не встречал, даже нефришных.
С хранением промежуточного результата в человекопонятном формате.
_pasha
Цитата(MrYuran @ 11.1.2012, 12:35) *
А мне - двунаправленные. Таких точно не встречал, даже нефришных.
С хранением промежуточного результата в человекопонятном формате.

Есть пока еще слабая претензия, но завязанная на автоматы, по Миро Самеку, автору "Practical Statecharts in C"
Только я забыл как оно называеццо. Но реверсит только генерённое собою же
orthodox
Дочитал про дракона наскоро.
Таки да, реальная вещь. Понравилось.
_pasha
Цитата(orthodox @ 11.1.2012, 14:18) *
Таки да, реальная вещь. Понравилось.

Мне нравится другое. В то время, как братья по разуму из остального мира, описывая очередное чхудо конструктивной мысли, щедро награждают его(чудо) эпитетами навроде "modern/yet another/low cost/smart etc", здеся всё, - как серпом по молоту "СВЕРХВЫСОКАЯ ПОНИМАЕМОСТЬ".
После чего серьёзно относиться к опусу уже невозможно. biggrin.gif
orthodox
Цитата(_pasha @ 11.1.2012, 15:34) *
Мне нравится другое. В то время, как братья по разуму из остального мира, описывая очередное чхудо конструктивной мысли, щедро награждают его(чудо) эпитетами навроде "modern/yet another/low cost/smart etc", здеся всё, - как серпом по молоту "СВЕРХВЫСОКАЯ ПОНИМАЕМОСТЬ".
После чего серьёзно относиться к опусу уже невозможно. biggrin.gif

Да, Вы правы.
Говорить правду о продукте — это весьма некоммерческий подход,
не годящийся даже для бесплатного распространения.
Чего-то да надо бы было приврать...
Но вишь оно как, тут возникнет противоречие с основной идеей тогда,
так что имеется тупик на этом пути.

А может, помочь авторам?
Сделать такую красивую обертку из красивых слов?
Только надо ли оно им?

В общем, примерно так: возможный недостаток я выше указал:
вероятен весьма тупой код на выходе. Но это ж не доказано, пока не попробовал.
Есть и другой вариант : мышление человека вариативно, но есть предпочитаемые варианты.
Если из них некоторые совпадают со способом мышления МК, что весьма вероятно,
то может получиться (а учитывая, что уже лет 15 используется в серьезных темах — то уже)
просто бомба. Вот так примерно они могли угадать и весьма вероятно, что угадали.
Это примерно аналог RISC систем в программировании — минимум простых ходов,
которые уже можно и оптимизировать. «...Стандарт, говоришь?...» Вот с такого подхода
надо начинать стандарты, а после камни под это делать...и компиляторы...


Кстати, на их примерах дракон-схемы (те, что силуэты) со всеми их особенностями,
действительно разгружают мозг, насколько могу себе вообразить.
Все эти мелкие ограничения для однозначности понимания — просто бальзам на душу.
Можно говорить, что привык к иному, вписался — это будет правдой.
Но не стоит думать, что это чушь или даже неважно — тут надо вкурить сначала.
Кто-то не вкурит, тут уже стоит собрать статистику — у вкуривших 100% IMHO по жизни с проектами меньше проблем —
несмотря что ранее дракона не видели. Наверняка свои аналоги имелись — как именовать переменные, как писать как отступы делать —
как каменты писать и прочая и прочая... Это из той же области, как правильно замечали — можно и без IDE пользоваться.
_pasha
Конечно надо. Буржуи приучили народ к красивым обёрткам. После чего остается либо следовать стандарту/штампу, либо следовать своим путем, но не смешивать общепринятые правила со своими амбициями. Это ж как дважды два. Если б этот человек взял эдакий дурашливый тон, оно было бы нормально. А тут - наеборот.

Цитата(orthodox @ 11.1.2012, 14:38) *
«...Стандарт, говоришь?...» Вот с такого подхода
надо начинать стандарты, а после камни под это делать...и компиляторы...

Уже было. Только камень был, например, БЭСМ smile.gif


PhX
Я это пользую в игрушках своих.
Когда ресурсы процессора избыточны, такой подход сокращаяет разработку рабочего алгоритма очень значительно.

Вот еще вариант.
orthodox
Цитата(_pasha @ 11.1.2012, 15:55) *
Конечно надо. Буржуи приучили народ к красивым обёрткам. После чего остается либо следовать стандарту/штампу, либо следовать своим путем, но не смешивать общепринятые правила со своими амбициями. Это ж как дважды два. Если б этот человек взял эдакий дурашливый тон, оно было бы нормально. А тут - наеборот.

Умные давно поняли, что дело не в подаче.
А в чем-то другом.
Умный в гору не пойдет.
В гору продвигать будут по другим признакам.
Свояка, близкого о крови, расе - хер знает по чем.
Но решение всегда будет принято наихудшее из возможных.
Язык, принятый за основу - непременно будет написан парой
студентов за бутылью пива, и все негаразды будут свято блюстись веками.
Это — закон. Думать об удобстве? не дай Господь.
Это дело Божье, а Господь - не Бог, такого не допустит.

Цитата
Уже было. Только камень был, например, БЭСМ smile.gif

Очередная попытка закончится успехом, просто потому, что технологии уже позволяют сделать это
паре НЕ студентов НЕ за бутылью пива.
Просто подумать и сделать хорошо, а не потому, что «вот сейчас срочно надо»...

У дракона более чем правильный подход и цели.
Так что он заслужил того чтобы им занимались.

Ну а нет так нет - в конце концов, возрастная гипертония —
одна из основных причин короткой жизни.
И хронические легочные продолжительности не добавляют —
тем не менее, и то и другое устраняется в массе не намного сложнее насморка,
за небольшое время — просто не надо народу. Потому и косит народ.

Примерно так во всем в этой жизни - глупость предпочтительна.
Горевать не стоит, нужно пользоваться в своих целях, «иначе» все одно не будет.
А от прыщей лечить должны только те доктора, что сами усыпаны прыщами сплошь, иначе как они поймут пациента?
«Исцелися сам» тут не проходит... Исцеление - смерть бизнесам.
Вот такие ассоциации, кто не понял — можно скипнуть.
Прохожий
Цитата(MrYuran @ 11.1.2012, 12:01) *
http://drakon-practic.ru/
Обсуждение у ДиХалта

Обсудим?
Давно хотел попробовать, да все никак... Вот нашелся добрый чел, спропагандировал.
Интерес чисто академический, на практике вряд ли можно пока применить.
Так же, как и фортообразные метасистемы.

Скачать ДРАКОН редактор вкупе со справкой можно здесь.
Из него получается программа на С, которая в последствии может быть скомпилирована в код МК.
Но несколько своеобразно.
Там на форуме есть по крайней мере один человек, который так и поступает.
Приобрел сию книгу в бумажном варианте.
Явного отторжения, как со RTOS не наблюдается.
Базовые идеи автора изложены так, что понятны каждому невежде и лентяю, типа меня.
Однако, окончательное отношение пока не выработано.
Все в процессе.
orthodox
Думаю, что люди , придающие значение даже тому, перекрещиваются ли линии в диаграмме — вполне заслуживают доверия. smile.gif
Шутка, главное - как для меня, (пока не понял, что все особенности заточены под мозг) — единообразие и внимание, ему уделяемое.
Опять же, четкая проработка, ничего лишнего — даже лищние стрелочки на самом деле, мешают, ага.
Стандарт, однако. Что сказать — космос ...
Скачал уже и среду эту, и книгу Владимира Паронджанова
"Дружелюбные алгоритмы, понятные каждому.
Как улучшить работу ума без лишних хлопот." .
Пока читаю книгу.

Думаю, что-то отсюда да пригодится.
Если все это применялось на космос - то интересно, в каком виде?
Похоже, на тот момент просто для организации труда и рассмотрения вручную?
Ну, тоже неплохо..
Idle
Цитата(orthodox @ 11.1.2012, 21:35) *
Если все это применялось на космос - то интересно, в каком виде?

фобос-грунт, наверное - скоро долетит smile.gif
Прохожий
Цитата(orthodox @ 11.1.2012, 21:35) *
Похоже, на тот момент просто для организации труда и рассмотрения вручную?

Я думаю, спецы рисовали ДРАКОН схемы, а потом специально обученные программеры кодили все это дело.
Там для этого практически все готово.


Цитата(Idle @ 11.1.2012, 22:01) *
фобос-грунт, наверное - скоро долетит smile.gif

А мне кажется, что Фобос-Грунт - продукт иного подхода и конторы.
Там история с теми, кто это сделал, достаточно запутанная.
_pasha
Цитата(Прохожий @ 11.1.2012, 20:04) *
А мне кажется, что Фобос-Грунт - продукт иного подхода и конторы.

+1

Однако, вернусь к теме. Есть примеры удачного жития языков визуального программирования:
* конструкторы SQL-запросов
* переходы LD-ST-FBD и обратно smile.gif
* Симулинк, MathConnex
* переходы от схемы к HDL и обратно. С натяжкой, но можно так сказать.

Вопрос: какие свойства оперируемых данных позволяют без потерь переходить от одной формы представления к другой? Точнее, без потерь наглядности переходить к визуальному представлению.
Это, наверное, из области структурно-прикладной лингвистики. Кто чего слышал на эту тему?
Интересует набор ключевых терминов и хотя бы названия областей математики, где исследуются подобные вещи.
Хоцца на досуге покопать.
ЗЫ
Была когда-то книжка, "Когнитивная графика" называлась, образца 1990-х. Собственно, сейчас и других трудов предостаточно. СтОит ли в них разбираться? Наверное, такида.

ЗЗЫ
Ы похожая история, но в плисоводстве.
orthodox
Цитата(_pasha @ 11.1.2012, 23:21) *
ЗЫ
Была когда-то книжка, "Когнитивная графика" называлась, образца 1990-х. Собственно, сейчас и других трудов предостаточно. СтОит ли в них разбираться? Наверное, такида.

Наверное, не стоит. Нужно пользоваться готовым.
если не хватит Дракона - пользоваться чем более подходящим к конкретному случаю.
Но Дракон — мощная штука.
Провоцирует на идею весь мир и все области деятельности на него перевести...
В общем, дочитал ту книгу — охренительно сильная вещь.
Ради такой системности уже похер и на лишние ресурсы, и на лишнее время выполнения —
оно того стоит, однозначно..
Хотя как раз может оказаться, что ресурсов-то больше и не нужно и времени тоже.

PS Владимир Паронджанов
"Дружелюбные алгоритмы, понятные каждому.
Как улучшить работу ума без лишних хлопот." === лучшее чтение за последний год.
Или самое полезное? А, это одно и то же.
Максим Зиновьев
Умеешь же ты, оказывается, интриговать...
Harbinger
Цитата(orthodox @ 12.1.2012, 1:31) *
Владимир Паронджанов
"Дружелюбные алгоритмы, понятные каждому.
Как улучшить работу ума без лишних хлопот."

Закачал на телефон, в дорожке почитаю.
Бегло ознакомился с драконовской IDE (удивившись размеру .exe, как когда-то с топором было).
В принципе, есть на чём попробовать ("раздраконить"? smile.gif Не замок на пике, конечно).
И вообще, год Дракона как-никак. smile.gif
_pasha
Цитата(orthodox @ 12.1.2012, 1:31) *
Наверное, не стоит. Нужно пользоваться готовым.

Вот кому нужно, пусть и пользуется. Я же фанат Перельмана smile.gif - пустоты вычисляю. Активный нищеброд. Выспемсо и напьёмсо на том свете smile.gif

Цитата(Harbinger @ 12.1.2012, 10:20) *
И вообще, год Дракона как-никак. smile.gif

Всё, что появляется в этом году называем драконом.
Надо было протокольчег назвать "Space Constrained Dragon" smile.gif
MrYuran
Под убунтой завелся smile.gif
Нажмите для просмотра прикрепленного файла
Однако, для православности все-таки нужны открытые спецификации и опенсорс.
Вообще, что-то в этом символическое есть... Год дракона.

Его бы заплагинить, в эклипс-кодеблокс... по типу доксигена
MrYuran
В видеоуроках по шагам создается практически домофон smile.gif
Пока что правда без фона, но к замку уже и-батон прицепили smile.gif

Очень толково все объясняется. ымбедерам смотреть однозначно!
У нас новый сотрудник практически тем же занимается, только вместо двери у него электромеханический клапан, отсекающий 200атм.
Но в целом задача очень похожая.
Secter
Цитата(MrYuran @ 16.1.2012, 11:35) *
У нас новый сотрудник практически тем же занимается, только вместо двери у него электромеханический клапан, отсекающий 200атм.
Но в целом задача очень похожая.

biggrin.gif ...а в скуде токма дверьми машут?! ))) ...не забываем про систему пожаротушения с пуском фреона + контролем персонала внутри защищаемого бункера + блокироффкой дверей-окон....для повышения эффективности... pardon.gif ... дракон отстой, вэиксворкс рулит.... yahoo.gif http://injapan.ru/auction/l35468343.html

.




biggrin.gif ....а меня укусил увж.прохожий...))) ...пыки наше всё!!!! http://injapan.ru/auction/b128816432.html за цельных три тыщи купил... drinks.gif
Прохожий
Цитата(GuruKiller @ 16.1.2012, 22:59) *
Я вот так и не понял, компилятор (?) Дракона компилит код для какого проца? И в каком виде прошивка?

Я так понял, что на С.
А потом обычным способом...
MrYuran
Цитата(GuruKiller @ 16.1.2012, 22:59) *
Я вот так и не понял, компилятор (?) Дракона компилит код для какого проца? И в каком виде прошивка?

В общем виде он не для проца, а для человеков. Особенно для далеких от программирования.
Меня, например, коробит, когда я вижу начальника, вырисовывающего блок-схемы алгоритмов технологических процессов в автокаде.
Начал вчера в дороге читать про "улучшение ума", в целом согласен. Особенно с тезисом относительно "инвалидов умственного труда"

Цитата(Прохожий @ 16.1.2012, 23:15) *
Я так понял, что на С.
А потом обычным способом...

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

Ещё я бы ввел "альясы" или что-то типа этого. Чтобы один и тот же алгоритм можно было скомпилить для теста на ПЦ (с соответствующими заглушками) и для конкретного таргета.
Хотя, это все мелочи и можно при желании снаружи оформить.
MrYuran
Тайна ымбеда раскрыта чуть более, чем полностью!
Дочитываю Паронджанова "КУРУ"
Цитата
Известно, что “программист мыслит категориями, которые дает ему в распоряжение язык программирования” [19]. По мнению экспертов, влияние языка “независимо от нашего желания сказывается на нашем способе мышления” [20]. Язык оказывает глубокое воздействие “на навыки мышления и изобретательские способности”, причем “царящий в существующих языках беспорядок” непосредственно отражается на стиле и эффективности труда [19].
orthodox
Правильно пишет.
Так все и есть.
Дракон - рулез.
_pasha
Цитата(orthodox @ 25.1.2012, 22:58) *
Правильно пишет.
Так все и есть.
Дракон - рулез.

Правильно пишет.
Так все и есть.
Про рулез. Весь прикол в ограничении выбора, шоб не распыляться на мелочь. Имхуйоспоришь. Верней, надо, для установления очертаний истины.
orthodox
Цитата(_pasha @ 26.1.2012, 0:30) *
Весь прикол в ограничении выбора, шоб не распыляться на мелочь.

Совершенно в точку.
Лишний выбор — как минимум, путаница, как максимум - глюки.
Убедиться, что не гадит при неиспользовании — и не использовать.
Чтобы оно ни было - программа, микросхема или механизм или гаджет какой.
_pasha
Цитата(orthodox @ 26.1.2012, 10:25) *
Чтобы оно ни было - программа, микросхема или механизм или гаджет какой.

smile.gif Даже если гаджетом не пользоваться, он всё равно гадить будет.
MrYuran
Цитата(orthodox @ 26.1.2012, 12:25) *
Чтобы оно ни было - программа, микросхема или механизм или гаджет какой.

Аналогия на пальцах.
Рисуем схему мультивибратора (усилителя, источника да хоть чего).
Даже не указывая номиналов, мы четко определяем визуальный образ класса схемотехнического модуля.
Теперь берём, рисуем по листу шину и равномерно распределяем элементы на этой шине.
Схема функционально не изменилась.
Рисовать удобно, быстро. Ничего таскать туда-сюда не надо.
Плейс - копипаст-копипаст. Едит.
А теперь попробуем нарисовать так хи-фи усилитель (на рассыпухе, а не десятке БИС)
И пробуем разобраться, скорректировать, исправить глюки pardon.gif

Вот все потуги современных тулзов направлены именно на подпирание костылями изначально дефективного второго подхода.

Кстати, в схемотехнике все больше наблюдается такой ымбедерский подход - разбиение схемы на 20 листов А4
Рисовать удобно, а вот регулировщики и ремонтники из сервиса матерятся почему-то.
orthodox
Цитата(MrYuran @ 26.1.2012, 11:51) *
Аналогия на пальцах.
Рисуем схему мультивибратора (усилителя, источника да хоть чего).
Даже не указывая номиналов, мы четко определяем визуальный образ класса схемотехнического модуля.
Теперь берём, рисуем по листу шину и равномерно распределяем элементы на этой шине.
Схема функционально не изменилась.
Рисовать удобно, быстро. Ничего таскать туда-сюда не надо.
Плейс - копипаст-копипаст. Едит.
А теперь попробуем нарисовать так хи-фи усилитель (на рассыпухе, а не десятке БИС)
И пробуем разобраться, скорректировать, исправить глюки pardon.gif

Вот все потуги современных тулзов направлены именно на подпирание костылями изначально дефективного второго подхода.

Кстати, в схемотехнике все больше наблюдается такой ымбедерский подход - разбиение схемы на 20 листов А4
Рисовать удобно, а вот регулировщики и ремонтники из сервиса матерятся почему-то.

Ну дык...
И как Вы это видите в связи с Драконом?
Визуальнее он чем то что делают обычно (я так понимаю, что обычно вообще блоксхемами не балуются,
а тупо программят из головы...) или же это похоже на пример на шинах?
MrYuran
Цитата(orthodox @ 26.1.2012, 14:22) *
Ну дык...
И как Вы это видите в связи с Драконом?

Вчера попробовал раскидать экранное меню, которое до этого было в виде отдельных экранов раскидано на десятке листов с невнятным текстовым пояснением (из которого даже мне ничего не понятно, не говоря о случайном прохожем)
В общем-то, динамика работы порадовала.
Жаль, сама среда не приспособлена для приаттачивания картинок или произвольных файлов, только текста.
Все-таки, экраны - штука четко детерминированная, там все по точечкам/знакоместам разрисовано.
Главное, не напрягает совершенно, в отличие от классического подхода.
Особенно когда пишешь с нуля.
Есть возможность поиграть формами, не касаясь конкретного содержания.
Грубо говоря, проектируем здание будущей программы на чертеже, вместо того чтобы сразу выкладывать его из кирпичей.
Кирпичи потом очень тяжело переставлять, несмотря на то, что они виртуальные.
В конце концов, и рассыпаться все может окончательно. Тогда проще заново написать.

В книге у Паронджанова описан режим рантайма. Когда по шагам подсвечиваются нужные иконки. Вот этого очень не хватает.
dxp
Цитата(MrYuran @ 26.1.2012, 14:51) *
Аналогия на пальцах.
Рисуем схему мультивибратора (усилителя, источника да хоть чего).
Даже не указывая номиналов, мы четко определяем визуальный образ класса схемотехнического модуля.
Теперь берём, рисуем по листу шину и равномерно распределяем элементы на этой шине.
Схема функционально не изменилась.
Рисовать удобно, быстро. Ничего таскать туда-сюда не надо.
Плейс - копипаст-копипаст. Едит.
А теперь попробуем нарисовать так хи-фи усилитель (на рассыпухе, а не десятке БИС)
И пробуем разобраться, скорректировать, исправить глюки pardon.gif

Вот все потуги современных тулзов направлены именно на подпирание костылями изначально дефективного второго подхода.

Кстати, в схемотехнике все больше наблюдается такой ымбедерский подход - разбиение схемы на 20 листов А4
Рисовать удобно, а вот регулировщики и ремонтники из сервиса матерятся почему-то.

Первый подход рулит, когда схема небольшая и позволяет отобразить себя компактно. Как только объём растёт выше какого-то порога, получается нечитаемое, несопровождаемое нагромождение элементов. Поэтому правильный подход - это сочетание обоих упомянутых. Т.е. схема (устройство, программа) должны быть разбиты на более-менее подъёмные логические куски, которые и оформлять в читабельном, удобном виде, и иметь схему или описание общей структуры. Такой подход в той или иной степени поддерживают все инструменты, применяемые для работы - хоть графические схемные редакторы, хоть языки программирования.
MrYuran
Цитата(dxp @ 26.1.2012, 15:18) *
Такой подход в той или иной степени поддерживают все инструменты, применяемые для работы - хоть графические схемные редакторы, хоть языки программирования.

А теперь вопрос: сколько строк кода поместится (читабельно) на экране?
Сколько из них отображает структуру?
Вот и получается: просмотр большой картины через маленькую дырочку.

Следующий проект начинаю в драконе.
Будет с чем сравнивать.
dxp
Цитата(MrYuran @ 26.1.2012, 17:42) *
А теперь вопрос: сколько строк кода поместится (читабельно) на экране?

А сколько "весит" одна строка? smile.gif

Цитата(MrYuran @ 26.1.2012, 17:42) *
Сколько из них отображает структуру?
Вот и получается: просмотр большой картины через маленькую дырочку.

Да хоть все. Вы что с чем сравниваете? Не помните примеров типа:

Код
int main()
{
    return TApplication app("Hello, World");

}


?

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

Я про декомпозицию говорил - этот принцип одинаково применим как в графическом исполнении, так и в текстовом. И это не имеет отношения к спору "графика vs текст". Есть случаи, где графика эффективнее (это обычно уровень структуры), есть - где текст (уровень реализации).

Цитата(MrYuran @ 26.1.2012, 17:42) *
Следующий проект начинаю в драконе.
Будет с чем сравнивать.

Отлично. Держите нас в курсе. smile.gif
_pasha
И забывается фичка - code folding которая отлично скрывает все ненужное, и строка "весит" столько, сколько надо
MrYuran
Цитата(_pasha @ 26.1.2012, 16:42) *
И забывается фичка - code folding которая отлично скрывает все ненужное, и строка "весит" столько, сколько надо

Ладно, начал уже пример оформлять.
Завтра выложу, если успею.
MrYuran
Ну вот, первый блин...
Нажмите для просмотра прикрепленного файла

Исходная функция на 4 листа:
CODE

/**
* Измерение уровня
*/
void MeasLevel()
{
unsigned long Time;
static stLevelData *LdataPtr;
static eADCchannels NextChannel;
static float Temp;

if(ADC12IFG & 0x4000) // готовы данные АЦП
{
LevelDataReady = 1;
}

if(LevelDataReady == 1) // Обработка данных АЦП
{
LevelDataReady = 0;
ProcessAdcResult();
StartAdcCycle();
}

switch(MeasParams.CurPhase)
{
case lmStartPhase: // старт процесса

LmSensorPower(MeasParams.CurChannel, 1); // Включение подогрева нужного канала

MeasParams.CurPhase = lmFirstMeas;
GetRealTime(&MeasParams.Timer); // засекли время включения
//break;
//Pause(100);
case lmFirstMeas: // первое измерение (почти холодного датчика)
GetRealTime(&Time);
if(Time-MeasParams.Timer < 50)
{
break; // не пришло время
}

switch(MeasParams.CurChannel) // Выбираем канал
{
case ADC_chan_L1:
LdataPtr = &L1data;
NextChannel = ADC_chan_L2;
break;
case ADC_chan_L2:
LdataPtr = &L2data;
NextChannel = ADC_chan_L3;
break;
case ADC_chan_L3:
LdataPtr = &L3data;
NextChannel = ADC_chan_L1;
break;
}

//LdataPtr->Delta1 = Uadc(MeasParams.CurChannel); // измеряем
//Temp = Uadc(MeasParams.CurChannel);
Temp = LdataPtr->ADCData;
LdataPtr->Delta1 = Temp;
LdataPtr->Data = Temp;
//Time1 = Time;

if(LdataPtr->Delta1 < 500) // Датчик не подключен
{
LdataPtr->Delta1 = 0;
LdataPtr->Status = ldsDataPresent;
LdataPtr->LevelValue = L_SENSOR_NOT_CONNECTED;
//MeasParams.CurPhase = lmFault;
LmSensorPower(MeasParams.CurChannel, 0); // Выключение подогрева канала
MeasParams.CurChannel = NextChannel;
MeasParams.CurPhase = lmStartPhase;

}
else
{
MeasParams.CurPhase = lmSecondMeas;
}
break;

case lmSecondMeas: // второе измерение
GetRealTime(&Time);
if(Time-MeasParams.Timer > t1) // пришло время
{
LdataPtr->Delta2 = Temp; // усредненный результат измерений
LdataPtr->Delta1-= LdataPtr->Delta2;
if(LdataPtr->Delta1 < 0)
{
LdataPtr->Delta1 = 0;
LdataPtr->Status = ldsNoData;
//MeasParams.CurPhase = lmFault;
MeasParams.CurPhase = lmPause;
LmSensorPower(MeasParams.CurChannel, 0); // Выключение подогрева канала
MeasParams.CurChannel = NextChannel;

}
else
{
MeasParams.CurPhase = lmThirdMeas;
}

//GetRealTime(&MeasParams.Timer);
}
else
{
// Temp1 = (LdataPtr->Data - Temp) / K_FILTER;
// Temp += Temp1 ;
Temp += (LdataPtr->ADCData - Temp) / K_FILTER;
LdataPtr->Data = Temp;
}
break;

case lmThirdMeas: // последнее измерение
GetRealTime(&Time);
if(Time-MeasParams.Timer > t2) // пришло время
{

LdataPtr->Delta2-= Temp;//Uadc(MeasParams.CurChannel); // измеряем
if(LdataPtr->Delta2 < 0) LdataPtr->Delta2 = 0;
LdataPtr->Status = ldsDataPresent;

LdataPtr->LevelValue = LdataPtr->Delta1 / (LdataPtr->Delta2 + 0.01);
if(LdataPtr->LevelValue < 0.0) LdataPtr->LevelValue *= -1.0;
/**/
LdataPtr->LevelValue -= LEVEL_THRESHOLD;
/**/

if(LdataPtr->LevelValue < 0.0) LdataPtr->LevelValue = 0.0;
if(LdataPtr->LevelValue > 0.0) LdataPtr->LevelValue = 100.0;

LmSensorPower(MeasParams.CurChannel, 0); // Выключение подогрева канала
MeasParams.CurChannel = NextChannel;

MeasParams.CurPhase = lmPause;
//GetRealTime(&MeasParams.Timer);
}
else
{
// Temp1 = (LdataPtr->Data - Temp) / K_FILTER;
// Temp += Temp1 ;
Temp += (LdataPtr->ADCData - Temp) / K_FILTER;
LdataPtr->Data = (unsigned int)Temp;
}
break;

case lmPause:
GetRealTime(&Time);
if( (L1data.Status == ldsNoData)
||(L2data.Status == ldsNoData)
||(L3data.Status == ldsNoData)
||(Time-MeasParams.Timer > t3))
MeasParams.CurPhase = lmStartPhase;
break;

case lmFault:
GetRealTime(&Time);
if( Time-MeasParams.Timer > (t3*2 + t2))
MeasParams.CurPhase = lmStartPhase;
break;

//default: MeasParams.CurPhase = lmStartPhase;
}
}

Функция крутится непрерывно в карусельке (как Прохожий завещал smile.gif )

И я уже, глядя на полученную картинку, вижу некоторые нюансы, которые раньше ускользали из поля зрения.

Схема рисуется легко и непринужденно, перекомпоновка - тоже.
В отличие от текста, где нужно выделить от одной скобочки до другой, да не промахнуться, да вставить в нужное место...

Вот чего нагенерило...
CODE
/* D:\work\EXPERIMENTS\ДРАКОН\Новый_03.drt */
/* 1. ИС Дракон. Трансляция маршрутной части. Изменение 27.01.2012 13:56:08 */
/* Схема - Процедура */
......

/* ==================== Шампур */

/* 2. Заголовок // Измерение уровня жидкости */

/* 4. ИмяВетки // Обработка данных АЦП */

/* 12. Вопрос // Данные АЦП готовы? */
if (!(......)) goto L33;

/* 16. Вставка // Обработать данные */
......

/* 17. Вставка // Запустить АЦП */
......

/* 5. Адрес // Измерение уровня */
goto L33;

/* ==================== Шампур */

/* 28. ИмяВетки // Измерение уровня */

L33:
/* 33. Выбор // Фаза процесса измерения */
else goto L54; /* Старт цикла измерения */
else goto L20; /* Первый отсчет */
else goto L24; /* Второй отсчет */
else goto L55; /* Третий отсчет */
Ошибка: количество "Вариантов" без условия должно быть = 0, 1.

/* 46. Вариант // Старт цикла измерения */

L54:
/* 54. Действие // Включить подогрев текущего датчика */
......

/* 60. ПускТаймера // Т1 = 0 */
......

/* 61. Действие // Фаза = Первый отсчет */
......

/* 29. Адрес // Конец */
goto L11;

/* ==================== Шампур */

/* 10. ИмяВетки // Конец */

L11:
/* 11. Конец // Конец */
......

/* ==================== Шампур */

/* 47. Вариант // Первый отсчет */

L20:
/* 20. Вопрос // T1 > 50 мс? */
if (!(......)) goto L45;

/* 58. Действие // Зафиксировать первый отсчет */
......

/* 62. Вопрос // Отсчет корректный? */
if (!(......)) goto L69;

/* 59. Действие // Фаза = Второй отсчет */
......

/* 91. Адрес // Конец */
goto L11;

/* ==================== Шампур */

L69:
/* 69. Действие // Ошибка: датчик не подключен */
......

/* 63. Действие // Выключить подогрев датчика */
......

/* 64. Действие // Переключить на следующий канал */
......

/* 71. Действие // Фаза = Старт */
......
goto L11;

/* ==================== Шампур */

L45:
/* 45. Действие // Фильтрация буфера измерений */
......
goto L11;

/* ==================== Шампур */

/* 52. Вариант // Второй отсчет */

L24:
/* 24. Вопрос // Т1 > dT1? */
if (!(......)) goto L53;

/* 34. Действие // Зафиксировать первый отсчет */
......

/* 35. Вопрос // Отсчет корректный? */
if (!(......)) goto L18;

/* 38. Действие // Фаза = Третий отсчет */
......

/* 107. Адрес // Конец */
goto L11;

/* ==================== Шампур */

L18:
/* 18. Действие // Ошибка: датчик неисправен */
......

/* 19. Действие // Выключить подогрев датчика */
......

/* 21. Действие // Переключить на следующий канал */
......

/* 22. Действие // Фаза = Старт */
......
goto L11;

/* ==================== Шампур */

L53:
/* 53. Действие // Фильтрация буфера измерений */
......
goto L11;

/* ==================== Шампур */

/* 56. Вариант // Третий отсчет */

L55:
/* 55. Вопрос // Т1 > dT2? */
if (!(......)) goto L75;

/* 68. Действие // Зафиксировать третий отсчет */
......

/* 57. Действие // Вычислить уровень по полученным данным */
......

/* 65. Действие // Выключить подогрев датчика */
......

/* 76. Действие // Переключить на следующий канал */
......

/* 78. Действие // Фаза = Старт */
......

/* 111. Адрес // Конец */
goto L11;

/* ==================== Шампур */

L75:
/* 75. Действие // Фильтрация буфера измерений */
......
goto L11;
......


Вместо многоточий вставится текст, который я внутри иконок напишу.

Ещё вот интересно... Современные ИДЕ поддерживают ражим открытия нужного файла с нужной строки?
Чтобы на первое время хоть такой интерактив сделать.
Типа, щелкаем по иконке, выпрыгивает какой-нибудь легковесный SciTE, открытый на нужном месте.
perfect
Цитата(orthodox @ 11.1.2012, 13:43) *
Вопрос, что есть приоритетом в разработке подобных систем.
Пока и в драконе - приоритет есть необразованность постановщика задачи в программировании.
Что есть плохо. («Я мог бы ехать по навигатору с коробкой-автоматом, но я все равно не еду, так как водить не умею»)
Но здравое зерно в как бы отделении «чисто железных» элементов от
программирования как бы, что ведет возможно к унификации где-то там, за счет
неформального запрета изящной чисто программистской оптимизации...
Что в конечном итоге ведет к приближению к исходной задаче, но лишает
иногда таких вкусных вариантов из-за абстрагирования от нее...
Ну ладно, надежность зато...

Не знаю что бы когда есть приоритетом в разработке подобных систем, но думаю так, что есть некая система и её модель. Модель где-то, в голове человека получается. А какая она некая модель в голове конкретного человека уже зависит индивидуально - "каждый сходит с ума по-своему":) . Однако, типичные модели мира в головах всяких, думаю, нетрудно вычислить, потому что они наработаны окружающим миром. Вода течёт сверху вниз, солнце (для человека северного полушария) движется слева направо, тяни - себе - от кушать - хватать "манипулятором" и в рот, кака - наоборот и т.д. smile.gif . Тогда просто напрашивается к использованию естественно наработанный "интерфейс" между миром и его отражением в головах.
Из опыта общения в среде разных языков могу сказать, что есть универсальный международный язык общения, для восполнения пробелов в знании конкретных звуковых секвенций, принятых в конкретных языках - это язык моделирования звуками и жестами поведения обсуждаемой штуковины smile.gif . Ещё универсальный международный язык - картинки. Вот, имел я ящики со всякой-всячиной на полочках на стеллаже. Подписывал их по пару букв, всё вроде бы понятно, но потом начал малевать шуруп, если там шурупы, винт, если там винты, резистор, если там резисторы и т.п. - просто и наглядно, самому себе значительно удобнее.

Цитата(orthodox @ 11.1.2012, 17:42) *
Язык, принятый за основу - непременно будет написан парой
студентов за бутылью пива, и все негаразды будут свято блюстись веками.
Это — закон. Думать об удобстве? не дай Господь.
Это дело Божье, а Господь - не Бог, такого не допустит.

"Вечная история", или дилемма, или как ещё. Между для себя и для всех, между растягивать и сжимать, между разделять и соединять, между для своих и для чужих, против чужих, то есть. Объединяться в узком кругу ограниченных эээ.. чтобы дружить против smile.gif. , Дилемма между унифицированным и специальным ... Что и где нужно смешивать, а что сепарировать ...
А как оно таки будет, рано или поздно или когда или где, - в зависимости от - время разбрасывать или собирать smile.gif.

Цитата(orthodox @ 11.1.2012, 21:35) *
Думаю, что люди , придающие значение даже тому, перекрещиваются ли линии в диаграмме — вполне заслуживают доверия. smile.gif
Шутка, главное - как для меня, (пока не понял, что все особенности заточены под мозг) — единообразие и внимание, ему уделяемое.
Опять же, четкая проработка, ничего лишнего — даже лищние стрелочки на самом деле, мешают, ага.
Стандарт, однако. Что сказать — космос ...

Просто соответствие и без всякого лишнего отвлекающего ресурс читающего "схему" на постороннюю обработку. Бо оно не надо. А есть когда надо, например - как девушке краситься и облекаться, чтобы обратить внимание на то что, а что как-бы маскировать. Но то уже применение "технологий" об том-же, но под цели несколько другие, например, обдуривание покупающего хреновину в магазине с использованием дизайна, что есть маскировка содержания формой.

Вот в ремонте сварочник Linkor Semali посмотрите что за конструктив под красивой крышкой:
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Неразбираемый клубок, похож на поделку гаражного самоделкина.

А вот профессиональный конструктив KITin 1900HF:
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Достпуно всё довольно хорошо. А Линкор даже не знаю с какой стороны подходить, как бы распаивать чтобы к чему-либо добраться.

Против ремонтников сделано smile.gif
Просто не напрягались сделать нормально. aggressive.gif
_pasha
Цитата(MrYuran @ 27.1.2012, 11:24) *
Типа, щелкаем по иконке, выпрыгивает какой-нибудь легковесный SciTE, открытый на нужном месте.

Нажмите для просмотра прикрепленного файла
MrYuran
Попробовал другого дракона

Нажмите для просмотра прикрепленного файла

Рисовать в нем, конечно, тяжелее, с одной стороны.
С другой - больше свободы.

Кодогенератор лучше приспособлен для жизни.

Однако, чего же они все switch()-case на if()/else-ы разбивают...

Код
    /* item 18 */
    _sw_18 = Фаза процесса
измерения;
    if (_sw_18 == Старт) {
        // item 24
        Вкл. подогрев
        текущего датчика
        /* item 25 */
        Таймер
        Т1 = 0
        /* item 31 */
        Фаза = 1 отсчет
        return;
    } else if (_sw_18 == 1 отсчет) {
        goto item_26;
    } else if (_sw_18 == 2 отсчет) {
        goto item_44;
    } else if (_sw_18 == 3 отсчет) {
    } else {
        UnexpectedBranch(_sw_18);
    }
_pasha
Примитива такого нету: State Node pardon.gif
Есть "Переключатель"(драконодока, стр.3) - имхо, нечитабельный сфероконь. Вернее, он не для стейт-машин.
Прохожий
Цитата(MrYuran @ 27.1.2012, 17:03) *
Однако, чего же они все switch()-case на if()/else-ы разбивают...

ПМСМ конструкция if ... else if... else имеет тот же смысл, что и switch, но более универсальна в плане условий.
А компилятор с С должен это дело транслировать одинаково в случае, когда условия совпадают по логике с case.
_pasha
Цитата(Прохожий @ 27.1.2012, 17:57) *
А компилятор с С должен это дело транслировать одинаково

Неа smile.gif Когда case много, он творит чудеса и может запросто сотворить таблицу переходов. А может, наоборот, "забыть" такую возможность, когда она крайне желательна.
Прохожий
Цитата(_pasha @ 27.1.2012, 19:32) *
Неа smile.gif Когда case много, он творит чудеса и может запросто сотворить таблицу переходов. А может, наоборот, "забыть" такую возможность, когда она крайне желательна.

Я же говорю "нормальный" и "должен", а не "обязан".
Понятно, что в реале такое трудно достижимо.
MrYuran
Цитата(Прохожий @ 27.1.2012, 19:57) *
ПМСМ конструкция if ... else if... else имеет тот же смысл, что и switch, но более универсальна в плане условий.
А компилятор с С должен это дело транслировать одинаково в случае, когда условия совпадают по логике с case.

Тут дело вот в чём.
Каждый кейс - это не что иное, как обычная метка.
Даже ввиду синтаксиса.
Только локальная внутри скобок.
То есть свич-кейс - это изначально таблица переходов. Особенно если кейсы по порядку идут. Компилятор может их заменить ифами, а может оставить. В любом случае это проще, чем в обратную сторону - из кучи условий выудить переключатель. Компилятор шибко мозговитее для такого случая нужен.
Ну и чисто теоретически здесь ошибочка закралась.
У Паронджанова четко описано и обосновано однозначное соответствие графической программы и её текстового эквивалента.
То есть, тождественное равенство.
Если есть такой элемент - переключатель, то его нужно однозначно связывать с соответствующим текстовым эквивалентом, то есть с оператором switch(). Так как в противном случае при обратном преобразований получаем лесенку условий, что противоречит утверждению о тождественности двух форм записи.
Вообще, автор молодец. Очень точно выдержал все нюансы, и рисовать строить действительно получается легко и непринужденно.
Осталось открыть формат хранения схем и интерфейсы среды, чтобы заинтересованные могли добавлять свои рюшечки.
orthodox
Цитата(MrYuran @ 27.1.2012, 17:03) *
Попробовал другого дракона

Нажмите для просмотра прикрепленного файла

Рисовать в нем, конечно, тяжелее, с одной стороны.
С другой - больше свободы.

Он чего, весь английский?
А по русски? Д/б аналогичная версия же...

Кстати — насчет примера этого — автор бы раскритиковал.
У него подобное как раз в книге преобразовывалось в нечто более простое.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2020 IPS, Inc.