Jump to page: 1 2 3
Thread overview
Exploring the philosophy of objects
Jun 24, 2022
forkit
Jun 24, 2022
monkyyy
Jun 24, 2022
forkit
Jun 24, 2022
forkit
Jun 24, 2022
Zoadian
Jun 24, 2022
ryuukk_
Jun 24, 2022
Zoadian
Jun 24, 2022
user1234
Jun 25, 2022
forkit
Jun 25, 2022
forkit
Jun 27, 2022
forkit
Jun 27, 2022
bauss
Jun 27, 2022
forkit
Jun 25, 2022
forkit
Jun 25, 2022
forkit
Jun 25, 2022
Paul Backus
Jun 25, 2022
forkit
June 24, 2022
This is certainly not another thread about private to the class ;-)

Please, don't try to make it into one.

But I'd encourage everyone, to a least consider, exploring the nature of 'objects' from a purely 'philosophical' approach (i.e. outside of your programming interests).

If it's not your thing, don't do it ;-)

If you come to the conclusion, its complete nonsense, that is your right.

For me, I have a particular understanding of objects (as many will now know).

i.e. I have a firm view in the 'autonomous existence' of objects.

It's the basis of my view, of the real world (nothing to do with programming).

That understanding though, while completely separate from programming, is well intergrated into my approach towards programming, and I personally believe, my programming is better for it, nor worse.

Here is something to get you started, on your journey:

'undermining, and overmining, objects'

https://youtu.be/P6yWc7ccb7g

There's also a great discussion about this, if you can get your hands on it ;-)

The Object Strikes Back: An Interview with Graham Harman.

https://www.tandfonline.com/doi/abs/10.2752/175470813X13491105785703

If you don't know who he is:

https://en.wikipedia.org/wiki/Graham_Harman

June 24, 2022
On Friday, 24 June 2022 at 00:45:11 UTC, forkit wrote:
> But I'd encourage everyone, to a least consider, exploring the nature of 'objects' from a purely 'philosophical' approach (i.e. outside of your programming interests).

https://en.wikipedia.org/wiki/Object-oriented_ontology

After careful consideration, I believe you've taken oo too far if you think it should affect anyone's meta physics.
June 24, 2022
On Friday, 24 June 2022 at 01:00:06 UTC, monkyyy wrote:
> On Friday, 24 June 2022 at 00:45:11 UTC, forkit wrote:
>> But I'd encourage everyone, to a least consider, exploring the nature of 'objects' from a purely 'philosophical' approach (i.e. outside of your programming interests).
>
> https://en.wikipedia.org/wiki/Object-oriented_ontology
>
> After careful consideration, I believe you've taken oo too far if you think it should affect anyone's meta physics.

that is your right.

a right, btw, that comes about, because of your autonomous existence as an object ;-)

Also, what you read or hear in your exploration into the philosophy of objects, is not necessarily refective of what I believe, or don't believe.

Like you, as an object that exists autonomously, I have my own views ;-)

June 24, 2022
On Friday, 24 June 2022 at 01:00:06 UTC, monkyyy wrote:
>
> https://en.wikipedia.org/wiki/Object-oriented_ontology
>
> After careful consideration, I believe you've taken oo too far if you think it should affect anyone's meta physics.

Actually, I think in reverse.

That is, its metaphysics, that ultimately drives the nature of software development, and programming languages.

But the ending of Moore's Law is pushing us in the opposite different at the moment. And understandably. That's why newer languages are having a much greater focus on performance, perhaps at the expense of the abstract type??

But as Arnold once said: "I'll be back" (says the autonomous existing object).

The movie 'The Terminator', is a movie about 'a possible future where mankind has been oppressed by artificially intelligent machines, lead by the rebellious computer system Skynet.'

Nonetheless, we continue on that very path towards creating these very same AI 'objects'.

I'd argue, that more than ever, software engineering focus is being directed towards the creation of 'autonomous existing objects'.

Some of you already have them on your phones, in your TV, on your tablet, on your wrist....in your car......

Why?

Well, as Timothy Morton once said: "We are caught in object-ive existence whether we like it or not."

i.e. It's natural to think about our reality in terms of autonomous existing objects, so it's natural this will find it's way into other areas of our thinking, including programming.

If you don't know who he is: https://en.wikipedia.org/wiki/Timothy_Morton

Once this necessary refocus on extracting greater performance becomes less relevant in programming (some technological breakthough perhaps), we'll all be back focusing on creating automous existing objects again. It's how we think.

Well, not all.

June 24, 2022

On Friday, 24 June 2022 at 01:59:07 UTC, forkit wrote:

>

i.e. It's natural to think about our reality in terms of autonomous existing objects, so it's natural this will find it's way into other areas of our thinking, including programming.

