AKL - A Multiparadigm Programming Language

Janson, S., 1994. AKL—A Multiparadigm Programming Language. Uppsala Theses in Computing Science 19. 212 pp. Uppsala. ISSN 0283-359X. ISBN 91-506-1046-5. New programming languages conceived by adding yet another permutation of new features on top of established languages offer only complexity and confusion to software developers. New basic principles are necessary that support the desired functionality using a minimum of concepts. This thesis reports on an investigation into principles for combining the constraint solving and don't know nondeterministic capabilities of Prolog and the constraint logic programming languages with the process-describing capabilities of concurrent logic languages such as GHC. The result, AKL, is a coherent language supporting multiple programming paradigms, such as concurrent, object-oriented, functional, logic, and constraint programming. In addition, AKL offers a large potential for automatic parallel execution. The operational semantics of AKL is captured by a computation model, involving rewriting of “semi-logical” expressions that form the computation states. Constraints are used to express data and interaction. The computation model is then augmented with control, giving an execution model, which demonstrates how to perform computations in a systematic manner. Finally, an abstract machine brings us close to a real implementation. It is similar to the one underlying the AGENTS programming system for AKL developed at SICS by the author and his colleagues. The research reported herein has been supported by the Swedish National Board for Industrial and Technical Development (NUTEK), and by the sponsors of SICS: Asea Brown Boveri AB, Ericsson Group, IBM Svenska AB, NobelTech Systems AB, the Swedish Defence Material Administration (FMV), and Swedish Telecom. Sverker Janson, Computing Science Department, Uppsala University, Boxּ311, S-751 05 Uppsala, Sweden © Sverker Janson 1994 ISSN 0283-359X ISBN 91-506-1046-5 Printed in Sweden by Graphic Systems, Stockholm, 1994. To Kia, Adam, and Axel

[1]  Michael J. Maher Logic Semantics for a Class of Committed-Choice Programs , 1987, ICLP.

[2]  Ehud Shapiro,et al.  Logic Programs with Inheritance , 1992, FGCS.

[3]  Martin Aronsson GCLA : the design, use, and implementation of a program development system , 1993 .

[4]  Pascal Van Hentenryck Constraint satisfaction in logic programming , 1989, Logic programming.

[5]  Rong Yang,et al.  The Andorra-I Engine: A Parallel Implementation of the Basic Andorra Model , 1991, ICLP.

[6]  Seif Haridi,et al.  Structural operational semantics for AKL , 1992, Future Gener. Comput. Syst..

[7]  S. Gerd,et al.  A calculus for higher-order concurrent constraint programming with deep guards , 1994 .

[8]  Nicholas Carriero,et al.  Parallel Programming in Linda , 1985, ICPP.

[9]  Stephen Taylor,et al.  Parallel logic programming techniques , 1989 .

[10]  Henry G. Baker,et al.  Actors and Continuous Functionals , 1978, Formal Description of Programming Concepts.

[11]  Richard A. O'Keefe,et al.  The Craft of Prolog , 1990 .

[12]  Torkel Franzén Some Formal Aspects of AKL , 1994 .

[13]  Evan Tick,et al.  Parallel logic programming , 1991, Logic programming.

[14]  Lee Naish,et al.  NUA-Prolog: An Extension to the WAM for Parallel Andorra , 1991, ICLP.

[15]  Keith L. Clark,et al.  PARLOG: parallel programming in logic , 1986, ACM Trans. Program. Lang. Syst..

[16]  Seif Haridi,et al.  AKL(FD) - A Concurrent Language for FD Programming , 1994, ILPS.

[17]  Ehud Shapiro,et al.  Concurrent PROLOG: Collected Papers , 1987 .

[18]  E. Shapiro A test for the adequacy of a language for an architecture , 1988 .

[19]  M. H. van Emden,et al.  On Warren's Method for Functional Programming in Logic , 1990, ICLP.

[20]  Keith L. Clark,et al.  A relational language for parallel programming , 1981, FPCA '81.

[21]  Rong Yang Solving Simple Substitution Ciphers in Andorra-I , 1989, ICLP.

[22]  Rong Yang,et al.  The Andorra-I Preprocessor: Supporting Full Prolog on the Basic Andorra Model , 1991, ICLP.

[23]  Arvind,et al.  M-Structures: Extending a Parallel, Non-strict, Functional Language with State , 1991, FPCA.

[24]  Lee Naish Parallelizing NU-Prolog , 1988, ICLP/SLP.

[25]  Akikazu Takeuchi,et al.  A Sequential Implementation of Concurrent Prolog Based on the Shallow Binding Scheme , 1988, International Conference on Spoken Language Processing.

[26]  Gert Smolka,et al.  Object-Oriented Concurrent Constraint Programming in Oz , 1993, KI.

[27]  Daniel G. Bobrow,et al.  Vulcan: Logical Concurrent Objects , 1987, Research Directions in Object-Oriented Programming.

[28]  Bart Demoen,et al.  A Parallel Implementation for AKL , 1993, PLILP.

[29]  Doug DeGroot,et al.  Restricted AND-Parallelism , 1984, FGCS.

[30]  Philip Wadler,et al.  Comprehending monads , 1990, Mathematical Structures in Computer Science.

[31]  Gert Smolka,et al.  Records for Logic Programming , 1994, J. Log. Program..

[32]  Carl Hewitt,et al.  Actors: A Conceptual Foundation for Concurrent Object-Oriented Programming , 1987, Research Directions in Object-Oriented Programming.

