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.