Re: What databases have taught me

From: Bruno Desthuilliers <onurb_at_xiludom.gro>
Date: Fri, 23 Jun 2006 17:41:40 +0200
Message-ID: <449c0bb5$0$11196$636a55ce_at_news.free.fr>


erk wrote:
> Erwin wrote:
>

>>There's always SmallTalk, of course.  Maybe you disagree, but I've
>>heard more than one self-proclaimed OO-purist declare SmallTalk to be
>>the only *true* OO language.  And that alledgedly "one and only true OO
>>language" is, to the best of my knowledge, a thousand times more
>>strictly hierarchical than Java or C-with-any-suffix.

>
>
> I don't know Smalltalk, but from those who do, it offers many
> functional features as well - lexical closures, first-class functions,
> and some others I can't recall offhand. These programmers told me that
> those, as much as the O-O, are key to Smalltalk's power. There's none
> of the bizarre and limiting division (class/function/primitive/...) in
> languages like Java, and it's the higher-order operations that give
> leverage to the O-O. So if Smalltalk is "pure O-O", perhaps it's the
> fact that it supports some other "paradigms" (sorry) that gives it such
> glowing reviews.

Quite possible - I use Python instead of Smalltalk, but it does have all this (ie, the somewhat functional parts) too, and that's a great part of what make it so usable IMHO. Python is OO almost all the way down (no 'primitive' types, functions and classes are objects too etc), but while you can't avoid *using* objects when programming in Python, nothing forces you to actually use the class statement.

And objects are in no way tightly coupled to their classes - it's perfectly legal to add/delete/replace attributes (including methods) on a per-object basis,, to dynamically modify a class, to dynamically create classes at runtime, or even to dynamically change the class of an object (which can be tricky and happens to be of restricted practical use, but still can be handy). I really don't feel like being "inevitably and irrecovably imprisoned in a hierarchical strait-jacket", to quote the OP.

-- 
bruno desthuilliers
python -c "print '_at_'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb_at_xiludom.gro'.split('@')])"
Received on Fri Jun 23 2006 - 17:41:40 CEST

Original text of this message