[Xotcl] TIP #257: Object Orientation for Tcl

Will Duquette will at wjduquette.com
Tue Sep 27 02:05:02 CEST 2005


On Sep 26, 2005, at 1:36 PM, Kristoffer Lawson wrote:

>> Jeff Hobbs wrote:
>>
>>
>>> I know that many on this list will be interested in the
>>> following TIP just propsed:
>>>     TIP #257: Object Orientation for Tcl
>>>     http://www.tcl.tk/cgi-bin/tct/tip/257
>>> This is indeed based on xotcl, but it is *not* xotcl.  There
>>> are good reasons for this overall (but not necessarily for
>>> each individual change ;) ).  I would like xotcl users who
>>> are interested to please read this TIP carefully, but to
>>> bear a few items in mind:
>>>
>>>
>>
>> I feel slightly uneasy that debate about this TIP is occurring  
>> here and on the wiki, and yet notification of its existence hasn't  
>> even reached tcl-core yet. I have written some fairly substantial  
>> notes on the TIP at http://www.cs.nott.ac.uk/~nem/newoo.txt .  
>> These notes were supposed to be a post to tcl-core, but I don't  
>> want to further pre-empt the TIP publication.

> Read through these commands. I probably agree on some points and  
> disagree on others. I agree that the rationale behind [define] is  
> fuzzy. I find the XOTcl model OK in that respect, but I don't have  
> anything much against the TIP proposal either, and I do think it is  
> a neat way of adding many methods in one go. Having syntax which  
> attaches them to one another.

The point of [define] is simply that we want to be able to
create objects which have a limited set of subcommands.  Note
that there's a distinct difference between writing an OO-API
using a particular OO-framework for other users of that
framework, and writing an object-style API for general users,
many of whom might not care about the OO-framework at all.
In the first case, you want to include all of the OO-framework's
bells and whistles, because you expect your users to want to
take advantage of them.  In the latter case, you want to keep
the API simple, clean, and easily documented.

[define] lets us do both.  With [define] "instproc" and its
siblings aren't subcommands of our objects--but at the same time,
"instproc" and its siblings are available to every user who
cares about them.

It's really an aesthetic issue rather than a technical
issue; I find many OO APIs to be terribly cluttered (Java,
I'm looking at *you*) such that it becomes hard to tell
which methods are important amid all of the ones which
are only occasionally of interest.

Will

-------------------------------------------------------------
        will -at- wjduquette.com | Catch our weblog,
http://foothills.wjduquette.com | The View from the Foothills




More information about the Xotcl mailing list