The first incarnation of this page was started by John W.F. McClain at MIT. He took it with him when he moved to Loral, but was unable to update and maintain it there, so I offered to take it over.
In John's original page, he said:
Computer programmers create new languages all the time (often without even realizing it.) My hope is this collection of critiques will help raise the general quality of computer language design.
( A few new additions, mostly links updated. An overhaul is in the works! )
The Development of the C Language
Dennis M. Richie.
The evolution of the language from BCPL to B to C to ANSI C, and a critique.
Why Pascal is Not My Favorite Programming Language. Brian W. Kernighan, Computing Science Technical Report No. 100, AT&T; Bell Laboratories, April 2,1981.
Copies of the above articles, as well as articles on B and BCPL, and other notes on the C language are available on http://www.lysator.lie.se/c.
The Case Against C., P. J. Moylam, Technical Report EE9240, Department of Electrical and Computer Engineering, The University of Newcastle, July 1992.
A Critique of the Programming Language C* by Walter F. Tichy, Phil Hatcher and Michale Philippsen, appeared in CACM June 1992. ( Included here by permission of one of the authors. ) C* ( C-star ) is a data parallel version of C.
Style guides for various languages can be considered as an implicit language critique, as they usually have tips on the problem areas in a language to avoid. A good one is Recommended C Style and Coding Standards By L. W. Cannon, R. A. Elliott, L. W. Kirchhoff, J. H. Miller, J. M. Milner, R. W. Mitze, E. P. Schan, N. O. Whittington, Henry Spencer, David Keppel and Mark Brader.
Also, the "traps and pitfalls" literature ( as in: Andrew Koenig's "C traps and pitfalls", a good example of the genre ) is another form of implicit critique. See Dave Dyer's top ten ways to be screwed by c
And, as an April 1st special, resurecting a 1991 article from COMPUTERWORLD - CREATORS ADMIT UNIX, C HOAX.
The darker side of C++ revisited. Markku Sakkinen, Dept. of Computer Science and Information Systems. Univ. of Jyvaskyla, Finland.
CONTRASTS: Ada 9X and C++. Edmond Schonberg, NYUAda 9X Project, New York University, April 22, 1992. (Note: the link for this paper has been updated to point to the Ada Information Clearinghouse archives. where there are other related articles.)
C++??, A Critique of C++ . 2nd Edition, Ian Joyner, Unisys - ACUS, November 1992.
There are two good books recently out on the evolution of C++:
The Evolution of Lisp Guy L. Steele, Jr & Richard P. Gabriel. from ACM SIGPLAN HOPL-II
Lisp: Good News, Bad News, How to Win Big.
Richard P. Gabriel.
Gabriel's analysis of why Lisp has failed in the
marketplace - contains his contrast of "MIT" vs "NJ" design approach.
Henry Baker's Critique of DIN Kernel Lisp Definition, although nominally about a European proposal for a standard Lisp, talks about Lisp capabilities in general.
A Critique of Standard ML. Andrew W. Appel, CS-TR-364-92, Princeton University, December 1991. Appeared in Journal of Functional Programming 3 (4) 391-430, 1993. Journal of Functional Programming 3 (4) 1993. * also available from: http://www.cs.Princeton.EDU:80/faculty/appel/papers/364.ps.Z
Reflections on Standard ML David B. MacQueen. AT&T; Bell Laboratories.
Two project reports from the
FOX Project at CMU discuss the requirements for systems programming
in an advanced higher-level language, and how SML and some other languages
compare. The more recent of the two:
Advanced Languages for Systems Software: The Fox Project in 1994,
Robert Harper and Peter Lee,
CMU-CS-FOX-94-01
has some notes about language design, compiler technology, and the planned
successor to SML, dubbed "ML2000" or "Millenium".
Haskell vs. Ada vs. C++ vs. Awk vs. ... An Experiment in Software
Prototyping Productivity Paul Hudak and Mark P. Jones. Yale University
Department of Computer Science. July 4, 1994.
The results of a APRA/Navy "bakeoff" competition, and an attempt to explain why
Haskell did so much better than most of the competition. File: jfp.{dvi,ps}
FP + OOP = Haskell Emery Berger. Department of Computer Science. University of Texas at Austin. December 12, 1992.
Subject: a note on the Haskerl extension to Haskell [long]
How to have your lazy evaluation, referential transparency, polymorphism and
type checking AND regexp's and FWIM (figure-out-what-I-mean) syntax TOO!
(In case you can't guess, this is another April 1 posting!)
Robin Popplestone's Design of an Interactive Functional Language and his Early Development of POP
A Comparison of Object-Oriented Programming in Four Modern Languages
Robert Henderson and Benjamin Zorn.
Department of Computer Science, University of Colorado, Boulder, Colorado
Technical Report CU-CS-641-93
The paper evaluates Oberon, Modula-3, Sather, and Self in the context of
object-oriented programming.
CLOS, Eiffel and Sather: A Comparison.
Heinz W. Schmidt and Stephen M. Omohundro
International Computer Science Institute TR-91-047
September, 1991.
There may be more material on the
Sather
home page, but I have not had time to pull them out yet.
Smalltalk, C++ and OO-Cobol: the Good, the Bad and the Ugly by Jeff Sutherland from Object Magazine.
Eiffel vs C++ by Bertrand Meyer.
The long lost Dylan Competitive Analysis paper is now available on the
Dylan Technology Release CD-ROM!
TR 93-045:
Sather Iters: Object-Oriented Iteration Abstraction
Sather iters are a powerful new way to encapsulate iteration. We argue that such iteration abstractions belong in a class' interface on an equal footing with its routines. Sather iters were derived from CLU iterators but are much more flexible and better suited for object-oriented programming. We motivate and describe the construct along with several simple examples. We compare it with iteration based on CLU iterators, cursors, riders, streams, series, generators, coroutines, blocks, closures, and lambda expressions. Finally, we describe how to implement them in terms of coroutines and then show how to transform this implementation into efficient code.
Iterator.html (WWW hypertext) Iterator.ps.Z (9 pages) "Iterators: Signs of Weakness in Object-Oriented Languages". ACM OOPS Messenger 4, 3 (July 1993), 18-25. If your language requires iterators in order to get anything done, your language's control structures are grossly deficient.
Tom Christiansen's classic comp.unix.shell FAQ:
CSH PROGRAMMING CONSIDERED HARMFUL
Adam Sah, Richard Stallman, and others on: Why You Should Not Use Tcl and John Ousterhout's reply.
Relational Databases Considered Harmful, and other letters from Henry Baker.
While I think it's a very rough and imperfect metric, Capers Jones' Language Level is an attempt to compare languages by how many lines of code are required, on average, to code one Function Point. ( I hope to add a critique of this metric, but for now, I'll merely note that many of the data points appear to have been estimated ( or more exactly, inherited from the estimate of a more generic prototype ) rather than measured. )
A .bib file of the critiques appearing here and additional ones not available over the WWW. [ Note: This is John McClain's original bib file - I have not yet updated it with the new material I have added, nor mined it for other possible URL's. ]
As practiced by computer science, the study of programming is an unholy mixture of mathematics, literary criticism, and folklore. - B. A. Sheil, 1981