I once took a course that had the book «Computers in Context: The Philosophy and Practice of System Design» in the curriculum, which looks at systems development from the angle of a philsopher and a system development angle. Sadly, I don’t remember what it said about objects.

But yes, both objects and class hierarchies are reflections of human thought processes. Functions too, and math. Mathematicians talk of «mathematical objects».

June 24, 2022
On Friday, 24 June 2022 at 00:45:11 UTC, forkit wrote:
> This is certainly not another thread about private to the class ;-)
>
> Please, don't try to make it into one.
>
> But I'd encourage everyone, to a least consider, exploring the nature of 'objects' from a purely 'philosophical' approach (i.e. outside of your programming interests).
>
> If it's not your thing, don't do it ;-)
>
> If you come to the conclusion, its complete nonsense, that is your right.
>
> For me, I have a particular understanding of objects (as many will now know).
>
> i.e. I have a firm view in the 'autonomous existence' of objects.
>
> It's the basis of my view, of the real world (nothing to do with programming).
>
> That understanding though, while completely separate from programming, is well intergrated into my approach towards programming, and I personally believe, my programming is better for it, nor worse.
>
> Here is something to get you started, on your journey:
>
> 'undermining, and overmining, objects'
>
> https://youtu.be/P6yWc7ccb7g
>
> There's also a great discussion about this, if you can get your hands on it ;-)
>
> The Object Strikes Back: An Interview with Graham Harman.
>
> https://www.tandfonline.com/doi/abs/10.2752/175470813X13491105785703
>
> If you don't know who he is:
>
> https://en.wikipedia.org/wiki/Graham_Harman

No disrespect, but this is a programming language forum, i'd really appreciate if it stayed that way.

And to add something to the topic. objects are a great why to think about things. they are, as it turned out, not they great in programming.
OOP leads to slow, hard to reason about code. it encurages mutable state, spread across the whole programm. it's essentially global variables all over again, just hidden behind a layer of obfuscation.
It also makes testing a lot harder to actually implement.
That being said, there are cases where it's ok to use, but imho they are incredibly rare.

- Someone who works on hard realtime systems

June 24, 2022

On Friday, 24 June 2022 at 13:48:35 UTC, Zoadian wrote:

>

And to add something to the topic. objects are a great why to think about things. they are, as it turned out, not they great in programming.
OOP leads to slow, hard to reason about code. it encurages mutable state, spread across the whole programm. it's essentially global variables all over again, just hidden behind a layer of obfuscation.
It also makes testing a lot harder to actually implement.
That being said, there are cases where it's ok to use, but imho they are incredibly rare.

  • Someone who works on hard realtime systems

What you are describing is not the nature of OO-modelling, but the consequences of people not knowing what they are doing, using the wrong implementation strategy, tooling etc.

Objects are appropriate also in real time systems. Actors are objects on steroids and represents one valid approach to creating reliable real time systems. Coroutines have a strong relationship to objects and greatly reduces bug inducing tedium of creating state machines, again an improvement for real time systems if used by a critical thinker. Objects also makes it easier to create transactional systems that allows you to roll back, again a reliability advantage.

No matter what domain you are in, if you deal with uncertainty then also you need a proven methodology and tools that suits the application domain you are working with. With no proven methodology, especially geared towards what you are doing, quality will become less predictable.

If you have no need to maintain state modelling the environment, then of course, you would also not need objects and can choose dedicated tools with 100% verification of the implementation. Is that better? Yes clearly, when you can get away with it.

The OP is relevant to D, because how people thing about objects and their representation affects language design and usage. You confirmed this yourself by stating that you dislike OOP because people are idiots and mess things up (which is the only reasonable interpretation of what you stated). But that is not a consequence of OO-modelling as a concept. It is a result of poor modelling or poor implementation or poor tooling.

June 24, 2022

What's your use case? without this answer, object has no meaning

Programming computers have no concept of "objects", it is pure programmer's religion, something sold by scholars and forgotten companies to produce cheap engineers

Unity is back to data oriented design because "objects" was found to be inefficient

D doesn't need them, metaprogramming, struct, function is all we need, it's our strength, and we should capitalize on that, and show the world that if they need alternative to "objects, they can find the right tools with D!

Instead of sticking to C# or coming up with a new language HPC# and a new compiler "Burst", Unity should have picked D long time ago, i still try to lobby for them to add support for proper C FFI, so we can properly use D there, but it's hard..

June 24, 2022

On Friday, 24 June 2022 at 14:11:51 UTC, Ola Fosheim Grøstad wrote:

>

On Friday, 24 June 2022 at 13:48:35 UTC, Zoadian wrote:

>

And to add something to the topic. objects are a great why to think about things. they are, as it turned out, not they great in programming.
OOP leads to slow, hard to reason about code. it encurages mutable state, spread across the whole programm. it's essentially global variables all over again, just hidden behind a layer of obfuscation.
It also makes testing a lot harder to actually implement.
That being said, there are cases where it's ok to use, but imho they are incredibly rare.

  • Someone who works on hard realtime systems

