Wow! Talk about an effective argument. I digest this into:
"You said.... and Traits supports this, so it is good." It's nice
(and sobering) to know that people actually read my blather.
And regarding the bit about brittleness, I agree that in general,
smaller is better, but sometimes in a world with hundreds of
people working on the project it is better to "make your own"
than to use the one provided in the common library. Really, we
do have a common library and there are some people always working
on it and it is always a source of headaches (at least from my
perspective), and invariably, "my own" is smaller and simpler
than the Swiss Army Knife the library guys are trying to provide
as a one size fits all solution.
I know I have seemed to be very opposed to Traits, but I am not so
opposed to the concept as I am to the runtime cost of accessors.
If I could wish for only one single improvement to Squeak, it would
be better send performance. I've looked at this problem on and off
for a while now, but as for you, Squeak is mostly a personal thing
for me (DSP and media streaming for VoIP is the day job), and I
haven't yet come up with anything better than what Squeak currently
has. My best ideas just take too much memory to be acceptable (to me).
It still bothers me that we have telephones now with megabytes of
RAM in them. There's more computer in the phone on my desk now than
there was in the computer on my desk not so many years ago.
Anyway, Thank You.
||Jimmie Houchin <jhouchin <at> cableone.net>
Sent by: squeak-dev-bounces <at> lists.squeakfoundation.org
08/31/2005 03:25 PM
Please respond to The general-purpose Squeak developers list
To: The general-purpose Squeak developers list <squeak-dev <at> lists.squeakfoundation.org>
Subject: Re: Traits approaching mainstream Squeak
Dean_Swan <at> Mitel.COM wrote:
> The other idea that I was trying to get across is that code reuse is a
> double-edged sword. While it can reduce maintenance effort, and improve
> the overall quality of a code base, it also makes the codebase more
> brittle by introducing heavily loaded single points of failure.
This doesn't make sense to me.
Increases quality and makes more brittle.
I would think that better quality code...
More readable, understandable code...
Potentially smaller set of code...
Would lead to more robust and less brittle.
Now as to single point of failure. Uh, maybe.
But find and fix and it then should be fixed.
And again leading to more robust.
> So I guess I'm still looking for somebody to show me the "good-ness" of
> Traits, because so far it looks interesting, but like a lot of work for
> a small increase in code reuse and a (hopefully) small decrease in
> performance, and we've been seeing a "small" decrease in performance
> with each successive version of Squeak for way too long now. This is
> (of course), only my opinion. I could certainly be in the minority here.
> Traits shows clear value in refactoring, but refactoring is "code
> cleaning", and it doesn't happen much in the real world. In fact, it is
> sometimes "forbidden" because it is seen as a high risk to touch code
> that is "field proven".
Now, I have no real world (commercial) development experience. I play
with Squeak as my preferred environment for my projects. So with that
disclaimer, take what I say for what you paid. :)
Squeak has had 20-30... years of single inheritance experience in it.
How much of Squeak's code is older than your project?
How much of Squeak's code is older than developers on your project?
The point is that Squeak is a long lived, malleable, living program.
Much is spoken of the cruftiness or uncleanness or parts of Squeak. This
is despite the fact or due to the fact that it is so long lived. In this
place and this situation, improved refactorability would be a great
asset. It seems to me that is greatly desired by the users and
developers of Squeak that it be refactored so that the original vision
as expressed by Dan Ingalls and as stated by you here in this message:
I personally am opposed to gratuitous creation of new classes. I
think it is contrary to one of Dan Ingalls' original design principles
of making the whole system simple enough to be understood by a single
person. Squeak already defines about 1200 different classes in the base
image, which I think is an awful lot of different "kinds of things" to
I don't know, but maybe Traits can help with the problem you describe
above. Maybe in introducing the flexibility of Traits we can reduce some
bloat without reducing features and functionality.
I can only speak from my experience. But I constantly refactor my code.
Why, because I seldom get it right the first time. I write the code and
then run the code. Frequently it doesn't behave as I thought in my mind.
Why, because my understanding of the problem was incomplete. As my
understanding grows, I change, modify and refactor my code. That may or
may not be very professional, I can't say. But I don't think it is too
uncommon. Squeak makes such a process less painful. Traits may further
aid such processes.
As for C++, it isn't Squeak. It isn't alive. Its frozen.
C++ seems to me in its adding of flexibility added complexity.
Here Traits seek to add flexibility while increasing simplicity.
I can't speak for your project. But it doesn't seem like simplicity,
agility, or understandability of the system is a priority. Hopefully it
is so for Squeak. And thus I speak my case as I understand it for Traits.
I would think that many, many, many commercial projects would benefit
greatly by many of these practices which simplify and refactor code.
Code seems to often live longer than expected and often having
unexpected consequences. Refactoring and having clean code is of great
value. Or at least it should be.
I like Squeak because it is a living, organic system. I have used too
much dead software. Software that was fixed, frozen and unmalleable.
Incapable of doing what I wanted because the program had no vision. Oh
that all my software was in something like Squeak.
Enough ramblings. My apologies for the run-on-ramblings. ;)