It is nice to know that well into the era of 4th and 5th generation languages, application generators, software engineering, and the like, someone is still worrying about novice programmers. Pity the poor programmer whose innocent error results in “Fatal Error in Pass 0” from the less-than-friendly PASCAL compiler, or worse. I wish I had a collection of similar messages, including a gem from a UNIVAC FORTRAN compiler which said, “SIMPLIFY THIS STATEMENT,” and meant it]
The authors’ point is that many messages are not nearly so clear. They feel compiler writers have placed emphasis on producing efficient code, and not on helping the programmer determine what is wrong, especially when a simple error (e.g., fori:=1 to 10 do) results in a cascade of error messages. Perhaps the worst case--omitted data definitions (which can produce pages of messages describing illegal use of data)--is not discussed. Debugging in modern environments, where procedural language code is generated, is also not discussed. At a minimum, new programmers are now or will soon use tools which aid even traditional coding by providing prompts for statements, a check of logic levels, and ending of iteration loops, etc., thereby avoiding most errors of the types described.
The authors report on their work to develop a prototype checker for PASCAL, “. . . not as a model of how this task should be carried out but to underline our argument that the task should be done.” It is doubtful many need convincing that it would be nice. Ten or 15 years ago such work would have been of real value. Whether the effort is justified today in light of the clear trend towards much higher level languages for general use is questionable. The paper also includes a survey of work on program error detection and correction efforts.