Prograph

Missing image
Prograph_cpx_logo.PNG
Prograph CPX logo

Prograph is a visual programming language that uses iconic symbols to represent actions to be taken on data. One of a class of dataflow languages, Prograph was offered commercially for many years on the Apple Macintosh platform. However a number of problems in the system, as well as its general "oddity", made it a niche player for its entire lifetime, and the product was eventually withdrawn from the market in the late 1990s.

History

Research on what would eventually evolve into Prograph started at the Technical University of Nova Scotia in 1982 as a general investigation into dataflow languages. The system developed through the decade, and after five years it had evolved into a fairly complete environment on the only computer able to host it, the Mac.

Seeing commercial potential, TGS Systems (The Gunkara Sun) formed in 1987 to sell the system. The first release was ready after a year and a half of further development, and shipped in October 1988. Several upgrades followed; 1.1 shipped in March 1989 with a number of additions, 1.2 in September added almost complete coverage of the Mac Toolbox API, and in July 1990 they released Prograph 2.0, which added a compiler to the system.

Sales were slow, and TGS eventually went bankrupt. However the principal founders re-formed the company as Prograph International and continued development. Prograph generated some interest, but did not find a wide following and development could not be fully funded. Eventually a new version, Prograph CPX (Cross-Platform eXtensions) was announced that was intended to build fully cross-platform applications, and released in 1994. However the Microsoft Windows version took much longer to ship than was expected, and the company eventually went bankrupt in the process.

Re-forming once again in the mid-1990s as Pictorius, the company finally released the Windows version of CPX but this did little better than the Mac version, and the product was eventually withdrawn from the marketplace in 1999. Pictorius turned to custom programming and web application development. In April 2002 the web development part of the company was acquired by the Paragon Technology Group of Bermuda and renamed Paragon Canada. The Pictorius name and rights to the Prograph source code were retained by McLean Watson Capital, a Toronto-based investments firm which had heavily funded the various incarnations of the company. A reference to Pictorius appeared for a time on the former's Portfolio page, but has since disappeared. The Windows version of CPX was later released for free use, and is still available for download from the remnants of the Pictorius website (link below).

A group of Prograph users calling themselves The Open Prograph Initiative has been in existence since the late 1990s; formed initially with the goal of keeping Prograph viable in the face of OS advances by Apple and Microsoft, the group now also seeks to create a new visual programming language to serve as Prograph's successor.

Description

Prograph objects
Prograph objects
All images courtesy MacTech

During the 1970s program complexity was growing considerably, but the tools used to write programs were generally similar to those used in the 1960s. This led to problems when working on larger projects, which would become so complex that even simple changes were difficult to fully understand. Considerable research into the problem led many to feel that the problem was that existing programming systems focused on the logic of the program, while in reality the function of a program was to manipulate data. If the data is to be manipulated, why is it not the "first class citizen" of the programming language? Working on that basis, a number of new programming systems evolved, including both object-oriented programming, and dataflow languages.

Prograph took the concept further, introducing both object-oriented methodologies, and a completely visual environment for programming. Objects are represented by hexagons with two sides, one containing the data fields, the other the methods that operate on them. Double-clicking on either side would open a window showing the details for that object, for instance, opening the variables side would show class variables at the top and instance variables below. Double-clicking the method side shows the methods implemented in this class, as well as those inherited from the superclass. When a method itself is double-clicked, it opens into another window displaying the logic.

Missing image
Prograph_database_operation.PNG
Prograph database operation

Method implementation

In Prograph a method is represented by a series of icons, each icon containing an instructions (or group of them). Within each method the flow of data is represented by lines in a directed graph. Data flows in the top of the diagram, passes through various instructions, and eventually flows back out the bottom (if there is any output).

Several features of the Program system are evident in this picture of a database sorting operation. The upper bar shows that this method, concurrent sort, is being passed in a single parameter, A Database Object. This object is then fed, via the lines, into several operations. Three of these extract a named index and then pass it in turn to a sort operation. The output of these sorts are then passed, along with a reference to the original database, to the final operation, update database. The bar at the bottom of the picture represents the outputs of this method, and in this case there are no connections to it and so this method does not return a value.

In a dataflow language the operations can take place as soon as they have valid inputs for all of their connections. That means, in traditional terms, that each operation in this method could be carried out at the same time. Dataflow languages tend to be inherently concurrent, meaning they are capable of running on multiprocessor systems "naturally", one of the reasons that it garnered so much interest in the 1980s. Also note that although this is a method of some class, there is no self; if self is needed, it can be provided as an input or looked up. In this case the operators extracting the indexes from the database are "getters", and pass back self in their first output (left unconnected here) and the instance variable in the second output.

Prograph operators and controls
Operators and controls

Loops and branches are constructed by modifying operations with annotations. For instance, a loop that calls the doit method on a list of input data is constructed by first dragging in the doit operator, then attaching the loop modifier and providing the list as the input to the loop. Another annotation, "injection", allows the method itself to be provided as an input, making Prograph a dynamic language to some degree.

Several problems with the Prograph system are also evident in this image, although perhaps not as obvious. For one, the inputs and outputs are not labeled. Labels are up to the programmer to provide via on-screen "comments", but this places the comment in the wrong place; if you already know the answer there's no point seeing it in your own code, in order to see the comments on the code you're using, you need to open the window for those methods. Worse, the vast majority of Prograph's own code was left unlabeled, making trips to the documentation far too frequent. Tooltips would have helped tremendously here, as would a hotkey to turn them all on at once. Another problem is that many icons simply don't "translate" well into familiar programming terms, and in other cases some particularly obvious possibilities are not used. Consider the getter operators in this picture, does a rectangle with a notch in it imply "get"?

