DEV Community

Discussion on: Is Object-Oriented Programming "Dangerous"?

 
combinatorylogic profile image
combinatorylogic

is attacking a whole set of academy

Academia is not behind any of the OOP. Academic computer science never really been interested in OOP, and by now it's long in the past.

I have strong feeling that our brain has been optimized by the "evolution" or any equivalent mechanism to recognize and classify the information corresponding to what the world contains.

Just keep in mind that this classification have absolutely, totally, 100% nothing to do with any of the synthetic OOP classifications.

We do not classify things into rigid hierarchical taxonomies. As soon as you come up with a programming paradigm that operates in complex graph classifications our minds deal with, it'll become relevant to our discussion, but OOP is nowhere close to such a hypothetical model.

Do you really believe that our reality is being generated by one information system ?

Reality is an information system, by definition.

And, since it's heavily based on truly stochastic processes, we cannot say it's "generated" (as in computed from some initial state with a fixed set of rules).

By the way... can you give me a reference for this?

Pretty much any textbook on the Algorithmic Information Theory.

The very definition of the amount of information in a system is this exactly: a size of the smallest possible algorithm that reconstructs the entire system. If we could compute any future state with a 100% accuracy using only the initial state (which is, as you pointed out, just a singularity) and a set of rules (the fundamental laws), the amount of information in the whole of the Universe would have been no more than the few pages you'd need to write down the fundamental laws. Which is not what we observe.

The moment you add a true randomness to a system - you have an infinite source of information, because white noise is uncompressable, it contains exactly as much information in it as a number of data points you sampled.

A system fed with an infinite source of information can evolve, can generate new complexity. That's why the interpretation of quantum mechanics that relies on true randomness is so important - it explains why the Universe is evolving.

You can think of it as two kinds of processes:

One is fully deterministic:

NexState = F(PreviousState)

where F is a pure function (in mathematical sense), and this function is exactly the minimal algorithm, the whole information your system contains (along with the state_0 it all started with.

A stochastic process is more interesting:

NextState = F(PreviousState, Noise)

And the amount of information in the next state will be state_0 + F added to a size of the true Noise consumed by this system. Amount of information (and, therefore, a complexity) if this system can grow indefinitely.

Do you see it better like a big real world state, immutable in the plank unit of time that is passed as parameter to one function and gives the state for the next time unit ?

See the second case above - it's a function that consumes the previous state and a huge amount of true random noise to produce the next state. Without this noise we'd never have any observable complexity in the Universe.

ask why Amazon and other online shops use them as facets and mix them in the faceted search.

Did you notice that these hierarchies are not rigid in any way?

And OOP cannot handle non-rigid, complex hierarchies.

The assertion that real worlds has no hierarchies is simply wrong.

Real world does not have this kind of hierarchies that OOP is built upon.

Thread Thread
 
oenonono profile image
Junk • Edited

My argument is that the kind of hierarchies OOP is built on are whichever kind of hierarchies people writing the code choose to organize objects into. We're not actually talking about the nature of Reality-with-a-captital-R. We're talking about the way everyday people understand reality. And about how a person might tell a computer to do certain things. That is all this is. Academics and theory are fascinating, necessary things. But I'm not a computer scientist or a physicist and I don't need my code to prove the big bang or whatever. I write code for a living and for that I need to stay in touch with the practical purpose of the code I'm writing. Lamba calculus is not practical for me. Expressiveness with plain words that make clearly readable sentences most people can understand is practical. Is there overly obtuse, counterintuitive, impractical OOP? Yes. Let a million people loose on anything for a few decades and see how much noise is in the signal. But which is a simpler word more people have an existing intuitive grasp of? Inheritance or currying? That's the fundamental appeal of OOP for me and the thing I want to see out of any paradigm before I go calling it The One True Way. Which I don't do anyway because there's not one: my hope is to adopt the best both have to offer and avoid the worst. I have a theory that that very benefit is part of the problem with OOP, though. As a new programmer it can make you feel like you really get it before you have the experience you need and you go wild, drunk on unnecessary complexity.

Thread Thread
 
yucer profile image
yucer • Edited

That's a good point. In most of the problem domains we use computers to help us with the stuff that our minds can not do at higher levels: accurately calculate with speed and storage a big amount of data.

In such cases they become a part of our information system, an extension of our brains. In such domains we trend to analyze them according to the semantic structure more than the functional behavior. Like commerce, storage, publishing...

But there might be domains where the accuracy of the interaction with physical objects should be a priority. Like automation and communication.