[squeak-dev] Design Attitudes

Chris Muller asqueaker at gmail.com
Fri Dec 17 18:06:41 UTC 2010


You must really hate cats...   :)

On Fri, Dec 17, 2010 at 12:01 PM, Dale Henrichs <dhenrich at vmware.com> wrote:
> Chris,
>
> You make some very good points ...
>
> Though, if you look at the number of classes that I've used in Metacello,
> you might change your tune about how many classes would be in my gofer
> implementation:)
>
> I like to say that "there is more than one way to skin a cat, but in the end
> the cat is skinned". So I hate to be critical of _how_ someone decides to
> skin the cat, when they are the one doing the work and _maintaining_ the
> project.
>
> This discussion reminds me that in the late 80's and early 90's there was a
> bit of a trend where people were using Smalltalk to explore a problem space
> and evolve a design to the point where someone else could come in and
> implement the final solution in C.
>
> Once you've discovered the key to a good API there are any number of ways to
> implement that API ... However, when you are in the process of searching for
> a good API and understanding the problem space treating classes as if they
> are free is a good way to give your implementation the room to grow in the
> directions that it needs to to find that sweet spot and there's nothing like
> Smalltalk for this work.
>
> Once you've understood the problem the question then becomes "now that I
> know the solution, how would I implement it?" versus "now that I have a
> solution that is functional, is my time better spent doing something else?"
>
> I'm not saying that this what Lukas is/was thinking, but it works for me.
> Monticello was badly in need of both a scripting API _and_ and programming
> API (which is how Metacello uses Gofer) and Gofer filled both of those
> requirements, so as far as I'm concerned the "cat got skinned".
>
> The appeal of Smalltalk to me is that it is feasible to evolve systems using
> Smalltalk. As a software system evolves the assumptions that were made early
> on are no longer valid, so the challenge always seems to become "how do I
> add new functionality (and rewrite large chunks of the system) while
> maintaining fidelity to the original API"...
>
> Of course, there are multiple answers to that question:)
>
> Dale
>
>  On 12/16/2010 08:41 PM, Chris Cunnington wrote:
>>
>> This whole exchange about Gofer has been interesting. I don't just think
>> it's a random bump between two programmers. I think it's about two
>> programmers who have different attitudes towards design. Do you build a
>> tool for a specific purpose and no more? Or do you build it with the
>> potential to be readily adapted to a future purpose?
>>
>> I believe Dale when he says that if you don't build all this Lukas-esque
>> redundancy that a design is hard to modify. That you'd get locked up in
>> the methods, when you want the flexibility of a design with lots of
>> classes. But remember - Dale didn't design Gofer. He adapted it. Would
>> he have built it with the academic rigor that is clearly Lukas's metier?
>> Would his boss stand for that kind of fiddling? I'm willing to bet Dale
>> benefits from this design attitude, but that he wouldn't do it himself
>> from scratch.
>>
>> If people want to look for a difference between Squeak and Pharo, I
>> think this is emerging as a possible difference. Neither is right or
>> wrong. If you need a tool for a specific purpose and you're skilled --
>> you can build one in half an hour from scratch. Do you want to take five
>> times that long to build something with more classes, so you can save
>> time in the future by having to do less in the future?
>>
>> Neither is right, but I have sympathy for people who have strong
>> feelings one way or another. For me Seaside suffers from an explosion of
>> classes that I've begun to loathe. I don't want a framework that can be
>> adapted to anything. I want one that does one specific thing. That's
>> all. And Pier, as far as I can tell, does nothing. Zero.
>>
>> Some people will baulk at that statement. And I'm sure that if I
>> understood it better, I'd see that Pier can do anything. And I'd only
>> have to make a small series of adjustments to harness real power. I
>> don't want that, though. I don't want to have to guess what the code is
>> supposed to be for.
>>
>> When I read strange code I want to have it tell me in bold terms what
>> its clear, stark intent is. I want it to be as blunt as I am. I want the
>> code to scream at me: "This is what I do!" (Actually, I like code that
>> says things like: "This is what I do, and if you don't like it, then you
>> can...")
>>
>> And now that we've learned this interesting lesson, let's now resume
>> detente, Perestroika, Entspannung, whatever.
>>
>> Chris
>>
>
>
>



More information about the Squeak-dev mailing list