Book contents
- Frontmatter
- Contents
- Preface
- 1 Predicate Logic
- 2 The Simple Imperative Language
- 3 Program Specifications and Their Proofs
- 4 Arrays
- 5 Failure, Input-Output, and Continuations
- 6 Transition Semantics
- 7 Nondeterminism and Guarded Commands
- 8 Shared-Variable Concurrency
- 9 Communicating Sequential Processes
- 10 The Lambda Calculus
- 11 An Eager Functional Language
- 12 Continuations in a Functional Language
- 13 Iswim-like Languages
- 14 A Normal-Order Language
- 15 The Simple Type System
- 16 Subtypes and Intersection Types
- 17 Polymorphism
- 18 Module Specification
- 19 Algol-like Languages
- Appendix: Mathematical Background
- Bibliography
- Index
19 - Algol-like Languages
Published online by Cambridge University Press: 28 January 2010
- Frontmatter
- Contents
- Preface
- 1 Predicate Logic
- 2 The Simple Imperative Language
- 3 Program Specifications and Their Proofs
- 4 Arrays
- 5 Failure, Input-Output, and Continuations
- 6 Transition Semantics
- 7 Nondeterminism and Guarded Commands
- 8 Shared-Variable Concurrency
- 9 Communicating Sequential Processes
- 10 The Lambda Calculus
- 11 An Eager Functional Language
- 12 Continuations in a Functional Language
- 13 Iswim-like Languages
- 14 A Normal-Order Language
- 15 The Simple Type System
- 16 Subtypes and Intersection Types
- 17 Polymorphism
- 18 Module Specification
- 19 Algol-like Languages
- Appendix: Mathematical Background
- Bibliography
- Index
Summary
In this chapter, we introduce a class of languages that combine imperative and functional features in a very different way than the Iswim-like languages of Chapter 13. Algol-like languages are based on normal-order evaluation, and they distinguish two kinds of types, called data types and phrase types. In contrast to Iswim-like languages, they can be implemented by allocating storage on a stack, without any form of garbage collection; thus they are more efficient but more limited in the variety of programs that can be expressed reasonably. They are theoretically cleaner — in particular, β-reduction preserves meaning. Nevertheless, they still exhibit the complications of aliasing that characterized Iswim-like languages.
The original Algol-like language, Algol 60, was (along with Lisp) the earliest language to combine a powerful procedure mechanism with imperative features. By intentionally concentrating on the desired behavior of the language rather than its implementation, the designers of Algol 60 raised problems of implementation and definition that were a fruitful challenge over the following decade. In particular, the language inspired the definitional ideas of Strachey and Landin that, paradoxically, led to Iswim-like languages.
Since then, a few Algol-like languages, such as Algol W and especially Simula 67, have attracted communities of users. At present, however, the acceptance of Iswim-like languages is far wider. Nevertheless, there has been a spate of theoretical interest in the last decade that suggests the Algol framework may inspire new languages which, if they can overcome the limitations of the stack discipline without compromising linguistic cleanliness, will find significant acceptance.
- Type
- Chapter
- Information
- Theories of Programming Languages , pp. 415 - 446Publisher: Cambridge University PressPrint publication year: 1998