What is an object?

classic Classic list List threaded Threaded
50 messages Options
123
Reply | Threaded
Open this post in threaded view
|

What is an object?

Nick Thompson

Dave, and anybody else who wants to play.

 

I have always been puzzled by the question of how one distinguishes an object in object programming from a utility in DOS or a tool in Matlab.  Or any mathematical function, for that matter.  You give it what it needs, and it gives you what it’s supposed to, and you don’t give a damn how it works.

 

Please don’t yell at me.

 

Nick

 

Nicholas S. Thompson

Emeritus Professor of Psychology and Biology

Clark University

http://home.earthlink.net/~nickthompson/naturaldesigns/

 


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Marcus G. Daniels

Nick,

 

An important aspect of object-oriented programming (OOP) is the ability to pass around capabilities and not just lifeless state.   With object-oriented programming, the things objects can do as just another kind of stuff.

 

Without this property, it is more difficult to consider interactions between objects without subsuming the objects into a bigger class of objects.

For example, it is unreasonable to consider FRIAM as a parent or owner of the members of this list, yet the procedural programming paradigm strongly encourages that kind of thinking and that kind of organization.

 

There are other aspects of OOP that people may claim are important, such as type inheritance or even multiple inheritance.   I think these are non-essential.  Messaging (or methods) and localized-encapsulation are essential.  Some object-oriented languages like Smalltalk or JavaScript have almost no type system at all.

 

Marcus

 

From: Friam <[hidden email]> on behalf of Nick Thompson <[hidden email]>
Reply-To: The Friday Morning Applied Complexity Coffee Group <[hidden email]>
Date: Tuesday, July 17, 2018 at 8:07 PM
To: Friam <[hidden email]>
Subject: [FRIAM] What is an object?

 

Dave, and anybody else who wants to play.

 

I have always been puzzled by the question of how one distinguishes an object in object programming from a utility in DOS or a tool in Matlab.  Or any mathematical function, for that matter.  You give it what it needs, and it gives you what it’s supposed to, and you don’t give a damn how it works.

 

Please don’t yell at me.

 

Nick

 

Nicholas S. Thompson

Emeritus Professor of Psychology and Biology

Clark University

http://home.earthlink.net/~nickthompson/naturaldesigns/

 


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Russell Standish-2
In reply to this post by Nick Thompson
Not sure about "utility"/"tool", but an object is distinguished from a
function by having state. Call an object's method, and the method's
scope is populated by the object's data members, which of course,
differ from object to object.

By contrast a function either has no state (pure function), or its
state is global (same for every function invocation).

Cheers

On Tue, Jul 17, 2018 at 10:06:57PM -0400, Nick Thompson wrote:

> Dave, and anybody else who wants to play.
>
>  
>
> I have always been puzzled by the question of how one distinguishes an
> object in object programming from a utility in DOS or a tool in Matlab.  Or
> any mathematical function, for that matter.  You give it what it needs, and
> it gives you what it's supposed to, and you don't give a damn how it works.
>
>  
>
> Please don't yell at me.
>
>  
>
> Nick
>
>  
>
> Nicholas S. Thompson
>
> Emeritus Professor of Psychology and Biology
>
> Clark University
>
> http://home.earthlink.net/~nickthompson/naturaldesigns/
>
>  
>

> ============================================================
> FRIAM Applied Complexity Group listserv
> Meets Fridays 9a-11:30 at cafe at St. John's College
> to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
> FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


--

----------------------------------------------------------------------------
Dr Russell Standish                    Phone 0425 253119 (mobile)
Principal, High Performance Coders
Visiting Senior Research Fellow        [hidden email]
Economics, Kingston University         http://www.hpcoders.com.au
----------------------------------------------------------------------------

============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Gillian Densmore
In reply to this post by Nick Thompson
@Nick basically OOP may (or may not be) a good way to descibe and yes that often leeds to flame wars.  Essentially many years ago it was considered hard (and a bad idea at the time) to make a recipe without descringing to the computer what the different things were. Adding things to a computer language to describe those things basically meant (sort of) like this:Computer a Cup is something 12inches  has a round piece solide and red. The computer now knows what  a cup is when asked: Can you poor tea into this cup(not without spilling it now asks)

I simply do not know why the used the term Object Orientated.  

You are basically speaking computer the computer only knows  what you describe as a real example of computer speak
def Gil= Smar.tas dowhile [mood == good]

