What ever happened to ease of learning and ease of use?

Complexity Triumphs

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:

  1. to provide greater power,
  2. to broaden the scope of applicability,
  3. or to anticipate future needs.
but those added features must not be an added burden to users who don't need or understand them. We shouldn't have to remember facilities that we never use, we shouldn't have to decipher mysterious messages pertaining to such facilities, and we should rarely if ever accidentally trigger the invocation of some irrelevant option.

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 exist."
—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 him."
—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:

  1. offering PL/I courses to all levels of programmer, including a half-day introduction for casual (end user) people with no prior programming experience,

  2. packaging a small fail safe environment to prevent loss of control during execution and assure adequate debugging output. The user's program contained a single %INCLUDE statement to establish that environment.
Experience clearly showed that the modularity objective of PL/I's designers had been satisfied.

That was then; what now?

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.

1—called NPL (New Programming Language) while it was being designed by a joint SHARE-IBM committee.

Return to Technical articles
IDI Home page

Last modified June 4, 2013