Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #41567

Re: OOPv2: [Was: Message passing syntax for objects]

Path csiph.com!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!rt.uk.eu.org!newsfeed.xs4all.nl!newsfeed2.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail
Return-Path <chris@rebertia.com>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.000
X-Spam-Evidence '*H*': 1.00; '*S*': 0.00; 'python,': 0.02; 'subject:: [': 0.03; 'languages,': 0.04; 'model,': 0.05; '(using': 0.07; 'javascript,': 0.07; 'objects,': 0.07; 'prototypes': 0.07; '(its': 0.09; '2004': 0.09; 'abstraction': 0.09; 'bits.': 0.09; 'high- level': 0.09; 'impose': 0.09; 'logic': 0.09; 'objects.': 0.09; 'referenced': 0.09; 'switches': 0.09; 'vast': 0.09; 'cc:addr :python-list': 0.10; 'itself.': 0.11; 'language,': 0.11; 'language': 0.14; 'encoding': 0.15; 'java,': 0.15; 'cc:name:python list': 0.16; 'consciously': 0.16; 'dump': 0.16; 'echo': 0.16; 'janssen': 0.16; "languages'": 0.16; 'made,': 0.16; 'paradigm.': 0.16; 'prototypes.': 0.16; 're-usable': 0.16; 'refactoring': 0.16; 'simplifies': 0.16; 'structs': 0.16; 'subject:Was': 0.16; 'thread.': 0.16; 'wrote:': 0.17; 'basically': 0.17; 'prototype': 0.17; 'shape': 0.17; 'discussion': 0.20; 'aspect': 0.22; 'focusing': 0.22; 'machine.': 0.22; 'techniques,': 0.22; 'universal': 0.22; 'cc:2**0': 0.23; 'programming': 0.23; "python's": 0.23; 'idea': 0.24; 'machine': 0.24; 'cc:addr:python.org': 0.25; 'header:In-Reply-To:1': 0.25; 'role': 0.26; 'c++': 0.27; 'have,': 0.27; 'replace': 0.27; 'message- id:@mail.gmail.com': 0.27; "doesn't": 0.28; 'went': 0.28; 'chris': 0.28; 'post': 0.28; 'attempting': 0.29; 'existence': 0.29; 'far.': 0.29; 'oop': 0.29; 'spam,': 0.29; 'yes.': 0.29; 'objects': 0.29; 'source': 0.29; "i'm": 0.29; 'classes': 0.30; 'figure': 0.30; 'code': 0.31; 'gets': 0.32; 'problem.': 0.32; 'towards': 0.32; 'hopefully': 0.33; 'instead,': 0.33; 'programming,': 0.33; 'traditional': 0.33; 'problem': 0.33; '(c)': 0.33; 'languages': 0.33; 'another': 0.33; 'received:google.com': 0.34; 'architecture': 0.34; 'wrong': 0.34; 'compared': 0.35; 'direction': 0.35; 'otherwise.': 0.35; 'solving': 0.35; 'subject:]': 0.35; 'open': 0.35; 'pm,': 0.35; "won't": 0.35; 'there': 0.35; 'really': 0.36; 'except': 0.36; 'but': 0.36; 'compare': 0.36; 'programmers': 0.36; 'too': 0.36; 'previous': 0.37; 'far': 0.37; 'well.': 0.37; 'data': 0.37; 'subject:: ': 0.38; 'mark': 0.38; 'comment': 0.38; 'some': 0.38; 'things': 0.38; 'several': 0.39; 'instead': 0.39; 'back': 0.62; 'personal': 0.62; 'more': 0.63; 'within': 0.64; 'fun': 0.64; 'gone': 0.64; 'making': 0.64; 'here': 0.65; 'our': 0.65; 'taking': 0.65; 'evolution': 0.65; 'vehicle': 0.65; 'virtually': 0.65; 'life': 0.66; 'applying': 0.69; 'car': 0.69; 'physical': 0.69; 'internet': 0.71; 'marketplace': 0.78; '2013': 0.84; 'captures': 0.84; 'complex,': 0.84; 'fitting': 0.84; 'presumably': 0.84; 'promoters': 0.84; 'roots.': 0.84; 'sender:addr:chris': 0.84; 'simulation.': 0.84; 'suggests.': 0.84; 'taxonomy': 0.84; 'qualities': 0.91; 'widespread': 0.91
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=rebertia.com; s=google; h=mime-version:x-received:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=y9wn9tWzbWWY5gBFqoZgdroUDTWLuUGDVdloEfgZ9zo=; b=GJIHPtCREM1XA5iEjLDf8l6Bn6Wweb35ODBV1/w2qrCI7swGjNorS+23S7Odut/sn2 MUQ2X4ozK916GZadFL/dxosLplEkgJrywF0Fsa35OQbKKsv5p+OltNeeG0CwF9eUJxvf yF2AHoXc8TcmNVVo0HjzFyn48EtdwXxkmeURo=
X-Google-DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-received:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :x-gm-message-state; bh=y9wn9tWzbWWY5gBFqoZgdroUDTWLuUGDVdloEfgZ9zo=; b=ZuERADdUIzeC0p9LN3Ai+C14CDKs6iJvUP06g4LlLwtTrX/PzZ9vjFWw/+soAPrJzN Bq6zVvQCEufd5vY+Ybl1oPvrFrxzJIz4TplE8DGDzAPIwhG4Q4NRgZH5yTnF3lMmI9K3 jvr9kz9jn2YOV6RXssijJAG05XcxUcuQjhrF4dcaqJh6w0uLzY3+OhgAdnV9Cv46LR1l gPyC/91DCq/I7VTLJHUSYbQatvkCtuy61iyarrqD/w0ycZp1vJS0FUP/Yfno1Be1haA1 muGQScGoKYRlnY1RCBImJSCfz17RO4eow5pnyGIBmpZu7K1YKI0GTiTH1rMHn+mjiSNy rnEw==
MIME-Version 1.0
X-Received by 10.50.57.225 with SMTP id l1mr3374028igq.71.1363757999061; Tue, 19 Mar 2013 22:39:59 -0700 (PDT)
Sender chris@rebertia.com
In-Reply-To <CAMjeLr8E8RyYFtEky5PAqe_gEHD_rFgAxPomW4zs_6H852975g@mail.gmail.com>
References <CAMjeLr8E8RyYFtEky5PAqe_gEHD_rFgAxPomW4zs_6H852975g@mail.gmail.com>
Date Tue, 19 Mar 2013 22:39:58 -0700
X-Google-Sender-Auth OAS3amsJJinpMCxh84gDLlIl3bU
Subject Re: OOPv2: [Was: Message passing syntax for objects]
From Chris Rebert <clp2@rebertia.com>
To Mark Janssen <dreamingforward@gmail.com>
Content-Type text/plain; charset=UTF-8
X-Gm-Message-State ALoCoQle214kiHq2Qlv+s+6jPYJZ3bVmnpIo3EW44m0JSCEsYk0dI54qbO2kMZvAZ+aKebTm30LO
Cc Python List <python-list@python.org>
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.15
Precedence list
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <http://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list/>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <http://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
Newsgroups comp.lang.python
Message-ID <mailman.3546.1363758330.2939.python-list@python.org> (permalink)
Lines 85
NNTP-Posting-Host 2001:888:2000:d::a6
X-Trace 1363758330 news.xs4all.nl 6880 [2001:888:2000:d::a6]:42513
X-Complaints-To abuse@xs4all.nl
Xref csiph.com comp.lang.python:41567

