Ciao (programming language) explained

Ciao
Paradigm:Logic, functional, modular, object-oriented
Influenced By:Prolog
Operating System:Cross-platform (Unix, Mac OS X, Windows)
License:GPL, LGPL

Ciao is a general-purpose programming language which supports logic, constraint, functional, higher-order, and object-oriented programming styles. Its main design objectives are high expressive power, extensibility, safety, reliability, and efficient execution.[1]

Language characteristics

Ciao provides a full Prolog system (supporting ISO-Prolog),declarative subsets and extensions of Prolog, functional programming (including lazy evaluation), higher-order (with predicate abstractions), constraint programming, and objects, as well as feature terms(records), persistence, several control rules (breadth-first search, iterative deepening, ...), concurrency (threads/engines), distributed execution (agents), and parallel execution. Libraries also support WWW programming, sockets, external interfaces (C, Java, TclTk, relational databases, etc.), etc. Ciao is built on a kernel with an extensible modular design whichallows both restricting and extending the language — it can be seen as a language building language. These restrictions and extensions can be activated separately on each program module so that several extensions can coexist in the same application for different modules.

Developing safe and reliable programs

Programming in the large in Ciao is supported via:

Ciao has also support for programming in the small: the compiler iscapable of producing small executables (including only those builtinsused by the program) and the interpreter supports scripting. The environment includes a classical top-level and an evolved emacsinterface with an embeddable source-level debugger and a number ofexecution visualization tools. The Ciao preprocessor supports static debugging and verificationassertion checking and optimization via source to source programtransformation. These tasks are performed by Ciaopp, distributedseparately).

Auto-documentation

Ciao includes mis|lpdoc, an automatic documentation generator. Itprocesses programs adorned with (Ciao) assertions and machine-readablecomments and generates manuals in many formats including HTML, pdf,texinfo, info, man, etc., as well as on-line help, ascii READMEfiles, entries for indices of manuals (info, WWW, ...), and maintainsWWW distribution sites.

Portability and efficiency

The Ciao compiler (which can be run outside the top level shell)generates several forms of architecture-independent and stand-aloneexecutables, which run with speed, efficiency and executable sizewhich are very competitive with other high-level languages in generaland in particular with commercial and academic Prolog/CLPsystems. Modules can be compiled into compact bytecode or C sourcefiles, and linked statically, dynamically, or autoloaded.

See also

Further reading

Notes and References

  1. Web site: The Ciao System. ciao-lang.org. 2017-08-12.