[33]  Manuel V. Hermenegildo,et al.  An Automatic Translation Scheme from Prolog to the Andorra Kernel Language , 1992, FGCS.

[34]  Dana S. Scott,et al.  Concurrent constraint programming languages , 1989 .

[35]  Gert Smolka,et al.  A Feature-Based Constraint System for Logic Programming with Entailment , 1992, FGCS.

[36]  David S. Warren A Portable and Reasonably Efficient Implementation of KL1 , 1993 .

[37]  Richard P. Gabriel Lisp : Good News Bad News How to Win Big , 1990 .

[38]  Torkel Franzén Logical aspects of the Andorra Kernal Language , 1991 .

[39]  Steve Gregory,et al.  Parallel logic programming in parlo9 , 1987 .

[40]  Rong Yang P-Prolog - A Parallel Logic Programming Language , 1988, World Scientific Series in Computer Science.

[41]  Seif Haridi,et al.  ANDORRA Prolog - An Integration of Prolog and Committed Choice Languages , 1988, FGCS.

[42]  Nicholas Carriero,et al.  How to write parallel programs: a guide to the perplexed , 1989, CSUR.

[43]  Ehud Shapiro,et al.  A subset of Concurrent Prolog and its interpreter , 1988 .

[44]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[45]  Kazunori Ueda,et al.  Design of the Kernel Language for the Parallel Inference Machine , 1990, Computer/law journal.

[46]  Gert Smolka Residuation and Guarded Rules for Constraint Logic Programming , 1991, WCLP.

[47]  Vijay A. Saraswat,et al.  Concurrent constraint programming , 1989, POPL '90.

[48]  Pascal Van Hentenryck Constraint logic programming , 1991, The Knowledge Engineering Review.

[49]  Steven Tuecke,et al.  Parallel programming with PCN , 1991 .

[50]  Joxan Jaffar,et al.  Constraint logic programming , 1987, POPL '87.

[51]  Takashi Chikayama,et al.  Multiple Reference Management in Flat GHC , 1987, International Conference on Logic Programming.

[52]  Mats Carlsson,et al.  Entailment of Finite Domain Constraints , 1994, ICLP.

[53]  Koen De Bosschere,et al.  jc: An Efficient and Portable Sequential Implementation of Janus , 1992, JICSLP.

[54]  Vijay A. Saraswat CP as a General-Purpose Constraint-Language , 1987, AAAI.

[55]  John Wylie Lloyd,et al.  Foundations of Logic Programming , 1987, Symbolic Computation.

[56]  Reem Bahgat,et al.  Pandora: Non-deterministic Parallel Logic Programming , 1989, ICLP.

[57]  Ian T. Foster,et al.  Copy Avoidance through Compile-Time Analysis and Local Reuse , 1991, ISLP.

[58]  Bart Demoen,et al.  A New Scheme for Unification in WAM , 1991, ISLP.

[59]  Hassan Aït-Kaci,et al.  Warren's Abstract Machine: A Tutorial Reconstruction , 1991 .

[60]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

[61]  Luís Moniz Pereira,et al.  Improving Backward Execution in the Andorra Family of Languages , 1992, JICSLP.

[62]  Rong Yang,et al.  Parallel Constraint Solving in Andorra-I , 1992, FGCS.

[63]  Andrew Davison,et al.  Polka: a parlog object oriented language , 1989 .

[64]  Michael J. Maher Complete axiomatizations of the algebras of finite, rational and infinite trees , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[65]  Ehud Shapiro,et al.  The family of concurrent logic programming languages , 1989, CSUR.

[66]  Manuel V. Hermenegildo,et al.  Recomputation based Implementations of And-Or Parallel Prolog , 1992, FGCS.

[67]  Jim A. Crammond Scheduling and Variable Assignment in the Parallel PARLOG Implementation , 1990, NACLP.

[68]  Kenneth M. Kahn,et al.  Actors as a special case of concurrent constraint (logic) programming , 1990, OOPSLA/ECOOP '90.

[69]  Manuel V. Hermenegildo,et al.  &-Prolog and its Performance: Exploiting Independent And-Parallelism , 1990, ICLP.

[70]  Seif Haridi,et al.  Kernel Andorra Prolog and its Computation Model , 1990, ICLP.

[71]  I. Foster,et al.  Strand: A practical parallel programming language , 1989 .

[72]  Seif Haridi,et al.  Programming Paradigms of the Andorra Kernel Language , 1991, ISLP.

[73]  Takashi Chikayama,et al.  Operating System PIMOS and Kernel Language KL1 , 1992, FGCS.

[74]  Ehud Shapiro,et al.  Concurrent Prolog: A Progress Report , 1985, Computer.

[75]  Vijay A. Saraswat,et al.  The concurrent logic programming language CP: Definition and operational semantics , 1987, POPL '87.

[76]  Pascal Van Hentenryck,et al.  The Cardinality Operator: A New Logical Connective for Constraint Logic Programming , 1990, WCLP.

[77]  Bart Demoen,et al.  Hybrid Tree Search in the Andorra Model , 1994, ICLP.

[78]  Enrico Pontelli,et al.  ACE: And/Or-parallel Copying-based Execution of Logic Programs , 1994, ICLP.

[79]  Steve Gregory,et al.  Experiments with Speculative Parallelism in Parlog , 1993, ILPS.

[80]  Seif Haridi,et al.  Structural Operational Semantics for Kernel Andorra Prolog , 1991, PARLE.