Вернуться в библиотеку


Языки визуального программирования

Тревор Смедлей

Перевод с английского: Бандурка В.Г.


Источник: http://users.cs.dal.ca/~smedley/Research.html


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

 

 Область исследования

 Визуальные языки программирования

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

Тем не менее, сравнение относительной эффективности визуальных и текстовых языков программирования - достаточно сложно, оно включает много критериев, например: класс языков, критерии тестирования; среда в которой языки реализованы. Одни результаты исследований, показали, что в текстовые системы более понятные чем визуальные. Другие исследования приводят прямо противоположные результаты. Кроме того, хотя имеется коммерчески успешные визуальные языки программирования, как например, Prograph и LabView. Визуальные языки никоим образом не заменяют текстовые языки для программирования профессионалами или начинающими пользователями. Visual Basic, например, несмотря на имя использует текстовый язык, широко используется многими пользователями. Ни у кого не вызывает сомнений, что просто визуального языка - не достаточно, чтобы сделать сделать программирование более эффективным, по сравнению с текстовыми аналогами.

 Программирование для Пользователей

 Возможно самый ранний пример языка программирования для пользователей это язык электронной таблицей VisiCalc, изобретенной Даном Бриклином (Dan Bricklin) и Бобом Франкстоном (Bob Frankston) представленный в Национальной ТЕЛЕКОНФЕРЕНЦИИ в НЬЮ-ЙОРКе в 1979. Электронные таблицы по прежнему остаются одним из наиболее часто- использованных типов компьютерных приложений, уступая только текстовым редакторам. Их популярность обусловлена, в основном, тем, что электронные таблицы позволяют конечным пользователям эффективно создавать компьютерные программы, которые выполняют те же вычисления многократно но с различными исходными данными.

Нарди (Nardi) считает, что системы программирования для пользователей, позволяющие создавать приложения за время не более нескольких часов программирования, будут пользоваться огромным спросом.  Она также скептически относится к претензиям выдвинутым некоторыми исследователями в области визуальных языков и их роли в приложениях для конечных пользователей и отмечает некоторые трудности в проектировании эффективных визуальных языков, в частности то, что  только "визуализации" не достаточно, чтобы создать систему, которую конечные пользователи могут эффективно использовать, и, что эффективность визуального программирования зависит во многом от задачи для которой она применена. Группы исследователей в области создания систем для конечного пользователя пришли к аналогичным выводам, указывая, что необходимо достигать определенного соотношения между использованием текста и графики в таких системах.

 Имеется значимое количество успешных научно-исследовательских проектов, включающих визуальные языки программирования для пользователей, как например, AgentSheets, система для создания имитационных сред, KidSim для моделирования, LabView, система для создания виртуальной контрольно-измерительной аппаратуры. Тем не менее, имеется много, неудачных проектов.

Языки Визуального проектирования

 Основной аспект данной статьи направлен на исследование конкретного класса проблемно-ориентированных визуальных языков, языков визуального проектирования. Если мы создаем программную систему, которая должна подготавливать план или схему или моделировать какие-либо процессы и т.п. , то нам необходим язык, с помощью которого будут определяться сущности и связи между ними, т.о. большинство программных систем, подразумевают использование какого-либо проектного языка. Наиболее интересны для нас - параметрические языки проектирования. То есть, языки где разработчик может определить целое семейство связанных проектов с единственным, параметризованным описанием. Параметрические проектные языки становятся все более и более совершенными, особенно в передовых инструментальных средствах (например VLSI, VHDL, Verilog). Автоматизированные проектные инструментальные средства, как например, Pro/Engineer, поддержка параметрического проекта во множестве уровней. Простые конструкции определяются выбором опций и задаются в диалоговом окне, тогда как более сложные структуры могут быть определены используя текстовые языки подобные языкам программирования. Менее развитые инструментальные средства, как например, электронные таблицы, часто обеспечивают некоторые средства для параметрической спецификации с помощью макросов, или, как это в системе Excel с Visual Basic, через интеграцию текстового языка программирования.

