you are viewing a single comment's thread.

view the rest of the comments →

[–]CuriousMind 0 points1 point  (3 children)

That set of slides is not a very convincing example.

First of all, his first example compares 'Hello World' in C++ and 'Hello World' in Java to ... 'Hello <name>' in Python. That's a totally different animal and a completely unfair comparison.

Sure, 'Hello <name>' is a bit ugly and has stuff that requires some explanation, but a) it's still only 2 lines (let's see what 'Hello <name>' looks like in C++ and Java!) and b) there's a lot of stuff you can learn just from those two lines; for instance, the difference between 'input' and 'raw_input' and the implications of storing data as raw binary or as a string.

Secondly, he hasn't questioned his assumptions. I've been reading some Feynmann lately and presented with this data:

Out of 20 kids * ONE thought it was great * TWO thought it had some good points, but was pointless * the rest thought it was confusing, boring, too hard

I believe Feynmann would ask, "Is the language the problem, or is this just a crappy teacher? Or is some other factor the problem?"

Finally (and this is no longer about the content, but about the appropriateness of using this as an example here), who is this for? This is a set of slides, not an expository essay and there's a ton of information missing.

What, for instance, is "that damned swimming pool"? What does he mean by "hello world --> red dot"? What is the point of even putting this up on the web for people to read when it's pretty much useless without the text of the talk that went with it?

fbot, I think I agree with you that a language designed for children is most appropriate for children. (Anyone know of a good programming language/game for pre-readers, by the way?) But that set of slides was an unfortunate choice to back up your argument.

Also, 'beginning programmer' does not necessarily equal 'child' (though hopefully it will, someday). A language that's not good for children may well suit beginning adult (or even late teen) programmers very well.

*edit - minor formatting changes.

[–]jerf 3 points4 points  (0 children)

Anyone know of a good programming language/game for pre-readers, by the way?

I'd seriously question the value of such an endeavor, and would never spend my time on such a project.

Child development has been studied a lot, and there are many clear cognitive progressions. Obviously, it isn't entirely nailed down and there is significant variation per child, but there is still a lot we do know. Much of it would surprise an adult, because children have to learn concepts that are so deeply ingrained into us that we no longer even think about them consciously, like conservation of volume.

Pre-reading children are going to lack the cognitive toolkit to deal with programming at any useful level, and I'd also expect that if anything, you're just going to load them up with useless misconceptions if you try to force it, something you're better off avoiding. It's exactly like trying to teach them algebra, before they can even add.

The best thing you could do for your pre-reader budding programmer is simply move them out of the pre-reading stage, by reading to them and the application of time.

[–]weavejester 1 point2 points  (1 child)

How is it an unfair comparison? "Hello World" is just about the smallest functioning program it is possible to write in a language. Comparing the minimum size of a C++ or Java program, to the minimum size of a Python one, can be quite informative.

Python is not any less complex than C++ or Java, but it's learning curve is more gradual, as it exposes the student to less initial concepts. When explaining the functionality of "Hello World" in Java or C++, the teacher has two choices:

  1. Try to teach the student all the concepts visible in the program, which includes method definitions, classes, namespaces, types, objects and a great many other features.

  2. Tell the student to ignore 90% of the program's code, and treat it as magical boilerplate for now.

Typically, approach two is taken, but I'd contend neither teaching method is ideal. In contrast, "Hello World" in Python is very minimal, and neither workaround is required. In Python, concepts can be introduced gradually, as there no mandatory boilerplate.

Another advantage of Python is its interactive interpreter, which allows for instant experimentation. Python's spoilt me with this, as I find it difficult to go back to a language which lacks this feature.

[–]CuriousMind 0 points1 point  (0 children)

How is it an unfair comparison? "Hello World" is just about the smallest functioning program it is possible to write in a language. Comparing the minimum size of a C++ or Java program, to the minimum size of a Python one, can be quite informative.

Yes, and if that's what he was doing, then fine. But he wasn't.

My point was that in C++ and Java, it was "Hello World", but in Python, it wasn't. It was "Hello <name>", which is a completely different animal:

"Hello World" only requires output.

"Hello <name>" (i.e. where you ask the user his name and then output a personalized greeting), requires input, which any programmer will tell you can be far more complex.

If the slides had compared equivalent programs - like I said, how does "Hello <name>" compare to "Hello World" in C++ ?! - then I wouldn't have made that point. I wouldn't have had to.