[Fwd: Re: Intent (was: Re: Lists, Tables, Psets)]

Kyle Lahnakoski kyle@arcavia.com
Fri, 31 Mar 2000 22:21:48 -0500

Jason Marshall wrote:

> Not only is the code more readable by a human (set aside arguments that
> 25 wpm typists may not be able to cope with the verbosity, as these can
> be addressed by modelling tools and the like), but as you say, it's more
> readable by the code optimizer in the system.  If you for instance
> declare
> that you intend to visit every item in a list or container, and perform
> an action on it, this is easier for the optimizer to sort out than if
> you
> write 50 different minor variations on an iterator idiom by hand, some
> with unintentional out of bounds bugs that you didn't bump into (yet).
> And it's easier for the compiler to parrallelize it on the target
> hardware if the facilities are available (MPP, vector math, etc).
> Some of these issues can be handled at the language level, and some at
> the API level.  The important thing when designing is not to ask, 'how
> do I?' but 'Why do I?'.  Why do I create a file?  Because I want to
> keep some persistent information.  Why do I have locks?  To perform
> atomic operations on data that is seen by multiple threads of execution.
> Why do I need explicit resource allocation/deallocation?  I dunno.
> Why do you?  Are the builtin facilities failing in some serious way?

You put it so well.  It has been what I was trying to say, but obviously
lack the skill to do so. 

> the programmer can just remember that detail", then you're definitely
> barking up the wrong tree.  You're just writing yet another programming
> language, not a metaprogramming language.

Yes, I was getting sidetracked here.  But as I have been trying to
imply: what is good for the human is good for the compiler because of
this meta information.

Excellent ideas you have.

Kyle Lahnakoski                                  Arcavia Software Ltd.
(416) 892-7784                                 http://www.arcavia.com