interactive help on the base object

Ned Batchelder ned at nedbatchelder.com
Mon Dec 9 11:59:29 CET 2013


On 12/9/13 12:11 AM, Steven D'Aprano wrote:
> On Sun, 08 Dec 2013 15:01:59 -0800, Mark Janssen wrote:
>
>> On Sun, Dec 8, 2013 at 2:33 AM, Steven D'Aprano
>> <steve+comp.lang.python at pearwood.info> wrote:
>>> On Sat, 07 Dec 2013 20:21:06 -0800, Mark Janssen wrote:
>>>
>>>>>>> Is it just me, or is this basically useless?
>>>>>>>
>>>>>>> class object
>>>>>>>   |  The most *base* type
>>>>>>
>>>> [[Terry Reedy:]]
>>>>> How about something like.
>>>>> The default top *superclass* for all Python classes.
>>>>
>>>> How 'bout you foo<l>s just admit that you didn't realize you've been
>>>> confused this whole time?  (It *is* possible isn't it?)
>>>>
>>>> Mr. Ewing says "base" has to be interpreted as an *adjective* because
>>>> otherwise it would mean the BOTTOM (like the BASE of the pyramid),
>>>> while Terry responds that it is the TOP (*super*class).  Earlier,
>>>> Steven D'Aprano wanted to argue that this distinction was irrelevant,
>>>
>>> What are you talking about? Until this very post, I haven't made any
>>> comments in this thread.
>>
>> It was a few months ago.  You do know what I'm talking about because you
>> just expounded with the exact same argument below.  It's like a broken
>> record.
>
> While I am gratified that you apparently memorise and obsess over things
> I wrote months ago, I'm sorry to tell you that I wasn't lying when I said
> that I didn't know what you were talking about. I had no idea that you
> were referring to a completely different conversation, nor do I recall
> every post I write here.
>
> If I repeated the same argument, it is because the argument is still
> valid. Drawing the root of the tree at the top of the page is just a
> convention, just driving on the left side of the road, or calling the
> elected head of state "Prime Minister". There are other ways to do such
> things which are equally valid, and so long as both parties agree on the
> convention, it doesn't matter whether you write from left-to-right like
> in Australia, right-to-left like in Egypt, or alternate like in Israel.
>
>
>> (Now if *I* sound like a broken record, it's because no seems
>> to see the obvious, but carry on.)
>
> It must be such a trial to be the only sane man in a world gone mad.
>
>
> [...]
>>> What matters is the relationships between the entities, not the
>>> specific direction they are drawn in relative to some imaginary
>>> absolute space. [yadda, yagni, yadda]
>>
>> But, there IS A DIFFERENCE.  Let me explain the concept of a object
>> model (or "type model" if you prefer).
>>
>> In a family inheritance tree,  there is this difference -- called the
>> "calendar" --  which imposes an ordering which can't be countermanded by
>> flipping your silly chart around.  You made a bullshit example to simply
>> argue a point and *fooled yourself* into ignoring this.  Yes?
>
> No. You haven't explained anything, you have merely made an assertion
> with no supporting evidence at all.
>
> In a family tree of ancestors and descendants, the relationship being
> draw is time-based. Ancestors exist before descendants. Descendants are
> derived in some way from ancestors, not the other way around. We all
> agree that your father existed before you. The temporal direction of the
> relationship is absolutely fixed, past before present, ancestors before
> descendants. We can agree on this.
>
> Explain to me this: what (apart from mere human convention) imposes the
> ordering "past must be at the top of the page"?
>
> If you are reading this as email, your mail client very likely has an
> option to sort message in order that they were received, either most-
> recent at the top or oldest at the top. Do you really mean to imply that
> one of those is logical and the other is delusional?
>
>
>> Likewise, WITH A COMPUTER, there is a definite order which can't be
>> countermanded by simply having this artifice called "Object". If you
>> FEE(L)s hadn't noticed (no longer using the insult "foo"s out of respect
>> for the sensativities of the brogrammers), this artifice has just been
>> *called on the floor* with this little innocent question that fired up
>> this discussion again (don't hate the messenger). Again:  people
>> entering the community are pointing out a problem -- that Object is both
>> trying to be the BASE and the SUPERclass of all objects.
>
> How is this a problem? They mean the same thing.
>
> A television is both an appliance and a device. object is both the base
> class and a superclass of all other classes.
>
>
>> CS554: A type/object *model* has to define the relationship of these
>> nice abstractions so that they can be mapped to the *actual
>> concreteness* of the machine.  And there, bro, there is an ordering.
>
> Yes, the ordering is that the subclass is derived from the superclass.
> Nobody disputes that. But we can show that relationship using any
> convention we like:
>
>
> superclass -> subclass
>
> subclass <- superclass
>
> "superclass extended by subclass"
>
> "subclass extends superclass"
>
> superclass
>> subclass
>
>
> subclass
>> superclass
>
>
> Python syntax:
>      class MySubclass(MySuperclass): ...
>
>
> Smalltalk syntax:
>      MySuperclass :subclass #MySubclass
>
>
> Java syntax:
>      class MySubclass extends MySuperclass {...}
>
>
>
>> You're not going to magically flip the hierarchy so that your bitless
>> Object becomes a machine word that is the base of all your types.
>
> You seem to be labouring under the delusion that inheritance, which is a
> high-level concept which only applies to objects, goes "all the way down"
> to low-level concepts like words and bits.
>
> Objects do not *inherit* from bits. They are *composed* of bits.
>
>
>> You've
>> been fooled by the magic of the Turing Machine.   The modern computer
>> mollifies you with the illusion of "total abstraction" where there are
>> no bits or 1s and 0s involved, but yea, it did not turn out that way.
>> (Note bene: as a comparison, C++ is very UNAMBIGUOUS about this fact --
>> all objects inherit from concrete machine types, which is why it remains
>> important, *despite* being one of the worst to do OOP in.  Its *type
>> model* is probably the most clear of any object-oriented language).
>
> You haven't actually programmed in C++ have you?
>
> There's no shame in answering that you haven't. I've never programmed in
> C++. It's on my to-do list, after giving myself an appendectomy with a
> dull rusty knife and just ahead of buying the complete collection of
> Justin Bieber albums. But even I know that you cannot inherit from native
> types, on account that they aren't objects.
>
>
>>> Likewise it doesn't matter whether we draw class hierarchies from the
>>> top down or the bottom up or even sidewise:
>>
>> Have you caught it by now, friends:  IT MATTERS TO THE COMPUTER.
>
> How the hell does the computer know which way I draw my class diagrams?
>
>
>

And the cycle continues:

1. A thread mentions some fundamental aspect of computing.

2. Mark Janssen jumps in to hint that we are all confused, and he knows 
how things should really work, with no details.

3. The discussion expands to the point of Mark making some claim which 
sounds close to a truth, but seems actually wrong ("It matters to the 
computer").

4. Reasonable people try to engage in an actual discussion of what was said.

5. (Coming next) Mark ignores the bulk of the discussion, picks out one 
detail, and continues making snide and incorrect remarks, skittering 
away from the light of reason.

Maybe we could just not?

-- 
Ned Batchelder, http://nedbatchelder.com




More information about the Python-list mailing list