1. 4

  2. 8

    This article begins with the usual tired old comparison between traditional engineering and software engineering.

    He proceeds by describing Standard ML as the first engineered programming language because it has a formal semantics. I think he’s mistaken, there were formal semantics created for both PL/I (VDM) and Algol 68(a Van Wijngaarden grammar) in the 1970s.

    Traditional programming language “design” does not address the question of the meaning of the language. In an engineering sense, traditional programming languages are not designed at all. A list of reasonable-sounding features is outlined in English, and the compiler writer then turned loose to try and produce something vaguely corresponding to the text.

    This ignores the reason why most language designers have used a written specification instead of a formal semantics.

    People want specifications they can read.

    Language specifications have a broad audience:

    • End users
    • Authors of reference works
    • Implementers
    • Enthusiasts who want to modify the specification

    Most people can’t read a formal semantics but written specifications are much widely accessible.

    Defining a language with a formal semantics is giving up on large-scale understanding of the language.