[comp.lang.icon] Plusses and minuses of Icon

Paul_Abrahams@MTS.cc.Wayne.edu (04/08/91)

 
I've been following with interest the discussion about the
plusses and minuses of Icon.  My own view is that we shouldn't
expect a single programming language to be the best one around
for absolutely everything, any more than we expect that of other
fine tools.  Icon is superb for prototyping medium-size programs,
for quick and dirty solutions, and for symbol manipulation tasks,
especially those where goal-directed evaluation helps.  Examples
of tasks where I've found it beyond compare are an index
generation program for a book, a bootstrap version of a compiler,
and a printer-specific simulator of the IBM Script document
formatter.  Moreover, its internal structure and its superb
engineering make it a pleasure to use.
 
At the same time I cannot imagine that Icon would *ever* be the
language of choice for, say, writing a disk caching program in a
competitive commercial environment where the name of the game is
coming out first in the PC Magazine speed comparisons.  Nor can I
imagine it being used for writing a million-line spaceship
control program.  Two of its limitations are the inherent
efficiency of its code and the weakness of its global packaging
mechanisms. 
 
The proponents of nearly every language I know seem to feel that
criticism of the language for a particular application implies
criticism of the language in general.  I think that feeling is
misplaced.  With respect to Icon in particular, a very useful
activity would be to try to spell out the scope of tasks at which
Icon excels without attempting to make that scope universal. 
There are few language around that are as good at *anything* as
Icon is at the tasks for which it is suited.
 
Several people have argued that Idol solves the global packaging
problem.  That argument is in a sense irrelevant, for reasons
that have nothing to do with the intrinsic merits of Idol.  Idol
is not Icon; if we're talking about Icon, then let's leave Idol
out of it.  Perhaps Idol is the natural direction in which Icon
should evolve, and perhaps Idol will turn out to be Icon 9.0 (or
n.0).  But Idol does not as yet have the wide distribution, the
supporting structure, or the backlog of experience that Icon
does.  This is in no way a criticism of it or even a statement
about the limitations of its future.  If we're discussing the
merits of languages, let's keep our languages straight. 
 
 
Paul Abrahams
abrahams@mts.cc.wayne.edu