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.