PL/1 and My law of programming languages

I started out programming in Fortran II and quickly went to Fortran IV (there was no Fortran III). At the time there were no widespread languages other than Fortran, Cobol, and Assembler (Algol in Europe and in the Burroughs equipment world.) This was changing rapidly as more languages became common. IBM developed in its Hursley Lab a language called PL/I which was touted as a replacement for both Cobol and Fortran with features not in either one.The resulting language was unweildly to implement. IBM never really had a solid and efficient compiler for PL/I though they had several. The other computer manufactures held off on implementing PL/I in part because it was an “IBM thing”, and costly to implement but, ironically the GE (later Honeywell) Multics system implemented probably the best PL/I compiler.Multics used a large subset of PL/I as the system programming implementation language for the Multics Operating System with a bare minimum of assembly language.
PL/I had made both many improvements over Fortran/Cobol and a number of mistakes in language design. To a large degree it suffered from the “kitchen sink syndrome”, that is almost any feature that anyone deemed useful was added. This resulted in an implementation nightmare, in that the compilers were hard to design, buggy, neither an unqualified success nor a complete failure, it significantly influenced the design of many later languages.

For certain programs it was the right choice as it implemented things like structured design, recursion, string function, and pointers. Overall the poor implementation of the compilers and runtime libraries with the subsequent resource intensive code
is what resulted in its low level of adoption. However a number of subset implementations proved very useful, IBM had PL/S which was used as a system programming language, Intel had PL/M which was used instead of assembler, and as mentioned above Multics had a very large subset of PL/I that was implemented in a very good compiler. PL/I is still being used today but is much less common than either Cobol or Fortran for example. The Tiobe programming index shows Cobol in 17th place, Fortran in 21st place and PL/I in 50th place for November 2007. (Java is 1st place and C 2nd place).

Which leads to my Law of Programming Languages, well maybe not a law perhaps just an observation. A good implementation of a “bad” language is better than a poor implementation of a “good” language. Besides the PL/I example there are numerous other examples one is Basic, there have been many implementations of Basic. In general Basic is considered to be well, basic (a “bad” language because of missing functionality) and probably it is, but there have been a number of implementation and extensions that resulted in its widespread usage since the days of GWBasic down to things like Visual Basic each in its own way had somethings that made it a good implementation. (Not that there haven’t been bad implementations of Basic.) This is really saying that choosing a language for a computer project or even your “standard” language at your enterprise shouldn’t be done without giving equal consideration of the implementation and execution environment it will be used in. One can’t say that for a project/program that one should use language X rather than language Y because language X is better than language Y. Language X may indeed be better than language Y but if the implementation (in the broader sense) of language X is worse than some other language in the environment of the program/project, the better language may not be the better choice.