The comparison of programming languages: A linguistic approach

  • Authors:
  • John B. Goodenough

  • Affiliations:
  • -

  • Venue:
  • ACM '68 Proceedings of the 1968 23rd ACM national conference
  • Year:
  • 1968

Quantified Score

Hi-index 0.02

Visualization

Abstract

This paper presents some results of research into the nature of computer programming languages. One purpose of this research was to develop methods for describing programming languages so that fundamental similarities (and differences) are made explicit in a form that allows languages to be compared easily. Although one must consider fundamental properties in order to make insightful comparisons of languages, it is by no means sufficient to have just a means of describing purported “fundamental” aspects of languages, since the fundamental nature of programming languages is, to say the least, open to question. Hence it is also necessary to have a theoretical framework that can be used to prove or disprove the existence of hypothesized fundamental aspects of programming languages. Without such a framework, findings about programming languages have the status of personal opinions that are difficult to prove right or wrong. Moreover, the use of a theoretical framework forces us to make explicit our assumptions about programming languages, and we can therefore better avoid the use of inconsistent or inappropriate assumptions. Hence, in this paper we consider how programming languages might be represented so that insightful comparisons of fundamental properties can be made, and we present the beginnings of a suitable explicit theoretical framework. My study of programming languages has been rather abstract; in particular, it has not been oriented toward practical problems of compiler design. Instead, my primary goal has been to gain insight into the nature of programming languages in order to find a principled basis for discussing, describing, and understanding similarities and differences between languages. Such insight is likely to be valuable in a practical sense. Consider for example how difficult it is to decide whether differences between programming languages represent fundamental innovations or just frills. Even if one feels intuitively that certain differences are fundamental, it is often not clear exactly why this judgment was made. And of course, it is easy to make inconsistent intuitive judgments about differences between languages because our assumptions about the nature of programming languages are usually inexplicit and ill-understood. For all of these reasons, it is important to gain a deeper understanding of programming languages and to find explicit ways of representing these understandings in a form that is susceptible of useful scientific discussion. This is the purpose behind the research reported in part here.