I think John and Joshua both hit the nail on the head (below). In trying to figure out what exactly it is that Pascal and Python have (and most other tools do not), I came up with the idea of "pedagogical scalability". Simply, these tools allow the user to do a lot early, but does not impose any particular framework or special knowledge.
Yet, as the user gains in experience, there are additional frameworks, syntax, and semantics waiting in the wings. Sometimes when a change such as "remove input" is proposed, the subtle difficulties that result (such as requiring an import, and some knowledge about streams and strings) are not realized. To keep Python pedagogically scalable, it needs methods like input, and raw_input. The only question I think that remains is: what should their names be? -Doug > 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 > _______________________________________________ Edu-sig mailing list [email protected] http://mail.python.org/mailman/listinfo/edu-sig
