Quote:Second, the Python syntax is completely foreign from anything else. It won't help you understand Java, C#, or C++, which means that learning those languages eventually will involve a bit more work.
I don't think that in itself is such a bad thing. On the contrary, I'd say that if a beginner starts out with something different from the "common" mainstream languages (let's face it, if you're going to be a programmer, you'll end up spending a lot of time in the C/C++/C#/Java family of languages)
I think it's a good thing to learn from day one that this isn't all there is to programming. You don't have to think in classes and objects, the entry point doesn't have to be called main, and functions don't have to be as anemic as they are in the C-family of languages.
I have the same misgivings as you do about the dynamic typing bit though. I started out with a functional language (ML), so static typing (and type inference), recursion and higher-order functions don't seem exotic or foreign to me (I'm not as good as functional programming as I'd like, but my point is it's not something far removed from "regular" programming. It's where I started)
One thing I like about Python is that functional programming comes more naturally there, as opposed to, say, C#, where the first rule you learn is "Object-oriented is God!"
You have to be a pretty advanced programmer (preferably knowing a few other languages too), to even start thinking about the functional features they've started adding into the language. (Even delegates take *a lot* of getting used to if the only languages you know are C#/C++/Java.)
When you're starting out in C#, all you see is the dogma that "OOP is the answer. You don't need to look to other solutions, you don't need to know that other paradigms exist".
I think if you start out with Python, you might end up more open to different paradigms.
Of course, since I don't have, say, 50 beginners to test all this on, it's nothing more than a hunch... [grin]