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