skip to main content
Skip header Section
Multiparadigm Constraint Programming LanguagesJune 2011
Publisher:
  • Springer Publishing Company, Incorporated
ISBN:978-3-642-17329-5
Published:24 June 2011
Pages:
191
Skip Bibliometrics Section
Bibliometrics
Skip Abstract Section
Abstract

Programming languages are often classified according to their paradigms, e.g. imperative, functional, logic, constraint-based, object-oriented, or aspect-oriented. A paradigm characterizes the style, concepts, and methods of the language for describing situations and processes and for solving problems, and each paradigm serves best for programming in particular application areas. Real-world problems, however, are often best implemented by a combination of concepts from different paradigms, because they comprise aspects from several realms, and this combination is more comfortably realized using multiparadigm programming languages. This book deals with the theory and practice of multiparadigm constraint programming languages. The author first elaborates on programming paradigms and languages, constraints, and the merging of programming concepts which yields multiparadigm (constraint) programming languages. In the second part the author inspects two concrete approaches on multiparadigm constraint programming the concurrent constraint functional language CCFL, which combines the functional and the constraint-based paradigms and allows the description of concurrent processes; and a general framework for multiparadigm constraint programming and its implementation, Meta-S.The book is appropriate for researchers and graduate students in the areas of programming and artificial intelligence.

Contributors
  • Brandenburg University of Technology Cottbus

Recommendations

Reviews

Maulik A Dave

Constraint programming is a paradigm used in many programming systems. The book describes elementary and advanced constraint programming concepts. The elementary concepts include expressing constraints in various ways and constraint integration with various programming paradigms, such as functional, logic, and imperative. Practical programming language systems that use constraint programming are used as illustrations. The advanced concepts include constraint solver cooperation. The book includes an introduction (chapter 1), two sections (chapters 2 through 7), and a conclusion (chapter 8). Chapter 1 gives an overview of the book, introduces multiparadigm programming languages, and explains the motivation behind such languages. Chapters 2 through 5-the first section of the book-focus on constraints and multiparadigm programming. The second part (chapters 6 and 7) includes case studies using constraints. The last chapter summarizes the book. Chapter 2 presents basic definitions related to programming languages, defining and illustrating, with examples, signatures, terms, the evaluation of a term, formulas of predicate logic, substitutions on terms, and the unifier of terms. The next chapter introduces compiler phases, program evaluation, and related concepts, and defines programming paradigms. A discussion of various types of programming languages, classified with respect to their paradigms, follows. The author compares imperative and declarative languages, as well as procedural and object-oriented languages. Reduction steps and strategies explain functional programming languages, and resolutions and transformations explain logic programming languages. The chapter also introduces constraint-based programming languages and parallel languages. Chapter 4, "Constraints," defines basic terms, including constraint, constraint system, and constraint satisfaction problems, and introduces linear arithmetic and finite domain constraints. Next, the chapter describes constraint solvers, which check various properties of constraints, including satisfiability, entailment, and projection. The chapter introduces constraint abstractions, tell constraints, and ask constraints as language constructs of constraints. The chapter ends with applications related to constraints, including static analysis and test data generation of programs. Different programming paradigms can be integrated by a language integration approach, or by a programming libraries approach. Chapter 5 describes constraint logic programming (CLP), one such programming integration. The CLP description includes a detailed explanation of CLP derivations. Concurrent logic programming integration with constraints is also described with its derivation details. Functional, logic, and constraint integration results in constraint functional logic programming (CFLP). The CFLP description includes an explanation of the step narrowing technique. This is followed by a discussion of constraint imperative programming (CIP), which integrates constraints with imperative, including object-oriented, programming. The chapter includes various program listings showing CLP methods. Chapter 6 presents a case study of concurrent constraint functional language (CCFL), a constraint programming language that combines functional and constraint programming paradigms. CCFL includes features such as functional programming aspects, constraints, and concurrent processes. The author uses Backus-Naur form (BNF) to describe the language syntax. The operational semantics of the language and the derivations are discussed in detail. CCFL programs are compiled to LMNtal, a concurrent graph rewriting language. The details of the compiler structure and the encoding of CCFL into LMNtal are described. The chapter ends with a discussion of how external constraints are incorporated into CCFL. The book then moves on to a generic framework for multiparadigm constraint programming based on constraint solver cooperation. The cooperation architecture and the propagation of tell and projection properties among the constraint solvers are described. Following a discussion of language integration, the chapter describes an implementation of such a framework, called the META-S system, which encompasses its architecture, features, and performance evaluation. This book is a useful textbook for related courses at the undergraduate or graduate level, but requires a background in general programming concepts, mathematical logic, and programming language theory. The explanations depend on mathematical definitions, practical examples, and program listings in various programming languages. The book would also be a good starting reference for researchers studying constraints. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.