Language principles

daniel mocsny dmocsny at uceng.UC.EDU
Sat Feb 3 11:30:02 AEST 1990


In article <490 at dino.cs.iastate.edu> hascall at cs.iastate.edu (John Hascall) writes:
[...]
>    SIMPLICITY:  A language should be as simple as possible.  There
>       should be a minimum number of concepts with simple rules for
>       their combination.
[...]
>     What do you think of the list?  What's missing?  What's
>       extra?  What's insightful?  What's just plain wrong?

I agree that a language should be as "simple" as possible, but how
simple can a language be, and still be a useful tool for building the
complex applications users demand? (Note: I include libraries in what
I refer to as "language," since the programmer must assimilate their
calling syntax just like the underlying language itself.) If the
application is inherently complex, the complexity has to show up
somewhere. If the complexity isn't in the "concepts" or the "rules
for their combination," then it will be in the sheer number and
detail of those combinations. TANSTAAFL and all that.

I think "simple" languages and programs are useful primarily for
complex (i.e., expert) users, people who are willing to spend 10x as
much effort poring through manuals as actually running anything. The
other 99% of humans have other responsibilities and interests besides
keeping the computer happy. They require "bells and whistles", such as
a program that takes care of its own errors, and can explain clearly
at any time how the user may take advantage of it.  Writing programs
such as this forces the programmer to confront an enormous amount of
detail. If the language does not embed this detail in its "simple"
syntax, then it has to embed it in its libraries.

So perhaps "simplicity" is not so much what we want, but grace in
handling the complexity we can't avoid? In other words, striking a
reasonable balance between capability and complexity. 

Dan Mocsny
dmocsny at uceng.uc.edu



More information about the Comp.lang.c mailing list