[Date Prev] [Date Next] [Thread Prev] [Thread Next] Date Index Thread Index Search archive:
Date:Mon Apr 21 21:17:30 1993 
Subject:Notes on GLOW 
From:Steve Knight 
Volume-ID:930422.01 

[Here's parts of a letter from Mark Bassett (MetaPraxis) about GLOW, 
a PC based Pop dialect.  I thought it was of general interest so I've
edited it and put it here.  Any mistakes are mine, all mine.  I
met up with Mark after he wrote this letter & I've made additions on the
basis of what I found out then ....]


Firstly the correction to the BYTE address:
   Andrew Arblaster,
   NightOwl Software
   Bollostraat 6
   B-3140 Keerbergen
   Belgium
   010 32 15 234 871

Secondly, you don't actually need to know this because there is a UK address
you can use instead:

   Three Trees Software Ltd.
   Andrew Arblaster
   Room 40/660
   Trafford House
   Station Way
   Basildon
   ESSEX SS16 5XX
   0268 702 604

A copy of GLOW for the Macintosh, complete with User Manuals etc. 
costs 69.95+VAT (this includes p&p).  It takes about three weeks for the 
order to arrive.  Herewith a flying tour of the package, focusing on the
differences from POP.

Keywords: many small syntactic differences e.g. def instead of define,
eif and efor, not endif and endfor, etc. 

Scope: the manual claims that all variables are lvars but as there are
no nested procedures it isn't clear what this means, but there are functions 
to let you evaluate expressions in the run-time environment. You can create 
named "contexts" (like top-level sections), and only vars and functions 
that are explicitly exported from the context are visible outside it. You can 
create closures by "freezing" functions, but there is no partial application
syntax.

List syntax: GLOW has two types of list brackets: {} & []. The curly brackets 
quote their contents, the square brackets don't. "Splicing" expressions into 
lists with % works almost the same as POP but with some small syntax 
differences.  [There is a bug in GLOW in this area which Mark & I are
in the process of tracking down.]

Data types: numbers, words, strings and lists. Records and keys are not
provided as they are subsumed into the object-oriented features (see later).
No vectors.  There are arrays.

Pattern matching: the definition of patterns is noticeably different, 
but it has all the functionality of the POP matcher. An interesting twist
with regard to pattern variables: when a pattern succeeds the matcher returns 
a list of variable bindings, rather than actually binding the variables 
itself.  [Rather clumsy compared with the POP matcher.]

Flow of control: all the usual loops and conditionals. You can chain to 
another function, and a named function can be exited from any point below it 
in the call heirarchy. There's no catch and throw. Also no processes.

Object-orientation: You can create object class definitions, called 
varieties, with instance variables and methods. (The root class is known
as the "Garden" variety, ho-ho.) Varieties can (multiply) inherit features
from one another. However, all procedures including operators like "+"
can be extended using methods.

Other stuff: e.g. updaters, syntax and compile-time macros, etc. are all 
supported.  [It is quite different from POPLOG VM code, though.]

System features: requires 256Kb of disc space, and 512Kb memory. Includes
integral file editor and simplified cut-and-paste between the editor and the
GLOW environment.  There are lots of functions to provide access to the Mac 
Toolbox, but the performance on my machine is not such as to make this 
exciting.  [We compared performance against Think Pascal, a standard 
programming package on the Mac.  GLOW was rather worse than two orders of 
magnitude slower -- so it was running at the speed of shell script.]

And no, you can't make double-clickables :-(  [Mark is refering to the
ability to deliver stand-alone Mac applications.]