home *** CD-ROM | disk | FTP | other *** search
- Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!hecate.umd.edu!cs.umd.edu!zombie.ncsc.mil!newsgate.duke.edu!nntprelay.mathworks.com!europa.clark.net!4.1.16.34!cpk-news-hub1.bbnplanet.com!news.bbnplanet.com!cs.utexas.edu!ennfs.eas.asu.edu!noao!CS.Arizona.EDU!not-for-mail
- From: icon-project@cs.arizona.edu
- Newsgroups: comp.lang.icon,comp.answers,news.answers
- Subject: Icon Programming Language FAQ
- Followup-To: comp.lang.icon
- Date: 3 Oct 1997 08:04:05 -0700
- Organization: University of Arizona CS Department, Tucson AZ
- Lines: 373
- Sender: slm@CS.Arizona.EDU
- Approved: news-answers-request@MIT.Edu
- Message-ID: <6131h5$6lf@kingfisher.CS.Arizona.EDU>
- Reply-To: icon-project@cs.arizona.edu
- NNTP-Posting-Host: kingfisher.cs.arizona.edu
- Xref: senator-bedfellow.mit.edu comp.lang.icon:3846 comp.answers:28360 news.answers:113805
-
- Archive-name: comp-lang-icon-faq
- Posting-Frequency: monthly
-
- Frequently Asked Questions About The Icon Programming Language
-
- Last updated: December 11, 1996
-
- This FAQ answers various questions about the Icon programming language,
- ranging from what it is to how you can get it. The master copy of this FAQ
- is the Web page http://www.cs.arizona.edu/icon/faq.html. Other on-line
- documentation is available via the main Icon page at
- http://www.cs.arizona.edu/icon/.
-
- This FAQ is written by Ralph Griswold and Gregg Townsend, with help from
- Cliff Hathaway, Clint Jeffery, and Bob Alexander.
-
- * 1. What is Icon?
- * 2. What is Icon good for?
- * 3. Where did Icon come from?
- * 4. What does "Icon" stand for?
- * 5. On what computers does Icon run?
- * 6. Who did all these implementations?
- * 7. Are there other implementations in the works?
- * 8. What about different versions of Icon?
- * 9. Which implementations of Icon have graphics/window capabilities?
- * 10. Where can I get Icon?
- * 11. Where can I get documentation about Icon?
- * 12. How do I get started with Icon?
- * 13. What is the Icon Project?
- * 14. Where can I find examples of Icon programs?
- * 15. What is Idol?
- * 16. How often is material in Icon's FTP area updated?
- * 17. How do I stay up to date with what's going on with Icon?
- * 18. Is there a users' group for Icon?
- * 19. How do I get technical support?
- * 20. What do I need to run Icon?
- * 21. Can I build my own implementation of Icon for a new platform?
-
- ----------------------------------------------------------------------------
-
- 1. What is Icon?
-
- Icon is a very high level general-purpose programming language with
- extensive features for processing strings (text) and data structures. Icon
- is an imperative, procedural language with a syntax that is reminiscent of C
- and Pascal, but its semantics are at a much higher level than those
- languages.
-
- Icon has a novel expression-evaluation mechanism that integrates
- goal-directed evaluation and backtracking with conventional control
- structures. It has a string scanning facility for pattern matching that
- avoids the tedious details usually associated with analyzing strings. Icon's
- built-in data structures include sets and tables with associative lookup,
- lists that can be used as vectors or stacks and queues, and records.
-
- Icon is a strongly, though not statically, typed language. It provides
- transparent automatic type conversion. For example, if an integer is used in
- an operation that requires a string, the integer is automatically converted
- to a string.
-
- Several implementations of Icon have high-level graphics facilities with an
- easily programmed window interface.
-
- Icon manages storage automatically. Objects are created as needed during
- program execution and space is reclaimed by garbage collection as needed.
- The sizes of strings and data structures are limited only by the amount of
- available memory.
-
- 2. What is Icon good for?
-
- As a general-purpose programming language with a large computational
- repertoire, Icon can be used for most programming tasks. It's at its best
- when used build software tools, for processing text, and when ease of
- programming is needed for experimental and research applications.
-
- Paradoxically, Icon is used most often for short, one-shot tasks and for
- very complex applications.
-
- Icon is designed to make programming easy; it emphasizes the value of
- programmer's time and the importance of getting programs to work quickly.
- This explains its usefulness for prototyping as well as the apparent paradox
- of applicability to simple and complex applications.
-
- 3. Where did Icon come from?
-
- Icon is the latest in a series of high-level programming languages designed
- to facilitate programming tasks involving strings and structures. The
- original language, SNOBOL, was developed at Bell Telephone Laboratories in
- the early 60s. SNOBOL evolved into SNOBOL4, which is still in use.
- Subsequent languages were developed at The University of Arizona with
- support from the National Science Foundation.
-
- Incidentally, Icon bears little physical resemblance to SNOBOL4, although it
- has similar objectives and many similar capabilities.
-
- 4. What does "Icon" stand for?
-
- The name Icon (which is not spelled ICON) is not an acronym nor does it
- stand for anything in particular, although the word "iconoclastic" was
- mentioned at the time the name was chosen. The name predates the now common
- use of "icon" to refer to small images used in graphical user interfaces.
- This latter usage sometimes causes persons to think mistakenly that Icon is
- designed to create or manipulate icons. There's not much that can be done
- about this.
-
- 5. On what computers does Icon run?
-
- The implementation of Icon is highly portable. Version 9 runs on UNIX,
- MS-DOS, Windows, NT, Macintosh/MPW, VAX/VMS, the Amiga, and the Acorn
- Archimedes. There are older versions for the Atari ST, IBM CMS and MVS, the
- Macintosh, and OS/2.
-
- Icon programs also are highly portable. Most Icon programs can run on any
- platform that supports Icon.
-
- 6. Who did all these implementations?
-
- The original implementation of Icon for UNIX was done at The University of
- Arizona. Most of the other implementations originally were done by
- volunteers scattered around the world.
-
- It's worth noting that all implementations of Icon are based on the same
- source code, which is written in C. This contributes to the portability of
- Icon itself, as well as to the portability of programs written in Icon.
-
- 7. Are there other implementations in the works?
-
- Work is constantly underway on implementations of Icon for new platforms.
- Microsoft Windows and Windows NT implementations are in beta testing.
-
- 8. What about different versions of Icon?
-
- Icon has evolved through a series of versions with improved and extended
- capabilities. The latest major version number is 9. This version includes
- recent changes and additions, notably in the graphics area, and runs on
- UNIX, MS-DOS, Macintosh/MPW, VAX/VMS, the Amiga, and Acorn Archimedes. Other
- implementations presently are at Version 8. Almost all programs that run
- under Version 8 and that do not use graphics will run under Version 9.
-
- 9. Which implementations of Icon have graphics/window capabilities?
-
- Icon's graphics facilities presently are supported on UNIX and VAX/VMS.
- Windows NT and Microsoft Windows implementations that support Icon's
- graphics facilities are in beta testing.
-
- 10. Where can I get Icon?
-
- Icon is available via anonymous FTP and on the Web. For FTP, use
-
- ftp.cs.arizona.edu
-
- and cd /icon.
-
- For the Web, use
-
- http://www.cs.arizona.edu/icon/
-
- and check out the links there.
-
- For FTP, the directory /icon/binaries contains executable versions of Icon
- for several systems, including several popular UNIX platforms. The directory
- /icon/packages contains source code, test programs, related material, and,
- most cases, executable binaries as well. All directories have README files
- with additional information.
-
- 11. Where can I get documentation about Icon?
-
- The definitive work on Icon is the book
-
- The Icon Programming Language, Griswold and Griswold, third
- edition, Peer-to-Peer Communications, Inc, 1996, 386 pages, ISBN
- 1-57398-001-3.
-
- This book is a complete description and reference manual for Version 9 of
- Icon. A technical report describes changes since that version.
-
- There also is a book on the implementation of Icon:
-
- The Implementation of the Icon Programming Language, Griswold and
- Griswold, Princeton University Press, 1986, 336 pages, ISBN
- 0-691-08431-9.
-
- This book describes the implementation as of Version 6 of Icon. Although the
- implementation has changed considerably since then, the basic structure is
- the same. Technical reports describing recent implementation changes are
- included with copies of the book purchased from the Icon Project.
-
- These books are available from the Icon Project.
-
- Additional documentation is available via FTP in /icon/doc. Notable
- documents are:
-
- * IPD266: An Overview of Icon (text, PostScript, PDF)
- * IPD281: Graphics/window facilities (PostScript, PDF)
- * IPD278: Version 9.3 of Icon (text, PostScript, PDF)
-
- There are manual pages for UNIX systems, and more documentation under the
- Icon web page, but there is no complete on-line documentation.
-
- The Icon Newsletter, which includes topical material about Icon and a list
- of material available from the Icon Project, is published three times a year
- and is available on the Web. There is a subscription fee for an on-going
- subscription by postal mail. The Icon Analyst, a technically-oriented
- newsletter that features articles about programming, is published six times
- a year. There is a subscription fee for the Analyst. A sample copy is
- available on the Web.
-
- All back issues of both newsletters are available for purchase.
-
- 12. How do I get started with Icon?
-
- If you're running under UNIX, check first in the /icon/binaries/unix FTP
- directory to see if there is a "starter kit" for your platform. Starter kits
- include executables, documentation, and other material.
-
- Otherwise, go to the /icon/packages directory and get the appropriate
- package. Packages include documentation and other material; see the README
- file in that directory for more details. There is a UNIX package for
- platforms that lack starter kits.
-
- If the non-UNIX package you pick up does not contain executable files, check
- /icon/binaries. You also may want to get the overview of Icon:
- /icon/doc/ipd266.txt or ipd266.ps.Z. You'll find pointers to other documents
- of interest in the package you pick up.
-
- 13. What is the Icon Project?
-
- The Icon Project is a name used by the group that develops, implements,
- distributes, and supports the Icon programming language.
-
- The Icon Project is not commercial organization. It derives support from The
- University of Arizona, revenue from the sale of program material and
- documentation, and user contributions.
-
- 14. Where can I find examples of Icon programs?
-
- There is a large program library for Icon. It is an excellent resource for
- both new and experienced programmers. The library contains numerous examples
- of how to do things with Icon. The library also provides many useful
- applications, as well as hundreds of procedures that supplement Icon's
- built-in repertoire.
-
- The library, like other Icon material, is available via FTP in
- /icon/library.
-
- 15. What is Idol?
-
- Idol is an object-oriented extension to Icon that provides concepts such as
- classes and multiple inheritance. Idol is written in Idol and is distributed
- as part of the Icon program library. Idol runs on almost all of the
- platforms that support Icon.
-
- Additional Idol information is available from Clint Jeffery,
-
- jeffery@ringer.cs.utsa.edu.
-
- 16. How often is material in Icon's FTP area updated?
-
- New material is added when it's available. Established implementations
- usually are updated only when there's a new version. This typically is every
- year or two. The Icon program library is updated on a similar schedule.
-
- 17. How do I stay up to date with what's going on with Icon?
-
- The best way to find out about developments related to Icon is to read the
- Icon Newsletter.
-
- You can stay up to date on the source code, which is changed much more
- frequently than the version on FTP is updated, by subscribing to the source
- update service, which provides a new version about twice a year.
-
- There also is a subscription service for updates to the Icon program
- library, which provides new material about twice a year.
-
- There is on-line information about subscribing to these services.
-
- 18. Is there a users' group for Icon?
-
- There is no official Icon users' group. The Icon Project maintains an
- electronic mailing list,
-
- icon-group@cs.arizona.edu.
-
- Mail sent to this address is forwarded to subscribers. To subscribe (or
- unsubscribe), send a message to
-
- icon-group-request@cs.arizona.edu.
-
- There is a gateway between icon-group and comp.lang.icon, an unmoderated
- newsgroup for discussing issues related to Icon. The gateway, which
- exchanges messages between the two systems, is imperfect and not under the
- control of the Icon Project.
-
- The newsgroup generally provides faster response than the mailing list, is
- less intrusive, but sometimes suffers from inappropriate postings. The Icon
- Project usually sends messages of interest to the Icon community to
- icon-group.
-
- 19. How do I get technical support?
-
- The Icon Project is not a commercial organization, and its capacity for
- providing technical support is limited. Please use the appropriate resource
- when you need assistance:
-
- Ordering Icon Material
-
- mail: Icon Project
- Department of Computer Science
- The University of Arizona
- P.O. Box 210077
- Tucson, Arizona 85721-0077
- U.S.A.
-
- fax: (520) 621-4246
- voice: (520) 621-6613
- e-mail: icon-orders@cs.arizona.edu
-
- Getting On-Line Information and Material
-
- web: http://www.cs.arizona.edu/icon/
- ftp: ftp.cs.arizona.edu (cd /icon)
- e-mail: ftpmail@cs.arizona.edu
-
- Send a message consisting of the word help.
-
- Assistance with Installing Icon
-
- e-mail: icon-project@cs.arizona.edu
-
- Bug Reports
-
- e-mail: icon-project@cs.arizona.edu
- fax: (520) 621-4246
-
- Assistance with Programming Problems
-
- e-mail: icon-group@cs.arizona.edu
- news: comp.lang.icon
-
- Uploading Files
-
- ftp: ftp.cs.arizona.edu (cd /incoming)
-
- After uploading, send e-mail to icon-project@cs.arizona.edu.
-
- 20. What do I need to run Icon?
-
- Icon will run on most computers. Under MS-DOS, the Icon interpreter needs at
- least 500 KB of application RAM to work well.
-
- 21. Can I build my own implementation of Icon for a new platform?
-
- As mentioned above, Icon is written in C and the source code is available.
- The existing implementations are testament to its portability. (A small
- amount of assembly-language code is required for a context switch, but this
- is only needed for an optional feature -- co-expressions -- that can be
- disabled without affecting other features of Icon.)
-
- New ports involve platform-specific configuration parameters and, in some
- cases, platform-specific code. The feasibility of a new port and the amount
- of work it may take depends on the platform -- its architecture, its C
- compiler, and its environment.
-
- Ports to new UNIX platforms generally are easy, although novel architectures
- may present problems. Ports to new operating systems generally are more
- difficult, especially if Icon's graphics facilities are implemented.
-
- The Icon Project provides what help it can with new ports. In return, it
- asks that code related to the port to be returned to the Icon Project for
- inclusion in future versions of the source code for Icon. This makes the new
- port available to others as well as to the porter when Icon is updated.
-