Show key headers only | View raw


On Tue, Mar 19, 2013 at 9:46 PM, Mark Janssen <dreamingforward@gmail.com> wrote:
> Hopefully this won't be considered mail spam, but another quora answer that
> gets to the idea I'm after:  http://qr.ae/TMh7A
>
> Reposted here for those who don't have accounts:
>
> Q. Is it time for us to dump the OOP paradigm? If yes, what can replace it?
>
> When I was using C++ and Java, more of my time was spent fitting the problem
> to languages' OO paradigm than actually solving the problem.
> When I used Python, I found I was focusing on the problem more compared to
> other languages, but still that fitting aspect remained.
>
> I am looking for a language design perspective answer, where we can compare
> logic programming, functional, etc approaches and really see if the OOP
> still fits/necessary and do we need to evolve towards a better paradigm.
>
>
>
> A.  Yes.  OOP was the evolution of applying abstraction to a programming
> language, to the machine, having to remember that we used to deal very
> concretely with switches and bits.  Looking back, it can be seen to having
> gone too far.
>
> We don't need objects.  Programmers don't model physical things within the
> computer, except in the limited domain of (generally game) simulation.   It
> misinformed the paradigm in the wrong direction as many people found when
> programmers started making vast hierarchies of objects to try to categorize
> reality (Suburu inherits from Car inherits from Vehicle inherits from.....).
> So we went the wrong direction.
>
> What's to replace it?
>
> There was an interesting discussion on comp.lang.python started in 2004 by
> Mark Hahn about prototypes.  (See: Google Groups and Google Groups).   I
> think somehow it captures the idea pretty well.

(Actual links to the referenced discussion(s) would be appreciated.)

> Prototypes are a refactoring of all the explorations that OOP made, taking
> us back to our roots.  From the high-level abstraction of "objects" in the
> computer, back to the simple, understandable (C) structs and then encoding a
> way to shape or "template" data into a form that can take on abstract
> qualities which can then be used in a very general way.  The key difference?
> You're not way up in abstraction-land attempting to impose your personal
> taxonomy into the machine; instead, you're working from the common-ground of
> the machine and co-ordinating a object/data space into existence where other
> programmers can actually use them.   In other words, you're advancing the
> state-of-the-art of data structuring instead of applying some conceptual,
> hyper-personal abstraction into your code and onto the machine.
>
> The result?  Programmers can start making very simple, loosely-coupled,
> universal types and build upwards with other programmers into more and more
> complex, re-usable "mashups".
>
> This will create modularity, agility, and facilitate the evolution of a
> "universal programming space" as well as create the Open Source Culture that
> the Internet needs to re-start itself.

What a crock. Prototype-based languages are a somewhat interesting
alternative model, but IMO they are nowhere near as "game-changing" as
the post suggests. The elimination of classes simplifies the
MOP/metamodel a bit, but AFAICT doesn't improve much otherwise.
If prototypes were so revolutionary, they would presumably be faring
better in the marketplace of ideas (its promoters have been at it
since about as long as Python's have, apparently with less luck). If
you need evidence, look at JavaScript. It is, for better or worse,
among the most popular languages of our time and it is
prototype-based, but virtually no one chooses to make use of its
prototypical nature; almost all projects seem to end up consciously
re-implementing an approximation of traditional classes on top of the
prototype system (using one of several techniques, there seeming to be
no widespread agreement about which one is superior). Even prior to
JavaScript, in orthodox prototype-based languages, there is/was even a
concept of "traits" objects, which basically play much the same role
as classes in traditional OOP.

Also, I cannot for the life of me figure out how you made the abrupt
leap from message-passing to prototype-based OOP.
I echo Mark Lawrence's comment from your previous thread. +1 best
trolling so far this millennium. Have fun with your architecture
astronautics.

Regards,
Chris

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Re: OOPv2: [Was: Message passing syntax for objects] Chris Rebert <clp2@rebertia.com> - 2013-03-19 22:39 -0700

csiph-web