Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Prograph
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Description== {{unreferenced|section|date=April 2024}} [[File:Prograph object types.PNG|thumb|192px|left|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 could have side effects that are 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 purpose of a program was to manipulate data. If the data being manipulated is the important aspect of the program, why isn't the data the "first class citizen" of the programming language? Working on that basis, a number of new programming systems evolved, including [[object-oriented programming]] and [[dataflow programming]]. Prograph took these concept further, introducing a combination of 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. [[File:Prograph database operation.PNG|thumb|200px|right|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 Prograph system are evident in this picture of a database sorting operation. The upper bar shows that this method, <code>concurrent sort</code>, is being passed in a single parameter, <code>A Database Object</code>. This object is then fed, via the lines, into several operations. Three of these extract a named index (<code>indexA</code> etc.) from the object using the <code>getter</code> operation (the unconnected getter output passes on the "whole" object), and then passes the extracted index to a sort operation. The output of these sort operations are then passed, along with a reference to the original database, to the final operation, <code>update database</code>. 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. Also note that although this is a method of some class, there is no <code>self</code>; if self is needed, it can be provided as an input or looked up. [[File:Prograph operators and controls.PNG|thumb|200px|left|Prograph operators and controls]] 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. In the database example, all of the sorts could take place at the same time if the computer were capable of supplying the data. 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. Loops and branches are constructed by modifying operations with annotations. For instance, a loop that calls the <code>doit</code> 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. {{clear}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)