On the Expressive Power of Programming Languages

The literature on programming languages contains an abundance of informal claims on the relative expressive power of programming languages, but there is no framework for formalizing such statements nor for deriving interesting consequences. As a first step in this direction, we develop a formal notion of expressiveness and investigate its properties. To demonstrate the theory's closeness to published intuitions on expressiveness, we analyze the expressive power of several extensions of functional languages. Based on these results, we believe that our system correctly captures many of the informal ideas on expressiveness, and that it constitutes a good basis for further research in this direction.

[1]  William D. Clinger,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[2]  Timothy G. Griffin,et al.  Notational definition-a formal account , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[3]  John C. Reynolds,et al.  GEDANKEN—a simple typeless language based on the principle of completeness and the reference concept , 1970, Commun. ACM.

[4]  S. C. Kleene,et al.  Introduction to Metamathematics , 1952 .

[5]  Daniel P. Friedman,et al.  CONS Should Not Evaluate its Arguments , 1976, ICALP.

[6]  Jon G. Riecke,et al.  A Complete and Decidable Proof System for Call-by-Value Equalities (Preliminary Report) , 1990, ICALP.

[7]  Daniel Leivant,et al.  The Expressiveness of Simple and Second-Order Type Structures , 1983, JACM.

[8]  Paul Hudak,et al.  Single-threaded polymorphic lambda calculus , 1990, [1990] Proceedings. Fifth Annual IEEE Symposium on Logic in Computer Science.

[9]  Matthias Felleisen,et al.  A Syntactic Theory of Sequential State , 1989, Theor. Comput. Sci..

[10]  Samson Abramsky,et al.  The Lazy λ−Calculus , 1990 .

[11]  Alonzo Church,et al.  A formulation of the simple theory of types , 1940, Journal of Symbolic Logic.

[12]  Robert Hieb,et al.  The Revised Report on the Syntactic Theories of Sequential Control and State , 1992, Theor. Comput. Sci..

[13]  C.-H. Luke Ong,et al.  Fully abstract models of the lazy lambda calculus , 1988, [Proceedings 1988] 29th Annual Symposium on Foundations of Computer Science.

[14]  Carl Hewitt,et al.  The incremental garbage collection of processes , 1977, Artificial Intelligence and Programming Languages.

[15]  Matthias Felleisen,et al.  Reasoning with continuations II: full abstraction for models of control , 1990, LISP and Functional Programming.

[16]  James H. Morris,et al.  Lambda-calculus models of programming languages. , 1969 .

[17]  Matthias Felleisen,et al.  A Syntactic Theory of Sequential Control , 1987, Theor. Comput. Sci..

[18]  Mitchell Wand,et al.  A types-as-sets semantics for milner-style polymorphism , 1984, POPL.

[19]  P. J. Landin A λ-CALCULUS APPROACH , 1966 .

[20]  Friedrich L. Bauer,et al.  Revised report on the algorithm language ALGOL 60 , 1963, CACM.

[21]  James G. Williams,et al.  On the formalization of semantic conventions , 1990, Journal of Symbolic Logic.

[22]  Matthias Felleisen,et al.  The theory and practice of first-class prompts , 1988, POPL '88.

[23]  G.D. Plotkin,et al.  LCF Considered as a Programming Language , 1977, Theor. Comput. Sci..

[24]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[25]  Albert R. Meyer,et al.  Continuations may be unreasonable , 1988, LISP and Functional Programming.

[26]  Carl Hewitt,et al.  Comparative Schematology , 1970 .

[27]  P. J. Landin,et al.  The next 700 programming languages , 1966, CACM.

[28]  Carl Hewitt,et al.  The incremental garbage collection of processes , 1977 .

[29]  Gerald Jay Sussman,et al.  An Interpreter for Extended Lambda Calculus , 1975 .

[30]  A. Troelstra Metamathematical investigation of intuitionistic arithmetic and analysis , 1973 .

[31]  T G Muchnick,et al.  On some extensions of syntactic error recovery technique based on phrase markers , 1986, SIGP.

[32]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1959, Commun. ACM.

[33]  E E Kohlbecker,et al.  Syntactic extensions in the programming language LISP , 1986 .

[34]  Gordon D. Plotkin,et al.  Call-by-Name, Call-by-Value and the lambda-Calculus , 1975, Theor. Comput. Sci..

[35]  Zohar Manna,et al.  On the Power of Programming Features , 1976, Comput. Lang..

[36]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[37]  Gerald Jay Sussman,et al.  Lambda: The Ultimate Imperative , 1976 .

[38]  Stanley Burris,et al.  A course in universal algebra , 1981, Graduate texts in mathematics.

[39]  Matthias Felleisen,et al.  The calculi of lambda-nu-cs conversion: a syntactic theory of control and state in imperative higher-order programming languages , 1987 .

[40]  Mitchell Wand,et al.  Complete Type Inference for Simple Objects , 1987, LICS.

[41]  Matthias Felleisen,et al.  Control operators, the SECD-machine, and the λ-calculus , 1987, Formal Description of Programming Concepts.

[42]  Robin Milner,et al.  Definition of standard ML , 1990 .

[43]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.