chromatic chromatic at
Thu Jan 18 13:56:42 GMT 2007

On Thursday 18 January 2007 00:10, Luis Motta Campos wrote:

> On Jan 17, 2007, at 10:51 PM, chromatic wrote:

> > Indeed, it would have been nice if someone who actually understood
> > OO had looked at the documentation for Perl 5 sometime between perhaps
> > 1994 and 2004.

>    Why?

>    <funny>It would be yet another software engineer killed by heart
> attack... </funny>
>    You're suggestiong  that someone needs to review those documents,
> or that someone should explain me (a programmer that just believes in
> OO, but don't actually understands it) how its supposed to work?

>From 1994 to 2004, the object orientation documentation (especially of the 
UNIVERSAL base class) had, at best, a passing familiarity with OO concepts 
such as Liskov substitutability, polymorphism, and inheritance.  I'm not even 
that pleased with its understanding of methods, for goodness sake, and it's a 
real trick to have a working object system without passing messages.

1) Why does ref() even exist on objects?  Where was Scalar::Util::blessed() 
for so many years?

2) Why do so few people believe that you can, or should, override isa() and 

3) Where was DOES()?  (Okay, now this one is a nitpick.)

4) Who was the first person to recommend the use of UNIVERSAL::can() or 
UNIVERSAL::isa() as a function, and does that person believe that passing 
structs as the first parameter of C functions gives you Smalltalk-quality OO?

5) Has the documentation heard of a consistent, publishable interface?  How 
about separation of interface from implementation?  (Some people still 
believe that can() and AUTOLOAD() are incompatible.  There's your answer.)

6) Did no one really notice that SUPER::some_method just plain doesn't work 
like you might think a dynamic language should work?  (Hey, Smalltalk is all 
about the namespace in which you call a method.  It's like a scary tattoo.)

7) Don't even get me started on the "It's a function!  No, it's a method!" 
mess of

8) Look, the keys of my blessed hash overlap between parent and child!

9) Global variables @ISA fun!!!

-- c

More information about the mailing list