Ciao PDF Print E-mail
Contributed by Manuel Hermenegildo   
Tuesday, 30 November 1999
Francisco Bueno,
Daniel Cabeza,
Manuel Carro,
Manuel Hermenegildo,
Pedro Lopez, and German Puebla.
The CLIP Group
Scool of Computer Science
Technical University of Madrid

Ciao is a _public domain_, _next generation_ multi-paradigm programming environment with a unique set of features:

Ciao offers a complete Prolog system, supporting _ISO-Prolog_,but its novel modular design allows both _restricting_ and_extending_ the language. As a result, it allows working with_fully declarative subsets_ of Prolog and also to _extend_ thesesubsets (or ISO-Prolog) both syntactically and semantically.Most importantly, these restrictions and extensions can beactivated separately on each program module so that severalextensions can coexist in the same application for differentmodules...

Ciao also supports (through such extensions) programming withfunctions, higher-order (with predicate abstractions),constraints, and objects, as well as feature terms (records),persistence, several control rules (breadth-first search,iterative deepening, ...), concurrency (threads/engines), a goodbase for distributed execution (agents), and parallel execution.Libraries also support WWW programming, sockets, externalinterfaces (C, Java, TclTk, relational databases, etc.), etc.

Ciao offers support for _programming in the large_ with arobust module/object system, module-based separate/incrementalcompilation (automatically -no need for makefiles), an assertionlanguage for declaring (_optional_) program properties(including types and modes, but also determinacy, non-failure,cost, etc.), automatic static inference and static/dynamicchecking of such assertions, etc.Ciao also offers support for _programming in the small_producing small executables (including only those builtins usedby the program) and support for writing scripts in Prolog.

The Ciao programming environment includes a classicaltop-level and a rich emacs interface with an embeddablesource-level debugger and a number of execution visualizationtools.

The Ciao compiler (which can be run outside the top levelshell) generates several forms of architecture-independent andstand-alone executables, which run with speed, efficiency andexecutable size which are very competive with other commercialand academic Prolog/CLP systems. Library modules can be compiledinto compact bytecode or C source files, and linked statically,dynamically, or autoloaded.The novel modular design of Ciao enables, in addition to modularprogram development, effective global program analysis andstatic debugging and optimization via source to source programtransformation. These tasks are performed by the Ciaopreprocessor (ciaopp, distributed separately).

The Ciao programming environment also includes lpdoc, anautomatic documentation generator for LP/CLP programs. Itprocesses Prolog files adorned with (Ciao) assertions andmachine-readable comments and generates manuals in many formatsincluding postscript, pdf, texinfo, info, HTML, man,etc. , as well as on-line help, ascii README files, entriesfor indices of manuals (info, WWW, ...), and maintains WWWdistribution sites.

Ciao is distributed under the GNU General Public License.

[download, 27.1 MB]


Last Updated ( Tuesday, 03 April 2007 )