Philosophy of Programming Languages
Online and offline resources

Table of Contents:
See also:
Programming languages are really just vehicles to supply abstractions to
programmers. People think of programming languages as being good or bad for
a given purpose, but they are really criticizing the abstractions that a
language embodies. The progress in programming languages has been incredibly
slow because new programming languages are difficult to create and even more
difficult to get adopted. When you have a new programming language, the
users have to rewrite their legacy code and change their skills to
accommodate the language. So, basically, new programming languages can come
about only when there is an independent revolution that justifies the waste
of the legacy, such as Unix which gave rise to C, or the Web which gave rise
to Java. Yet it's not the languages that are of value, but only the
abstractions that the languages carry.
--
Charles Simonyi (The Edge)

History of programming languages
- Richard L. Wexelblatt (ed.) History of Programming Languages. New York:
Academic Press, 1981.
- Thomas J. Bergin II, Richard G. Gibson, II (eds.) History of Programming Languages-II.
New York: ACM Press, 1996.
Online
Milestones
- John Backus. “The history of FORTRAN I, II and III.” Ch. in: R.L. Wexelblatt
(ed.) History of Programming Languages. New York: Academic Press, 1981.
- Alan J. Perlis. “The American side of the development of ALGOL.” Ch. in: R.L.
Wexelblatt (ed.) History of Programming Languages. New York: Academic
Press, 1981.
- John McCarthy. “Recursive functions of symbolic expressions and
their computation by machine, Part I.” Communications of the ACM, Vol.
3, No. 4 (1960), pp. 184–195. (Lisp)
- Nicholas Wirth. “Recollections about the Development of Pascal”. Ch. in: Thomas
J. Bergin II, Richard G. Gibson, II (eds.) History of Programming Languages-II.
New York: ACM Press, 1996.
- W.A. Whitaker. “Ada—The Project.” Ch. in: Thomas J. Bergin II, Richard G. Gibson, II (eds.) History of Programming Languages-II.
New York: ACM Press, 1996.
- Alain Colmerauer, Philippe Roussel. “The Birth of PROLOG.” Ch. in: Thomas J. Bergin II, Richard G. Gibson, II (eds.) History of Programming Languages-II.
New York: ACM Press, 1996.
- A.C. Kay. “The Early History of Smalltalk.” Ch. in: Thomas J. Bergin II, Richard G. Gibson, II (eds.) History of Programming Languages-II.
New York: ACM Press, 1996.
-
B. Stroustrup. The Design
and Evolution of C++. Reading: Addison-Wesley, 1994.
Reference
-
A. Goldberg, D. Robson. Smalltalk-80: The Language. Reading:
Addison-Wesley, 1989.
-
James Gosling, Bill Joy, Guy Steele.
The Java Language Specification, 1st edition. Reading: Addison
Wesley, 1996.
-
H. Abelson, G.J. Sussman. Structure and Interpretation of
Computer Programs, 2nd Edition. MIT Press, 1996. (Scheme)
-
Bjarne Stroustrup. The C++ Programming Language, special edition.
Reading: Addison Wesley, 2000.
-
Kathleen Jensen, Niklaus Wirth. PASCAL—User Manual and Report: ISO
Pascal Standard. Springer Verlag, 1974.
There are only two kinds of programming languages: those people always
bitch about and those nobody uses.
-- Bjarne Stroustrup
Online

Ontology and epistemology of programming languages
A programming language is a system of notation for
describing computations. A useful programming language must therefore be
suited for both description (i.e., for human writers and readers of
programs) and for computation (i.e., for efficient implementation on
computers). But human beings and computers are so different that it is
difficult to find notational devices that are well suited to the
capabilities of both.
-- R.D. Tennent, Principles of Programming Languages
Our work on the ontology and epistemology of programming languages

(Under construction)
Our work on the ontology of programming paradigms
- Amnon H. Eden, Raymond Turner. “Problems
in the ontology of computer programs.” Applied Ontology, IOS
Press, forthcoming (Technical report CSM-461 (Sep. 2006), Department of
Computer Science, University of Essex, ISSN 1744-8050).
General
-
Robert W Floyd. “The paradigms of programming”,
transcript of Turing Award lecture, 1978. Communications of the ACM, Vol.
22, No. 8 (Aug. 1979), pp.455–460.
Structured Programming
- E.W. Dijkstra. “Go
to statement considered harmful.” Communications of
the ACM, Vol. 11, No. 3 (Mar. 1968), pp. 147–148
- D.E. Knuth. “Structured programming with go to statements.” ACM
Computing Surveys. Vol. 6, No. 4 (Dec. 1974), pp. 216–301.
Object-oriented programming (See also:
my OOP page)
- I. Craig. The Interpretation of Object-Oriented Programming Languages.
New York: Springer-Verlag, 2000.
Functional programming
-
H. Abelson, G.J. Sussman. Structure and Interpretation of
Computer Programs, 2nd Edition. MIT Press, 1996.
Aspect-oriented programming
- G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C.V. Lopes, J. M.
Loingtier, J. Irwin. “Aspect-Oriented Programming.” Proc. 11th European
Conf. Object-Oriented Programming—ECOOP, Jyvëskylë, Finland. Lecture Notes
in Computer Science 1241. Berlin: Springer-Verlag, 1997.
We're all so busy being practical that we don't have time to be
intelligent
--
Albert E. Cowdrey, The Tribes of Bela
Textbooks
Communication protocols
Hardware languages
|