Experiences/guidance on teaching Python as a first programming language
rantingrickjohnson at gmail.com
Tue Dec 17 05:41:14 CET 2013
On Monday, December 16, 2013 8:33:11 PM UTC-6, Steven D'Aprano wrote:
> Of course, this is very hard to measure: different languages require
> different amounts of code to get something useful done. Different
> languages get used for different things -- there are no operating system
> kernels written in COBOL, although there are plenty of business apps
> written in C. There are vast differences in software methodologies. But I
> think that people intuitively grasp that if something is hard to learn,
> as C is, chances are very good that it is equally hard to use even for
> experts. Why do you think that C programs often have so many bugs and
> vulnerabilities, such as buffer overflows and the like? It's not just
> down to lousy coders.
I have a real life example of such horrendous design flaws
involving a highway intersection. A while back, can't
remember when, a friend of mine was involved in an accident
that was his fault. This surprised me because i consider
this person to be a very cautious driver.
After checking records, i was amazed to find a high
occurrence of traffic incidents that mirror the exact
conditions of my friends accident, and in almost every
incident, the person at fault runs the thru the red light.
This seemed odd because how could so many people be making
the same mistake? The sheer number of signal violations
would exclude malevolent intentions.
So being the curious chap i am, i investigated further. I
myself traveled the course my friend took the day of the
The course involves starting from a traffic signal on one
side of the freeway, following a long left turn lane under
the freeway, and then emerging on the other side to cross the
opposing feeder road -- it is a this point that the
accidents happen with great frequency!
There are two distinct design flaws contributing:
1. The bridge itself is obscuring the view of the
second signal. The second signal is not visible until
the motorist are very close -- much too close in my
But i feel #2 is the *real* contributing factor!
2. The second signal and the first signal are not
synchronized, creating an inconsistency between both
signals. For example, sometimes you can catch both
lights green, but sometimes, the second light will
change unexpectedly whilst you're navigating the long
left turn, THUS requiring all traffic to stop under the
freeway before crossing the opposing feeder road.
...and the results of this poor design are resulting
in injuries on a regular basis!!!
The problem is, sometimes people don't stop. Sometimes they
simply "assume" that the light will be green because
stopping under a bridge does not "feel" normal. Of course
they must accept the blame for not being more alert,
however, at what point does the fallibility of humans excuse
poor interface design?
Humans are by nature INCAPABLE of maintaining perfect
alertness, and driving requires more processing than the
human mind can possibly muster. Your mind is constantly
attempting to "predict the future" outcome of current
events, and it is this unconsciousness mechanism that, when
overloaded, will force the less acute modality of intuition
to propagate up and take full control.
It is for that very reason that we must design interfaces
with the fallibility of human operators in mind -- at least
until we can remove the human from the equation.
We MUST strive to achieve the highest level of
intuitiveness whilst eliminating any and all inconsistencies
from the system.
More information about the Python-list