in truth the whole issue with OOP can be that in order to do things right you have to make things into modules, which can turn something that would otherwise be relatively simple into something very very complex. This is not to say that there aren't benefits in the long term to doing so but it can increases code complexity and provide more opportunity for bugs because of the increased line count for trying to force it, and it of course costs more development time to bring up. Again I go back to the chatbot example I used earlier, using a non-OOP imperative approach to this makes writing it trivial, and in most cases relatively easy to follow, however... you get extensibility and modularity benefits in the long term from going the OOP route even though it makes designing and writing said bot a pain in the neck. Seriously just think about trying to design a OOP IRC bot and compare that to thinking about designing it in other imperative techniques... It's multiple orders more complex.
Also some use cases don't really benefit from it, scripting for instance is naturally antagonistic to OOP due to the sheer simplicity that is required, and even if you did try to make OOP scripts there wouldn't really be much if any benefit to it.
For example: Why isn't mathematics central to programming (in practice)? It is like you get all this 'empirical facts' and try to organize them in something called 'software engineering', which by the way it sometimes seems to be everything but ENGINEERING.
I'd like to quote mathematician and programmer Alexander Stepanov:
"I think that object orientedness is almost as much of a hoax as Artificial Intelligence. I have yet to see an interesting piece of code that comes from these OO people. In a sense, I am unfair to AI: I learned a lot of stuff from the MIT AI Lab crowd, they have done some really fundamental work: Bill Gosper's Hakmem is one of the best things for a programmer to read. AI might not have had a serious foundation, but it produced Gosper and Stallman (Emacs), Moses (Macsyma) and Sussman (Scheme, together with Guy Steele). I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras - families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting - saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms - you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work."
I'd like to seriously question the foundational character that OOP have been receiving for some time now; personally I'd take any time an "algebra for programming" over OOP, but yet again, it might be practically untainable.
What you guys think?
I would personally argue that OOP is for the most part the natural in terms of how this intermediate language shakes out, because here's the thing let's take an example sentence:
fundamentally this breaks down into two noun verb noun s where an object is acting upon another object in shortQuote:
Sally went to the store and picked up a bunch of bright red apples
and of course these apple objects have the property of being bright red, even Databases are actually taught in an object oriented fashion... guess what normalization is? It's actually the process of breaking down tables of data into objects. In fact all of our data languages such as XML are object oriented, because you've got say a paragraph object with properties such as font being a certain type and size, as well as color, and data languages really can't not be object oriented.Quote:
Sally goto store. Sally pickup apples
Now implementation wise sometimes it's not the best thing to go with, however from a conceptual standpoint OOP is the "best" approach, because it most closely matches how our non-programming languages such as english are designed.
EDIT: Math is actually arguably another language with a different though similar target as programming languages. In short expressing calculations, as opposed to being designed to express ideas to a computer. Which then Math can be used as another language underneath a programming language since little further translation is needed for a computer to understand it
Will Unity Next depend on Mir?
Or will you be able to use Unity Next on Wayland and X11 too?