Доброго времеи суток, уважаемое сообщество! В сообщении я кратко опишу те обстоятельства, которые привели меня сюда, а после выскажу некоторые свои соображения (ещё весьма сырые) и идеи.
Для начала два слова о себе: я аспирант Физического Факультета НГУ (Новосибирск, Академгородок), занимаюсь исследованиями в области волоконной оптики и лазерной физики и, ввиду широты интересов, также участвую в решении задачь по программированию и разработке электронике, которые у нас не пременно возникают при разработки опытных образцов лазеров различного типа.
При разработке очередного лазера возникли условия, когда мне потребовалось передать своё видение алгоритма его (лазера) работы другому программисту для реализации. Вот на этом этапе и возникли весьма интересные вещи. Поскольку у меня у самого есть опыт в программировании микроконтроллеров, то на тот момент было осознание не только того, как должно работать устройство внешне, но и того, как оно должно быть устроено изтунутри, какая там должна быть структура и какие блоки необходимо выявить. Описав все свои соображения в тексте, я предоставил их программисту. Но вся эта информация была воспринята с большими искажениям, и лишь после долгих обсуждений удалось ввести хоть какую-то предварительную ясность. При этом ещё раз отмечу, что фактически происходило общение двух программистов, хорошо знающих предметную область. Страшно вообразить, что бы происходило, если бы наши области не пересекались... Далее, разбив программу на блоки, было необходимо проработать алгоритм каждого блока. Тут я задался очевидным вопросом - "неужели нет никаких средств для наглядного представления своих замыслов, чтобы с ними было удобно работать, и чтобы человеку непосвещённому было бы легко понять суть?".
Идём в гугл, гугл нам намекает на UML, но UML в данном случае подходит весьма скверно. Во-первых, он всё-таки достаточно сложен с первого захода, во вторых, сильно ориентирован на ООП, что в данном случае вообще мимо, и в-третьих, единственные инстременты, которые могли бы пригодиться, это "диаграммы действий" и "диаграммы состояний", но и они говорят лишь о том, в каких состояниях и какие действия должен выполнять объект, но ни слова о том, как он их должен выполнять (хотя, вопрос наверно и спорный, и во многом определяется привычкой). Далее идём к блок-схемам. В принципе они бы дали необходимый результат, но рядом с ними я вдруг наталкиваюсь на упоминание о некоемом "ДРАКОНе", который, мол, и создан для формализации алгоритмов, чтобы "всё понятно с первого взгляда" и пр.. Ну чтож, вроде это именно то, что мне нужно. Начинаю рыть о том, что это такое, с чем едят и как пользоваться. Выходу на книгу Паранжанова "как улучшить работу ума", которая, прошу прощения, написана весьма пафосно, что первое время сильно отталкивает. Однако в книге содержится множество интересных и правильных вещей, так что, абстрагировавшись от пафоса, читаю сейчас с большим интересом. Я так, что имеем - описание языка есть, а где же "среда разработки", гре примеры программ? Лишь обрывочные упоминания о применениях в ВПК, в других областях народного хозяйства, на которых всё и заканчивается. Однако, почитав этот форум, я понял что такая проблема не только у меня. Из софта я нашел лишь одну вешь, и, как я понял из здешних обсуждений, единственную - "и.с. DRAKON". Качаю архив, запускаю... в течении первой минуты в ступоре, в течение второй в недоумении "как это работает", и на третей закрываю с большим разочарованием (опять же прошу прощения, это лишь имхо). Ощушение от "среду разработки" такое, будто я попал не то чтобы на 50 лет назад, а на другую планету. Где привычные меню? где "проект"? как создать проект? где элементы языка?.. Комечно, может это я споткнулся на первом же камне и сразу всё критикую... Но ведь ДРАКОН позиционируется как язык для непрограммистов, где же наглядноять и интуитивность инструментария? Т.о. идею лёгкого и быстрого освоения ДРАКОНа пришлось оставить, и рисовать блок схемы в OOo draw (читать "любом векторном редакторе").
|