Abstract
We describe some of the novel aspects and motivations behind the design and implementation of the Ciao multiparadigm programming system. An important aspect of Ciao is that 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 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 objects, predicates, 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 program optimizations. Such optimizations produce code that is highly competitive with other dynamic languages or, when the highest levels of optimization are used, even that of static languages, all while retaining the interactive development environment of a dynamic language. The environment also includes a powerful auto-documenter. 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 the format of a paper, pointing instead to the existing literature on the system.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
ECMA 2008: ECMAscript Edition 4 Specification Wiki (2008), http://wiki.ecmascript.org
Aït-Kaci, H.: An Introduction to LIFE – Programming with Logic, Inheritance, Functions and Equations. In: Proceedings of the 1993 International Symposium on Logic Programming (1993)
Albert, E., Puebla, G., Hermenegildo, M.: Abstraction-Carrying Code. In: Baader, F., Voronkov, A. (eds.) LPAR 2004. LNCS (LNAI), vol. 3452, Springer, Heidelberg (2005)
Ancona, D., Ancona, M., Cuni, A., Matsakis, N.D.: RPython: a Step towards Reconciling Dynamically and Statically Typed OO Languages. In: DLS 2007: Proceedings of the 2007 Symposium on Dynamic Languages, pp. 53–64. ACM Press, New York (2007)
Bueno, F., Cabeza, D., Carro, M., Hermenegildo, M., López-García, P., Puebla, G. (eds.): The Ciao System. Ref. Manual (v1.13). Technical report, C. S. School (UPM) (2006), http://www.ciaohome.org
Bueno, F., García de la Banda, M., Hermenegildo, M.: Effectiveness of Abstract Interpretation in Automatic Parallelization: A Case Study in Logic Programming. ACM TOPLAS 21(2), 189–238 (1999)
Bueno, F., Debray, S.K., García de la Banda, M., Hermenegildo, M.: Transformation-based Implementation and Optimization of Programs Exploiting the Basic Andorra Model. Technical Report CLIP11/95.0, Facultad de Informática, UPM (May 1995)
Bueno, F., Deransart, P., Drabent, W., Ferrand, G., Hermenegildo, M., Maluszynski, J., Puebla, G.: On the Role of Semantic Approximations in Validation and Diagnosis of Constraint Logic Programs. In: Proc. of the 3rd. Int’l Workshop on Automated Debugging–AADEBUG 1997, Linköping, Sweden, May 1997, pp. 155–170. U.of Linköping Press (1997)
Bueno, F., Hermenegildo, M.: An Automatic Translation Scheme from Prolog to the Andorra Kernel Language. In: Proc. of the 1992 International Conference on Fifth Generation Computer Systems, Institute for New Generation Computer Technology (ICOT), vol. 2, pp. 759–769 (June 1992)
Bueno, F., Hermenegildo, M., Montanari, U., Rossi, F.: From Eventual to Atomic and Locally Atomic CC Programs: A Concurrent Semantics. In: Rodríguez-Artalejo, M., Levi, G. (eds.) ALP 1994. LNCS, vol. 850, pp. 114–132. Springer, Heidelberg (1994)
Bueno, F., Hermenegildo, M., Montanari, U., Rossi, F.: Partial Order and Contextual Net Semantics for Atomic and Locally Atomic CC Programs. Science of Computer Programming 30, 51–82 (1998); Special CCP 1995 Workshop issue
Bueno, F., López-García, P., Hermenegildo, M.: Multivariant Non-Failure Analysis via Standard Abstract Interpretation. In: Kameyama, Y., Stuckey, P.J. (eds.) FLOPS 2004. LNCS, vol. 2998, pp. 100–116. Springer, Heidelberg (2004)
Cabeza, D., Hermenegildo, M.: Extracting Non-strict Independent And-parallelism Using Sharing and Freeness Information. In: LeCharlier, B. (ed.) SAS 1994. LNCS, vol. 864, pp. 297–313. Springer, Heidelberg (1994)
Cabeza, D., Hermenegildo, M.: Distributed Concurrent Constraint Execution in the CIAO System. In: Proc. of the 1995 COMPULOG-NET Workshop on Parallelism and Implementation Technologies, Utrecht, NL, September 1995, U. Utrecht / T.U. Madrid (1995), http://www.cliplab.org/
Cabeza, D., Hermenegildo, M.: A New Module System for Prolog. In: Palamidessi, C., Moniz Pereira, L., Lloyd, J.W., Dahl, V., Furbach, U., Kerber, M., Lau, K.-K., Sagiv, Y., Stuckey, P.J. (eds.) CL 2000. LNCS (LNAI), vol. 1861, pp. 131–148. Springer, Heidelberg (2000)
Cabeza, D., Hermenegildo, M.: The Ciao Modular, Standalone Compiler and Its Generic Program Processing Library. Special Issue on Parallelism and Implementation of (C)LP Systems 30(3); ENTCS. Elsevier - North Holland (March 2000)
Cabeza, D., Hermenegildo, M.: Distributed WWW Programming using (Ciao-)Prolog and the PiLLoW Library. Theory and Practice of Logic Programming 1(3), 251–282 (2001)
Carro, M., Gómez, L., Hermenegildo, M.: Some Paradigms for Visualizing Parallel Execution of Logic Programs. In: 1993 International Conference on Logic Programming, pp. 184–201. MIT Press, Cambridge (June 1993)
Carro, M., Morales, J., Muller, H.L., Puebla, G., Hermenegildo, M.: High-Level Languages for Small Devices: A Case Study. In: Flautner, K., Kim, T. (eds.) Compilers, Architecture, and Synthesis for Embedded Systems, pp. 271–281. ACM Press, Sheridan (October 2006)
Cartwright, R., Fagan, M.: Soft Typing. In: Programming Language Design and Implementation (PLDI 1991), SIGPLAN, pp. 278–292. ACM, New York (1991)
Casas, A., Cabeza, D., Hermenegildo, M.: A Syntactic Approach to Combining Functional Notation, Lazy Evaluation and Higher-Order in LP Systems. In: Hagiya, M., Wadler, P. (eds.) FLOPS 2006. LNCS, vol. 3945. Springer, Heidelberg (2006)
Casas, A., Carro, M., Hermenegildo, M.: Annotation Algorithms for Unrestricted Independent And-Parallelism in Logic Programs. In: 17th International Symposium on Logic-based Program Synthesis and Transformation (LOPSTR 2007), The Technical University of Denmark, August 2007. LNCS, vol. 4915, pp. 138–153. Springer, Heidelberg (2007)
Casas, A., Carro, M., Hermenegildo, M.: Towards a High-Level Implementation of Execution Primitives for Non-restricted, Independent And-parallelism. In: Warren, D.S., Hudak, P. (eds.) 10th International Symposium on Practical Aspects of Declarative Languages (PADL 2008). LNCS, vol. 4902, pp. 230–247. Springer, Heidelberg (2008)
Chen, W., Warren, D.S.: Tabled Evaluation with Delaying for General Logic Programs. Journal of the ACM 43(1), 20–74 (1996)
The Ciao Development Team. The Ciao Multiparadigm Language and Program Development Environment, The ALP Newsletter 19(3). The Association for Logic Programming (November 2006), http://www.logicprogramming.org/newsletter/nov06/index.html
Correas, J., Gomez, J.M., Carro, M., Cabeza, D., Hermenegildo, M.: A Generic Persistence Model for CLP Systems (And Two Useful Implementations). In: Jayaraman, B. (ed.) PADL 2004. LNCS, vol. 3057, pp. 104–119. Springer, Heidelberg (2004)
Cousot, P., Cousot, R.: Abstract Interpretation: a Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In: Proc. of POPL 1977, pp. 238–252 (1977)
Cox, B.J.: Object Oriented Programming: An Evolutionary Approach. Addison Wesley (1991), http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/ObjC.pdf
de Guzmán, P.C., Carro, M., Hermenegildo, M., Silva, C., Rocha, R.: An Improved Continuation Call-Based Implementation of Tabling. In: Warren, D.S., Hudak, P. (eds.) 10th International Symposium on Practical Aspects of Declarative Languages (PADL 2008). LNCS, vol. 4902, pp. 198–213. Springer, Heidelberg (2008)
García de la Banda, M., Bueno, F., Hermenegildo, M.: Towards Independent And-Parallelism in CLP. In: Kuchen, H., Swierstra, S.D. (eds.) PLILP 1996. LNCS, vol. 1140, pp. 77–91. Springer, Heidelberg (1996)
García de la Banda, M., Hermenegildo, M., Marriott, K.: Independence in CLP Languages. ACM Transactions on Programming Languages and Systems 22(2), 269–339 (2000)
Debray, S.K., Lin, N.W.: Cost analysis of logic programs. TOPLAS 15(5) (1993)
Debray, S.K., Lin, N.-W., Hermenegildo, M.: Task Granularity Analysis in Logic Programs. In: Proc. PLDI 1990, June 1990, pp. 174–188. ACM Press, New York (1990)
Debray, S.K., López-García, P., Hermenegildo, M., Lin, N.-W.: Lower Bound Cost Estimation for Logic Programs. In: 1997 International Logic Programming Symposium, pp. 291–305. MIT Press, Cambridge (1997)
Debray, S.K., López-García, P., Hermenegildo, M., Lin, N.-W.: Lower Bound Cost Estimation for Logic Programs. In: ILPS 1997. MIT Press, Cambridge (1997)
Debray, S.K., López-García, P., Hermenegildo, M.: Non-Failure Analysis for Logic Programs. In: ICLP 1997, pp. 48–62. MIT Press, Cambridge (1997)
Debray, S.K., López-García, P., Hermenegildo, M., Lin, N.-W.: Estimating the Computational Cost of Logic Programs. In: LeCharlier, B. (ed.) SAS 1994. LNCS, vol. 864, pp. 255–265. Springer, Heidelberg (1994)
El-Khatib, O., Pontelli, E., Son, T.C.: Integrating an Answer Set Solver into Prolog: ASP-PROLOG. In: LPNMR, pp. 399–404 (2005)
Frühwirth, T.: Theory and Practice of Constraint Handling Rules. Journal of Logic Programming, Special Issue on Constraint Logic Programming 37(1-3) (October 1998)
Gelfond, M., Lifschitz, V.: The Stable Model Semantics for Logic Programming. In: International Conference on Logic Programming 1988, pp. 1070–1080 (1988)
Gupta, G., Pontelli, E., Ali, K., Carlsson, M., Hermenegildo, M.: Parallel Execution of Prolog Programs: a Survey. ACM Transactions on Programming Languages and Systems 23(4), 472–602 (2001)
Haridi, S., Franzén, N.: The Oz Tutorial. DFKI (February 2000), http://www.mozart-oz.org
Henderson, F., Somogyi, Z., Conway, T.: Determinism Analysis in the Mercury Compiler. In: Proc. Australian Computer Science Conference, Melbourne, Australia, pp. 337–346 (January 1996)
Hermenegildo, M.: An Abstract Machine for Restricted AND-parallel Execution of Logic Programs. In: Shapiro, E. (ed.) ICLP 1986. LNCS, vol. 225, pp. 25–40. Springer, Heidelberg (1986)
Hermenegildo, M.: Automatic Parallelization of Irregular and Pointer-Based Computations: Perspectives from Logic and Constraint Programming. In: Lengauer, C., Griebl, M., Gorlatch, S. (eds.) Euro-Par 1997. LNCS, vol. 1300, pp. 31–46. Springer, Heidelberg (1997)
Hermenegildo, M.: A Documentation Generator for (C)LP Systems. In: Palamidessi, C., Moniz Pereira, L., Lloyd, J.W., Dahl, V., Furbach, U., Kerber, M., Lau, K.-K., Sagiv, Y., Stuckey, P.J. (eds.) CL 2000. LNCS (LNAI), vol. 1861, pp. 1345–1361. Springer, Heidelberg (2000)
Hermenegildo, M., Albert, E., López-García, P., Puebla, G.: Some Techniques for Automated, Resource-Aware Distributed and Mobile Computing in a Multi-Paradigm Programming System. In: Danelutto, M., Vanneschi, M., Laforenza, D. (eds.) Euro-Par 2004. LNCS, vol. 3149, pp. 21–37. Springer, Heidelberg (2004)
Hermenegildo, M., Bueno, F., Cabeza, D., Carro, M., García de la Banda, M., López-García, P., Puebla, G.: The CIAO Multi-Dialect Compiler and System: An Experimentation Workbench for Future (C)LP Systems. In: Parallelism and Implementation of Logic and Constraint Logic Programming, Nova Science, Commack, NY, USA, pp. 65–85 (April 1999)
Hermenegildo, M.: The Ciao Development Team. Why Ciao? –An Overview of the Ciao System’s Design Philosophy. Technical Report CLIP7/2006.0, Technical University of Madrid (UPM), School of Computer Science, UPM (December 2006), http://cliplab.org/papers/ciao-philosophy-note-tr.pdf
Hermenegildo, M.: The CLIP Group. In: Borning, A. (ed.) PPCP 1994. LNCS, vol. 874, pp. 123–133. Springer, Heidelberg (1994)
Hermenegildo, M., Greene, K.: The &-Prolog System: Exploiting Independent And-Parallelism. New Generation Computing 9(3,4), 233–257 (1991)
Hermenegildo, M., Puebla, G., Bueno, F.: Using Global Analysis, Partial Specifications, and an Extensible Assertion Language for Program Validation and Debugging. In: The Logic Programming Paradigm: a 25–Year Perspective, pp. 161–192. Springer, Heidelberg (1999)
Hermenegildo, M., Puebla, G., Bueno, F., López-García, P.: Integrated Program Debugging, Verification, and Optimization Using Abstract Interpretation (and The Ciao System Preprocessor). Science of Computer Programming 58(1–2), 115–140 (2005)
Hermenegildo, M., Rossi, F.: Strict and Non-Strict Independent And-Parallelism in Logic Programs: Correctness, Efficiency, and Compile-Time Conditions. Journal of Logic Programming 22(1), 1–45 (1995)
Hermenegildo, M., Warren, R., Debray, S.K.: Global Flow Analysis as a Practical Compilation Tool. Journal of Logic Programming 13(4), 349–367 (1992)
Holzbaur, C.: Metastructures vs. Attributed Variables in the Context of Extensible Unification. In: Bruynooghe, M., Wirsing, M. (eds.) PLILP 1992. LNCS, vol. 631, pp. 260–268. Springer, Heidelberg (1992)
Holzbaur, C.: SICStus 2.1/DMCAI Clp 2.1.1 User’s Manual. University of Vienna (1994)
Hudak, P., Peyton-Jones, S., Wadler, P., Boutel, B., Fairbairn, J., Fasel, J., Guzman, M.M., Hammond, K., Hughes, J., Johnsson, T., Kieburtz, D., Nikhil, R., Partain, W., Peterson, J.: Report on the Programming Language Haskell. Haskell Special Issue, ACM Sigplan Notices 27(5) (1992)
Hudak, P., Hughes, J., Jones, S.P., Wadler, P.: A History of Haskell: Being Lazy with Class. In: HOPL III: Proceedings of the third ACM SIGPLAN conference on History of programming languages, pp. 1–55. ACM Press, New York (2007)
Jim, T., Morrisett, J.G., Grossman, D., Hicks, M.W., Cheney, J., Wang, Y.: Cyclone: A safe dialect of c. In: Ellis, C.S. (ed.) USENIX Annual Technical Conference, General Track, pp. 275–288. USENIX (2002)
Karp, A.H., Babb, R.C.: A Comparison of 12 Parallel Fortran Dialects. IEEE Software (September 1988)
Leavens, G.T., Leino, K.R.M., Müller, P.: Specification and verification challenges for sequential object-oriented programs. Formal Asp. Comput. 19(2), 159–189 (2007)
López-García, P., Bueno, F., Hermenegildo, M.: Determinacy Analysis for Logic Programs Using Mode and Type Information. In: Bruynooghe, M. (ed.) LOPSTR 2004. LNCS, vol. 3018, pp. 19–35. Springer, Heidelberg (2004)
López-García, P., Hermenegildo, M.: Efficient Term Size Computation for Granularity Control. In: Proc. of ICLP 1995 (1995)
López-García, P., Hermenegildo, M., Debray, S.K.: A Methodology for Granularity Based Control of Parallelism in Logic Programs. J. of Symbolic Computation, Special Issue on Parallel Symbolic Computation 21, 715–734 (1996)
López-García, P., Hermenegildo, M., Debray, S.K.: Towards Granularity Based Control of Parallelism in Logic Programs. In: Proc. of First International Symposium on Parallel Symbolic Computation, PASCO 1994 (1994)
Mera, E., López-García, P., Puebla, G., Carro, M., Hermenegildo, M.: Combining Static Analysis and Profiling for Estimating Execution Times. In: Hanus, M. (ed.) PADL 2007. LNCS, vol. 4354, Springer, Heidelberg (2006)
Montanari, U., Rossi, F., Bueno, F., García de la Banda, M., Hermenegildo, M.: Towards a Concurrent Semantics-based Analysis of CC and CLP. In: Principles and Practice of Constraint Programming, vol. 874, pp. 151–161. Springer, Heidelberg (1994)
Morales, J., Carro, M., Hermenegildo, M.: Improving the Compilation of Prolog to C Using Moded Types and Determinism Information. In: Jayaraman, B. (ed.) PADL 2004. LNCS, vol. 3057, pp. 86–103. Springer, Heidelberg (2004)
Mozilla. Tamarin Project (2008), http://www.mozilla.org/projects/tamarin/
Muthukumar, K., Bueno, F., García de la Banda, M., Hermenegildo, M.: Automatic Compile-time Parallelization of Logic Programs for Restricted, Goal-level, Independent And-parallelism. Journal of Logic Programming 38(2), 165–218 (1999)
Muthukumar, K., Hermenegildo, M.: Complete and Efficient Methods for Supporting Side Effects in Independent/Restricted And-parallelism. In: 1989 International Conference on Logic Programming, pp. 80–101. MIT Press, Cambridge (1989)
Muthukumar, K., Hermenegildo, M.: Determination of Variable Dependence Information at Compile-Time Through Abstract Interpretation. In: 1989 North American Conference on Logic Programming, pp. 166–189. MIT Press, Cambridge (1989)
Muthukumar, K., Hermenegildo, M.: The CDG, UDG, and MEL Methods for Automatic Compile-time Parallelization of Logic Programs for Independent And-parallelism. In: Int’l. Conference on Logic Programming, pp. 221–237. MIT Press, Cambridge (1990)
Muthukumar, K., Hermenegildo, M.: Combined Determination of Sharing and Freeness of Program Variables Through Abstract Interpretation. In: ICLP (1991)
Muthukumar, K., Hermenegildo, M.: Compile-time Derivation of Variable Dependency Using Abstract Interpretation. JLP 13(2/3), 315–347 (1992)
Navas, J., Mera, E., López-García, P., Hermenegildo, M.: User-definable resource bounds analysis for logic programs. In: Dahl, V., Niemelä, I. (eds.) ICLP 2007. LNCS, vol. 4670. Springer, Heidelberg (2007)
Necula, G.C., Condit, J., Harren, M., McPeak, S., Weimer, W.: CCured: type-safe retrofitting of legacy software. ACM Trans. Program. Lang. Syst. 27(3), 477–526 (2005)
Olmedilla, M., Bueno, F., Hermenegildo, M.: Automatic Exploitation of Non-Determinate Independent And-Parallelism in the Basic Andorra Model. In: Logic Program Synthesis and Transformation, 1993. Workshops in Computing, pp. 177–195. Springer, Heidelberg (1993)
Pineda, A., Bueno, F.: The O’Ciao Approach to Object Oriented Logic Programming. In: Colloquium on Implementation of Constraint and LOgic Programming Systems (ICLP associated workshop), Copenhagen (July 2002)
Puebla, G., Albert, E., Hermenegildo, M.: Abstract Interpretation with Specialized Definitions. In: Yi, K. (ed.) SAS 2006. LNCS, vol. 4134. Springer, Heidelberg (2006)
Puebla, G., Bueno, F., Hermenegildo, M.: An Assertion Language for Constraint Logic Programs. In: Deransart, P., Małuszyński, J. (eds.) DiSCiPl 1999. LNCS, vol. 1870, pp. 23–61. Springer, Heidelberg (2000)
Puebla, G., García de la Banda, M., Marriott, K., Stuckey, P.: Optimization of Logic Programs with Dynamic Scheduling. In: 1997 International Conference on Logic Programming, June 1997, pp. 93–107. MIT Press, Cambridge (1997)
Puebla, G., Hermenegildo, M.: Implementation of Multiple Specialization in Logic Programs. In: Proc. of PEPM 1995, pp. 77–87. ACM Press, New York (1995)
Puebla, G., Hermenegildo, M.: Abstract Multiple Specialization and its Application to Program Parallelization. JLP 41(2&3), 279–316 (1999)
Rigo, A., Pedroni, S.: PyPy’s Approach to Virtual Machine Construction. In: Dynamic Languages Symposium 2006. ACM Press, New York (2006)
Saglam, H., Gallagher, J.: Approximating constraint logic programs using polymorphic types and regular descriptions. Technical Report CSTR-95-17, Department of Computer Science, University of Bristol, Bristol BS8 1TR (1995)
Schrijvers, T.: Analyses, Optimizations and Extensions of Constraint Handling Rules. PhD thesis, K.U.Leuven, Belgium (June 2005)
Somogyi, Z., Henderson, F., Conway, T.: The Execution Algorithm of Mercury: an Efficient Purely Declarative Logic Programming Language. JLP 29(1–3) (October 1996)
Warren, D.H.D.: Logic Programming Languages, Parallel Implementations, and the Andorra Model. Invited talk, slides presented at ICLP 1993 (1993)
Warren, R., Hermenegildo, M., Debray, S.K.: On the Practicality of Global Flow Analysis of Logic Programs. In: Fifth International Conference and Symposium on Logic Programming, pp. 684–699. MIT Press, Cambridge (1988)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Hermenegildo, M.V., Bueno, F., Carro, M., López, P., Morales, J.F., Puebla, G. (2008). An Overview of the Ciao Multiparadigm Language and Program Development Environment and Its Design Philosophy. In: Degano, P., De Nicola, R., Meseguer, J. (eds) Concurrency, Graphs and Models. Lecture Notes in Computer Science, vol 5065. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-68679-8_14
Download citation
DOI: https://doi.org/10.1007/978-3-540-68679-8_14
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-68676-7
Online ISBN: 978-3-540-68679-8
eBook Packages: Computer ScienceComputer Science (R0)