What you are describing is not the nature of OO-modelling, but the consequences of people not knowing what they are doing, using the wrong implementation strategy, tooling etc.

Objects are appropriate also in real time systems. Actors are objects on steroids and represents one valid approach to creating reliable real time systems. Coroutines have a strong relationship to objects and greatly reduces bug inducing tedium of creating state machines, again an improvement for real time systems if used by a critical thinker. Objects also makes it easier to create transactional systems that allows you to roll back, again a reliability advantage.

No matter what domain you are in, if you deal with uncertainty then also you need a proven methodology and tools that suits the application domain you are working with. With no proven methodology, especially geared towards what you are doing, quality will become less predictable.

If you have no need to maintain state modelling the environment, then of course, you would also not need objects and can choose dedicated tools with 100% verification of the implementation. Is that better? Yes clearly, when you can get away with it.

The OP is relevant to D, because how people thing about objects and their representation affects language design and usage. You confirmed this yourself by stating that you dislike OOP because people are idiots and mess things up (which is the only reasonable interpretation of what you stated). But that is not a consequence of OO-modelling as a concept. It is a result of poor modelling or poor implementation or poor tooling.

I'm not claiming objects are generally bad. But OOP in general is a bad design strategy if you want efficient programs. objects bundle too many different variables together, so cache access is most certainly suboptimal. multithreading is another thing that's much harder to do when you start with an OOP model in mind.
All these problems can be solved, at least to some extend, but IMHO it's not a good strategy for implementation. it's fine to model a system as OOP at first, restructure it to something more performant.
But I don't think i have to reiterate the points against OOP here, there are numerous articles on the internet talking about it.
Just to give you one example of a hilariously bad OOP implementation where you'd expect them to know better: chromium.

June 24, 2022

On Friday, 24 June 2022 at 14:30:05 UTC, ryuukk_ wrote:

>

What's your use case? without this answer, object has no meaning

Sure, although I guess forkit means that we cannot avoid modelling in terms of objects (or classes) as the human brain is essentially a rather slow abstraction machine that to a large extent has a tendency to create broad sterotypes of what is needed to understand the real world (or in the case of simulation or game, a fictional world). Stereotypes ≈ classes.

>

Programming computers have no concept of "objects", it is pure programmer's religion, something sold by scholars and forgotten companies to produce cheap engineers

I would rather say, whenever you encapsulate something you have a defacto object.

Even in a relational database you have entities, which are corresponding to objects (you can also group them as classes). Those table entries for entities (keys) are defacto object representations.

I don't see a contradiction between object-oriented-modelling, component-based-modelling or entity-relationship modelling, I view it as facets of the same. You can mix. The more modelling knowledge you have, the more cogntitive aids you have, the more likely you are to arrive at a good model. Then you can choose an implementation strategy that suits your use case (one important decision factor is whether you believe that the model has to change later or not).

What is certain is that you need a model of the world you want to represent, be it the real world or a gaming world. And a strategy to represent it your chosen language/database.

>

Unity is back to data oriented design because "objects" was found to be inefficient

Ok, so when you design a framework for others to use, and don't want them to know the inner workings of the framework, then you are willing to pay a rather high efficiency price to begin with. OO-models do not require you to put everything in the same record though. You can split off physics in a game from avatar and soforth.

Also, component based design, which decouples entities by giving them identities (e.g. a number) instead of using the address, has some advantages over using pointers; you can more easily split the system and distribute it over many computers for instance. And if you create many similar systems, then it can make some reuse cases easier as you only deal with an integer-id. But it has a price. In terms of efficiency it can become worse or it can become better… it all depends on wether the decoupling makes sense or not.

But the key point is that you don't have to choose between classic OO implementation or components. You can mix.

>

D doesn't need them, metaprogramming, struct, function is all we need, it's our strength, and we should capitalize on that, and show the world that if they need alternative to "objects, they can find the right tools with D!

Well, but surely structs would be more intuitive to use if they could inherit rather than using alias this? Even if you never go further than one level of inheritance, it is still beneficial. E.g. have one abstract Node struct that takes care of book-keeping and a bunch of structs that inherit from the Node that does the real work that your game cares about. Many ADT implementations use this strategy, and it is OOP. You can use other strategies, but they tend to become clunky and/or verbose.

(I would also argue that template composition can be viewed as a form of object-model implementation, btw)

>

Instead of sticking to C# or coming up with a new language HPC# and a new compiler "Burst", Unity should have picked D long time ago, i still try to lobby for them to add support for proper C FFI, so we can properly use D there, but it's hard..

Unity sound like fun, I don't know much about it, unfortunately. But I agree that it sounds better to build a game with D than C#.

« First   ‹ Prev
1 2 3