-*- mode: org -*-
Idea: Read 100 books on OOP and see how many unconventional ideas I can reap from them. I’ve read so many OO books in my time I feel like there are no more surprises to be found. I want to be wrong. There are of course numerous OO books that I’ve read and found inspiring and that had great ideas inside:
| Title | Author(s) | Categories | Interesting Idea(s) |
|---|---|---|---|
| The Art of the Metaobject Protocol | Kiczales, des Rivieres, Bobrow | Lisp, MOP | Closette MOP |
| CLIPS User’s Guide | Giarratano | Rules, COOL | OO + production rules |
| Design Patterns: Elements of Reusable Object-Oriented Software | GoF | Patterns | Design Patterns |
| The Early History of Smalltalk | Kay | Smalltalk | Genesis of OO |
| Object-Oriented Programming: An Evolutionary Approach | Cox | ObjC | Pre-compilation of C |
| Object-Oriented Software Construction | Meyer | Eiffel, DbC | Contracts |
| Smalltalk Best Practice Patterns | Kent | Smalltalk | Practical OO thinking |
| Smalltalk-80: The Language and its Implementation | Goldberg, Robson | Smalltalk | Smalltalk impl. |
I’ve read many more OO books in my time but if I wanted to read 100 more, then those that I might pick are found in the next section. If a book that might fit isn’t listed then I may have already read it in the past. However, I’m happy to take recommendations if you have them.
What I’m looking for:
- Books that I haven’t already read
- Books with pre-OO and/or proto-OO ideas
- Books with non-mainstream OO techniques
This is a living list. Books in italics are must-reads (for me).
| Title | Read | Author(s) | Categories | Link(s) | Interesting Idea(s) | |
|---|---|---|---|---|---|---|
| 1 | A Little Java, a Few Patterns | [/] | Felleisen, Friedman | Java | buy | Unconventional OO. The best part is the Y-Combinator on the last page. |
| 2 | A Little Smalltalk | [/] | Budd | Smalltalk, Impl | free | Describes a small system and some of its implementation details. |
| 3 | A Machine Architecture to Support an Object-Oriented Language | [ ] | DTIC | Hardware | free | |
| 4 | A Quick Trip to Objectland: Object-Oriented Programming with SmallTalk/V | [ ] | Korienek | Smalltalk | free | |
| 5 | A Visual Formalism for Complex Systems | [ ] | Harel | Design | Description of Harel’s state transition diagrams, developed for use in large systems, especially responsive systems (real-time systems). | |
| 6 | Actors in Scala | [ ] | Haller | Scala, Actors | free | |
| 7 | Ada 95: The Craft of Object-Oriented Programming | [ ] | English | Ada95 | ||
| 8 | An Introduction to Programming in Simula | [ ] | Pooley | Simula | free | |
| 9 | Art and Science of Smalltalk | [ ] | Smalltalk | |||
| 10 | Aspect-Oriented Database Systems | [ ] | Rashid | AOP | free | |
| 11 | Byte Magazine, volume 6 number 8 - Special Smalltalk issue | [/] | Byte | Smalltalk | free | |
| 12 | Clojure for Java Developers | [/] | Diaz | FP | buy | |
| 13 | CLU Reference Manual | [/] | Liskov | CLU | Proto-OO | |
| 14 | Concurrent Programming ERLANG | [ ] | Erlang | |||
| 15 | Constructing Intelligent Agents Using Java | [ ] | Bigus | Agents | free | |
| 16 | Decline & Fall of the American Programmer | [ ] | Yourdain | free | ||
| 17 | Design and Evaluation of a High Performance Smalltalk System | [ ] | Ungar | Smalltalk, Impl | free | |
| 18 | Design by Contract: By Example | [ ] | DbC | |||
| 19 | Design patterns for object-oriented software development | [ ] | Pree | Patterns | free | |
| 20 | Design Principles Behind Smalltalk | [ ] | Ingalls | What we lost | free | |
| 21 | Designing Object-Oriented Software | [ ] | Wirfs-Brock | free | ||
| 22 | Developments in Design Methodology | [ ] | Papers | |||
| 23 | Dictionary of object technology : the definitive desk reference | [ ] | Eykholt, Firesmith | free | OO Catalog | |
| 24 | Discovering Smalltalk | [ ] | Lalonde | Smalltalk | free | |
| 25 | Dynamic Web Development with Seaside | [ ] | Smalltalk, Webdev | |||
| 26 | E in a Walnut | [ ] | E | free | ||
| 27 | Efficient Polymorphic Calls | [ ] | Driesen | OO Impl | ||
| 28 | Eiffel: An Introduction | [ ] | Switzer | Eiffel | free | |
| 29 | Elegant Objects | [ ] | Bugayenko | |||
| 30 | Flavors: Message Passing in the Lisp Machine | [ ] | DTIC | Lisp | free | |
| 31 | Generative Programming: Methods, Tools, and Applications | [ ] | C++ | |||
| 32 | Growing Object-Oriented Software, Guided by Tests | [ ] | TDD | |||
| 33 | Handbook of Programming Languages Volume 1: Object-Oriented Programming Languages | [ ] | Salus | Survey | free | |
| 34 | IBM Smalltalk | [ ] | Smith | Smalltalk | free | |
| 35 | Implementing Distributed Systems with Java and CORBA | [ ] | Aleksy | CORBA | free | |
| 36 | Implementing Persistent Object Bases | [ ] | Dearle | OODB | free | |
| 37 | Inside Smalltalk | [ ] | Smalltalk | v1 v2 | ||
| 38 | Interpretation of Object-Oriented Programming Languages | [ ] | Craig | OO Impl | ||
| 39 | JavaScript Spessore | [ ] | Raganwald | JS, Proto, MOP | ||
| 40 | JavaSpaces in Practice | [ ] | Bishop | Blackboard | free | |
| 41 | Jess in Action | [/] | Friedman-Hill | Rules | buy | |
| 42 | Lisp-Stat: An Object-Oriented Environment for Statistical Computing… | [ ] | Tierney | Lisp | free | |
| 43 | Masterminds of Programming | [ ] | Thinking | free | ||
| 44 | Modeling Reactive Systems with Statecharts: The STATEMATE Approach | [ ] | ||||
| 45 | Naked Objects | [ ] | Pawson | free | ||
| 46 | Neural Networks in C++ | [ ] | Blum | AI | free | |
| 47 | NeXTSTEP: Object-Oriented Software | [ ] | NeXT | free | ||
| 48 | Notes on the Synthesis of Form | [ ] | Alexander | Design | ||
| 49 | Object Design | [ ] | Wirfs-Brock | Design | ||
| 50 | Object Lifecycles: Modeling the World in States | [ ] | Shlaer | State Mgmt | ||
| 51 | Object-Orientation: The Kiss Method | [ ] | Kristen | KISS | free | |
| 52 | Object-oriented Analysis and Design with Applications | [/] | Booch | Booch Diagrams | ||
| 53 | Object-Oriented Concurrent Programming | [ ] | Yonezawa | free | ||
| 54 | Object-Oriented Databases: An Introduction | [ ] | Chorafas | OODB | free | |
| 55 | Object Oriented Perl | [ ] | Conway | Perl | free | |
| 56 | Object-Oriented Programming for Artificial Intelligence | [ ] | Tello | AI | free | |
| 57 | Object-Oriented Programming in the Beta Programming Language | [ ] | Madsen | BETA | free | |
| 58 | Object-Oriented Programming in Oberon-2 | [ ] | Mössenböck | Oberon-2 | free | |
| 59 | Object-Oriented Programming: The CLOS Perspective | [ ] | Paepcke | CLOS | ||
| 60 | Object-Oriented Programming Via FORTRAN 90/95 | [ ] | Akin | Fortran | free | |
| 61 | Object-Oriented Simulation: Reusability, Adaptability, Maintainability | [ ] | Zobrist | Simulation | free | |
| 62 | Object Oriented Systems Analysis: A Model Driven Approach | [/] | Embley | Design | free | The behavior model diagram techniques are interesting. |
| 63 | Object-Oriented Thought Process | [ ] | Weisfeld | free | ||
| 64 | Object Thinking | [ ] | West | |||
| 65 | On Conceptual Modelling: Perspectives from Artificial Intelligence, Databases, and PLs | [ ] | Brodie | Data modeling | ||
| 66 | On the design of the object-oriented language Sina | [ ] | Aksit | free | ||
| 67 | Pattern Languages of Program Design v1 | [ ] | Papers | free | ||
| 68 | Pattern Languages of Program Design v2 | [ ] | Papers | free | ||
| 69 | Pharo By Example | [ ] | L@@k http://books.pharo.org/updated-pharo-by-example/ | |||
| 70 | Process View Of Simulation | [ ] | Franta | Simula | free | |
| 71 | Programming Lua | [ ] | Lua, Proto | |||
| 72 | Programming for the Newton: Software Development With Newtonscript | [ ] | McKeehan | L@@k http://newtonscript.org | ||
| 73 | Programming with Turing and Object Oriented Turing | [ ] | Grogono | Turing | free | |
| 74 | Prolog++: The Power Of Object Oriented And Logic Programming | [ ] | Moss | Prolog | free | |
| 75 | Psychology of Computer Programming | [ ] | Weinberg | Meta | Parable of the Coke machine… | |
| 76 | Refactoring | [ ] | Fowler | free | ||
| 77 | Research Directions in Object-Oriented Programming | [ ] | Shriver | Survey | free | |
| 78 | Restful Rails Development | [/] | Ruby, Webdev | The question was never answered: how is REST similar to OO? | ||
| 79 | Reusable Software : The Base Object-Oriented Component Libraries | [ ] | Meyer | Eiffel, DbC | free | |
| 80 | Robust Composition: Towards a Unified Approach to Access Control and Concurrency Control | [ ] | E | |||
| 81 | ROSS: An Object-Oriented Language for Constructing Simulations | [ ] | DTIC | Sim | free | |
| 82 | Scheme and the Art of Programming | [ ] | Springer, Friedman | Scheme OO | free | |
| 83 | Self Handbook | [ ] | Self | free | ||
| 84 | Smalltalk by Example: the Developer’s Guide | [ ] | Smalltalk | |||
| 85 | Smalltalk, Objects, and Design | [ ] | Liu | |||
| 86 | Smalltalk-72 Instruction Manual | [ ] | Goldberg, Kay | What we lost | free | |
| 87 | Smalltalk-80, Bits of History, Words of Advice | [ ] | Krasner | Smalltalk | free | |
| 88 | Squeak by Example | [ ] | Ducasse, et al. | Squeak | free | |
| 89 | String and List Processing in SNOBOL4: Techniques and Applications | [ ] | SNOBOL | |||
| 90 | Stuff Goes Bad: Erlang In Anger | [ ] | Hebert | Erlang | free | |
| 91 | Succeeding with Objects | [ ] | Goldberg | free | ||
| 92 | Taligent’s Guide to Designing Programs: Well-Mannered Object-Oriented Design in C++ | [ ] | Taligent | free | ||
| 93 | Tao of Objects: A Beginner’s Guide to Object-Oriented Programming | [ ] | Entsminger | free | ||
| 94 | THINK Pascal | [ ] | free | |||
| 95 | Touch Of Class Learning To Program Well With Objects And Contracts | [ ] | Meyer | Eiffel, DbC | ||
| 96 | Tutorial: Object-Oriented Computing : Implementations | [ ] | Peterson | Survey | free | A survey of 80s era OO systems. |
| 97 | Understanding CLOS | [ ] | Lawless | |||
| 98 | Zen and the Art of Motorcycle Maintenance | [/] | Pirsig | Design | Quality without a name… | |
| 99 | ZODB | [ ] | OODB | free | ||
| 100 | https://en.wikipedia.org/wiki/Composition_filters | [ ] |
Sometimes money considerations will come into play. That is, I’m probably not going to drop $50 on a single book for this experiment and on the other hand if I find a gaggle of OO books at the thrift store or at the library then I’ll grab those as well.
These are the books that I think are missing from the OO landscape.
| Working Title | Synopsis | Something Close Perhaps |
|---|---|---|
| Advanced Io programming | A book on Io | |
| Evolving an interactive OO programming environment from scratch | In the browser | “Interactive Programming Environments” |
| Clojure Protocols in Depth | Clojure protocols deconstructed and best use | |
| Interface-Driven Design | Java interfaces and interface design | |
| OO Osdev | OSdev with C++, case studies in OOOSDev | |
| Pseudo-OO in C with structs and function pointers | A common C approach but not widely covered | |
| Pure Prototypal Programming | Self | |
| SOM Deconstructed | Understanding CLOS | |
| The Joy of Logtalk | Objects + Prolog | https://logtalk.org/manuals/userman/declarative.html |
| Value Objects | Immutable objects |