That (in python assuming I didn't mess up spacing would say: Hey there make a thing galled Gil (me) that when while he is in good humor sometimes is a smart ass..
Someone else might speak to a computer in another language just like I speak some Klingon and a little (almost none ) German, others speak French mandarin etc.
type coffe; 
Strct Coffee [hot, black list]
That's (some GoLangJS speak to say: So computer my really cool Ractijono(Coffee) shop needs to have a cofee list! and here is what makes coffeness Coffe!

it gets weirder with HtmL5 and Xtags:
xtag.create('x-clock', class extends XTagElement {
  connectedCallback () {
    this.start();
  }

^ that says ok so it'd be a really good idea for my page to have a clock! a clock sits in the background and tells time, start it when the page loads (theirs way more to it )




Does that make things about a clear as YodaSpeak?


And nick for the most part as someone said: Question no bad their are....asnwers smart only one might get (hehehehehe in a bad yoda voice)

In all serius that reely is a good questions. I haven't used MatLab so I have no idea what or how it does

FWIW people are moving from deciding to first tell a compute rwhat everthing is,  to moving to here's a instruction manual, here's some parts here's how to build 
(X-Tags, Cookie cutters, or templates depending on who's doing it and if it's speaking WebPolymer (twitch) or X-Tags)



On Tue, Jul 17, 2018 at 8:06 PM, Nick Thompson <[hidden email]> wrote:

Dave, and anybody else who wants to play.

 

I have always been puzzled by the question of how one distinguishes an object in object programming from a utility in DOS or a tool in Matlab.  Or any mathematical function, for that matter.  You give it what it needs, and it gives you what it’s supposed to, and you don’t give a damn how it works.

 

Please don’t yell at me.

 

Nick

 

Nicholas S. Thompson

Emeritus Professor of Psychology and Biology

Clark University

http://home.earthlink.net/~nickthompson/naturaldesigns/

 


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove



============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Gillian Densmore
In reply to this post by Russell Standish-2
lol and here I was trying to be simple and not get into states wich is a cluster IMO. but yeah that is a good point the computer needs to know how and wen to bake cookies and set the timer (states)

Now look you've just made him more confused! :P

Just to make this reeely go more off the rails:
Seriusly IF we want stuff to run in the web is having a state still needed I thought that was one of the whole pissing contest between Mozzila's X-Tag (states are baked in somehow) or WebCompenents (googles mess that has them (sort of) 
As I undestand it  X-Tag (for example) somehow real time asks if it's possible to do something before assuming it can.

Or is that just a limit of computer languages?


On Tue, Jul 17, 2018 at 9:05 PM, Russell Standish <[hidden email]> wrote:
Not sure about "utility"/"tool", but an object is distinguished from a
function by having state. Call an object's method, and the method's
scope is populated by the object's data members, which of course,
differ from object to object.

By contrast a function either has no state (pure function), or its
state is global (same for every function invocation).

Cheers

On Tue, Jul 17, 2018 at 10:06:57PM -0400, Nick Thompson wrote:
> Dave, and anybody else who wants to play.
>

>
> I have always been puzzled by the question of how one distinguishes an
> object in object programming from a utility in DOS or a tool in Matlab.  Or
> any mathematical function, for that matter.  You give it what it needs, and
> it gives you what it's supposed to, and you don't give a damn how it works.
>

>
> Please don't yell at me.
>

>
> Nick
>

>
> Nicholas S. Thompson
>
> Emeritus Professor of Psychology and Biology
>
> Clark University
>
> http://home.earthlink.net/~nickthompson/naturaldesigns/
>

>

> ============================================================
> FRIAM Applied Complexity Group listserv
> Meets Fridays 9a-11:30 at cafe at St. John's College
> to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
> FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


--

----------------------------------------------------------------------------
Dr Russell Standish                    Phone 0425 253119 (mobile)
Principal, High Performance Coders
Visiting Senior Research Fellow        [hidden email]
Economics, Kingston University         http://www.hpcoders.com.au
----------------------------------------------------------------------------

============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Marcus G. Daniels
In reply to this post by Russell Standish-2
One can also have procedures bound to types where the procedures are pure.  
OOP does not imply methods that have privileged access to state, although this is common with languages like C++ and Java.
In contrast, a method (or type bound procedure) can have privileged access to the meaning of state when state is provided (as an argument).
Haskell basically requires this approach and Fortran 2008 facilitates it.

On 7/17/18, 9:05 PM, "Friam on behalf of Russell Standish" <[hidden email] on behalf of [hidden email]> wrote:

    Not sure about "utility"/"tool", but an object is distinguished from a
    function by having state. Call an object's method, and the method's
    scope is populated by the object's data members, which of course,
    differ from object to object.
   
    By contrast a function either has no state (pure function), or its
    state is global (same for every function invocation).
   
    Cheers
   
    On Tue, Jul 17, 2018 at 10:06:57PM -0400, Nick Thompson wrote:
    > Dave, and anybody else who wants to play.
    >
    >  
    >
    > I have always been puzzled by the question of how one distinguishes an
    > object in object programming from a utility in DOS or a tool in Matlab.  Or
    > any mathematical function, for that matter.  You give it what it needs, and
    > it gives you what it's supposed to, and you don't give a damn how it works.
    >
    >  
    >
    > Please don't yell at me.
    >
    >  
    >
    > Nick
    >
    >  
    >
    > Nicholas S. Thompson
    >
    > Emeritus Professor of Psychology and Biology
    >
    > Clark University
    >
    > http://home.earthlink.net/~nickthompson/naturaldesigns/
    >
    >  
    >
   
    > ============================================================
    > FRIAM Applied Complexity Group listserv
    > Meets Fridays 9a-11:30 at cafe at St. John's College
    > to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
    > FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
   
   
    --
   
    ----------------------------------------------------------------------------
    Dr Russell Standish                    Phone 0425 253119 (mobile)
    Principal, High Performance Coders
    Visiting Senior Research Fellow        [hidden email]
    Economics, Kingston University         http://www.hpcoders.com.au
    ----------------------------------------------------------------------------
   
    ============================================================
    FRIAM Applied Complexity Group listserv
    Meets Fridays 9a-11:30 at cafe at St. John's College
    to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
    FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
   

============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Alfredo Covaleda Vélez-2
I do not know if Alan Kay created the term object in the context of programming  but he was a pioneer of OOP when created Smalltalk. These are few paragraphs where Kay is cited in relation to the term object and concept is explained.


Felicidades para todos.   

On Tue, Jul 17, 2018 at 10:19 PM, Marcus Daniels <[hidden email]> wrote:
One can also have procedures bound to types where the procedures are pure. 
OOP does not imply methods that have privileged access to state, although this is common with languages like C++ and Java.
In contrast, a method (or type bound procedure) can have privileged access to the meaning of state when state is provided (as an argument).
Haskell basically requires this approach and Fortran 2008 facilitates it.

On 7/17/18, 9:05 PM, "Friam on behalf of Russell Standish" <[hidden email] on behalf of [hidden email]> wrote:

    Not sure about "utility"/"tool", but an object is distinguished from a
    function by having state. Call an object's method, and the method's
    scope is populated by the object's data members, which of course,
    differ from object to object.

    By contrast a function either has no state (pure function), or its
    state is global (same for every function invocation).

    Cheers

    On Tue, Jul 17, 2018 at 10:06:57PM -0400, Nick Thompson wrote:
    > Dave, and anybody else who wants to play.
    >
    > 
    >
    > I have always been puzzled by the question of how one distinguishes an
    > object in object programming from a utility in DOS or a tool in Matlab.  Or
    > any mathematical function, for that matter.  You give it what it needs, and
    > it gives you what it's supposed to, and you don't give a damn how it works.
    >
    > 
    >
    > Please don't yell at me.
    >
    > 
    >
    > Nick
    >
    > 
    >
    > Nicholas S. Thompson
    >
    > Emeritus Professor of Psychology and Biology
    >
    > Clark University
    >
    > http://home.earthlink.net/~nickthompson/naturaldesigns/
    >
    > 
    >

    > ============================================================
    > FRIAM Applied Complexity Group listserv
    > Meets Fridays 9a-11:30 at cafe at St. John's College
    > to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
    > FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


    --

    ----------------------------------------------------------------------------
    Dr Russell Standish                    Phone 0425 253119 (mobile)
    Principal, High Performance Coders
    Visiting Senior Research Fellow        [hidden email]
    Economics, Kingston University         http://www.hpcoders.com.au
    ----------------------------------------------------------------------------

    ============================================================
    FRIAM Applied Complexity Group listserv
    Meets Fridays 9a-11:30 at cafe at St. John's College
    to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
    FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Alfredo Covaleda Vélez-2
And this is probably  even better for your discussion


On Tue, Jul 17, 2018 at 11:09 PM, Alfredo Covaleda Vélez <[hidden email]> wrote:
I do not know if Alan Kay created the term object in the context of programming  but he was a pioneer of OOP when created Smalltalk. These are few paragraphs where Kay is cited in relation to the term object and concept is explained.


Felicidades para todos.   

On Tue, Jul 17, 2018 at 10:19 PM, Marcus Daniels <[hidden email]> wrote:
One can also have procedures bound to types where the procedures are pure. 
OOP does not imply methods that have privileged access to state, although this is common with languages like C++ and Java.
In contrast, a method (or type bound procedure) can have privileged access to the meaning of state when state is provided (as an argument).
Haskell basically requires this approach and Fortran 2008 facilitates it.

On 7/17/18, 9:05 PM, "Friam on behalf of Russell Standish" <[hidden email] on behalf of [hidden email]> wrote:

    Not sure about "utility"/"tool", but an object is distinguished from a
    function by having state. Call an object's method, and the method's
    scope is populated by the object's data members, which of course,
    differ from object to object.

    By contrast a function either has no state (pure function), or its
    state is global (same for every function invocation).

    Cheers

    On Tue, Jul 17, 2018 at 10:06:57PM -0400, Nick Thompson wrote:
    > Dave, and anybody else who wants to play.
    >
    > 
    >
    > I have always been puzzled by the question of how one distinguishes an
    > object in object programming from a utility in DOS or a tool in Matlab.  Or
    > any mathematical function, for that matter.  You give it what it needs, and
    > it gives you what it's supposed to, and you don't give a damn how it works.
    >
    > 
    >
    > Please don't yell at me.
    >
    > 
    >
    > Nick
    >
    > 
    >
    > Nicholas S. Thompson
    >
    > Emeritus Professor of Psychology and Biology
    >
    > Clark University
    >
    > http://home.earthlink.net/~nickthompson/naturaldesigns/
    >
    > 
    >

    > ============================================================
    > FRIAM Applied Complexity Group listserv
    > Meets Fridays 9a-11:30 at cafe at St. John's College
    > to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
    > FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


    --

    ----------------------------------------------------------------------------
    Dr Russell Standish                    Phone 0425 253119 (mobile)
    Principal, High Performance Coders
    Visiting Senior Research Fellow        [hidden email]
    Economics, Kingston University         http://www.hpcoders.com.au
    ----------------------------------------------------------------------------

    ============================================================
    FRIAM Applied Complexity Group listserv
    Meets Fridays 9a-11:30 at cafe at St. John's College
    to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
    FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove



============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Marcus G. Daniels

Objects are more versatile than modules:  An object can be passed around, and it can provide scoping and access control like most modules system do.    Even static symbol access can be done with objects provided there is an origin object that provides those services like QueryInterface (think the `env’ optional argument to main in C).   The trick is to do it in such a way that a compiler can analyze what is going on, e.g. to enable devirtualization.   That’s not easy, so I’d argue that’s why there is a duality between modules and objects – it is a performance issue.   In practice, module systems are mainly concerned with facilitating birth of objects.  Once born, there’s little need for them because everything else can be done with messaging and functional composition.

From: Friam <[hidden email]> on behalf of Alfredo Covaleda Vélez <[hidden email]>
Reply-To: The Friday Morning Applied Complexity Coffee Group <[hidden email]>
Date: Tuesday, July 17, 2018 at 10:35 PM
To: The Friday Morning Applied Complexity Coffee Group <[hidden email]>
Subject: Re: [FRIAM] What is an object?

 

And this is probably  even better for your discussion

 

 

On Tue, Jul 17, 2018 at 11:09 PM, Alfredo Covaleda Vélez <[hidden email]> wrote:

I do not know if Alan Kay created the term object in the context of programming  but he was a pioneer of OOP when created Smalltalk. These are few paragraphs where Kay is cited in relation to the term object and concept is explained.

 

 

Felicidades para todos.   

 

On Tue, Jul 17, 2018 at 10:19 PM, Marcus Daniels <[hidden email]> wrote:

One can also have procedures bound to types where the procedures are pure. 
OOP does not imply methods that have privileged access to state, although this is common with languages like C++ and Java.
In contrast, a method (or type bound procedure) can have privileged access to the meaning of state when state is provided (as an argument).
Haskell basically requires this approach and Fortran 2008 facilitates it.


On 7/17/18, 9:05 PM, "Friam on behalf of Russell Standish" <[hidden email] on behalf of [hidden email]> wrote:

    Not sure about "utility"/"tool", but an object is distinguished from a
    function by having state. Call an object's method, and the method's
    scope is populated by the object's data members, which of course,
    differ from object to object.

    By contrast a function either has no state (pure function), or its
    state is global (same for every function invocation).

    Cheers

    On Tue, Jul 17, 2018 at 10:06:57PM -0400, Nick Thompson wrote:
    > Dave, and anybody else who wants to play.
    >
    > 
    >
    > I have always been puzzled by the question of how one distinguishes an
    > object in object programming from a utility in DOS or a tool in Matlab.  Or
    > any mathematical function, for that matter.  You give it what it needs, and
    > it gives you what it's supposed to, and you don't give a damn how it works.
    >
    > 
    >
    > Please don't yell at me.
    >
    > 
    >
    > Nick
    >
    > 
    >
    > Nicholas S. Thompson
    >
    > Emeritus Professor of Psychology and Biology
    >
    > Clark University
    >
    > http://home.earthlink.net/~nickthompson/naturaldesigns/
    >
    > 
    >

    > ============================================================
    > FRIAM Applied Complexity Group listserv
    > Meets Fridays 9a-11:30 at cafe at St. John's College
    > to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
    > FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


    --

    ----------------------------------------------------------------------------
    Dr Russell Standish                    Phone 0425 253119 (mobile)
    Principal, High Performance Coders
    Visiting Senior Research Fellow        [hidden email]
    Economics, Kingston University         http://www.hpcoders.com.au
    ----------------------------------------------------------------------------

    ============================================================
    FRIAM Applied Complexity Group listserv
    Meets Fridays 9a-11:30 at cafe at St. John's College
    to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
    FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove

 

 


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Prof David West
In reply to this post by Nick Thompson
Hi Nick,

An object is a specific way to define and design a module and a module is a tool for segmenting, modularizing, the source code (what the programmer actually writes, not what the machine executes) for a program. To parse this assertion - and then to explain how and why object modularization is different - a quick aside to discuss a program is in order.

I use 'program' to mean the source code - the lines of COBOL, java, C++, or Smalltalk that the programmer writes.

I am sure you have seen BASIC programs. The source code consists of a list, each entry on that list having a sequence number and a BASIC statement. The computer will execute that program one line at a time in sequence: the statement on line 1 then line 2 ... Some of the statements, say the one on line 20 wont tell the computer to do something, instead they tell the computer to GOTO some other line number and resume executing instructions. Several different types of control structures are available. It takes little imagination to realize the larger the program the greater the difficulty in understanding what the computer might be doing at any specific time - especially if you also, simultaneously, need to track the values of numerous variables to see which branches are active.

Hence the desire for modularization - packaging blocks of code lines into identifiable units - to simplify the process of reading a program and the mental modeling of what the program would be doing at any phase of execution.

Now add Dikstra's famous definition, "a program is algorithms plus data structures."

The first criteria for defining a module involved grouping lines of code that were related by prodecure, (essentially all lines participating in the same algorithm) - hence procedural programming with four kinds of modules: control, afferent, transform, and efferent.

For various reasons, procedural modularization was unsatisfactory and, noticing that data structures were more stable over longer periods of time, data oriented modularization became the norm. You defined an entity as a data structure with members called attributes and aggregated all the procedures that operated on that specific data into a module.

A DOS utility is probably written in C or Assembler, neither of which afford much opportunity for modularization, and is small enough that it does not need to be broken up.

A tool in Matlab is likely a large program and if you could see the source code you would see modularization, probably more procedural in nature than data oriented.

Note that both approaches to defining modules are focused on the program itself and how it can be broken up and the pieces related to each other. The same thing is true of "functional programming," i. e. the focus of design is inward towards the computer.

Then came 'objects'.

First critical difference: an object is not a way to modularize the program, it is a means for modularizing the World, the problem space.

Second critical difference: one object is differentiated from another solely on the basis of behavior - what it does, what contribution it makes to the overall system, what services it provides to other objects.

These two characteristics of objects are why Harman borrows the term for his Object-Oriented Ontology.

The term Object-oriented programming was coined by Alan Kay and the metaphor he used to communicate the idea behind the term was was a biological cell consisting of an encapsulation boundary, inside of which was all the complexity that allowed the cell to do what it did, and outside of which was a protocol that allowed other cells to communicate with and request services from the cell.

Unfortunately, very, very, few in the programming community "got the memo" and understood what an object was supposed to be, or how it could be implemented in a programming language. So, it is extremely rare to find any code, even in Smalltalk, but definitely in Java or C++ that even remotely resembles the object idea. Alan Kay maintains, to this day, that the object revolution has yet to happen.

BTW all modules, and all executing programs for that matter, are intended to be "black boxes" - you have no idea, and do not care, what is inside of the box, only what outputs the box will provide you in exchange for what inputs.

Long winded, and I hope not remedial, answer.

davew



On Tue, Jul 17, 2018, at 8:06 PM, Nick Thompson wrote:

Dave, and anybody else who wants to play.

 

I have always been puzzled by the question of how one distinguishes an object in object programming from a utility in DOS or a tool in Matlab.  Or any mathematical function, for that matter.  You give it what it needs, and it gives you what it’s supposed to, and you don’t give a damn how it works.

 

Please don’t yell at me.

 

Nick

 

Nicholas S. Thompson

Emeritus Professor of Psychology and Biology

Clark University

http://home.earthlink.net/~nickthompson/naturaldesigns/

 

============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Prof David West
In reply to this post by Alfredo Covaleda Vélez-2
Alan Kay is the coiner of the term Object-oriented Programming and the biological cell metaphor. In later years he thought that programmers might have had a better chance of writing object code if there was a clearer distinction between OO Design implemented with Message-oriented programming. This might have prevented the horrible mistake of equating an object (ala Kay) with an "abstract data type" (ala Stroustrup and C++).



On Tue, Jul 17, 2018, at 10:09 PM, Alfredo Covaleda Vélez wrote:
I do not know if Alan Kay created the term object in the context of programming  but he was a pioneer of OOP when created Smalltalk. These are few paragraphs where Kay is cited in relation to the term object and concept is explained.


Felicidades para todos.   

On Tue, Jul 17, 2018 at 10:19 PM, Marcus Daniels <[hidden email]> wrote:
One can also have procedures bound to types where the procedures are pure. 
OOP does not imply methods that have privileged access to state, although this is common with languages like C++ and Java.
In contrast, a method (or type bound procedure) can have privileged access to the meaning of state when state is provided (as an argument).
Haskell basically requires this approach and Fortran 2008 facilitates it.


On 7/17/18, 9:05 PM, "Friam on behalf of Russell Standish" <[hidden email] on behalf of [hidden email]> wrote:

    Not sure about "utility"/"tool", but an object is distinguished from a
    function by having state. Call an object's method, and the method's
    scope is populated by the object's data members, which of course,
    differ from object to object.

    By contrast a function either has no state (pure function), or its
    state is global (same for every function invocation).

    Cheers

    On Tue, Jul 17, 2018 at 10:06:57PM -0400, Nick Thompson wrote:
    > Dave, and anybody else who wants to play.
    >
    > 
    >
    > I have always been puzzled by the question of how one distinguishes an
    > object in object programming from a utility in DOS or a tool in Matlab.  Or
    > any mathematical function, for that matter.  You give it what it needs, and
    > it gives you what it's supposed to, and you don't give a damn how it works.
    >
    > 
    >
    > Please don't yell at me.
    >
    > 
    >
    > Nick
    >
    > 
    >
    > Nicholas S. Thompson
    >
    > Emeritus Professor of Psychology and Biology
    >
    > Clark University
    >
    >
    > 
    >

    > ============================================================
    > FRIAM Applied Complexity Group listserv
    > Meets Fridays 9a-11:30 at cafe at St. John's College
    > FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


    --

    ----------------------------------------------------------------------------
    Dr Russell Standish                    Phone 0425 253119 (mobile)
    Principal, High Performance Coders
    Visiting Senior Research Fellow        [hidden email]
    Economics, Kingston University         http://www.hpcoders.com.au
    ----------------------------------------------------------------------------

    ============================================================
    FRIAM Applied Complexity Group listserv
    Meets Fridays 9a-11:30 at cafe at St. John's College
    FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Tom Johnson
In reply to this post by Prof David West
Beautifully stated, Dave. Thanks.
TJ

On Wed, Jul 18, 2018, 12:00 AM Prof David West <[hidden email]> wrote:
Hi Nick,

An object is a specific way to define and design a module and a module is a tool for segmenting, modularizing, the source code (what the programmer actually writes, not what the machine executes) for a program. To parse this assertion - and then to explain how and why object modularization is different - a quick aside to discuss a program is in order.

I use 'program' to mean the source code - the lines of COBOL, java, C++, or Smalltalk that the programmer writes.

I am sure you have seen BASIC programs. The source code consists of a list, each entry on that list having a sequence number and a BASIC statement. The computer will execute that program one line at a time in sequence: the statement on line 1 then line 2 ... Some of the statements, say the one on line 20 wont tell the computer to do something, instead they tell the computer to GOTO some other line number and resume executing instructions. Several different types of control structures are available. It takes little imagination to realize the larger the program the greater the difficulty in understanding what the computer might be doing at any specific time - especially if you also, simultaneously, need to track the values of numerous variables to see which branches are active.

Hence the desire for modularization - packaging blocks of code lines into identifiable units - to simplify the process of reading a program and the mental modeling of what the program would be doing at any phase of execution.

Now add Dikstra's famous definition, "a program is algorithms plus data structures."

The first criteria for defining a module involved grouping lines of code that were related by prodecure, (essentially all lines participating in the same algorithm) - hence procedural programming with four kinds of modules: control, afferent, transform, and efferent.

For various reasons, procedural modularization was unsatisfactory and, noticing that data structures were more stable over longer periods of time, data oriented modularization became the norm. You defined an entity as a data structure with members called attributes and aggregated all the procedures that operated on that specific data into a module.

A DOS utility is probably written in C or Assembler, neither of which afford much opportunity for modularization, and is small enough that it does not need to be broken up.

A tool in Matlab is likely a large program and if you could see the source code you would see modularization, probably more procedural in nature than data oriented.

Note that both approaches to defining modules are focused on the program itself and how it can be broken up and the pieces related to each other. The same thing is true of "functional programming," i. e. the focus of design is inward towards the computer.

Then came 'objects'.

First critical difference: an object is not a way to modularize the program, it is a means for modularizing the World, the problem space.

Second critical difference: one object is differentiated from another solely on the basis of behavior - what it does, what contribution it makes to the overall system, what services it provides to other objects.

These two characteristics of objects are why Harman borrows the term for his Object-Oriented Ontology.

The term Object-oriented programming was coined by Alan Kay and the metaphor he used to communicate the idea behind the term was was a biological cell consisting of an encapsulation boundary, inside of which was all the complexity that allowed the cell to do what it did, and outside of which was a protocol that allowed other cells to communicate with and request services from the cell.

Unfortunately, very, very, few in the programming community "got the memo" and understood what an object was supposed to be, or how it could be implemented in a programming language. So, it is extremely rare to find any code, even in Smalltalk, but definitely in Java or C++ that even remotely resembles the object idea. Alan Kay maintains, to this day, that the object revolution has yet to happen.

BTW all modules, and all executing programs for that matter, are intended to be "black boxes" - you have no idea, and do not care, what is inside of the box, only what outputs the box will provide you in exchange for what inputs.

Long winded, and I hope not remedial, answer.

davew



On Tue, Jul 17, 2018, at 8:06 PM, Nick Thompson wrote:

Dave, and anybody else who wants to play.

 

I have always been puzzled by the question of how one distinguishes an object in object programming from a utility in DOS or a tool in Matlab.  Or any mathematical function, for that matter.  You give it what it needs, and it gives you what it’s supposed to, and you don’t give a damn how it works.

 

Please don’t yell at me.

 

Nick

 

Nicholas S. Thompson

Emeritus Professor of Psychology and Biology

Clark University

http://home.earthlink.net/~nickthompson/naturaldesigns/

 

============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove

============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove

============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

David Eric Smith
In reply to this post by Nick Thompson
Nick, 

Many years ago I asked this question of an IT person in Austin (little different, about distributed objects), and he pointed me at this book, which I dutifully got and read:


This must be, what, 1995?

It’s also kind of a juvenile style, and doesn’t go very far, but somebody made the effort to write down a systematic narrative.

All best,

Eric


On Jul 17, 2018, at 10:06 PM, Nick Thompson <[hidden email]> wrote:

Dave, and anybody else who wants to play. 
 
I have always been puzzled by the question of how one distinguishes an object in object programming from a utility in DOS or a tool in Matlab.  Or any mathematical function, for that matter.  You give it what it needs, and it gives you what it’s supposed to, and you don’t give a damn how it works. 
 
Please don’t yell at me.
 
Nick 
 
Nicholas S. Thompson
Emeritus Professor of Psychology and Biology
Clark University
 
============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

gepr
In reply to this post by Nick Thompson
Every one of the responses so far has said this. But it might help to say it differently, anyway. Objects, unlike utilities or functions and other "soft ware", have *particularity*. Each object is distinct from all other objects, regardless of how similar they may be.

It may be useful to analogize to music media. A vinyl LP is a particular instance of the music, as is a CD. The crisis in the music industry was largely about the ease with which we could construct, copy, instantiate, a new particulate that was very similar to the parent particulate.

Viewed in terms of particularity, objecthood is largely about lineage and the (lack of) historical accumulation of idiosyncracies.

On July 17, 2018 7:06:57 PM PDT, Nick Thompson <[hidden email]> wrote:

>Dave, and anybody else who wants to play.
>
>I have always been puzzled by the question of how one distinguishes an
>object in object programming from a utility in DOS or a tool in Matlab.
> Or
>any mathematical function, for that matter.  You give it what it needs,
>and
>it gives you what it's supposed to, and you don't give a damn how it
>works.
>
>Please don't yell at me.
>
>Nick

--
glen

============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
uǝʃƃ ⊥ glen
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Marcus G. Daniels
In reply to this post by Nick Thompson

I think many non-trivial computational codes assume significant knowledge of the subject matter in order to use the tools.

I’ve recently been using an optimization code that has 2445 tunable parameters, and only a small percentage of them have any obvious, intuitive meaning.   Should it just do the Right Thing?   Maybe, if that was agreed upon, or if there was agreement by experts on how to do it.   The true value of a tool is sometimes less that it does one thing well, but rather that it represents well-known nodes and edges in a network of concepts, and that it helps one to navigate (once one realizes that exploration is necessary).   

 

The drive toward compartmentalization in computer science is kind of at odds at how the other sciences operate.   In the other sciences, a specialist aims to know everything she can about her specialty.   But we take pride in creating systems where interface and implementation are not coupled, and we can say that you shouldn’t need or want to know how an interface is implemented.    Sometimes I think that makes us (appear?) incurious.    My view is that the world is big and being a specialist is kind of a depressing thought anyway.

 

Marcus

--

“The psychological profiling [of a programmer] is mostly the ability to shift levels of abstraction, from low level to high level. To see something in the small and to see something in the large.“  - Donald Knuth

 

From: Friam <[hidden email]> on behalf of Nick Thompson <[hidden email]>
Reply-To: The Friday Morning Applied Complexity Coffee Group <[hidden email]>
Date: Tuesday, July 17, 2018 at 8:07 PM
To: Friam <[hidden email]>
Subject: [FRIAM] What is an object?

 

Dave, and anybody else who wants to play.

 

I have always been puzzled by the question of how one distinguishes an object in object programming from a utility in DOS or a tool in Matlab.  Or any mathematical function, for that matter.  You give it what it needs, and it gives you what it’s supposed to, and you don’t give a damn how it works.

 

Please don’t yell at me.

 

Nick

 

Nicholas S. Thompson

Emeritus Professor of Psychology and Biology

Clark University

http://home.earthlink.net/~nickthompson/naturaldesigns/

 


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Nick Thompson
In reply to this post by Prof David West

David, and all,

 

I am overwhelmed (of course) by the diversity and complexity of the answers.  I had expected at most a few answers, highly similar to one another, of the form, “Nick you idiot….,” followed at most by a couple of sentences.  It seems that I am missing some context that would make the answers seem both more similar and straightforward. 

 

Allow me to illustrate my confusion with a story, bearing in mind that my confusion has absolutely no value except in so far as it might provide an occasion for Wizards of Your Dark Art to come to a consensus amongst yourselves about how to explain this stuff to us (as Owen so unforgettably puts it) citizens.  When I was teaching at Swarthmore in the Sixties there was a Shop Guy who could design and build ANYTHING.  I asked him to build two model “rats” to illustrate [what later became known as] Supervenience to bio students.  The “rats” were just plywood cutouts of rats, exactly the same on the surface with, two lights for eyes and three switches.  The job of the student was to use the behavior of the rats (how the lights related to the switches) to figure out the design of the two rats.  Only when they had committed themselves to a “model” of the rats “insides” were they allowed to look inside and see how they were actually put together.   They all concluded that the rats were the same, but of course my rat-maker had used different components and circuitry to arrive at the same behavior.  (I think one was straight logic and the other involved stepping switches, but don’t hold me to that.  )

The rats were thus doubly modular; they were made of modules, but, more important to me at the time, they were modules themselves for the purposes of demonstrating “rat” behavior.

 

OK.  So the rats’ behavior supervened upon their circuitry.  In other words, there’s more than one way to skin a … rat.   If I wanted to demonstrate “rat behavior”, it made no difference to me which of his two rats I took off the shelf.  This was intended to demonstrate to the student that brain models lived in the behavior of organisms and that just because somebody said something about neurons and synapses didn’t necessarily mean they knew anything about how the brain actually accomplished behavior.  But that issue is for another day.

 

Here’s another story.  Years ago my 1970’s era Troy Bilt tiller began to fail and I took it to a Guy.  The Guy said, yes I can rebuild your engine, pretty much like new.  It will cost you around $400.  OR, he said, I can bolt a new Briggs and Stratton engine on there for 150 dollars.  So, of course, I went for the new engine.  When I got my tiller back, it worked beautifully, but it looked weird.  The engine was a funny shape, the color was all wrong, but it had all the connectors it needed, it responded to all the levers, and it did the job.  Evidently, tiller functioning supervenes upon engine construction. 

 

Now this is how I was starting to think about “objects” in programming.  They were, in effect, black boxes, with stress laid on the intersubstitutability of different fulfillments of the box.  And like any modular system (DNA comes to mind), modularity is a great spur to creativity, leaving programmers free to work on better modules knowing that as long as the version of the “object“ they design (which, say, can work in a greater variety of heat conditions or uses less power, etc.) is the “same” box, then their work is a contribution to the whole.  This is how I understood DOS utililties and Matlab tools.   I guess, in short, I was thinking of objects as functionally defined.   This how I created and used macros in Word.

 

Some of your responses seemed to confirm my intuition; others seemed to be totally different.  But there seemed to be a consensus among you, leaving me to believe that I still don’t understand the context in which the term, “object”, is used that carves it out from the rest of the world for you Wizards. 

 

Thanks for your intricate and patient replies.

 

Nick

 

 

 

Nicholas S. Thompson

Emeritus Professor of Psychology and Biology

Clark University

http://home.earthlink.net/~nickthompson/naturaldesigns/

 

From: Friam [mailto:[hidden email]] On Behalf Of Prof David West
Sent: Wednesday, July 18, 2018 2:01 AM
To: [hidden email]
Subject: Re: [FRIAM] What is an object?

 

Hi Nick,

 

An object is a specific way to define and design a module and a module is a tool for segmenting, modularizing, the source code (what the programmer actually writes, not what the machine executes) for a program. To parse this assertion - and then to explain how and why object modularization is different - a quick aside to discuss a program is in order.

 

I use 'program' to mean the source code - the lines of COBOL, java, C++, or Smalltalk that the programmer writes.

 

I am sure you have seen BASIC programs. The source code consists of a list, each entry on that list having a sequence number and a BASIC statement. The computer will execute that program one line at a time in sequence: the statement on line 1 then line 2 ... Some of the statements, say the one on line 20 wont tell the computer to do something, instead they tell the computer to GOTO some other line number and resume executing instructions. Several different types of control structures are available. It takes little imagination to realize the larger the program the greater the difficulty in understanding what the computer might be doing at any specific time - especially if you also, simultaneously, need to track the values of numerous variables to see which branches are active.

 

Hence the desire for modularization - packaging blocks of code lines into identifiable units - to simplify the process of reading a program and the mental modeling of what the program would be doing at any phase of execution.

 

Now add Dikstra's famous definition, "a program is algorithms plus data structures."

 

The first criteria for defining a module involved grouping lines of code that were related by prodecure, (essentially all lines participating in the same algorithm) - hence procedural programming with four kinds of modules: control, afferent, transform, and efferent.

 

For various reasons, procedural modularization was unsatisfactory and, noticing that data structures were more stable over longer periods of time, data oriented modularization became the norm. You defined an entity as a data structure with members called attributes and aggregated all the procedures that operated on that specific data into a module.

 

A DOS utility is probably written in C or Assembler, neither of which afford much opportunity for modularization, and is small enough that it does not need to be broken up.

 

A tool in Matlab is likely a large program and if you could see the source code you would see modularization, probably more procedural in nature than data oriented.

 

Note that both approaches to defining modules are focused on the program itself and how it can be broken up and the pieces related to each other. The same thing is true of "functional programming," i. e. the focus of design is inward towards the computer.

 

Then came 'objects'.

 

First critical difference: an object is not a way to modularize the program, it is a means for modularizing the World, the problem space.

 

Second critical difference: one object is differentiated from another solely on the basis of behavior - what it does, what contribution it makes to the overall system, what services it provides to other objects.

 

These two characteristics of objects are why Harman borrows the term for his Object-Oriented Ontology.

 

The term Object-oriented programming was coined by Alan Kay and the metaphor he used to communicate the idea behind the term was was a biological cell consisting of an encapsulation boundary, inside of which was all the complexity that allowed the cell to do what it did, and outside of which was a protocol that allowed other cells to communicate with and request services from the cell.

 

Unfortunately, very, very, few in the programming community "got the memo" and understood what an object was supposed to be, or how it could be implemented in a programming language. So, it is extremely rare to find any code, even in Smalltalk, but definitely in Java or C++ that even remotely resembles the object idea. Alan Kay maintains, to this day, that the object revolution has yet to happen.

 

BTW all modules, and all executing programs for that matter, are intended to be "black boxes" - you have no idea, and do not care, what is inside of the box, only what outputs the box will provide you in exchange for what inputs.

 

Long winded, and I hope not remedial, answer.

 

davew

 

 

 

On Tue, Jul 17, 2018, at 8:06 PM, Nick Thompson wrote:

Dave, and anybody else who wants to play.

 

I have always been puzzled by the question of how one distinguishes an object in object programming from a utility in DOS or a tool in Matlab.  Or any mathematical function, for that matter.  You give it what it needs, and it gives you what it’s supposed to, and you don’t give a damn how it works.

 

Please don’t yell at me.

 

Nick

 

Nicholas S. Thompson

Emeritus Professor of Psychology and Biology

Clark University

http://home.earthlink.net/~nickthompson/naturaldesigns/

 

============================================================

FRIAM Applied Complexity Group listserv

Meets Fridays 9a-11:30 at cafe at St. John's College

FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove

 


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Robert Holmes-3
Hope this helps


On Wed, Jul 18, 2018 at 9:53 AM Nick Thompson <[hidden email]> wrote:

David, and all,

 

I am overwhelmed (of course) by the diversity and complexity of the answers.  I had expected at most a few answers, highly similar to one another, of the form, “Nick you idiot….,” followed at most by a couple of sentences.  It seems that I am missing some context that would make the answers seem both more similar and straightforward. 

 

Allow me to illustrate my confusion with a story, bearing in mind that my confusion has absolutely no value except in so far as it might provide an occasion for Wizards of Your Dark Art to come to a consensus amongst yourselves about how to explain this stuff to us (as Owen so unforgettably puts it) citizens.  When I was teaching at Swarthmore in the Sixties there was a Shop Guy who could design and build ANYTHING.  I asked him to build two model “rats” to illustrate [what later became known as] Supervenience to bio students.  The “rats” were just plywood cutouts of rats, exactly the same on the surface with, two lights for eyes and three switches.  The job of the student was to use the behavior of the rats (how the lights related to the switches) to figure out the design of the two rats.  Only when they had committed themselves to a “model” of the rats “insides” were they allowed to look inside and see how they were actually put together.   They all concluded that the rats were the same, but of course my rat-maker had used different components and circuitry to arrive at the same behavior.  (I think one was straight logic and the other involved stepping switches, but don’t hold me to that.  )

The rats were thus doubly modular; they were made of modules, but, more important to me at the time, they were modules themselves for the purposes of demonstrating “rat” behavior.

 

OK.  So the rats’ behavior supervened upon their circuitry.  In other words, there’s more than one way to skin a … rat.   If I wanted to demonstrate “rat behavior”, it made no difference to me which of his two rats I took off the shelf.  This was intended to demonstrate to the student that brain models lived in the behavior of organisms and that just because somebody said something about neurons and synapses didn’t necessarily mean they knew anything about how the brain actually accomplished behavior.  But that issue is for another day.

 

Here’s another story.  Years ago my 1970’s era Troy Bilt tiller began to fail and I took it to a Guy.  The Guy said, yes I can rebuild your engine, pretty much like new.  It will cost you around $400.  OR, he said, I can bolt a new Briggs and Stratton engine on there for 150 dollars.  So, of course, I went for the new engine.  When I got my tiller back, it worked beautifully, but it looked weird.  The engine was a funny shape, the color was all wrong, but it had all the connectors it needed, it responded to all the levers, and it did the job.  Evidently, tiller functioning supervenes upon engine construction. 

 

Now this is how I was starting to think about “objects” in programming.  They were, in effect, black boxes, with stress laid on the intersubstitutability of different fulfillments of the box.  And like any modular system (DNA comes to mind), modularity is a great spur to creativity, leaving programmers free to work on better modules knowing that as long as the version of the “object“ they design (which, say, can work in a greater variety of heat conditions or uses less power, etc.) is the “same” box, then their work is a contribution to the whole.  This is how I understood DOS utililties and Matlab tools.   I guess, in short, I was thinking of objects as functionally defined.   This how I created and used macros in Word.

 

Some of your responses seemed to confirm my intuition; others seemed to be totally different.  But there seemed to be a consensus among you, leaving me to believe that I still don’t understand the context in which the term, “object”, is used that carves it out from the rest of the world for you Wizards. 

 

Thanks for your intricate and patient replies.

 

Nick

 

 

 

Nicholas S. Thompson

Emeritus Professor of Psychology and Biology

Clark University

http://home.earthlink.net/~nickthompson/naturaldesigns/

 

From: Friam [mailto:[hidden email]] On Behalf Of Prof David West
Sent: Wednesday, July 18, 2018 2:01 AM
To: [hidden email]
Subject: Re: [FRIAM] What is an object?

 

Hi Nick,

 

An object is a specific way to define and design a module and a module is a tool for segmenting, modularizing, the source code (what the programmer actually writes, not what the machine executes) for a program. To parse this assertion - and then to explain how and why object modularization is different - a quick aside to discuss a program is in order.

 

I use 'program' to mean the source code - the lines of COBOL, java, C++, or Smalltalk that the programmer writes.

 

I am sure you have seen BASIC programs. The source code consists of a list, each entry on that list having a sequence number and a BASIC statement. The computer will execute that program one line at a time in sequence: the statement on line 1 then line 2 ... Some of the statements, say the one on line 20 wont tell the computer to do something, instead they tell the computer to GOTO some other line number and resume executing instructions. Several different types of control structures are available. It takes little imagination to realize the larger the program the greater the difficulty in understanding what the computer might be doing at any specific time - especially if you also, simultaneously, need to track the values of numerous variables to see which branches are active.

 

Hence the desire for modularization - packaging blocks of code lines into identifiable units - to simplify the process of reading a program and the mental modeling of what the program would be doing at any phase of execution.

 

Now add Dikstra's famous definition, "a program is algorithms plus data structures."

 

The first criteria for defining a module involved grouping lines of code that were related by prodecure, (essentially all lines participating in the same algorithm) - hence procedural programming with four kinds of modules: control, afferent, transform, and efferent.

 

For various reasons, procedural modularization was unsatisfactory and, noticing that data structures were more stable over longer periods of time, data oriented modularization became the norm. You defined an entity as a data structure with members called attributes and aggregated all the procedures that operated on that specific data into a module.

 

A DOS utility is probably written in C or Assembler, neither of which afford much opportunity for modularization, and is small enough that it does not need to be broken up.

 

A tool in Matlab is likely a large program and if you could see the source code you would see modularization, probably more procedural in nature than data oriented.

 

Note that both approaches to defining modules are focused on the program itself and how it can be broken up and the pieces related to each other. The same thing is true of "functional programming," i. e. the focus of design is inward towards the computer.

 

Then came 'objects'.

 

First critical difference: an object is not a way to modularize the program, it is a means for modularizing the World, the problem space.

 

Second critical difference: one object is differentiated from another solely on the basis of behavior - what it does, what contribution it makes to the overall system, what services it provides to other objects.

 

These two characteristics of objects are why Harman borrows the term for his Object-Oriented Ontology.

 

The term Object-oriented programming was coined by Alan Kay and the metaphor he used to communicate the idea behind the term was was a biological cell consisting of an encapsulation boundary, inside of which was all the complexity that allowed the cell to do what it did, and outside of which was a protocol that allowed other cells to communicate with and request services from the cell.

 

Unfortunately, very, very, few in the programming community "got the memo" and understood what an object was supposed to be, or how it could be implemented in a programming language. So, it is extremely rare to find any code, even in Smalltalk, but definitely in Java or C++ that even remotely resembles the object idea. Alan Kay maintains, to this day, that the object revolution has yet to happen.

 

BTW all modules, and all executing programs for that matter, are intended to be "black boxes" - you have no idea, and do not care, what is inside of the box, only what outputs the box will provide you in exchange for what inputs.

 

Long winded, and I hope not remedial, answer.

 

davew

 

 

 

On Tue, Jul 17, 2018, at 8:06 PM, Nick Thompson wrote:

Dave, and anybody else who wants to play.

 

I have always been puzzled by the question of how one distinguishes an object in object programming from a utility in DOS or a tool in Matlab.  Or any mathematical function, for that matter.  You give it what it needs, and it gives you what it’s supposed to, and you don’t give a damn how it works.

 

Please don’t yell at me.

 

Nick

 

Nicholas S. Thompson

Emeritus Professor of Psychology and Biology

Clark University

http://home.earthlink.net/~nickthompson/naturaldesigns/

 

============================================================

FRIAM Applied Complexity Group listserv

Meets Fridays 9a-11:30 at cafe at St. John's College

FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove

 

============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove

============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

gepr
In reply to this post by Nick Thompson
You're poking at the difference between a type/class/protocol/interface versus an object/implementation.  There can be no difference in the type/class unless there's a difference in the objects that constitute that type/class.  So, your 2 rats are of a type, implemented by different objects.  And your Tiller of Theseus has an invariant type, implemented by variations in 2 objects.  Or, said another way, your 2 rats and your 2 tillers have distinct particulars, but identifiable similarities.

On 07/18/2018 08:53 AM, Nick Thompson wrote:

> David, and all,
>
>  
>
> I am overwhelmed (of course) by the diversity and complexity of the answers.  I had expected at most a few answers, highly similar to one another, of the form, “Nick you idiot….,” followed at most by a couple of sentences.  It seems that I am missing some context that would make the answers seem both more similar and straightforward. 
>
>  
>
> Allow me to illustrate my confusion with a story, bearing in mind that my confusion has absolutely no value except in so far as it might provide an occasion for Wizards of Your Dark Art to come to a consensus amongst yourselves about how to explain this stuff to us (as Owen so unforgettably puts it) /citizens/.  When I was teaching at Swarthmore in the Sixties there was a Shop Guy who could design and build ANYTHING.  I asked him to build two model “rats” to illustrate [what later became known as] Supervenience to bio students.  The “rats” were just plywood cutouts of rats, exactly the same on the surface with, two lights for eyes and three switches.  The job of the student was to use the behavior of the rats (how the lights related to the switches) to figure out the design of the two rats.  Only when they had committed themselves to a “model” of the rats “insides” were they allowed to look inside and see how they were actually put together.   They all concluded that the rats
> were the same, but of course my rat-maker had used different components and circuitry to arrive at the same behavior.  (I think one was straight logic and the other involved stepping switches, but don’t hold me to that.  )
>
> The rats were thus doubly modular; they were made of modules, but, more important to me at the time, they were modules themselves for the purposes of demonstrating “rat” behavior.
>
>  
>
> OK.  So the rats’ behavior supervened upon their circuitry.  In other words, there’s more than one way to skin a … rat.   If I wanted to demonstrate “rat behavior”, it made no difference to me which of his two rats I took off the shelf.  This was intended to demonstrate to the student that brain models lived in the behavior of organisms and that just because somebody said something about neurons and synapses didn’t necessarily mean they knew anything about how the brain actually accomplished behavior.  But that issue is for another day.
>
>  
>
> Here’s another story.  Years ago my 1970’s era Troy Bilt tiller began to fail and I took it to a Guy.  The Guy said, yes I can rebuild your engine, pretty much like new.  It will cost you around $400.  OR, he said, I can bolt a new Briggs and Stratton engine on there for 150 dollars.  So, of course, I went for the new engine.  When I got my tiller back, it worked beautifully, but it looked weird.  The engine was a funny shape, the color was all wrong, but it had all the connectors it needed, it responded to all the levers, and it did the job.  Evidently, tiller functioning supervenes upon engine construction. 
>
>  
>
> Now this is how I was starting to think about “objects” in programming.  They were, in effect, black boxes, with stress laid on the intersubstitutability of different fulfillments of the box.  And like any modular system (DNA comes to mind), modularity is a great spur to creativity, leaving programmers free to work on better modules knowing that as long as the version of the “object“ they design (which, say, can work in a greater variety of heat conditions or uses less power, etc.) is the “same” box, then their work is a contribution to the whole.  This is how I understood DOS utililties and Matlab tools.   I guess, in short, I was thinking of objects as /functionally /defined.   This how I created and used macros in Word.
>
>  
>
> Some of your responses seemed to confirm my intuition; others seemed to be totally different.  But there seemed to be a consensus among you, leaving me to believe that I still don’t understand the context in which the term, “object”, is used that carves it out from the rest of the world for you Wizards. 
>
>  
>
> Thanks for your intricate and patient replies.

--
☣ uǝlƃ
============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
uǝʃƃ ⊥ glen
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

David Eric Smith
In reply to this post by Nick Thompson
Nick, how could you!

(about to get myself in trouble again for thinking I remember something that is probably wrong)

> Here’s another story.  Years ago my 1970’s era Troy Bilt tiller began to fail and I took it to a Guy.  The Guy said, yes I can rebuild your engine, pretty much like new.  It will cost you around $400.  OR, he said, I can bolt a new Briggs and Stratton engine on there for 150 dollars.  So, of course, I went for the new engine.  When I got my tiller back, it worked beautifully, but it looked weird.  The engine was a funny shape, the color was all wrong, but it had all the connectors it needed, it responded to all the levers, and it did the job.  Evidently, tiller functioning supervenes upon engine construction.  

I thought Troy Built tillers all came with Tecumseh engines, those big, slow, torquey things that I never saw on anything else.  Briggs and Stratton were for lawnmowers.  That almost seems as bad as (I am told) the generational shift when International Harvester began putting _truck engines_ in their tractors, a kind of betrayal that gets my farmer colleagues all red and hyperventilated.  They say that was the end of the brand.  

I know that does not contribute to this thread.

Eric




============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
Reply | Threaded
Open this post in threaded view
|

Re: What is an object?

Marcus G. Daniels
In reply to this post by Nick Thompson

Nick writes:

 

“And like any modular system (DNA comes to mind), modularity is a great spur to creativity, leaving programmers free to work on better modules knowing that as long as the version of the “object“ they design (which, say, can work in a greater variety of heat conditions or uses less power, etc.) is the “same” box, then their work is a contribution to the whole.”

 

In the real world of software, there are many frozen accidents.   The genesis of an initial building block leads to another being designed in a certain way, which brings with another set of idiosyncrasies, and so on.   After decades of this people start to believe that things must – in principle and in practice -- be a certain way.    Software layering can be an obstacle to innovation once basic assumptions are called into question; it is easy to get stuck in local fitness maxima and a particular foundation.

 

Marcus

 

From: Friam <[hidden email]> on behalf of Nick Thompson <[hidden email]>
Reply-To: The Friday Morning Applied Complexity Coffee Group <[hidden email]>
Date: Wednesday, July 18, 2018 at 9:53 AM
To: 'The Friday Morning Applied Complexity Coffee Group' <[hidden email]>
Subject: Re: [FRIAM] What is an object?

 

And like any modular system (DNA comes to mind), modularity is a great spur to creativity, leaving programmers free to work on better modules knowing that as long as the version of the “object“ they design (which, say, can work in a greater variety of heat conditions or uses less power, etc.) is the “same” box, then their work is a contribution to the whole.


============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/ by Dr. Strangelove
123