Am 27.02.2012 um 15:05 schrieb Friedrich Dominicus:
Janko Mivšek <janko.mivsek@eranova.si> writes:
Hi guys,
Just to conclude this topic: there is a nice talk between Dave Thomas (of OTI fame where IBM VisualAge Smalltalk and nowadays VA Smalltalk came out), James Robertson and David Buck in recent Independent Misinterpretations:
IM 67: Have Objects Failed Us? http://www.jarober.com/blog/blogView?entry=3507708198
What I like is a discussion about OO vs. relational world and ORM in the second half, which is also by my opinion the reason why OO didn't succeed more as it did, and why is considered hard for most of developers until our days. I thin OO has clearly won hands down. Look in every languages these days. There are classes and objects. Even in the "main-stream" languages like C#, and Java it's not a question whether OO but only how. There are still things lacking. That are blocks (I know they wer introduced recently in both Java and C#) but probably not used that much. The same is true for ORM, it's not if but how it's done. I for my part see the biggest mistakte in doing that. Yes one can it make work, but it's always a break and/or one is not using OO as it was meant to be used.
Since ages we get promised that OODBS or the like are the future but what do you really have key/value pairs (that's since the good ole Berkeley DB times) now the DBs got the name NoSQL, but in the end the complete IT infrastructure relies and is build on RDBs (maybe with some O extension in it. I guess therefor we'll be stuck with new approaches to persistence through RDBs. Some will work under certain limits and others's won't. And I don't think it's considered hard to do OO with Smalltalk, Ruby etc. It is hard for C++ because this is a language full of rites and that's makes it look that hard. Just remember the big hype around Talingent? Now what's left of it.
Regards Friedrich
-- Q-Software Solutions GmbH; Sitz: Bruchsal; Registergericht: Mannheim Registriernummer: HRB232138; Geschaeftsfuehrer: Friedrich Dominicus
I don't know whether OO is hard - I just think it is seldomly taught in school or university. Typically there are just Java and C# courses nowadays... There are two big problems in my eyes: First, the majority of developers don't know the "real" OO and are stuck in their imperative way of thinking (a fate that OO shares with other paradigms like functional programming). When somebody wants to learn OO, he or she will most probably end in one of the mainstream languages, like C#, Java and C++. The problem here is that there is only a vague description and no real definition of the term OO. Second, what (real) OO delivers is mostly not valued in commercial environments. Sure, everybody wants reusable, maintainable and scalable code, but only very few are willing to pay the price for it. In my experience you typically win a contract for the cheapest offer - quality is hard to measure and is most of the time of lower interest and measured in funny units like lines of code or cyclomatic complexity. As software projects are (almost always) complex, it's hard to get the requirements right. When the requirements will be substantiated you can always add time and money to the contract :) Customers typically cannot change the company that is working for them easily - too much time and money already spent (and no guarantee that the next will do better). So for an economical point of view for a software company it's better to be cheap than to be good and accurate. Often it's even better to deliver bad solutions - they will bring more money. To put it in other words: To my experience software development is driven by estimated costs and deadlines. There is a saying: "Time, costs and quality - choose any two of them." But is anybody really willing to drop time or costs? Regards Andreas