This article is by the recently deceased Dr. Corbató, who lead the development of early time-sharing systems, such as CTSS and Multics.
It seems that PL/I wasn't a good choice in hindsight, being too complex to implement a compiler quickly, given the memory constraints back in the day.
I posted this because I was interested in a comment about Multics that stated that PL/I's design prevented memory access bugs, because it had variable length arrays/strings(?), and not C's zero-terminated strings. Of course C/unix was a better choice for the memory-limited systems of the day than the relative behemoth that was PL/I/Multics.
PL/I doesn't prevent memory access bugs, but it makes it easier to do good programming. For example, parameters are passed by descriptor, so the allocated size is passed allowing run-time bounds checking. On the other hand, there is an equivalent of C type-casting, so it is still possible for the programmer to shoot themselves in foot while simultaneously hoisting themselves on their on petard.
It seems that PL/I wasn't a good choice in hindsight, being too complex to implement a compiler quickly, given the memory constraints back in the day.
I posted this because I was interested in a comment about Multics that stated that PL/I's design prevented memory access bugs, because it had variable length arrays/strings(?), and not C's zero-terminated strings. Of course C/unix was a better choice for the memory-limited systems of the day than the relative behemoth that was PL/I/Multics.