[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.]
|