[Edu-sig] The fate of raw_input() in Python 3000
joshua.zucker at gmail.com
Thu Sep 7 00:18:31 CEST 2006
On 9/6/06, John Zelle <john.zelle at wartburg.edu> wrote:
> People often say that Pascal was designed as a "teaching language." I remember
> a written interview with Nicklaus Wirth where he was asked what makes Pascal
> a good teaching language, and his reponse, as I remember it, was something
> like: Pascal is not a teaching language and was never intended to be; it was
> designed to be a good programming language. The features of its design that
> make it a good programming language are what make it a good teaching languge.
As someone coming here from the Scheme community, specifically PLT
Scheme and the DrScheme programming environment (http://htdp.org), I
half-agree with the above.
I agree, in that what makes Scheme powerful for "real" users also
makes it powerful for "student" users.
But I disagree, in that one of the key innovations of the PLT team was
to make several different languages -- I think about 5 or 6 -- which,
at the beginner level, have greatly reduced expressivity compared to
standard R5RS Scheme. The tradeoff is that the language can then give
very informative error messages. I think for a beginning student,
this is a very worthwhile tradeoff!
In my own very limited experience, what's great about Python is that
it allows many different sorts of approaches: you can think like a C
programmer, or an OOP, or even almost like a LISP programmer, and
still find that your thinking maps naturally onto reasonably clean and
concise code. However, this flexibility makes it very hard for the
language to produce error messages that are informative to a beginner!
But I stray rather far from the main thread of this discussion.
The main reason that I don't choose Java for an intro course is my
feeling - backed up by what I see in several otherwise very good
textbooks - that it just isn't right to start your programming course
by telling students "here's a program, and I know you don't understand
2/3 of it. Just treat those parts like a magic incantation,
understand this part here, and let's modify that." I don't teach Java
because I don't want to have to explain "static public void main" on
the first day. [Though actually some environments, like BlueJ for
example, have an interactive mode in which you don't need a main
method, so you can avoid this problem.] To me, it would be a
noticeable minus if in the early days of the course I had to talk
about import, and dot notation, and so on ... to me it feels like
being forced into a Java/OOPish mindset for how to structure a
program, instead of being able to use functional programming or even
just plain old C-like style. I think I'm only talking about maybe the
first week of a course here, but still, that first week can do a lot
to affect people's impressions of the language or even of programming
as a whole.
More information about the Edu-sig