Report Number: CS-TR-67-65
Institution: Stanford University, Department of Computer Science
Title: On certain basic concepts of programming languages
Author: Wirth, Niklaus
Date: May 1967
Abstract: Recent developments of programming languages have led to the emergence of languages whose growth showed cancerous symptoms: the proliferation of new elements defied every control exercised by the designers, and the nature of the new cells often proved to be incompatible with the existing body. In order that a language be free from such symptoms, it is necessary that it be built upon basic concepts which are sound and mutually independent. The rules governing the language must be simple, generally applicable and consistent. In order that simplicity and consistency can be achieved, the fundamental concepts of a language must be well-chosen and defined with utmost clarity. In practice, it turns out that there exists an optimum in the number of basic concepts, below which not only implementability of these concepts on actual computers, but also their appeal to human intuition becomes questionable because of their high degree of generalization. These informal notes do not abound with ready-made solutions, but it is hoped they shed some light on several related subjects and inherent difficulties. They are intended to summarize and interrelate various ideas which are partly present in existing languages, partly debated within the IFIP Working Group 2.1, and partly new. While emphasis is put on clarification of conceptual issues, consideration of notation cannot be ignored. However, no formal or concise definitions of notation (syntax) will be given or used; the concepts will instead be illustrated by examples, using notation based on Algol as far as possible.