[REBOL] Re: Enabling the REBOL community
From: joel:neely:fedex at: 9-May-2001 14:21
Hi, Volker,
Volker Nitsch wrote:
> Well, iam a rebol-recycler...
> I can't remember a script which i havent changed a bit to fit my
> needs.
> So »download and use« would not work in my case.
>
> On the other hand, iam a dirty programmer in rebol,
> more experimenting than planning.
>
Sure, I understand. But to me, that's the difference between doing
R&D and production-ready software engineering (and I do both).
When I'm in R&D mode, I fiddle and tweak and stick in debug stuff
to see what's going on (or to see what's NOT going on ;-). In
that mode, there's certainly a role for cut-and-paste. However,
once a unit of code is working (as far as I can tell at that point)
I want to be able to re-use it as a black box, with no cut/paste
effort and without messing with its innards.
Finally, when using it in mode two above, if I do find something
that needs fixing/improving/enhancing, I want to be able to do so
with neither breakage of existing usages nor the need to remember
where I used it and re-cut-and-paste to propagate the changes.
(Note that I can't simply use grep to do that remembering for me,
as I have code in multiple directores on multiple boxes.)
Not to belabor the point, but I'm perfectly happy for cut/paste
to exist for some purposes (and do it sometimes myself) but I
consider it totally inadequate as a basis for large-scale software
engineering involving multiple boxes, platforms, projects, people,
and contributors.
The last time I had work done on my house, the carpenter went to a
lumber store (a known "place") and bought some standard,
off-the-shelf parts with known characteristics and installed them.
He did have to trim a couple of pieces of molding that fit around
the door, and that's OK. However, I would have been VERY annoyed
if he had chopped down a tree, rip-sawed it, planed it into boards,
build a gluing jig, dug up some sand, melted it into glass, and
assembled all of that into a hand-built door. Those can be bought
from the store and used as delivered.
> I accept your system, but for me that is java:
>
Let me suggest instead that my model here is Smalltalk; there's
one OrderedCollection class, used throughout the system. If you
need a variant of it, you subclass it and use that subclass. If
you need to modify it (e.g., you discovered a way to speed up
an internal hashing function, or some other such improvement),
you modify the one copy and all usages of it from that point
forward get the benefit of the improvement.
What one DOESN'T do is keep cloning the system image to make
different versions with slightly different variations on
OrderedCollection, with all the overhead (storage-wise and
mental-wise) that would be required,.
> It works -hm- if you are very experienced with designing
> and spend some time in it.
>
IMHO the best way to get experience in design is to have to
do so. Reminds me of the an old saying,
Good judgment comes from experience;
experience comes from bad judgement!
> Its not so usable with reusing ad-hoc-scripts.
>
Well, if you talk to almost anyone in the Smalltalk user
community, I suspect they'd tell you that Smalltalk is very
good BOTH for ad-hod R&D and for production development. I
know that the Perl community would make the same assertion
for Their Favorite Langage.
I don't want to forbid anyone the right to experiment, play,
and cut-and-paste. I just don't want to be told that I'm
required to do so. I strongly feel that advancing beyond
that level will help foster the wider use of REBOL.
Thanks for the stimulating discussion!
-jn-