*blink* That's neat.

Niels Diepeveen niels at endea.demon.nl
Wed May 31 16:15:23 EDT 2000

Martijn Faassen schreef:
> I don't think it's possible to avoid this kind of newbie problem in any
> case. I also think the 'couple of hours' is likely exaggarated; 

Ok, I was exaggerating, but I don't think that it's specifically a
newbie problem. I still occasionally have similar problems when
switching from one language to another. To stick to the same example:
"if a = 1 or 2" does what it looks like in COBOL, although programmers
rarely use that.
A more realistic example is the infamous "if (a = 1)" in C.

> True, though it would seem hard to avoid to call || and && 'or' and 'and'
> anyway. And it can't be *that* incredibly hard to learn about 'and' and
> 'or's behavior.

I can't say that I have ever had much trouble with it, but then I
learned BASIC at around the same time I learned English. It might be a
little harder for people who have used English all their lives.

> I suppose we do need those HCI people to back all this
> up with research, though. :)
> >   BTW, my own observation is that many people have enormous problems
> > understanding Boolean expressions with multiple operators, no matter how
> > you write them. This is especially true if there is negation involved
> > somewhere.
> I always seem to be able to rewrite my booleans to something I can
> follow. I think it's a knack one picks up in programming. booleans can
> definitely be made to look complex, though.
> >> Note that I'm not questioning the Alice result on case-sensitivity;
> >> I'm sure case-sensitivity confused beginners.
> > I'm not sure Alice has much of a "result" to offer on the subject. As
> > far as I can tell from the paper I have read, doing away with case
> > sensitivity was just the nearest hack available, not a decision based on
> > scientific analysis of the whole interface problem.
> True; I don't think there was done any double-blind research into this
> phenomenon. It was just an anecdotal observation, perhaps in a more
> controlled setting than ours, but probably still doesn't weigh much more
> strongly than our own anecdotal observations.
> > I'd want to see some
> > serious research before accepting sweeping statements like "Case
> > sensitivity is a bug in programming languages intended for novice
> > users.". (That should be taken to mean that I think the Alice project is
> > not serious research; I just think it's far from conclusive on this
> > issue. Even simple people aren't that simple.)
> Right -- and if you're going to learn programming, you're going to have
> to learn about programming discipline; perhaps it's better to learn it
> sooner than later, too, as you're going to need it anyway.

Sure, but there is more to it than getting to a certain level in minimum
time. It's also necessary to keep the frustration down to an acceptable
level. However, I agree that that can better be done by providing things
like a helpful editor and more appropriate error messages than by
silently correcting errors.

> I think one
> of the most important things one can do to increase learnability of a
> language is to increase orthogonality and readability. Programs will
> always be tricky to write, but at least it should be possible to write
> code one can read again later. Case-insensitivity only does potential
> harm in that regard. 'or' and 'and' versus '||' and '&&' are probably
> fairly neutral, though I do think 'or' and 'and' are slightly
> prettier. :)

I can only agree with that.

> Usability research on programming languages is probably tough to do;
> you can do some testing showing non-programmers parts of a program
> and asking them what it does and get results that way, but that doesn't
> necessarily tell you one bit about how usable the language will be to
> a programmer the next day, or the next month, or the next year. And *those*
> experiments will be pretty hard to do in a clean fashion.

That depends on how you define "clean". I'm fairly confident that there
are methods that would produce more or less reliable results. The real
problem is, what exactly does usability mean for a tool that has as many
applications as a programming language. Is it even possible to define
usability without assuming a particular purpose and a particular

Niels Diepeveen
Endea automatisering

More information about the Python-list mailing list