[ICI]

The ICI Programming Language

Welcome to the ICI programming language site. This site serves as a distribution point for the ICI interpreter source code, documentation and contributed items.

What is ICI?

ICI is a C-like, high level language originally developed by Tim Long and placed into the public domain. ICI marries C's expression syntax, control structures and overall feel , with a dynamic, garbage collected, object-based, data model.

Although ICI superficially resembles C, and is easy to use for C programmers, its data model is very different, higher level with types such as (real) strings, regular expressions, dynamic arrays, sets and dictionaries (struct). ICI's aggregate types are immediately useful without any extra programming typically required in C. ICI's automatic module loading, memory management and error handling frees the programmer from much of the drudgery associated with developing in C and lets you concentrate on what the program is doing rather than how it is doing it. With programs that are not overly performance critical or are I/O bound ICI makes a useful alternative to compiled languages. Even for performance critical applications the use of native-code modules in the correct areas is typically all that is required to allow development in a higher level language.

How can I use it?

ICI is typically used as a scripting-like language in the fashion of Perl, Python, TCL and other such languages. ICI's resemblance to C makes it easily used by many programmers and its data model and intrinsic types make it easy to develop complex programs. As ICI's syntax is close to C many programmers are immediately productive allowing them to learn what is different in ICI and comprehend the object based data model rather than comprehend an entire new language.

ICI is also useful as an extension language for applications and is used in a number of commercial products. ICI can be called from C and the language itself can be extended allowing applications to provide domain specific functions, types and operators for use in their ICI programs. Embedding in an application also allows the application to make use of ICI's efficient object system which provides many useful facilities.

ICI is written in portable C and versions exist for various Unix systems, Microsoft Windows, MS-DOS, Macintosh (OS X) and BeOS. In addition ICI has been used in a number of embedded systems on a variety on processors, with or without operating system kernels. ICI is developed primarily on Unix and Windows systems and shows a little bias to Unix in terms of support for OS functionality. Adding to the base language however is relatively straightforward and it is easily adapted to many environments. A set of modules provides access to numerous facilities provided by external libraries and services accessed using network protocols.

License?

There is no copyright on the ICI interpreter's source code and therefore no restrictions on how it may be used. The ICI documentation is however currently under copyright but may be used for any purpose as long as it is not modified and its copyright notice is retained.