Исследуемые проекты

 JGraph

 JGraph объединяет семантику языка Java, с полностью визуальным синтаксисом основанным на Prograph, это позволяет создать новый визуальный язык, который объединяет характеристики как обоих языков и обеспечивает:

 

-  Визуальную обработку исключений;

-  Безотлагательная и визуальная проверка типа;

-  Явный синтаксис;

-  Визуализация синтаксиса Java;

-  Визуальное указание ошибок; и   встроенная программная среда разработки.

 

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

PDAGraph

 С возможностью помещать все большие и большие вычислительные мощности в меньший объем, компании производители аппаратных средств начали в 1990-ые, разрабатывать мобильные  компьютеры, как например, Apple. Эти устройства теперь повсеместно распространены, и ожидается, что станут даже более широко используемыми чем персональные компьютеры. Широко распространенное использование персональных компьютеров создавало спрос у конечных пользователей на простоту использования и программируемости: естественно, что аналогичные требования предъявляются и владельцами потребителей мобильных устройств. Уже, есть простые инструментальные средства как например, электронные таблицы и СУБД для мобильных устройств, которые допускает некоторый уровень программируемости для конечного пользователя.

 Особый интерес лежит в исследовании уровня программируемости для конечного пользователя в устройстве Visor Handspring (и других устройств позволяющих использовать расширения). Это устройство использует PalmOS и включает аппаратный слот расширения, который принимает модули Springboard. Сегодня существуют различные модули существуют сегодня для получения данных, связи, и ряда других функций. Мы считаем, что подобная гибкость в использовании создаст повышенный спрос на программируемость для пользователей.

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

Язык для Структурного проектирования

 Мы адаптировали визуальный язык Prograph, добавляя действия и типы данных для графического представления структурных объектов. Тем не менее, хотя все аспекты этого языка визуальные, визуализация алгоритмов и объектов не смешиваются. При просмотре алгоритмов, объекты - не видимые, и наоборот. Единственное исключение - новые графические правила перезаписи в которых , показывается как объект может быть, непосредственно выражен графическими знаками. Мы становились на изучении возможностей представлять алгоритм и структуры данных гомогенно, и определили, что декларативный язык может быть использован достаточно эффективно. Таким образом мы изучили использование системы Lograph (визуального логического языка программирования) для описания структурированных объектов.

Vivid Framework

 Vivid Framework является программным каркасом, разрабатывался для создания визуальных языков программирования. Framework реализует визуальные языковые элементы как компоненты. Это позволяет комбинировать элементы по требованию разработчика, для создания более сложных проектов. Framework работает в Java и использует JavaBeans как компонентную модель. 

Программирование Робота

 Наша работа в этой области начиналась с нашего участия с “VL’ 96 Challenge” где мы использовали существующий визуальный язык программирования, Prograph, и адаптировали его для программирования робота. В ходе этой работы, мы адаптировали визуальный язык общего назначения для использования в программировании роботов, лучше результаты могли быть достигнуты если бы графическая нотация визуального языка представляла бы более непосредственно сущности имеющие отношение к управлению робота, а не с абстрактными программными структурами. Поэтому мы разработали VBBL (Поведенческий Ориентированный Визуальный Язык), визуальный язык, который непосредственно представлял понятия и структуры используемые в задачах управление роботом.

Хотя графические объекты в VBBL - имели непосредственное отношение к программированию робота, они - все еще являлись абстрактными объектами: состояния, поведение и т.п.. Мы попытались непосредственно представлять конкретные части объекты устройства, то есть сами части робота. Мы разработали двухмодульный метод, состоящий из Аппаратного Модуля Определения (HDM) и Программного Модуля Определения (SDM). HDM использован, чтобы описывать структуру, функционирование и визуальное представление специфического робота, а SDM использует это описание, чтобы программировать поведение робота.

Reactants

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

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

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