Unix and Object-Oriented Languages
catb.org
catb.org
But it is ok (expected even?) to look inside the implementation of every function in a non-OO language?
Explain how I am to know which to choose from the equivalent C code of add(a, add(a, add(a, a))) or multiply(a, 4)?
There are reasons to dislike aspects of C++, but the "omg operators are hard" meme is the biggest dumbest straw man around.
I think it's fair to say that OOP is not significantly different from procedural programming, and certainly can't be considered universally better. It just provides some additional tools for structuring the code and data, however it doesn't offer any deep and powerful benefits like functional programming or s-expressions provide.
Very true. I'm taking several courses where the vast majority of students have only been exposed to Java, where as I've come from a C background with experience in several other languages. I'm shocked at how the other students have no sense of efficiency or simplicity - everything has to be about making other classes do the work, and it ends up being a horrible project.
Granted, a lot of that comes from experience in OO languages, but I think using C or another language helps people see that middle ground a lot easier. It helps make it more obvious where OO would help and where it would just be needless obfuscation.
Design Patterns can be a good way to think about the problem, but shouldn't be a substitute for thinking either.