Paradigm | мультипарадигма : объектно-ориентированный, visual, поток данных |
---|---|
Разработано | Университетом Акадии |
Разработчик | Разное |
Впервые появилось | 1983 |
OS | Кросс-платформенный : Классическая MacOS, Microsoft Windows, macOS |
Лицензия | Собственная |
Основные реализации | |
Prograph CPX, Marten | |
Под влиянием | |
функционального программирования, потока данных диаграмм |
Prograph является визуальным, объектно-ориентированным, поток данных, мультипарадигма язык программирования, в котором используются пиктограммы для обозначения действий, выполняемых с данными. Коммерческие среды разработки программного обеспечения Prograph, такие как Prograph Classic и Prograph CPX, были доступны для платформ Apple Macintosh и Windows в течение многих лет, но в конце концов были сняты с рынка в конце 1990-х годов. Поддержка языка Prograph в macOS недавно появилась с выпуском среды разработки программного обеспечения Marten.
Исследование Prograph началось в Университете Акадии в 1982 году как общее исследование языков потока данных, стимулировался семинаром по функциональным языкам, который провел Михаил Левин. Диаграммы использовались, чтобы прояснить обсуждение, что привело к пониманию: «поскольку диаграммы более понятны, чем код, почему бы не сделать сами диаграммы исполняемыми!» Таким образом, Prograph - программирование в графике - родился как язык визуального потока данных. Этой работой руководил доктор Томаш Петжиковски, а первые статьи были соавторами Стэна Матвина и Томаса Малднера. С 1983 по 1985 год исследовательские прототипы были построены на Three Rivers PERQ graphics workstation (на Pascal, данные визуализировались в виде огненных шаров, движущихся по каналам передачи данных), и VAX с терминалом Tektronix, а экспериментальный компилятор был запрограммирован на IBM PC. Эта работа была продолжена в Техническом университете Новой Шотландии Пьетжиковски и доктором Филипом Коксом, включая версию, выполненную в Prolog.
. В 1985 году началась работа над коммерческим прототипом на Macintosh, в то время доступен только широко доступный недорогой компьютер с поддержкой графики высокого уровня. В начале 1986 года этот прототип был передан компании Gunakara Sun Systems (позже переименованной в TGS Systems) для коммерциализации. TGS ранее была консалтинговой фирмой, созданной Петшиковским в Университете Акадии. Работая с Пьетжиковски и Коксом, Терри Килшоу нанял и руководил первоначальной командой разработчиков с Джимом Ласки в качестве ведущего разработчика. В 1987 году Марк Шпаковски предложил объединить объектную ориентацию с визуальным потоком данных, создав систему «объектного потока». После почти четырех лет разработки первый коммерческий выпуск v1.2 был представлен на конференции OOPSLA в Новом Орлеане в октябре 1989 года. Этот продукт получил награду MacUser Editor's Choice в 1989 году. за лучший инструмент разработки. Версия 2.0, выпущенная в июле 1990 года, добавила в систему компилятор.
TGS сменила название на Prograph International (PI) в 1990 году. Хотя продажи были медленными, в 1992 году была предпринята разработка новой версии Prograph CPX (Cross-Platform eXtensions), которая должна была создать полностью кросс-платформенный -платформенные приложения. Эта версия была выпущена в 1993 году, сразу за ней последовала разработка инфраструктуры клиент-серверных приложений. Несмотря на рост продаж, компания не смогла покрыть операционные расходы, и после неудачной попытки финансирования в конце 1994 года в начале 1995 года перешла на конкурсное управление.
По мере продолжения процедуры конкурсного производства руководство и сотрудники PI сформировали новую компания Pictorius, которая приобрела активы PI. Вскоре после этого была начата разработка версии Prograph CPX для Windows. Хотя он так и не был официально выпущен, версии Windows Prograph регулярно предоставлялись клиентам Prograph CPX, некоторые из которых с разной степенью успеха портировали существующие приложения, написанные на Macintosh Prograph.
После смены руководства в новой компании акцент сместился с разработки инструментов на индивидуальное программирование и разработку веб-приложений. В апреле 2002 года подразделение компании, занимающееся веб-разработкой, было приобретено Paragon Technology Group на Бермудских островах и переименовано в Paragon Canada. Имя Pictorius и права на исходный код Prograph были сохранены за McLean Watson Capital, инвестиционной фирмой из Торонто, которая в значительной степени финансировала Pictorius. Ссылка на Pictorius некоторое время появлялась на странице «Портфолио» первого, но с тех пор исчезла. Версия CPX для Windows позже была выпущена для бесплатного использования и некоторое время была доступна для загрузки с остатков веб-сайта Pictorius (ссылка ниже).
Группа пользователей Prograph («программисты»), называющие себя «The Open Prograph Initiative » (OPI), сформированная в конце 1990-х годов с целью сохранения жизнеспособности Prograph перед лицом ОС. достижения Apple и Microsoft. Какое-то время группа также стремилась создать новый язык визуального программирования с открытым исходным кодом, который станет преемником Prograph, но с появлением среды визуального программирования Andescotia Marten участие в группе практически прекратилось.
Язык Prograph поддерживается средой Marten IDE от Andescotia Software.
В течение 1970-х годов сложность программ значительно росла, но инструменты, используемые для написания программ, в целом были аналогичны тем, которые использовались в 1960-х. Это приводило к проблемам при работе над более крупными проектами, которые становились настолько сложными, что даже простые изменения могли иметь побочные эффекты, которые трудно полностью понять. Значительное исследование проблемы заставило многих почувствовать, что проблема заключается в том, что существующие системы программирования сосредоточены на логике программы, в то время как на самом деле цель программы заключалась в манипулировании данными. Если обрабатываемые данные являются важным аспектом программы, почему данные не являются «первоклассным гражданином» языка программирования? Работая на этой основе, был разработан ряд новых систем программирования, включая объектно-ориентированное программирование и программирование потоков данных.
. Prograph развил эту концепцию, представив комбинацию объектно-ориентированных методологий и полностью визуальная среда для программирования. Объекты представлены шестиугольниками с двух сторон, одна из которых содержит поля данных, а другая - методы, которые с ними работают. Двойной щелчок с любой стороны откроет окно, показывающее детали этого объекта; например, при открытии стороны переменных вверху будут показаны переменные класса, а внизу - переменные экземпляра. Двойной щелчок по стороне метода показывает методы, реализованные в этом классе, а также унаследованные от суперкласса. При двойном щелчке по самому методу он открывается в другом окне, отображающем логику.
Работа с базой данных программы. Реализация методаВ Prograph метод представлен серией значков, каждый из которых содержит инструкции (или их группу). Внутри каждого метода поток данных представлен линиями в ориентированном графе. Данные проходят в верхней части диаграммы, проходят через различные инструкции и в конечном итоге возвращаются в нижнюю часть (если есть какие-либо выходные данные).
Некоторые особенности системы Prograph очевидны на этом изображении операции сортировки базы данных. Верхняя полоса показывает, что этот метод, concurrent sort
, передается в одном параметре, A Database Object
. Затем этот объект вводится по линиям в несколько операций. Три из них извлекают именованный индекс (indexA
и т. Д.) Из объекта с помощью операции getter
(вывод несвязанного получателя передается на «весь» объект), а затем передает извлеченный указатель на операцию сортировки. Результат этих операций сортировки затем передается вместе со ссылкой на исходную базу данных в последнюю операцию, обновить базу данных
. Полоса в нижней части рисунка представляет выходные данные этого метода, и в этом случае нет никаких подключений к нему, поэтому этот метод не возвращает значение. Также обратите внимание, что хотя это метод какого-то класса, не существует self
; если требуется self, его можно использовать в качестве входных данных или искать.
В языке потока данных операции могут выполняться, как только у них есть допустимые входные данные для всех их соединений. Традиционно это означает, что каждая операция в этом методе может выполняться одновременно. В примере с базой данных все сортировки могли бы выполняться одновременно, если бы компьютер был способен предоставлять данные. Языки потоков данных, как правило, по своей сути параллельны, что означает, что они могут работать в многопроцессорных системах «естественным образом», что было одной из причин, по которым они вызвали такой большой интерес в 1980-е годы.
Циклы и ответвления создаются путем изменения операций с аннотациями. Например, цикл, который вызывает метод doit
для списка входных данных, создается сначала путем перетаскивания оператора doit, затем присоединения модификатора цикла и предоставления списка в качестве входных данных для цикла. Другая аннотация, «инъекция», позволяет использовать сам метод в качестве входных данных, что в некоторой степени делает Prograph динамическим языком.
Интегрированная среда разработки и выполнения Prograph также допускает визуальную отладку. Поддерживались обычные точки останова и пошаговые механизмы. Каждая операция на диаграмме потоков данных визуально выделялась при выполнении. Механизм, похожий на всплывающую подсказку, отображал значения данных, когда мышь находилась над каналом передачи данных при остановке в режиме отладки. Визуальное отображение стека выполнения позволяет выполнять как откат, так и откат вперед. Для многих пользователей аспекты визуального исполнения языка были так же важны, как и его графические возможности во время редактирования.
Самой важной функцией отладки во время выполнения была возможность изменять код на лету во время отладки. Это позволяло исправлять ошибки во время отладки без необходимости перекомпиляции.
Некоторые проблемы с системой Prograph также очевидны в реализации этого метода.
Код программы можно прокомментировать с помощью меток. В первоначальных версиях большинство включенных классов не было помечено. Часто приходилось обращаться к документации, чтобы определить правильные входные данные для метода. Это было в значительной степени решено в последующих версиях, но методы никогда не документировались до такой степени, что в комментариях объяснялось, как и почему эти методы работают.
Разработчикам приходилось уделять внимание маршрутизации проводки и комментированию входов и выходов, чтобы код схемы был чистым. В приведенном выше примере Prograph Database Operation два пути пересекаются, потому что один из проводов от панели ввода должен идти к определенному вводу при операции обновления. Этого можно было избежать, просто перетащив и переместив значки 'indexA' и 'sort' так, чтобы они находились внутри самого левого провода, но в целом не было никакого способа избежать такого рода буквального кода спагетти.
Другой проблемой было обилие окон. При перемещении по рабочему пространству Prograph среда IDE обычно требовала открытия нового окна для просмотра содержимого методов.