[newsletter masthead]

[dragon masthead]

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: 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