Just as annoying was the fact that the "wiring" could not be routed in order to clean up the diagrams. In this instance one two of the paths cross because one of the wires from the input bar has to flow to a particular (unlabeled, of course) input on the update operation. Typical program methods often turned into spaghetti code that would make traditional text-based programmers wince.

Finally, Prograph included no simple way to gather up several operations into a single "black box", without turning it into a method of its own. The side effect of this is that complex operations needed to be broken down in order to maintain readability. However Prograph forced each method to open into its own window, and so typical programming sessions involved moving from window to window. Sadly Prograph offered almost no functionality for dealing with this mess of windows, with the exception of the "back" and "forward" buttons visible in the picture above.

While in theory Prograph was an interesting attempt to break out of the traditional paradigm of text-processing for program construction, it failed as a practical system due to what amounted to solvable GUI problems.

External links

Pictorius (http://192.219.29.95/)
- Pictorius's home page, no longer even having a DNS record. The Prograph downloads can be found here (http://192.219.29.95/prograph.html).
Prograph CPX - A Tutorial (http://www.mactech.com/articles/mactech/Vol.10/10.11/PrographCPXTutorial/)
- an excellent article on the system, dating to shortly after the original release of Prograph CPX
Prograph (http://www.cs.berkeley.edu/~maratb/cs263/paper/node14.html)
- a short overview of the system
The Open Prograph Initiative (http://opi.ospgli.org/)
- Home page of the group interested in creating an open source version of Prograph
Navigation

  • Art and Cultures
    • Art (https://academickids.com/encyclopedia/index.php/Art)
    • Architecture (https://academickids.com/encyclopedia/index.php/Architecture)
    • Cultures (https://www.academickids.com/encyclopedia/index.php/Cultures)
    • Music (https://www.academickids.com/encyclopedia/index.php/Music)
    • Musical Instruments (http://academickids.com/encyclopedia/index.php/List_of_musical_instruments)
  • Biographies (http://www.academickids.com/encyclopedia/index.php/Biographies)
  • Clipart (http://www.academickids.com/encyclopedia/index.php/Clipart)
  • Geography (http://www.academickids.com/encyclopedia/index.php/Geography)
    • Countries of the World (http://www.academickids.com/encyclopedia/index.php/Countries)
    • Maps (http://www.academickids.com/encyclopedia/index.php/Maps)
    • Flags (http://www.academickids.com/encyclopedia/index.php/Flags)
    • Continents (http://www.academickids.com/encyclopedia/index.php/Continents)
  • History (http://www.academickids.com/encyclopedia/index.php/History)
    • Ancient Civilizations (http://www.academickids.com/encyclopedia/index.php/Ancient_Civilizations)
    • Industrial Revolution (http://www.academickids.com/encyclopedia/index.php/Industrial_Revolution)
    • Middle Ages (http://www.academickids.com/encyclopedia/index.php/Middle_Ages)
    • Prehistory (http://www.academickids.com/encyclopedia/index.php/Prehistory)
    • Renaissance (http://www.academickids.com/encyclopedia/index.php/Renaissance)
    • Timelines (http://www.academickids.com/encyclopedia/index.php/Timelines)
    • United States (http://www.academickids.com/encyclopedia/index.php/United_States)
    • Wars (http://www.academickids.com/encyclopedia/index.php/Wars)
    • World History (http://www.academickids.com/encyclopedia/index.php/History_of_the_world)
  • Human Body (http://www.academickids.com/encyclopedia/index.php/Human_Body)
  • Mathematics (http://www.academickids.com/encyclopedia/index.php/Mathematics)
  • Reference (http://www.academickids.com/encyclopedia/index.php/Reference)
  • Science (http://www.academickids.com/encyclopedia/index.php/Science)
    • Animals (http://www.academickids.com/encyclopedia/index.php/Animals)
    • Aviation (http://www.academickids.com/encyclopedia/index.php/Aviation)
    • Dinosaurs (http://www.academickids.com/encyclopedia/index.php/Dinosaurs)
    • Earth (http://www.academickids.com/encyclopedia/index.php/Earth)
    • Inventions (http://www.academickids.com/encyclopedia/index.php/Inventions)
    • Physical Science (http://www.academickids.com/encyclopedia/index.php/Physical_Science)
    • Plants (http://www.academickids.com/encyclopedia/index.php/Plants)
    • Scientists (http://www.academickids.com/encyclopedia/index.php/Scientists)
  • Social Studies (http://www.academickids.com/encyclopedia/index.php/Social_Studies)
    • Anthropology (http://www.academickids.com/encyclopedia/index.php/Anthropology)
    • Economics (http://www.academickids.com/encyclopedia/index.php/Economics)
    • Government (http://www.academickids.com/encyclopedia/index.php/Government)
    • Religion (http://www.academickids.com/encyclopedia/index.php/Religion)
    • Holidays (http://www.academickids.com/encyclopedia/index.php/Holidays)
  • Space and Astronomy
    • Solar System (http://www.academickids.com/encyclopedia/index.php/Solar_System)
    • Planets (http://www.academickids.com/encyclopedia/index.php/Planets)
  • Sports (http://www.academickids.com/encyclopedia/index.php/Sports)
  • Timelines (http://www.academickids.com/encyclopedia/index.php/Timelines)
  • Weather (http://www.academickids.com/encyclopedia/index.php/Weather)
  • US States (http://www.academickids.com/encyclopedia/index.php/US_States)

Information

  • Home Page (http://academickids.com/encyclopedia/index.php)
  • Contact Us (http://www.academickids.com/encyclopedia/index.php/Contactus)

  • Clip Art (http://classroomclipart.com)
Toolbox
Personal tools