The Definition of Programming Languages
There is no need to argue in favor of concise, clear, complete, consistent, descriptions of programming languages, nor to recite the cost in time, energy, money, and effectiveness which is incurred when a description falls short of these standards. Reliable, high-quality computer programming is impossible without a clear and precise understanding of the language in which the programs are written—this being true quite independently of the merits of a language as a language. In this study we tried to discover the current state of the methodology of definition of programming languages. We sought to separate the question (as far as it can be done) of definition from that of design. Our goal was to get at ways of specifying programming languages rather than ways of inventing them or of implementing them on machines. We realize however that these questions are not completely separable. Many programming languages are poorly defined. Nowadays—indeed ever since the influential and pioneering example of the formal definition of ALGOL-60—one finds (usually) that the syntax of a programming language is defined very clearly and compactly, but that the semantics is (usually) explained badly.