What is good about Prothon?

has has.temp2 at virgin.net
Fri Apr 30 18:55:32 CEST 2004

"Mark Hahn" <mark at prothon.org> wrote in message news:<Awlkc.36778$Qy.19874 at fed1read04>...
> has wrote:
> > In Prothon, b and c derive state and behaviour from a
> > unless/until it's modified locally (ie on b or c). Changes made to one
> > may or may not show up in another depending on the derived
> > relationship and subsequent changes*,
> I told you before that we had a Self-like copy and asked you then if using
> that would make you happy.  You never answered that question.  Now you've
> posted an example that ignores the Prothon copy (yes, it is spelled exactly
> like the AS copy :)

See my other post for the reason why I did this (yes, it was quite

But to answer your question directly: no, simply adding a copy()
operation (the "trying to please everybody, and ultimately pleasing
no-one" strategy) won't make me happy; I have no use for another C++.

You might think I'm merely being obtuse; trying to give you a bad day
just for jollies. But no; and perhaps a little digression will help
explain why...

Right now you should be sketching out lots of rough ideas quickly and
in the large, critiquing them, throwing some away, experimenting
further with others, critiquing the results of those tests, revising,
reviewing, refactoring those ideas, compacting and simplifying them,
stripping them down as hard as you can to see just how far you can
simplify them, reversing direction and changing tack; and not letting
yourself get blocked in to a single developmental rat-run where you
can only proceed forward on a single, predetermined path.

Or, in short, for every feature added: 1. justify its addition; and 2.
find at least one other feature - preferably more - that can't
adequately justify theirs and strip them right back out again.

This is another lesson I learnt in art school, btw: when working in
clay, one should always build up. Add a bit of clay, step back,
analyse the result. If you add too much or put it in the wrong place,
don't try to carve it flat or smear it into position; instead, cut the
whole lot right back 'to the bone' and start building it up again.

For me, who learnt this lesson very quickly, it was rather depressing
watching the rest of the class, who didn't, plod away day after day,
fighting a losing battle for hours on end with a material they just
couldn't seem to understand as it turned into a buttery caricature
instead of a portrait head.

Meantime, I'm scooting around the room like a madman, never standing
more than a minute or two in front of my piece before stepping back,
or walking away, or going to get drinks from the vending machine. And
each morning I came in, I'd take a long look with fresh eyes at where
I'd got to the previous day, and if I didn't like it, out came the big
knife as I'd chop great gobs off and throw them back in the clay bin.

I think by the end of that class I'd produced two pretty decent busts,
and had already made a start on the third. The better of the two I
completed within three afternoons too, with the bulk of it done in two
and the third spend mostly idling around and occasionally diving in to
tweak a feature here or there.

Now, wood and stone carving I suck at. You get one chance to get it
right, and if you screw up just once you have to start all over again.
Such fear of failure made me nervous and timid - which, considering
the price of each fresh bit of stone, maybe wasn't entirely
unsurprising - and the results were insipid and flat and utterly,
utterly boring.

But clay I love. It rewards excitement and adventure, and encourages
risk-taking and experimentation; the more bold and daring you are, the
more it becomes alive. If you screw up along the way there's no
permanent loss, and the valuable lessons you gain from doing so _far_
outweigh the cost of any time spent. So you work fast and loose, try
lots of different ideas quickly to see where they might go, screw up
often and learn as much by your mistakes as your successes.

Code is like clay. It's so frustrating for me to see programmers treat
it like stone. If you were in my art class I'd hand you a pile of
newsprint and box of charcoal and have you do 30-second sketches for
an hour. Then another hour doing five-minute drawings. And I can
guarantee the if I then set you to do a finished drawing in the
remaining hour the final result would be far, far better than if I'd
given you a whole day - or even week - to work on it.


I'll see if I can get around to answering some of your other questions
later. Meantime, I hope you can find a little time to spend pondering
the above. Who knows, maybe even put what implementation you've done
aside for a bit, and go stroll round the room for a while... maybe
catch some fresh perspective - even surprise yourself. :)

(p.s. My new favourite phrase for the week: "Premature implementation
is the root of all evil." Hope nobody minds!;-)

More information about the Python-list mailing list