[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/567446.567469acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article
Free access

"Type-completeness" as a language principle

Published: 28 January 1980 Publication History

Abstract

In his recent Turing Lecture, John Backus delivered a trenchant argument for the proposition that "programming languages are in trouble." Backus claims this to be inevitable: the development of Algol-like languages must lead to this sorry state because it begins from faulty assumptions.A less radical interpretation of the difficulties of language design is that we still do not understand the fundamental principles that should guide our design efforts; the machines we use may limit our results, but our ignorance has far greater effect. As evidence to support this position, we can cite the difficulties of building successors to Algol 60 and Pascal. Both languages have been acclaimed as well-designed, but it has proved extremely difficult to capture just what they "got right." Thus, Hoare has claimed that "Algol 60 was not only a great improvement on its predecessors, but also on nearly all of its successors." [73a] The recent Ada design suggests that the same fate may befall Pascal.In this paper, we expand on an idea of Landin [66] to develop an important principle of programming languages: type-completeness. We argue that application of this principle is an effective tool in understanding problems of programming language design. In particular, type-completeness1. allows us to point out many of the flaws and inconsistencies in existing languages (so we can know what mistakes not to repeat) and2. provides a framework for the design of languages (or language families) that have wide variation in their changeable parts.Below, we present the principle of type-completeness and its ramifications for language design. We then discuss some common examples of incompleteness found in existing Algol-like languages. And we end by presenting the type structure of the type-complete programming language Russell, which has been designed by the authors. As we show, the flexibility provided in Russell by the combination of a small, rich type structure and type-completeness belie Backus's assertion of inherent weakness of vonNeumann languages.

References

[1]
{Backus78} Backus, J. Can Programming Be Liberated From the vonNeumann Style? A Functional Style and its Algebra of Programs. CACM 21(1978), pp. 613-641.
[2]
{Demers79} Demers, A. and J. Donahue. Revised Report on Russell. Report TR79-389, Computer Science Department, Cornell University (1979).
[3]
{Hoare73a} Hoare, C. A. R. Hints on Programming Language Design. ACM Symposium on Principles of Programming Languages (1973), pp. 1-30.
[4]
{Hoare73b} Hoare, C. A. R. Recursive Data Structures. Report STAN-CS-73-400, Department of Computer Science, Stanford University (1973).
[5]
{Lampson77} Lampson, Butler, James Horning, Ralph London, James Mitchell and G. Popek. Report on the Programming Language Euclid. SIGPLAN Notices 12:3 (1977).
[6]
{Landin65} Landin, P. J. A Correspondence between Algol 60 and Church's Lambda Notation. CACM 8(1965), pp. 89-101, 158-165.
[7]
{Landin66} Landin, P. J. The Next 700 Programming Languages. CACM 9(1966), pp. 157-164.
[8]
{Liskov77} Liskov, B., A. Snyder, R. Atkinson and C. Schaffert. Abstraction Mechanisms in CLU. CACM 20(1977), pp. 564-576.
[9]
{Reynolds70} Reynolds, J. GEDANKEN -- A Simple Typeless Language Based on the Principle of Completeness and the Reference Concept. CACM 13(1970), pp. 308-318.
[10]
{vanWijngaarden77} vanWijngaarden, A., et al. Revised Report on the Algorithmic Language Algol68. SIGPLAN Notices 12:5(1977), pp. 1-70.
[11]
{Wulf78} Wulf, W., et al. (Preliminary) An Informal Definition of Alphard, CMU-CS-78-105, Department of Computer Science, Carnegie-Mellon University, 1978.

Cited By

View all

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '80: Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
January 1980
261 pages
ISBN:0897910117
DOI:10.1145/567446
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 28 January 1980

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Acceptance Rates

Overall Acceptance Rate 824 of 4,130 submissions, 20%

Upcoming Conference

POPL '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)59
  • Downloads (Last 6 weeks)10
Reflects downloads up to 21 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2005)The database programming language Atlant: Principal features and implementation techniquesNext Generation Information System Technology10.1007/3-540-54141-1_21(385-402)Online publication date: 8-Jun-2005
  • (2005)An algebraic implementation of packagesEUROCAL '8510.1007/3-540-15984-3_280(291-302)Online publication date: 8-Jun-2005
  • (1986)Implementing RUSSELLACM SIGPLAN Notices10.1145/13310.1333021:7(186-195)Online publication date: 1-Jul-1986
  • (1986)Implementing RUSSELLProceedings of the 1986 SIGPLAN symposium on Compiler construction10.1145/12276.13330(186-195)Online publication date: 1-Jul-1986
  • (1985)Towards a theory of packagesProceedings of the ACM SIGPLAN 85 symposium on Language issues in programming environments10.1145/800225.806833(117-130)Online publication date: 25-Jun-1985
  • (1985)Data types are valuesACM Transactions on Programming Languages and Systems10.1145/3916.39877:3(426-445)Online publication date: 1-Jul-1985
  • (1985)Abstract types have existential typesProceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages10.1145/318593.318606(37-51)Online publication date: 1-Jan-1985
  • (1985)Towards a theory of packagesACM SIGPLAN Notices10.1145/17919.80683320:7(117-130)Online publication date: 25-Jun-1985
  • (1983)On the unification of data and program abstraction in AdaProceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages10.1145/567067.567091(256-264)Online publication date: 24-Jan-1983
  • (1983)Making variables abstractProceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages10.1145/567067.567075(59-72)Online publication date: 24-Jan-1983
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media