Testing and Recoverability: Object Oriented vs. Functional Programming Languages. Turtles all the way down, please. Turtles all the way down, pleaseMy other favourite interview question Someone was once phone-screening me for a job in a start up, and they asked me to name my two strongest languages. At the time, the answer was Java and C++, partly because I had just finished writing Java development tools in C++, and partly because while I loved Scheme and Smalltalk, I knew that anyone using them in day to day production would quickly expose me as a dilettante if I were to answer with my heart instead of my head. After I said “Java and C++,” the follow-up was interesting. The interviewer asked me: If you could change both languages, name one feature from Java that you would add to C++, and why.
And name one feature from C++ you would add to Java, and why.1 Today I would answer that question differently, of course, but I bring it up because there is a feature of Common Lisp, Arc, and C++ that I miss whenever I use a conventional object-oriented language like Smalltalk or Ruby: lvalues and references. Quality Begs for Object-Orientation. Edited by Andy Oram & Greg Wilson Ever wonder how some of the most notable programmers think and approach programming problems? When was the last time you opened an analysis of algorithms book, or delved into the beauty of quicksort and recursive binary partitioning solutions? Not for the faint of heart, it will make your brain hurt, but in a good way. Does this sound like a commercial? Well, that's how good this book is. If you brave reading this book, you'll get to hear what notable programmers such as Brian Kernighan, Lincoln Stein, Charles Petzold (o.k. those are just the names I recognized before I started reading the book) consider "beautiful" code, and how they approach creating and/or analyzing it.
Charles Petzold goes through an excruciating to read, but interesting, example of on the fly byte code generated for .NET. Want to understand the subversion delta editor? OO uber-zealotry considered silly. N Degrees of Separation: Multi-Dimensional Separation of Concerns. 42 basic OO assignments. Recently, I started to re-wire some mildly used parts of my brains to accommodate capabilities for a 1st year CS course on OO programming and modeling. Long before I joined the faculty in Koblenz, the course had been designed to get students going in (OO) “programming in the small” and “basics of (OO) modeling” as well as “related foundations of CS” (such as bits of PL theory and complexity theory) and the implied treatment of the “imperative heritage” including the whole range of Hoare semantics and structured programming.
So this course may end up being a mix of Java, UML and the classical first CS course. To tell you a secret, I have a hidden agenda of the kind that students are potentially prepared for the post-Java 1.5 / UML 2.1 era. To this end, I subliminally detour into FP ground and touch upon some of the issues with current OO programming.
Yours, Ralf Lämmel 1. A. B. C. D. E. F. Class C { private C c; public void setC(C c) { c.c = this.c; } g. Public class C { private C() { } 2. A. Conventional OO syntax considered [harmful] needlessly misleading.