Newsgroups: comp.lang.smalltalk
Path: cantaloupe.srv.cs.cmu.edu!bb3.andrew.cmu.edu!nntp.sei.cmu.edu!news.psc.edu!hudson.lm.com!news.math.psu.edu!news.cac.psu.edu!news.tc.cornell.edu!newsserver.sdsc.edu!news.cerf.net!mvb.saic.com!news.mathworks.com!uunet!in1.uu.net!nntp.crl.com!pacbell.com!amdahl.com!amd!netcomsv!uucp3.netcom.com!slcgate!servio!servio!aland
From: aland@servio.slc.com (Alan Darlington)
Subject: Re: Ok to use #perform:? [was Re: TopHat new -- Smalltalk With Style]
Message-ID: <1995Aug2.181433.7333@slc.com>
Sender: news@slc.com (USENET News)
Nntp-Posting-Host: servio
Organization: GemStone Systems, Inc., Beaverton OR, USA
References: <1995Jul31.210415.28910@slc.com> <rshapiro-0108950804330001@esb.bbn.com> <3vloke$lbp@senior.nectec.or.th>
Date: Wed, 2 Aug 1995 18:14:33 GMT
Lines: 42

mcarthur@mozart.inet.co.th (Mcarthur Robert) writes:
> R Shapiro (rshapiro@bbn.com) wrote:
> <heavy snipping>
> | True, but so what? You get dynamic behavior, you give up a development aid
> | (find-senders of course adds nothing at run time). Seems like a fair trade
> | to me. If I wanted to accept the limitations of a static universe, I'd use
> | C++ and get the advantages of efficiency.
> 
> | rs/rshapiro@bbn.com
> 
> I must say I agree altogether about the usefulness of #perform:.  It is
> *exactly* the right thing to use for certain (admittedly rare) purposes. 
> All of the noise about finding senders mostly booils down to religeous
> purity rather than cogent reasoning... try doing a browse of all senders
> of #perform: some time, and you'll find there just aren't that many places
> where it's used in system code, and your own (again, rare) uses will be
> easily recognizable. 
> 
> Cheers
> --Bob McArthur
>   NetSiam Ltd, Bangkok

Believe me, I am NOT religious!!!   :-)
When formerly a developer of a commercial Smalltalk application with
more than 1000 classes, I relied HEAVILY on "senders" when trying to
understand and fix (or extend) other people's code (or even my own -
my memory seems to be mostly short-term these days :-).  I don't have
the code available, but I would guess that our uses of #perform:
numbered in the 100s, and re-implementations of #doesNotUnderstand:
about half that.  I suspect that even experienced Smalltalkers would
have to spend a lot of time before understanding this code.  :-(

On the other hand, we couldn't have done our work without it (unless
we had twice as many programmers and less restrictive deadlines :-).
For three years I maintained and enhanced this program (used by more
than a dozen Fortune 100 companies) by myself - I think this shows
that the basic design was pretty good.

Cheers to you
Alan


