В данный момент времени существуют различные толкования термина «визуальные языки программирования». Как правило, когда речь заходит о визуальном программировании, то прежде всего под этим понимают программирования в средах типа Delphi или Visual Basic. Между тем, подобные среды используют визуальную технологию проектирования, а код записывается с помощью текстовых языков программирования. В иностранных источниках визуальные языки программирования (ВЯП) делят на три категории:
- Для обработки визуальной информации;
- Для поддержки визуального взаимодействия с пользователем;
- Для программирования с помощью визуальных выражений.
Языки первой категории в основном используются для управления графическими объектами в средствах моделирования, САПР, графических редакторах. Примерами могут служить AutoCAD, 3D Studio MAX, Corel Draw. Примерами второй категории могут служить среды программирования, которые поддерживают возможности визуального дизайна прототипов форм ввода/вывода информации. Это уже названные выше среды Delphi, C++ Builder, Visual Basic. Также в эту группу попадают языки, которые предназначены для обработки объектов, которые изначально не являются визуальными изначально, а представляются в таком виде для удобства пользователей. Как правило, это расширения существующих текстовых языков программирования, таких как Lisp, Ada, Pascal. Такие языки называют языками , поддерживающими визуальное взаимодействие.
Третья группа языков объединяет собственно визуальные языки программирования. Визуальным языком программирования [1] называют совокупность визуальных предложений, построенных из икон, предоставляемых системой, по определенным семантическим и синтаксическим правилам. При анализе пространственного расположения икон выявляется лежащая в основе синтаксическая структура. При семантическом анализе визуальное выражение интерпретируется для определения его смысла. Одним из главнейших достоинств ВЯП является в наглядном представлении данных и структур разрабатываемых программ, предоставляемая программистам возможность работать в терминах своих представлений. В силу специфических ограничений использование ВЯП не всегда может принести ощутимую пользу. Одной из областей, где польза от их использования несомненна, является обучение, в частности, обучение алгоритмике и основам программирования. Для проверки данного положения и был разработан визуальный язык программирования VisuAL (Visual Algorithmic Language). В существующей реализации он является прототипом и будет существенно улучшен в случае подтверждения эффективности его использования в обучении.
Замечание. Поскольку VisuAL интегрирован со средой программирования, которая предоставляет сервисные функции, то в дальнейшем наряду с термином «визуальный язык программирования» будем употреблять термин «среда визуального программирования».
2. Базовые понятия программирования, которые поддерживаются VisuAL.
Прежде всего, хочется отметить, что данная среда разрабатывалась в качестве средства обучения и входит как ключевой компонент в методическую систему обучения школьной алгоритмике. Одной из главных целей этой системы является формирование и развитие алгоритмического стиля мышления (обоснование целесообразности такого подхода служит темой отдельного разговора и не обсуждается в данной работе). Таким образом, VisuAL поддерживает процедурную парадигму программирования, основанную на использовании алгоритмов. Поскольку функциональная, логическая, объектно-ориентированная парадигмы или не поддерживают алгоритмический подход к решению задач, или поддерживают его ограничено-частично, то их поддержка в контексте развития алгоритмического стиля мышления не целесообразна. Среди основных понятий процедурного программирования можно выделить: поддержку основных алгоритмических структур; строгую типизацию переменных; алгоритмическую декомпозицию, что предполагает широкое использование подпрограмм; возможности построения (синтеза) программ из некоторой совокупности уже существующего кода. Все эти возможности поддерживаются в среде VisuAL. Также его средствами можно организовывать как итерационные так и рекурсивные алгоритмы, использовать возможности обработки графической и мультимедийной информации. Все эти возможности дополняются возможностями среды программирования: сохранение, загрузка программ; редактирование; выполнение, включая режим пошагового выполнения и поддержки точек остановки; инспекция данных во время выполнения с возможностью их изменения; использование генераторов представлений алгоритма программы в текстовом виде и в виде блок-схемы; контроль за ошибками в программе на этапе ее редактирования; представление переменных в удобном табличном виде; гибкие настройки системы, включая выбор языка представления (украинский, русский, английский, пользователя); возможность записи идентификаторов переменных с помощью национальных алфавитов; возможность прототипного проектирования экрана вывода. Все перечисленное вместе представляет мощную и, вместе с тем простую в использовании, среду для построения алгоритмов широкого класса задач.
3. Процесс создания программ в VisuAL.
Термин «программа» определяется как алгоритм, подготовленный для реализации компьютером. Т.е. программа — это алгоритм, записанный на языке, понятном компьютеру. Такая трактовка предполагает знание некоторых внутренних особенностей используемых компьютерных систем. В начале компьютерной эры языки программирования были привязаны к архитектуре компьютера, но в ходе развития все больше поднимались по лестнице абстракции «от компьютера — к человеку». Представление, используемое в VisuAL скорее можно назвать алгоритмом, нежели программой. Возможности, предоставляемые средой, позволяют решать задачи, сосредоточиваясь именно на алгоритме, а не на особенностях машинной реализации. Процесс решения задачи в VisuAL, с такой точки зрения, можно назвать процессом построения алгоритма, а не процессом программирования компьютера. В качестве прототипа представления структуры алгоритмов были взяты, хорошо зарекомендовавшие себя при обучении, структурные диаграммы Несси-Шнейдермана. Каждая составная структура разрабатываемого алгоритма, представлена в VisuAL отдельным блоком. Такими блоками могут быть последовательная, разветвляющаяся, повторяющаяся структуры, а также подпрограммы. Это позволяет, по нашему мнению, сделать структуры алгоритма «осязаемыми», наочными. В каждом блоке (которые можно назвать сложными командами) размещаются простые команды. Каждая команда (простая или сложная) представлена отдельной иконой. Вследствие того, что кроме изображения и текстовой информации каждая такая икона содержит еще некоторые, специфические именно для нее возможности, то понятие иконы расширено нами до понятия Графический Визуальный Объект (ГВО). Таким образом, алгоритм, построенный с помощью VisuAl, представляет собой набор ГВО сгруппированных в отдельных блоках-структурах. Набор ГВО предоставляется системой. Не поддерживаются пользовательские компоненты так как их с успехом могут заменить подпрограммы, которые запоминаются в хранилище для повторного использования в других проектах. Процесс построения алгоритма в VisuAL сводится к выбору с помощью курсора «мыши» необходимого ГВО, его расположению в нужном блоке-структуре и настройке его свойств. Поскольку этот процесс поддерживается «экспертами настройки», которые следят за корректностью введенных параметров, то синтаксические ошибки в программах полностью отсутствуют. Пример такого эксперта приведен на рисунке 1. Данный эксперт призван контролировать процесс ввода выражения. Выражение должно быть введено синтаксически правильно. В противном случае эксперт не допустит размещение ГВО в структуре алгоритма.
Рисунок 1. Пример эксперта |
Проиллюстрируем процесс создания алгоритма на примере решения задачи о нахождении большего числа из двух целых чисел. Выбираем пункт меню «Проект > Новый». Сразу же получаем каркас минимальной рабочей программы (рисунок 2).
Рисунок 2. Каркас программы |
В начале нам нужно определить две переменные. Все переменные проекта собраны в таблице переменных (рисунок 3). Заметим, что добавление, удаление, изменение типа переменной или пояснений к ней производится посредством все тех же экспертов, которые следят за корректностью действий пользователя. После объявления переменных переходим к созданию структуры алгоритма.
Рисунок 3. Таблица переменных |
Поскольку нам нужно ввести два числа, с которыми будет алгоритм, то воспользуемся командой «Введения значения переменной» блока команд «стандартные» панели ГВО (рисунок 4, команда выделена красным кружком).
Рисунок 4. Панель ГВО |
Допустим, что по умолчанию число b больше нежели a. Организуем с помощью команды ветвления проверку этого допущения. В случае, если a больше b присвоим переменной b значение переменной a (рисунок 5).
Рисунок 5. Реализация ветвления |
После нахождения большего из двух чисел, выведем его значение. Для введения — выведения значений переменных служит таблица, которая называется консоль. Таким образом можно говорить «данные считываются с консоли», «данные выводятся в консоль». Окончательный вариант программы показан на рисунке 6, а результат работы представлен на рисунке 7.
Рисунок 6. Реализация ветвления |
Рисунок 7. Результат работы программы |
Визуальные языки программирования, вследствие особенностей графического представления, сложнее описать, нежели показать. Но, как показывает практика, ученикам 7-го класса достаточно одного часа для объяснения принципов работы в среде. После этого VisuAL превращается в инструмент творчества и исследования алгоритмов.
Источники 1. Chang Shi-Kuo. Visual languages: a tutorial and survay // IEEE Software. 1987. V.4. №1. P. 29-39.
2. Хлебцевич Г.Е., Цыганкова С.В. Визуальный стиль программирования: понятия и возможности // Программирование. — 1990. — №4. — С.68-79.