From: tim@cs.monash.edu.au (Tim Shimmin)
Subject: Re: trying to remember...
Organization: Computer Science, Monash University, Australia
Date: Wed, 18 Nov 1992 08:08:24 GMT

gseidman@math14.math.umbc.edu (gseidman@math14.math.umbc.edu) writes:
>I have been trying to remember what it was called, but there was a
>programming utility (pro-something? I don't recall) reviewed in a
>professional math journal..... 

Could you be meaning Prograph ?
Prograph is an object-oriented language written using graphical 
icons and links.

Object-oriented wise:
 - single inheritance
 - hierarchy displayed graphically as a tree
 - has a methods window and data window
 - it is not quite your typical object calling system:
      Normally one must specify the object first and then the message
      such as "object.message arguments".
      In prograph, you CAN do it that way but you can also just mention the
      class the method is in: "Class:message arguments" and this can
      be done anywhere and the arguments do not have to include an
      object from the "Class". I.e. it can be more like a call to a
      procedure in a module/package.

Basic theme:
- code is a graph with nodes as operators and arcs as data flows. Data
flows in at the top thru all the nodes and out the bottom.
This is the dataflow model where control flows by operations waiting for
their inputs before outputting. Since program is represented by a graph
structure it isn't clear in which order operations will actually proceed
unless one hits the space-bar and the next node is hightlighted.
However, operations can be explicitly ordered by attaching a special
"synchro" link.

Data types:
- standard primitives char, int, string,...
- list (like lisp) BUT no arrays
- classes
- access to Mac Types -> so can allocate dynamically

Compatability with Mac:
- it does this very well
- support for all the system 7 stuff
- uses standard Mac windows and Menus

User Interface Programming:
- quite good
- interface objects are represented in simple class structure
- has a good old graphical interface builder where one chooses the type
of widgets one wants to place - this can be extended with the
programmers own subclasses

Speed:
- when running the interpreter I found that it was quite reasonable
except when I wrote some interactive graphic stuff and then it was a bit
slow. I then compiled it all and the code was a lot faster.
- the compiled code runs faster (surprise:-) and worked ok for me.
However it compiles all the code in one hit because all the classes are
in the one file - which makes compilation slow.
- I did have trouble with saving my code/prographs. In an earlier
version it could take ages to save my program ! With the newer version
one can compact the code (graphics) and this makes things reasonable.

Learning curve:
- although I had done object oriented programming before (Think C &
Smalltalk) it took me quite a while to get use to this style of
programming. Handling conditionals (if then) is rather odd and takes a
bit of thinking sometimes as it is non-conventional. Instead of if-then
or case-stmt one tests a condition and decides whether to go on to the
next case which is in another window - thus all alternatives are in
separate windows !
Once you get used to it by writing a few of your own designed programs
and not just the tutorials - it's quite easy.

Good features:
- there are anotations for operation inputs which allow one to go thru
an entire list, divide a list up depending on a boolean function, etc.
- if one thinks a hunk of code should be abstracted into a produre then
one just selects it all and issues a command - it will be stored in a
procedure and all the code of nodes is now represented by just one node.
This is very handy. The procedure can be set as just local or a class
method.
- seeing all the code,classes,GUI and heirarchy in graphic form is
rather neat ! 

Contact:
- TGS Systems
  2745 Dutch Village Road, Suite 200
  Halifax, Nova Scotia, Canada B3L 4G7

Any specific questions that you have, I'd be happy to answer.
--
------------------------------------------------------------------------
          Name:        Tim Shimmin 
          Net Address: tim@bruce.cs.monash.edu.au
------------------------------------------------------------------------
Newsgroups: comp.sys.mac.oop.misc