As a student teacher I am very interested in how effective "mini languages" such as Scratch, Logo, Alice and Lego mindstorms are in teaching the pupil the core concepts of programming such as vari开发者_如何学Cables, functions and loops.
Is one "mini language" better than another for teaching these basic core concepts?
Depending on how young the kids you are teaching are I would just go with a simpler language like python.
Here is a free book that teaches all the basics and is only about 200 pages long: http://www.greenteapress.com/thinkpython/thinkpython.html
This is a very difficult question. Logo and Smalltalk (to name only two obvious examples) were both originally designed specifically for use in teaching children to program. You quickly run into a problem though: it's hard to define a language that's both simple enough for a small child to understand completely, and still rich enough to avoid its quickly becoming limiting and clumsy.
At least from what I've seen, most attempts have worked out poorly in both respects. Just for example, most attempt to include verbosity intended to make the code read more like English (e.g. the "To:" in Logo). Children often have poor enough keyboarding skills that such verbosity is frustrating. They also (in my experience) expect that if part of the syntax looks like English, that the language should accept other valid English as well (I'd expect the same is true of native speakers of other languages, but my experience is primarily with English speakers).
At the same time, most children (that I've worked with) quickly get to the point that they find the mini-language limiting. Some of that probably stems from the frustrations mentioned above. Some probably also stems from lack of imagination on the part of (at least some of) their teachers in coming up with exercises that are interesting and challenging. I think it's also much more difficult today than it was (say) 20 years ago though -- back then, kids were excited with what they could draw with turtle graphics (for one example). Today, they're accustomed to games with photo-realistic 3D graphics, and drawing a 2D "rose" out of straight lines seems to strike a lot more of them as basically lame.
I think it doesn't matter that much which "mini language" you use. But I think you better stay with a real minilanguage and not a "real" language if you don't plan on explaining more than the basics.
When I learned the basics (with Java) I was really irritated that I had to remember public static void main
without really knowing what that all meant.
So I'd choose a language with as little overhead as possible.
Which specific language to choose is really dependent on the age of your pupils.
There are quite a few possibilities, and ultimately this kind of question has a lot to do with "taste." I do think that scheme is a really good choice though, for a couple of reasons. One is that it is a very minimalist language, with very little in the way of syntax to complicate things. Another is that I feel like scheme expresses something really fundamental about computation, and does so very clearly. Another is that Scheme can be used in a very "multi-paradigmatic" fashion. You can do functional programming in Scheme, or imperative programming. It's also really easy to build an object system from scratch for Scheme- you can graft a simple one onto the language in less than 100 lines of code. There are also some Scheme implementations out there that have a lot of libraries, so you can do things like graphics programming or web programming in it.
And finally a great deal of attention has been devoted to developing good pedagogical materials in Scheme. "The Structure and Interpretation of Computer Programs" is justly considered a classic, but a lot of the material in it would be pretty tough for young children, I think (it was targeted at incoming freshmen at MIT.) But there are also much gentler materials, like "How to Design Programs": http://www.htdp.org/ One thing you can see really clearly in htdp is how the minimal syntax of Scheme allows you to get right to the important ideas.
The main downside to Scheme as a first language is that most of the languages that are really widely used these days don't look much like Scheme, so students might have a bit of an adjustment in store when moving to them. But I tend to think that, particularly for kids, getting the core ideas is the most important thing at first.
精彩评论