Version 12 of Icon

Updated 2002-10-30 18:43:21

Icon [L1 ] 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 variables 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 Language