When a thing is held in exaltation by much of the world and its major institutions, when that thing is sure that it's the best thing ever, and when people who support the thing are convinced that they're superior to the rest of us, who are nothing but unsophisticated hackers, then you've got something that's fun to make fun of. A target-rich environment.
There are lots of things to make fun of in software. There are project managers who solemnly pronounce that, due to their expertise, the project is on track and will be delivered on time and to spec. There are the software architects who haven't met a real user or written a line of production code in years, who proudly announce their design of a project to migrate to a graph database or micro-services. There are other juicy targets. But none comes close to the exalted ridiculousness of object-oriented languages (the purer the better) and those who shill for them.
Are you a member of the O-O cult, offended by this talk of making fun of supposed imperfections of the one true approach to programming languages? My sincere sympathies to you. Check this out. It's heavy-duty cult de-programming material. It probably won't work for you, but give it a try.
Back to the fun. Here's a start from an excellent essay by someone who tried for years to make OOP work.
Here are some wonderful highlights from a collection made by a person who supports OOP but thinks most programmers don't know how to program it well.
Edsger W. Dijkstra (1989)
“TUG LINES,” Issue 32, August 1989
“Object oriented programs are offered as alternatives to correct ones” and “Object-oriented programming is an exceptionally bad idea which could only have originated in California.”Paul Graham (2003)
The Hundred-Year Language
“Object-oriented programming offers a sustainable way to write spaghetti code.”
Here are highlights from a wonderfully rich collection.
“object-oriented design is the roman numerals of computing.” – Rob Pike
“The phrase "object-oriented” means a lot of things. Half are obvious, and the other half are mistakes.“ – Paul Graham
“The problem with object-oriented languages is they’ve got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.” – Joe Armstrong
“I used to be enamored of object-oriented programming. I’m now finding myself leaning toward believing that it is a plot designed to destroy joy.” – Eric Allman
OO is the “structured programming” snake oil of the 90's. Useful at times, but hardly the “end all” programing paradigm some like to make out of it.
From another section of the same wonderfully rich collection.
Being really good at C++ is like being really good at using rocks to sharpen sticks. – Thant Tessman
Arguing that Java is better than C++ is like arguing that grasshoppers taste better than tree bark. – Thant Tessman
There are only two things wrong with C++: The initial concept and the implementation. – Bertrand Meyer
More from a good extended essay on OOP:
“C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg.”
It was Bjarne Stroustrup who said that, so that’s ok, I guess.
“Actually I made up the term ‘object-oriented’, and I can tell you I did not have C++ in mind.” — Alan Kay
“There are only two things wrong with C++: The initial concept and the implementation.” — Bertrand Meyer
“Within C++, there is a much smaller and cleaner language struggling to get out.” — Bjarne Stroustrup
“C++ is history repeated as tragedy. Java is history repeated as farce.” — Scott McKay
“Java, the best argument for Smalltalk since C++.” — Frank Winkler
“If Java had true garbage collection, most programs would delete themselves upon execution.” — Robert Sewell
Object-oriented design and programming remains a useful way to think about parts of some software problems, as I've described here. As a universal approach to software, it's beyond bad. Beyond ludicrous. It is such a joke that the only thing to do is visit it briefly, make jokes, and then move on, with a tinge of regret about the science-less-ness of Computer Science.
Comments