![[newsletter masthead]](../inl_mast.gif)
![[dragon masthead]](../dragonc.gif)
No. 50 -- August 1, 1996
Contents
Third Edition of the Icon Book

We are preparing the third edition of the book The Icon Programming Language.
This edition will be published by Peer-to-Peer Communications, a company
that specializes in books related to computers.
The new edition will describe Version 9 of Icon. In addition to covering
features that have been added to Icon since Version 8 (which the second
edition covered), the new edition will contain new chapters on procedure
libraries, debugging, and an overview of graphics. (The forthcoming book
on graphics programming in Icon will contain a complete description of Icon's
graphic facilities.) There also will be new material on programming techniques,
new appendices, and new program examples.
The third edition of the Icon book is scheduled for publication in October
at a price of $34.95.
For more information about Peer-to-Peer Communications, visit their Web
site:
http://www.peer-to-peer.com/
New Implementations of Icon
Three new implementations are available on our Web site. See the article
that starts on page 4.
Giovanni Lo Conti has implemented Version 9.1 of Icon for The Acorn Archimedes.
Marc Culler has brought Amiga Icon up to Version 9.1. Graphics facilities
are planned but not yet implemented. He would appreciate feedback from persons
who try his implementation. He can be reached at
culler@math.uic.edu
There also is a new implementation of Version 9.1 for 32-bit MS-DOS that
corrects some problems with the previous implementation.
Icon for Chinese Computing

A group in the Department of Systems Engineering and Engineering Management
at the Chinese University of Hong Kong has designed and implemented a version
of Icon for processing Chinese text.
You can learn more about their work and download their implementation from
their Web site:
http://www.se.cuhk.hk/~snowball/
Teaching Icon
We're sometimes asked how to teach Icon. There's no single, simple answer
to this question. Teaching Icon, like teaching any other programming language,
depends on the context, the students, their backgrounds, the time available,
the goals, and so forth. Less obvious, but quite important in the case of
Icon, is the teacher's experience and understanding of Icon.
We know that Icon is taught in the college classroom in departments as diverse
as computer science and history. In academic environments, Icon often is
taught as part of a course or as a tool for a specific use. Workshops using
Icon have been given on topics as diverse as computing in the humanities
and rapid prototyping for industry.
We tried to deal with this diversity as well as self study when we wrote
the book The Icon Programming Language. The first edition covered the more
conventional features first - those features similar to ones in languages
students might already know, like Pascal and C.
One problem with this approach is that learning may stop with the more conventional
features of Icon. At this point Icon looks like a high-level C with garbage
collection. Students may never appreciate, much less exploit, the features
of Icon that are the most powerful and that distinguish it from other programming
languages.
Unfortunately, teachers who are used to teaching other programming languages
and then are asked to teach Icon may themselves not understand the less
conventional and more powerful features of Icon. Such teachers therefore
tend to concentrate on the conventional features of Icon and give little
attention to the rest of the language. They may "run out of time"
before they get to generators, for example.
For these reasons, in the second edition of the Icon book we tried to introduce
the distinguishing features of Icon early on. For example, string scanning
has a chapter of its own before the chapter on more conventional forms of
string processing.
Teaching Icon at Arizona
In our curriculum, Icon is taught as one of the programming languages in
an undergraduate course called Comparative Programming Languages. The purpose
of this course is to expose students to a range of programming languages
that are different from the ones they use in most of their other courses
- to teach them about different kinds of programming language features and
different ways of looking at programming problems. Languages that have been
covered in this course include APL, GPSS, SNOBOL4, C, C++, Icon, Lisp, ML,
and Prolog.
Icon also has been taught in our department as an integral part of a cource
on string and list processing, both at the undergraduate and graduate levels,
as the basis for a course in graphics programming, and in several advanced
classes on subjects like program visualization.
More to Come
Out of this collective experience, we've learned a lot about teaching Icon
- what concepts are difficult, what some of the pitfalls are, how students
with different backgrounds and attitudes take to Icon, and so forth.
In subsequent articles in the Newsletter, we'll cover various topics relevant
to teaching Icon, starting with comments from instructors who have taught
our Comparative Programming Languages course.
In the meantime, if you have thoughts about teaching Icon that you'd like
to share, let us know. Send e-mail to
icon-project@cs.arizona.edu

Book Sale!
We need to make room for the third edition of the Icon language book and
must clear out our remaining stock of the second edition.
The publisher's closing price for the second edition was $41 (although we
lowered our price to make the book more affordable). While our stock lasts,
we're offering copies of the second edition for $18 and we'll include at
no extra cost technical reports describing Version 9 and Icon's graphics
facilities.
Shipping by parcel post to addresses in the United States, Canada, and Mexico
is included in the price. Overseas shipping, by air parcel post, is $16.
(This says something about the relative costs of goods and transportation,
but there's nothing we can do about it, except subtracting the typical cost
of delivery in the United States, which we have done.)
If you're asking yourself why you should buy the second edition of the book
when the third is in the works, here are some reasons:
- The package we offer contains all the information about Version 9 of
Icon and a complete reference to graphics, which will not be included in
the third edition.
- There are program examples and exercises in the second edition that
will not be in the third edition.
- The price is right.
If you've been interested in Icon but reluctant to pay the former price,
here's a chance to get on board. And even if you plan to buy the third edition
when it comes out, you may find use for copies of the second edition - the
book makes a nice gift for someone you want to interest in Icon.
The second edition no longer is available from the publisher. As far as
we know, we have the only remaining stock. When it's gone, there will be
no more.
Important note: The third edition will not be available in time for
fall classes. If you're planning to use Icon in a class this fall, you should
order books from us promptly.
Web Links

