On 9/6/06, John Zelle <[EMAIL PROTECTED]> 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. --Joshua Zucker _______________________________________________ Edu-sig mailing list [email protected] http://mail.python.org/mailman/listinfo/edu-sig
