The word ''icon'' can have several meanings within the computing community. For instance, an ''icon'' can be a graphical image used within a [GUI] application to represent some action to take. [[add in wiki references to dealing with icons here...]] ---- Icon [http://www.cs.arizona.edu/icon/index.htm] is a programming language with a long and rich history, although it is even more obscure (''Since when is Tcl obscure? -[FW]''; It's a comparitive statement. Think of how many books about Tcl have been published versus books about Java or C and C++. Would you not say that Tcl is more obscure than those languages? It's a relative statement. -- [escargo]; true -[FW]) than tcl. There are several points of similarity between the two languages, along with many more differences. * Interpreted with a byte-code compiler * Portable across a range of different systems * Built-in memory allocation and garbage collection * Portable graphical tool kit * High degree of introspection * Rich built-in data structures (character sets, lists, records, sets, strings, tables) * Invocation of procedures based on a dynamic string value * Two memory scopes, global and local * Strongly typed values, but untyped variables * Primitives for determining if a variable has a value * No "go to" statement The data structures are implemented in a way that allows a substantial amount of polymophism. The syntax for interating through all the values in a set, or all the elements in a list, or even all the characters in a string is pretty much the same. Some of the differences are equally significant. * The syntax looks more like C than tcl * Many, many operators * Procedures can have local variables that are declared '''static''' instead of '''local''' so that they retain their values between invocations (for Tcl, see [Static variables] and '''variable'''s in namespaces) * Parameters are passed by value (for primitive types) or reference (for structures) * No dynamic creation of procedures * No namespaces * Pattern matching is a normal extension of expression evaluation * Backtracking built into the language * Expressions can yield 0 or more values (not necessarily all at once) * Generators and co-expressions * Character set limited to 8-bit characters * Separate compilation of procedures (not a just-in-time compiler) ''[escargo] 10/28-30/2002'' ---- [[ [Category GUI] | [Category Language] ]]