Now that Icon has a Web site, we can provide up-to-date information about
what's going on, documentation, and ready access to files related to Icon.
In this new feature of the Newsletter, we'll provide various information
about our Web site and other sites related to Icon.
Describing our Web site in the Newsletter creates a somewhat strange situation
for persons who are viewing the description on the site. This Newsletter
also is prepared in printed form, so if you're viewing this on the Web,
keep in mind that others read the printed version.
In Web jargon, Icon's URL (uniform record locator) is
http://www.cs.arizona.edu/icon/
That gets you to our home page, which is shown at below as it appears at
the moment.

Here are the main features of Icon's home page:
1. At the head of the page is the Icon Rubik's Cube, whose faces bear
the Icon logo. The cube was done by Lyle Raines using DKBTrace, a precursor
of POV-Ray.
2. The first link on the page, Status Report,
leads to a summary of the current state of matters related to Icon: the
current versions, the status of various implementations, information about
present and pending newsletters, and so forth. This page is updated whenever
any of this information changes.
3.The Language Information section contains links to pages that describe
various aspects of Icon. The first two links, Brief
Introduction and Tutorial
are good places to start if you are new to Icon. The Reference
Information link takes you to pages that provide technical information
about various aspects of Icon, including its repertoire of functions and
operators. The Programming Corner
link takes you to articles about programming in Icon that appeared in earlier
issues of the Newsletter.
4. The Implementations section, as you'd expect, contains information
about existing implementations of Icon. The Versions
link takes you to a page that lists the most recent versions of Icon for
various platforms. The Version 9.1 link takes
you to a brief description of the most recent version of Icon. If you want
to download executable binaries or source code for Icon, use the next two
links.
5. The Program Library section provides links to the material
related to the Icon program library. The Indexes
link takes you to various indexes of library material, from which you can
get to summary information and the programs themselves.
The remaining links take you to a technical
report describing the library, guidelines
for submitting material for the library, and the FTP
Area that contains library packages for different platforms.
6. The Documentation section has links to a wealth of information
about Icon. The Frequently Asked Questions
link is a good place to start if you're new to Icon.
The Technical Reports links takes you to a
collection of technical reports about Icon. It's worth visiting this page
occasionally, if only to see what's currently available, since new reports
are added from time to time.
The Icon Newsletter link takes you to a page with
links to recent Newsletters. If you're reading this on the Web, you're looking
at one of those pages now.
The Icon Analyst link takes you to a
description of a technically oriented newsletter that provides in-depth
coverage of Icon. There's general information, a link to a contents listing
of past issues, a permuted index of articles, and a sample copy.
The Graphics Book link takes you to
a page that describes the forthcoming book Graphics Programming in Icon.
The Other Documents link leads to a
few papers related to Icon. Finally, the FTP
Area link takes you to downloadable versions of Icon documents.
7. The Technical
Support link leads to information about how to get help on matters related
to Icon. It links into the Icon FAQ page.
8. The Mail-Order Information link
leads to a page that describes how to order Icon books, subscriptions, and
program diskettes by mail.
9. The Odds and Ends link
leads to a variety of things, some of which are not directly related to
Icon. There are pages with various textual and numerical data, the "farberisms"
(see From Our Mail), and so on.
10. If you want to know more about the Department
of Computer Science Science at The University of Arizona, follow this
link.
11 Finally, you can send us electronic mail by clicking on this
link.
More to Come
That's a brief tour of the our Web site. In the next article on the Web,
we'll explore some parts of the Icon site in more detail and list other
Web pages related to Icon.
From Our Mail

