Orion Reed
07/28/2022, 4:48 PMChristopher Shank
07/28/2022, 5:30 PMRiley Stewart
07/28/2022, 9:43 PMThe mind observes a vast universe of experience, both immediate and recorded. One can derive a sense of oneness with the universe simply by letting this experience be, just as it is. However, if one wishes to participate, literally to take a part, in the universe, one must draw distinctions. In so doing one identifies an object in the universe, and simultaneously all the rest becomes not-that-object. Distinction by itself is a start, but the process of distinguishing does not get any easier. Every time you want to talk about "that chair over there", you must repeat the entire processes of distinguishing that chair. This is where the act of reference comes in: we can associate a unique identifier with an object, and, from that time on, only the mention of that identifier is necessary to refer to the original object.So perhaps the goal of OOP is to facilitate the primordial meaningless goo of bits and bytes into well-behaved and understandable objects. Brad Cox writes in Planning the software industrial revolution:
What does any adjective mean in this murky swamp we call software? No one is confused when adjectives like `small' or `fast' mean entirely different things in nuclear physics, gardening, and geology. But in this murky domain of intangible abstractions, it is all too easy to lose your bearings, to misunderstand the context, to confuse the very small with the extremely large.[...]
Such confusion is not surprising. The denizens of the software domain, from the tiniest expression to the largest application, are as intangible as any ghost. And because we invent them all from first principles, everything we encounter there is unique and unfamiliar, composed of components that have never been seen before and will never be seen again, and that obey laws that don't generalize to future encounters. Software is a place where dreams are planted and nightmares harvested, an abstract, mystical swamp where terrible demons compete with magical panaceas, a world of werewolves and silver bullets. As long all we can know for certain is the code we ourselves wrote during the last week or so, mystical belief will reign over quantifiable reason. Terms like `computer science' and `software engineering' will remain oxymorons -- at best, content-free twaddle spawned of wishful thinking and, at worst, a cruel and selfish fraud on the consumers who pay our salaries.
In the broadest sense, object-oriented refers to an objective, not a technology for achieving it. It means wielding all the tools we can muster, from well-proven antiques like Cobol to missing ones like specification languages, to enable our consumers by letting them reason about our products via the common-sense skills we all use to understand tangible objects.So, what is an object in a computer, a digital thing? It is philosophy come to life in a metaphysical tool, a structure of consciousness reproduced as a model, which can be understood as an object to other object-speaking agents through what it does.
Nick Smith
07/29/2022, 1:48 AMThe notion of an “object” has received surprisingly few treatments in the context of computingIMO the software industry's blindness to what it means to be an "object" (in our everyday lives) is a major contributor to the stagnation in PLs that we are experiencing. From my perspective, objects are immortal once they appear, i.e. they can never be destroyed. The rationale: we can still talk about Alan Turing, or the 2001 World Trade Center, even though neither of those things have a physical body anymore. Thus, they still exist as objects in our minds. The fact that they continue to have an influence in the world — associations continue to be made between them and other things — means that they are not really "gone". Whilst such objects can't be destroyed, they can be forgotten. Computers should be able to model this phenomenon. Object-oriented languages kind of do this, in that objects are garbage-collected only when all references to them are released, i.e. you can't destroy an object that somebody else is still "thinking about". But they conflate something important: objects are given "attributes", and those attributes cannot be forgotten (cleared from memory) until the object itself is forgotten. Crucially, attributes are the only thing that actually consumes memory! Thus, what OOP seems to really be garbage-collecting is attributes, not object themselves. But it's really weird to manage the lifetimes of attributes (i.e. the lifetimes of relationships between things) by bundling them into a "group" that we call an object. After all, they make no contribution to the object's identity — in an OO language, the identity of an object is given by its location in memory. In conclusion: I think "objects" should be considered immortal (once they appear), and not "contain" any relationships. Instead, relationships should be a separate construct, similar to how "relational languages" (SQL, Datalog...) do it. The open question is: what is the right way to model the lifetimes of relationships, such that relationships can become invalid and be "garbage-collected"? Neither SQL nor Datalog offer a compelling model.
Luke Persola
07/29/2022, 3:21 AMThe notion of an “object” is one of the most basic and fundamental ideas in philosophy and it has received surprisingly few treatments in the context of computing given its importance.The philosophical notion of an object as applied to the context of computing casts quite a wide net. The notions of a “digital object” or similar terms as treated in the links you and Riley provided mostly seem considerably narrower. Do you think your tentative theory will start with a narrower category as a premise and then go from there? Or is the goal to apply the philosophical notion to the context of computing in order to discover the category? (Unfortunately I don’t think I have any more reference points to contribute.)
Konrad Hinsen
07/29/2022, 9:49 AMOrion Reed
07/29/2022, 12:11 PMOrion Reed
07/29/2022, 12:16 PMOrion Reed
07/29/2022, 12:39 PMOrion Reed
07/29/2022, 1:01 PMKonrad Hinsen
07/29/2022, 6:49 PMTony Worm
07/30/2022, 6:11 PMKonrad Hinsen
07/31/2022, 4:13 PM