Not fully OO ?
Ricardo Aráoz
ricaraoz at gmail.com
Mon Sep 22 10:36:18 EDT 2008
More information about the Python-list mailing list
Mon Sep 22 10:36:18 EDT 2008
- Previous message (by thread): Not fully OO ?
- Next message (by thread): Not fully OO ?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Kay Schluehr wrote: > On 20 Sep., 23:07, "Aaron \"Castironpi\" Brady" <castiro... at gmail.com> > wrote: >> On Sep 20, 3:22 pm, Kay Schluehr <kay.schlu... at gmx.net> wrote: >> >> >> >>> On 20 Sep., 18:33, Bruno Desthuilliers >>> <bdesth.quelquech... at free.quelquepart.fr> wrote: >>>> The following definitions are AFAIK the only commonly accepted >>>> definitions about OO: >>>> 1/ an object is defined by identity, state and behaviour >>>> 2/ objects interacts by sending messages each other >>>> 3/ an OO program is made of interacting objects >>>> I let you find out whether Python meets these 3 definitions - and if >>>> Java does (hint : in Python, everything you can bind to a name is an >>>> object - this is not true in Java or C++). >>> This is correct but it detracts from a more general problem of >>> language "paradigms". >>> Assume you type >>>>>> 2+2 >>> 4 >>> Now you are free to interpret this as a simple, primitive arithmetic >>> operation but you can also claim that 2 sends an __add__ message to 2. >>> Hereby the state of the 2 objects are not altered but a new 4 object >>> is created. OO babble is more impressive isn't it? >>> Actually it is simply wrong in the mentioned case and here is the >>> proof: >>> def foo(): >>> return 2+2 >>> import dis >>> dis.dis(foo) >>> 2 0 LOAD_CONST 2 (4) >>> 3 RETURN_VALUE >>> OO is a heuristic method used to understand the semantics of a >>> programming language. It can also inspire language design but as >>> you've rightly said: jugde yourself and see how far you get with it. >>> Applying OO on interpreter level is by no means a sign of a high >>> quality implementation whereas structuring programs in the large will >>> likely benefit from class based organization and encapsulation. Of >>> course one can also reverse the value hierarchy and find perverse joy >>> in having a pure OO language but apply monkey patching everywhere. I >>> suppose you know which language I'm talking about... >> It sounds like you think that you -can- write OO programs in Python, >> but you don't have to. I agree. > > The whole point of OO is providing high level ( system level ) not low > level ( interpreter level ) semantics. Partitioning a system into > isolated and communicating objects is a strong and important metaphor. > Recently there were some comments on the web that mentioned Erlang to > be pretty much OO in this respect although Erlang is functional and > has no base level notion of an "object". It's even well known that Joe > Armstrong holds low opinions about the entire object business. > > Notice that I believe that the popular meme that OO is "bolted on" > Python has little if nothing to do with OO itself but with API > consistency. When people have to type len(x) instead of x.len() this > breaks their expectations on how the language has to behave. x.__len__()
- Previous message (by thread): Not fully OO ?
- Next message (by thread): Not fully OO ?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list