I've heard about something called farberisms. What are they and where
can I find them?
The term farberism refers to sayings by Dave Farber and similar ones in
his style. They are malapropisms of sorts. An example is "Let's go
outside and commiserate with Nature". A list of farberisms is available
from the Icon Web site. Follow the link to Odds
and Ends and from there to farberisms.
What are PDF files?
PDF stands for "portable document format", a format developed
by Adobe Systems Incorporated to make documents portable to many different
platforms. PDF files can be read by Adobe Acrobat Reader.
How do I get a copy of Adobe Acrobat Reader?
Acrobat Reader is free and can be downloaded from Adobe's Web site:
http://www.adobe.com/acrobat/readstop.html/
At present Acrobat Readers are available for the Macinotsh, MS-DOS, Windows,
SGI and Sun Workstations, and AIX.
I need a procedure to wrap long text lines at a specified boundary. I'll
bet there's one in the Icon program library, but I don't know how to find
it.
The best way to find things in the Icon program library is through our Web
site. On our home page, in the Program Library section, follow the
link to Indexes. From there you can
explore the library in a variety of ways and even download specific files.
What you need probably is in wrap.icn.
I'm new to Icon. Is there a brief description that will tell me how to
get started?
Our Web site is the best source of information both for persons new to Icon
and experienced Icon programmers. You'll find links to a brief description
and a tutorial in the Language Information section.
Is the Icon optimizing compiler available for Windows NT?
It presumably is possible to build the optimizing compiler for Windows NT,
but as far as we know, no one has.
I haven't heard much about your work in program visualization recently.
Is anything going on?
Program visualization is an area in which we have a strong interest. We
just haven't had time to work on it much until recently. There will be an
article on program visualization in the October issue of the Icon Analyst.
Is string invocation broken in Version 9 of Icon? I have a program that
reads in the names of procedures and then calls them by their string names.
It doesn't work anymore.
String invocation isn't broken. You've probably been bitten by a new feature
of Version 9 that saves space in the "icode" files the linker
produces by eliminating declarations that aren't specifically referenced
in a program. There's an easy solution to this problem. Just add the declaration
invocable all
to your program, preferably at the beginning where it'll be evident when
the program is read.
Why does the Icon Newsletter only come out three times a year?
Now that Icon has a site on the Web, many of the things that go on about
Icon are more appropriately reported there. It also takes quite a bit of
time and effort to put a Newsletter together - we produce printed copies
for subscribers, PDF for FTP, and HTML for the Web. And there needs to be
enough news to make up a Newsletter (the minimum number of pages is eight).
Three times a year is plenty for us.
Why did you decide to add graphics to Icon?
The answer to this question is complex. Graphics has become an increasingly
important part of many programming applications, and we believe every general-purpose
programming language should support graphics. There also are aspects of
text and structure processing that virtually demand graphical presentation.
And, of course, visual interfaces allow the development of sophisticated
yet easy-to-use applications. We also confess that we wanted graphics capabilities
in our favorite programming language.
Do you use Icon yourselves?
You bet we do!
How many Icon programmers are there?
You tell us how many C programmers there are and we'll tell you how many
Icon programmers there are. Seriously, we have no way of knowing. Icon is
in the public domain and available from a variety of Web sites, FTP sites,
and bulletin boards. It's fun to imagine there are millions of Icon programmers,
but the real figure probably is in the thousands.
Are there commercial implementations of Icon?
No.
Is Icon shareware?
No, Icon is in the public domain.
How can I license Icon for use in my company?
You can't and you don't need to. Icon is in the public domain and may be
used, copied, and distributed freely.
What kind of a contract do I need to distribute Icon as part of a software
package I'm marketing?
None. Icon is in the public domain. We'd appreciate an acknowledgment in
the documentation for your software.
How many subscribers does icon-group have?
At present there are 124 addresses on our icon-group list. Some of these
redistribute to others. We have no way of knowing how many individuals are
reached through icon-group. There also is a gateway between
icon-group and the comp.lang.icon newsgroup.
Do you plan to keep the implementation of Icon up to date with new versions
of Microsoft Windows?
It is our policy to keep implementations of Icon up to date for major platforms
and operating systems. Our ability to do this depends on our resources,
but since Windows is one of the most widely used operating systems, it has
priority with us.
Is the book on the implementation of Icon going to be updated to cover
Version 9 of Icon?
No. That would be an enormous undertaking, and there probably isn't enough
market to justify commercial publication. Although the implementation of
Icon has changed considerably since the book was written, the book still
is a useful guide for persons interested in the implementation of Icon and
the implementation of dynamic, high-level languages in general.
Do you plan to continue to develop the Icon program library?
Yes. The library is an ongoing project. We plan both to improve the content
and organization of the present material and to add new material. Contributions
to the library are welcome.
What's an IPD?
IPD stands for Icon Project Document. It's a designation we use to identify
and keep track of technical reports and other documents related to Icon.
What configuration do I need to run Icon in 32-bit mode on my PC.
A minimum of 2MB of RAM above the 512KB standard memory. More RAM is recommended.
It seems like there are hundreds of programming languages around and new
ones seem to crop up all the time. More specifically, why can't everything
be done in C?
Everything that can be done in any other programming language can be done
in C. Most programming languages are universal in the sense they can carry
out any computation that can be precisely specified. The issue is not "can
something be done in language X?", but how easy it is, how long it
takes, how fast it runs, how easy it is to modify, and so on. Different
programming languages have different strengths and weaknesses. No programming
language suits every need and situation.
Why does the National Science Foundation support Icon?
It doesn't. It supported research programs related to the development of
novel programming language features and their implementation that led to
Icon. Its support included what was necessary to make Icon a useful programming
language, including some of the documentation. The National Science Foundation
doesn't support any of our current work.

© Copyright 1996 by Ralph E. Griswold, Madge T. Griswold, and
Gregg M. Townsend. All rights reserved.
Icon Newsletter
Icon home page