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

Programming paradigms

(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

Related

Textbooks

  • Michael L. Scott. Programming Language Pragmatics. Morgan Kaufmann, 2000.

  • M. Ben-Ari. Understanding Programming Languages. Chichester: John Wiley & Sons, 1996. [Online general textbook on programming languages: types, exceptions, paradigms, polymorphism, ...]

Communication protocols

Hardware languages

Philosophy of computer science at the University of Essex. DISCLAIMER. These pages reflect our ongoing investigation of a nascent discipline. Expect omissions and errors. Comments and other contributions are welcome. (View My Stats)

 

University of Essex