Prothon Prototypes vs Python Classes

has has.temp2 at virgin.net
Sun Mar 28 12:28:47 EST 2004


David MacQuigg wrote:
>> Is all this complexity unecessary?

Yup. Scary to realise a good chunk of your hard-won expert knowledge
is essentially worthless make-work, eh? Ah well... c'est la vie. <g>


Joe Mason replied:

>Complexity's ok if it's in the right place

Hmmm... sort of true. However:

1. Complexity is _never_ desireable. (Unless you're deliberately
obfuscating code, which is the exception that proves the rule.)

2. Essential complexity is something you have to accept; in any large
system it's almost inevitable. Hiding this from casual view may a
reasonable compromise in preventing the average user's head from
exploding.

3. Gratuitous complexity should be eliminated at every opportunity,
however. Hiding it is just a kludge and a copout.

4. Often what's seen as essential complexity is actually gratuitous
complexity that nobody's noticed. (Or have noticed, but prefer to keep
schtum about it for whatever reasons of their own.)



> Ed Suominen just posted a situation where classes and instances need to
> be treated separately.
[...]
> So here's one point where the simplification of prototypes actually ends
> up making the user code more complicated than the full Python version.

Not at all. All it shows is that a class-based programming style
doesn't work well in a classless language. Here's a more sensible
solution:

# Library pseudocode

_fooRegistry = []

obj _Foo: # prototype object
    # Foo's code goes here

def Foo(): # constructor function
    newFoo = _Foo.copy()
    _fooRegistry.append(newFoo)
    return newFoo


Dirt simple with not an ounce of class metaprogramming in sight.

To a class-based programmer, prototype-based OO must feel rather like
running down the High Street with no pants on; a wonderfully
liberating experience once you get over the initial embarrassment.
Python's layering of a stiff, complicated, class-oriented programming
model atop such a highly dynamic implementation seems a bit perverse,
as well as a badly missed opportunity. (Needless to say, I'll be
watching Prothon's development with some considerable interest.:)


> But someone else said that prototype-based languages "tend to grow 
> features that mimic class-based ones", or soemthing like that.

One suspects, however, that such languages were getting along just
fine by themselves till the class-based programmers arrived. As with
missionaries, any approaching Java programmers should be shot on sight
or you'll be infested by crappy typesystems and worshipping bloody
generics before you know it. :p

has



More information about the Python-list mailing list