McGruff wrote:Please note that I've already warned one member who shall remain nameless about personal comments in a now deleted post. Say what you like but stick to programming.
I think this is as good a jumping off place as any. Here is what you responded back to me earlier in this thread.
McGruff wrote:
I do think it's important to make the point that, almost without exception, the whole thing just sounds naive to more experienced programmers. In fact, you're the only one I know who doesn't seem to think so. Where people stand on the OOP "debate" is almost a litmus test of their programming knowledge.
In other words, becuase I refuse to take your staunch view on the topic my knowledge is suspect? Let's look at that first.
I presently am the lead developer for a site that did over a million dollars net revenue in it's first full year of business. The site was a big
bowl of sphaghetti as far as the code was concerned. The classes suX0r too! There wasn't even any error reporting. I've since cleaned up large
portions of the code, created a template to speed the development of new adminstrative features in the back end, and introduced my own
OO framework.
I'm also completing the extension of the original sites backend to act as a common processing system for multipler web sites and
affiliates.
And that's just code. I also built a cluster of machines to handle the increasing traffic with Two Cisco Localdirectors at the heart
of the system. This also required code to monitor the health of the redundant databases servers, manage and report those errors, hold
elections amongst slave servers, and promotion of the elected server to the master. I used a mixture of procedural and OO here. It only
made sense to realize the individual databases and the fail boss as objects.
For a company in Fort Myers, I laid the foundation for a system that would report the status of orders and CAM stations on a production
floor using Python. We all know that Python is basically an OOL and not a hybrid like PHP, Perl, or Objective C.
In Venezuela I built and managed a cluster where I wrote a different implementation (that was not anywhere near as smooth as the present) of database
failover code. For this same company I created tons of adminstrative utilities (not to mention a complete deposit and withdrawal system),
what I like to call battlefield code (small hacks that were immensely useful during an emergency), as well as code to monitor, manage and
control a WWAN (Wireless Wide Area Network). I even stamped out a prototype of an SQL load balancer in PHP!
Most of the database access code written while I was there was OO in design only as the nature of the business my company was in meant this
portion of the code was critical and needed to perform at the highest possible level. When most of our transactions occurred in the last
5 minutes before post time (Lottery and Horse Racing), that meant the load on the database rose dramatically and stayed high for a short period
after the race was complete. In our minds, that meant the roughly
30% overhead from ADODB/DBX, 50% from
MDB, 160% from Pear, and 260% from Metabase (all numbers being approximate. Follow the link for more exact numbers) just simply wasn't acceptable.
And the list goes on, but I think that should suffice.
What's really interesting is that nobody said OOP is bad. OOP sucks. All we say is that it's not good for everything. If it were the case that
OOP is good for everything and the only possible route to success then MySQL, Postgres, Linux, Windows, Solaris, Apache, PHP, Python, the Half Life 2 engine, the Quake engines, fuel injection control code, and even drivers would be written using actual objects.
BUT THEY AREN'T!
Additionaly, some of the people behind the projects and products mentioned above are very notable indeed. Rasmus, Sterling, Ilia, Zeev and the rest are very knowledgeable. As a matter of fact, it was Sterling and Thies that were responsible for an
update (that for one reason or another didn't make it into production) that improved
performance over 100%! John Carmack is considered the cutting edge in real time 3D engine (game engine) development. Linus Toorvalds
and Alan Cox are absolute gods when it comes to Kernel development.
And many of the above are not proponents of 100% usage of OOP!
There is also a fair share of warning out there about issues relating to
the use of large OO frameworks.
John Lim and
Joel Spolksy are but a few who've chimed in here.
However, if we use the metrics you've thus far set forth, then the knowledge of the above mentioned individuals is questionable and
naive.
Lastly, the person that helped me understand OO and shaped many of my views on the subject is named
Timothy Budd.
A professor at Oregon State University. Here is a quote from his book (one of the many) "An Introduction to Object-Oriented Programming".
Timothy Budd wrote:
Working in an object-oriented language (that is, one that supprots inheritance, message passing, and classes) is neither a necessary nor sufficient condition for doing object-oriented programming. As we emphasized in Chapter 1, the most important aspect of OOP is a design techinque driven by the determination of deleagion of responsibilities. This technique has been called responsibility driven design [Wirfs-Brock 1989b, Wirfs-Brock 1990].
So are you saying that Mr Budd, a professor,
who instructs courses and has written books on the topic should henceforth be considered with suspicion? Wouldn't the board of directors at his University and his peers have him removed if this was indeed true?
Ultimately, the opinion from a
LARGE number of individuals with more noteriety than you is against you. But of course, if you feel
that we are all wrong then it's up to you to prove it. And please refrain from personal comments like...
McGruff wrote:
I do think it's important to make the point that, almost without exception, the whole thing just sounds naive to more experienced programmers.
In fact, you're the only one I know who doesn't seem to think so.
Relax a bit! Nobody is against you here. We just don't agree.