[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Congratulations/Criticism
- To: James McCartney <asynth@xxxxxx>
- Subject: Re: Congratulations/Criticism
- From: Jonathan Bachrach <jrb@xxxxxxxxxx>
- Date: 25 Apr 2002 13:12:49 -0400
James McCartney <asynth@io.com> writes:
> On Thursday, April 25, 2002, at 09:15 AM, Andreas Bogk wrote:
>
> > Hi!
> >
> > I'm impressed, goo is a nice language. Good job!
> >
> > But I have a nit to pick: why are all the names abbreviated? I think
> > it would increase readability to spell out things like "df" and "cat".
> > It would also make it easier to catch up with the terminology of the
> > language, and to guess the names of related functions and macros.
>
> I must say this is also my criticism. If it looks like gobbledygook
> then you will not get a lot of adoption.
> This will be a problem anyway because of s-exprs. I have a high
> tolerance for geek languages myself, but as someone who has designed a
> language used by musicians and composers, I think it really is
> beneficial to de-mystify things as much as possible and not assume
> that all of your users are up on all the comp-sci stuff. I've gotten a
> lot of very non-comp-sci folks into programming using first class
> functions and coroutines this way. Even I glaze over at things like
> 'elts' when there is a high density of these type of things.
>
> Also I think it is good to use the qwerty keyboard as it was meant to
> be used, which is for typing letters. Dylan and GOO require too much
> use of the shift key and appear designed by or for those who can't
> type very well - lots of punctuation and abbreviated names. I think
> that this is a strength of Smalltalk, Forth and the post-LISP syntax
> functional languages - not a lot of parens and other punctuation and
> in Smalltalk at least, readable names. Those who write functional
> language programming examples appear to like to use one letter
> variable names which adds to gobbledygookness.
>
> I know syntax is a flame topic, so go ahead..
first of all, i believe in slang and concision. in a big way
programming is all about building up levels of abbreviations. this is
because our brains can only handle so much information in one go. why
should the lowest level core of the language be any different?
at one time, i was a die-hard-spell-out-every-word-kind-a-guy, and
sure M-/ helps in emacs for completion, but at the end of the day, the
meaning gets lost in the long-winded-words, and you just become
overwhelmed with badly wrapped/indented programs that clog the
abstraction arteries. after a while, i started shortening my own
identifiers. why not follow the lead of natural languages and shorten
the most frequent words? this is an obvious compression/concision
strategy.
in goo, i was trying to find a happy compromise between the
long-winded world and the apl/math world of single/special characters.
i carefully chose small words that were mostly pronounceable and
intuitive. i avoided special syntax except for type annotating with
the vertical bar. now i'm not suggesting that goo libraries or even
user code should use short names for everything, i'm just saying that
for the core of the language, i abhor words like
"call-with-current-continuation" (which unhappily got wrapped here).
i think it's entirely reasonable to request that programmers learn a
small finite set of words. i'm not saying that goo is for language
newbies, but if a newbie really needed longer names, i could provide
longer aliases. in fact perhaps this is a way to make everybody
happy. perhaps this could just be a surface syntax mode, but then
again, this might just be even more confusing. at apple, they chose
not to support two surface syntaxes for this reason.
i'm also not saying that i got the names perfect. i still debate
about whether say "dm" is too tiny, but i have to say that when i was
writing dylan programs on the board, i would always abbreviate "define
method" as "dm". it's surprising how many lines no longer wrap at 80
columns when you abbreviate "define method".
i think if you actually try to write programs in goo, you'll find that
the short names are not an obstacle, but an advantage. this has been
my experience and the experience of my students.
jonathan