Визуальное моделирование на фоне эволюции средств программирования

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

Визуальное моделирование на фоне эволюции средств программирования - student2.ru


Рис. 2.3. Эволюция средств программирования

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

Потом появились ассемблер-языки, позволяющие описывать программу не с помощью нулей и единиц, а посредством мнемонических команд, имеющих буквенные имена, численные параметры и т. д. Все это сначала компилировалось в целевой код, а уже потом исполнялось. Такой подход существенно облегчил процесс программирования, но все равно программист должен был очень хорошо представлять себе архитектуру целевой ЭВМ: количество регистров и их имена, размеры оперативной памяти, правила работы с периферийными устройствами и пр.

Далее появились алгоритмические языки программирования - COBOL, Fortran, PL/1, Algol60, C, Pascal, C++, Java, C# и многие другие. По мере их развития программист получал возможность все меньше и меньше задумываться о деталях процесса выполнения программы на ЭВМ и все больше внимания уделять описанию логики задачи, которую реализовывала его программа. Соответственно, спектр задач, которые становилось способным решать ПО, существенно расширялся, сложность программ увеличивалась.

В этой цепочке каждый следующий шаг практически вытеснял предыдущий: в кодах целевых ЭВМ перестали массово программировать, когда появились ассемблер-языки и их реализации для разных платформ. Целевые коды стали генерироваться по ассемблер-спецификациям автоматически. Далее, алгоритмические языки высокого уровня столь же радикально вытеснили программирование на ассемблере, и целевой код автоматически генерировался теперь уже по текстам на этих языках. При желании генерируется и текст на ассемблере, если есть необходимость проанализировать результаты генерации (ведь тексты на ассемблере, с одной стороны, существенно легче воспринимаются, чем целевой код, с другой стороны, они очень близки к нему).

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

Таким образом, программы должны быть максимально доступны для человека - как для самого автора, чтобы упростить процесс его работы, так и для других людей, чтобы сделать работу одного более понятной другим. Эта двойственная природа программ отражена на рис.2.4.

Визуальное моделирование на фоне эволюции средств программирования - student2.ru


Рис. 2.4. Отношения программы с вычислителем и программистом

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

Наши рекомендации