Search code examples
oopprogramming-languages

key programming concepts and terminology in a variety of languages


i've been programming for a while, but have never had a formal computer science education. i would like to know if there is a resource that goes over the key programming concepts like construct, polymorphism etc, that would be applicable to different languages. also it would be highly helpful if the resource would give examples.


Solution

  • Concepts, Techniques, and Models of Computer Programming (by Peter Van Roy and Seif Haridi): the title says it all. (From the same author and based on the book comes this cool poster with ~30 of the most important programming paradigms.) [Note: this book is colloquially known as CTM, you might stumble across that acronym from time to time.]

    Structure and Intepretation of Computer Programs (by Harold Abelson and Gerald Jay Sussman). SICP, as it is colloquially known, is probably the book about programming. Period. Don't forget the 1986 video lectures by the authors themselves or one of the other courses based on the book.

    The main difference between SICP and CTM is the approach: CTM teaches programming concepts by giving examples in a very powerful programming language (Distributed Oz) that already implements them, while SICP teaches programming concepts by implementing them in a language (Scheme, or rather a small subset of it) which doesn't already have them. IOW: CTM would teach OO be showing programs written in an OO language, SICP by implementing an OO system in Scheme.

    Design Concepts in Programming Languages (by Franklyn A. Turbak and David K. Gifford with Mark A. Sheldon) is more about Programming Language Theory than Programming. It's still pretty interesting, even though it doesn't directly address your question about Programming Concepts. But after all: how would you program without a programming language?

    Concepts of Programming Languages (by Robert W. Sebesta) explains, well, Concepts of Programming Languages, starting with Konrad Zuse's Plankalkül, continuing with the first real programming languages like Fortran, Lisp, Cobol, Algol, BASIC and on to C, C++, Java and Ada. [Again, more of a Programming Language book than Programming.]