Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!gem.mps.ohio-state.edu!rpi!unix.cie.rpi.edu!vicc From: vicc@unix.cie.rpi.edu (VICC Project (Rose)) Newsgroups: comp.lang.icon Subject: Re: Why ICON? Message-ID: <7174@rpi.edu> Date: 10 Sep 89 15:26:23 GMT References: <223000001@s.cs.uiuc.edu> <8908271943.AA28708@megaron.arizona.edu> Sender: usenet@rpi.edu Distribution: inet Lines: 83 In article <8908271943.AA28708@megaron.arizona.edu>, kwalker@ARIZONA.EDU ("Kenneth Walker") writes: > > What is so special about it as a lanaguage > > that it merits its own notesfile? So far, most of what I've read has been > > about ICON bugs in Amiga! I would appreciate some explanation about the > > purpose of this language and whether it is at all worth learning. Why does it have its own newsgroup? Well since it is a government funded research project I think many people are interested in being able contibute ideas. It is also handy to have a newsgroup for each language. > I am on the Icon Project, so my opinions are somewhat biased. Perhaps > others of you can comment on what you find to be Icon's strengths > and weaknesses. What do you use Icon for and why? What don't you > use Icon for and why? (Perhaps I will express some of my biased > opinions after others have commented.) Why do I use Icon? Well, I use Icon because I like to experiment with neat computer languages and Icon is one, and (wow neato!) it is almost free (duplication and mailing costs only - or FTP, of course you still have to shell out $30 for the manual but a total cost of $50 for a language of this power is just spectacular. And gee, if you are interested in compiler design etc, the source plus a book describing the implementation may be had for a total cost of $80 or so. What do I program with it? Well one of my interests is writing text adventure games. A major feature of such games is a parser, it took me about 50 hours to write a decent parser in Icon, when I wrote in Pascal, it took me almost that long to write a very trivial parser. When I decided I wanted the program to word wrap its output, it took me 1 hour to write a word wrap routine. Another advantage of Icon: its extremely portable! True there are very few I/O procedures (such as graphics, cursor control {although maybe this is available on bigger systems?}, sound etc) but the bulk of the code is completely portable (well except co-expressions if your target doesn't support them). A developer who desired more fancy I/O could easily get the source code and add the procedures he needed and then for porting considerations, carefully control where these non-standard procedures are used. Since Icon is in the public domain, the modified executor could be distributed with programs. On the subject of portability I have a few questions: are executable images (.ICX) portable to all machines? how about some way to allow a standard call to included assembly language routines (or .OBJ type files from compilers)? Is this what personalized interpreters allow? If so could this feature be ported to the micro domain? how about a standard of some sort for system calls with some standardization for particular calls such as something like - syscall("movecursor",x,y) where x and y would be from 1 to n and translated as required, errors would be the result if the particular system did not support cursor addressing. along with this a variable &syscalls which listed the featured syscalls in the particular implementation (and perhaps any limits) the problem I see (with examples from the IBM-PC) is how to deal with the fact that micros will always come out with some usefull system call which does not yet have a standard name. How does that get standardized? Also how do you select between BIOS and DOS calls. BIOS calls are often faster but DOS calls are more portable, then of course one also has the choice of using ANSI codes and ANSI.SYS. Examples of some calls are the wealth of different keyboard and screen calls on the PC. Perhaps this is best left to commercial versions of the language, but I would like to see support of system calls in the general Icon langauge. Of course another problem is what do these system calls relate to in the Unix and VMS world? I guess movecursor etc would map to curses calls in Unix (I have no programming experience inm Unix, just dropping buzz words here). I also realize that system calls are of low priority to the Icon project. The Icon project is concerned with new language concepts, not how do you create a portable screen I/O system which supports more than teletype level of display control. Frank Filz