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 relative 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) 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)
- 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
- Characters set limited to 8-bit characters
- Separate compilation of procedures (not a just-in-time compiler)
escargo 10/28-29/2002
Category Language