by Conrad Weisert
June 3, 2013
© 2013 Information Disciplines, Inc.
|"Would you agree that it ought to be easier to do easy things than it is to do hard things?" —Robert P. Rich, 1964|
My boss at APL was a skilled debater, and when you heard a question like that from him you could be sure that you had already lost any argument you were having. But Bob Rich was making a valid and important point with respect to software design. Software designers may add more features to a software component in order:
Among general-purpose programming languages PL/I1 came closest to a sensible balance among great power, broad scope, ease of use, and ease of learning.
"NPL has been designed so that many of its features can be ignored by the programmer
without fear of penalty in either compile time or object-time efficiency. Thus, manuals
can be constructed of subsets of the language for different applications and different
levels of complexity. These do not even have to mention the unused
facilities. To accomplish this end, every attribute of a variable, every option, every specification
was a given a default interpretation, and this was chosen to be the one most likely to be
required by the programmer who doesn't know that the alternatives
—George Radin & Paul Rogoway: Communications of the ACM, January, 1965.
"Compared with FORTRAN, NPL is both simpler and more powerful, depending on the point
of view of the user. A subset can readily be defined that is considerably easier to learn
than simple versions of FORTRAN. Really. There are fewer restrictions and fewer rules to learn.
Mind you, this subset would require only a cut-down manual, not a cut-down compiler; the naive
user simply doesn't know that there is any more, and what he doesn't know won't hurt
—Daniel D. McCracken: "The New Programming Language", Datamation, July, 1964.
Partisans of different programming languages argued vigorously over whether that objective had been met. In some organizations the issue was settled by:
%INCLUDEstatement to establish that environment.
Today the most widely used general-purpose programming languages for new applications are:
Each of them has strengths and sophisticated features that cater to the needs of highly competent experienced programmers. I use them and teach them to experienced programmers and Computer Science majors. But none of them caters to beginners, non-professionals, and specialized application areas to the degree that PL/I did nearly a half century ago. The newer programming languages are the subject of 1200-page nutshell or dummies books that demand weeks or months of study.
Today's programmers, struggling with one of the above languages, are expected to:
A half-day course to make beginners self-sufficient in any of those modern languages is an absurdity. Dan McCracken and Bob Rich would be appalled; in 2013 it has become extremely hard to do some easy things.
Return to Technical articles
IDI Home page
Last modified June 4, 2013