Hostname: page-component-89b8bd64d-4ws75 Total loading time: 0 Render date: 2026-05-09T17:32:06.289Z Has data issue: false hasContentIssue false

An overview of Ciao and its design philosophy

Published online by Cambridge University Press:  30 December 2011

M. V. HERMENEGILDO
Affiliation:
Universidad Politécnica de Madrid (UPM), Fac. Informática, Campus de Montegancedo - UPM, 28660 Boadilla del Monte, Madrid, Spain and Madrid Institute of Advanced Studies in Software Development Technology (IMDEA Software), Campus de Montegancedo - UPM, 28660 Boadilla del Monte, Madrid, Spain (e-mail: manuel.hermenegildo@imdea.org)
F. BUENO
Affiliation:
Universidad Politécnica de Madrid (UPM), Fac. Informática, Campus de Montegancedo - UPM, 28660 Boadilla del Monte, Madrid, Spain (e-mail: bueno@fi.upm.es, mcarro@fi.upm.es)
M. CARRO
Affiliation:
Universidad Politécnica de Madrid (UPM), Fac. Informática, Campus de Montegancedo - UPM, 28660 Boadilla del Monte, Madrid, Spain (e-mail: bueno@fi.upm.es, mcarro@fi.upm.es)
P. LÓPEZ-GARCÍA
Affiliation:
Madrid Institute of Advanced Studies in Software Development Technology (IMDEA Software), Campus de Montegancedo - UPM, 28660 Boadilla del Monte, Madrid, Spain and Spanish Research Council, Serrano, 117, 28006 Madrid, Spain (e-mail: pedro.lopez@imdea.org)
E. MERA
Affiliation:
Universidad Complutense de Madrid (UCM), Fac. Informática, Universidad Complutense de Madrid, C/ Prof. José García Santesmases, s/n., 28040 Madrid, Spain (e-mail: edison@fdi.ucm.es)
J. F. MORALES
Affiliation:
Madrid Institute of Advanced Studies in Software Development Technology (IMDEA Software), Campus de Montegancedo - UPM, 28660 Boadilla del Monte, Madrid, Spain (e-mail: josef.morales@imdea.org)
G. PUEBLA
Affiliation:
Universidad Politécnica de Madrid (UPM), Fac. Informática, Campus de Montegancedo - UPM, 28660 Boadilla del Monte, Madrid, Spain (e-mail: german@fi.upm.es)

Abstract

We provide an overall description of the Ciao multiparadigm programming system emphasizing some of the novel aspects and motivations behind its design and implementation. An important aspect of Ciao is that, in addition to supporting logic programming (and, in particular, Prolog), it provides the programmer with a large number of useful features from different programming paradigms and styles and that the use of each of these features (including those of Prolog) can be turned on and off at will for each program module. Thus, a given module may be using, e.g., higher order functions and constraints, while another module may be using assignment, predicates, Prolog meta-programming, and concurrency. Furthermore, the language is designed to be extensible in a simple and modular way. Another important aspect of Ciao is its programming environment, which provides a powerful preprocessor (with an associated assertion language) capable of statically finding non-trivial bugs, verifying that programs comply with specifications, and performing many types of optimizations (including automatic parallelization). Such optimizations produce code that is highly competitive with other dynamic languages or, with the (experimental) optimizing compiler, even that of static languages, all while retaining the flexibility and interactive development of a dynamic language. This compilation architecture supports modularity and separate compilation throughout. The environment also includes a powerful autodocumenter and a unit testing framework, both closely integrated with the assertion system. The paper provides an informal overview of the language and program development environment. It aims at illustrating the design philosophy rather than at being exhaustive, which would be impossible in a single journal paper, pointing instead to previous Ciao literature.

Information

Type
Regular Papers
Copyright
Copyright © Cambridge University Press 2012

Access options

Get access to the full version of this content by using one of the access options below. (Log in options will check for institutional or personal access. Content may require purchase if you do not have access.)

Article purchase

Temporarily unavailable