Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Is there somewhere some kind of dictionary or book which explains all those modern terms of language concepts like (but not limited to)

  • currying
  • closure
  • lambda function
  • type deduction
  • dynamic meta-programming
  • multiple dispatch
  • etc.


I know that books on programming languages like groovy explain some of these concepts, but I am looking for something more comprehensive and language independent...

Update: Yes, I know, I will find explanations for each of those single concepts through google and wikipedia, but I am looking for an overview of all those terms... a dictionary :-)

Background: As long as I don't know the term to search for, I can't find it on wikipedia or google...

Bounty: Since I am still looking for a good overview or list of programming concepts together with an explanation, I now offer a bounty for the best answer.

If you don't have a link to an overview, but you know some programming concepts which are not mentioned yet - please feel free to create an answer and name them together with a link to wikipedia or another explaining text. I will collect all these answer and the best one will receive the bounty.

Update: thanx for all answers. It was hard to decide on the right answer and bounty.

Since it seems that there is no such dictionary I was looking for, I decided to collect references by myself in a blog:


migration rejected from Sep 29 '13 at 21:22

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as off-topic by gnat, GlenH7, MichaelT, Jim G., Doc Brown Sep 29 '13 at 21:22

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – gnat, GlenH7, Community, Jim G., Doc Brown
If this question can be reworded to fit the rules in the help center, please edit the question.

Have you tried wikipedia? Their CS entries are quite good and seem comprehensive, and the external links will normally add quite a lot of detail. – Oded Sep 10 '11 at 20:22
yes, I already tried to google and I tried wikipedia. You find the terms which you are searching for, but I couldn't find an overview of all those concepts... – rdmueller Sep 10 '11 at 20:24
@Ralf would be a nice project to make such a dictionary, and very educative. I am afraid no such dictionary exists atm. – rightfold Sep 10 '11 at 20:26
Uhm ... "modern"? Currying is from 1924, lambdas are from 1936, closures from the 1960s, type deduction is a fundamental concept of type theory, which goes back to 1908, multiple dispatch has been around since at least CommonLOOPS (1986) and dynamic meta-programming is at least as old as LISP (1958). The first four are basic computer science concepts that should be covered in any halfway decent introductory CS book, the last two are basic programming language design concepts that should also be covered in an introductory CS book, or failing that, in any programming language book. – Jörg W Mittag Sep 11 '11 at 4:20
@Ralf, how could you "study" CS without an exposure to the computability theory, to the functional languages, to Lisp, etc.? What happened to the education?!? And, yes, there is nothing "new" even in terms of programming languages - Lisp had it all since late 1950s. – SK-logic Sep 15 '11 at 8:19
up vote 5 down vote accepted

I don't think you want a dictionary; I think you want a textbook on programming languages. I recommend Essentials of Programming Languages and/or Programming Languages: Application and Interpretation (available online).

You are right - a text book would also be a good solution! – rdmueller Sep 10 '11 at 22:58
Just checked the second link (the book is available as free pdf). It seems to cover most of these concepts, but still there is no overview of concepts :-( – rdmueller Sep 11 '11 at 8:07
just found another promising looking book: Concepts of Programming Languages – rdmueller Sep 11 '11 at 8:23
I'd like an online dictionary, actually. Something that is updated regularly. It would help me to keep up, but also I could send others to that site, if it did a better job explaining than I (or if I don't know the answer myself). – S.L. Barth Sep 15 '11 at 8:18
I'd also recommend this:… – SK-logic Sep 15 '11 at 8:22

Most universities have lectures on programming language concepts. If they offer good slides, you can use those: They will cover everything a book on this subject covers, are almost as readable, often more up-to-date and much more concise.

There is a list of such lectures (assembled by John C. Mitchell from Stanford University, author of Concepts in Programming Languages, Foundations for Programming Languages and Theoretical Aspects of Object-Oriented Programming).

One example is the Programming Languages CourseWare site from Fall 2010.


Check out Lambda the Ultimate. While it isn't a dictionary per se, it is searchable and you'll find numerous articles on pretty much any programming concept you search on.


I found that it's a hard read, but the most comprehensive book on computer programming is Donald E. Knuths' The Art Of Computer Programming. It's very detailed and mathematical, but sure describes a lot of concepts and contains good practice examples.

The Art of Computer Programming is a series of books on algorithms. It is useless for programming languages concepts. – Ryan Culpepper Sep 15 '11 at 8:58

Not the answer you're looking for? Browse other questions tagged or ask your own question.