Comment Python is good but insufficient (Score 2) 415
Python has a number of nice features for the beginner programmer.
1) It is easy to learn
2) It has a REPL.
3) It has a large standard library, and most things things in the library are easy to use.
The library is not super abstracted and overly engineered like so many other tools.
4) It has a large universe of third party libraries that are useful and easy to install.
There are bindings to many C/C++ and Fortran libraries. Things like numpy, scipy, and matplotlib.
5) The language and its libraries work on Windows/Linux/Mac.
6) The language is good at allowing one to focus on the problem at hand without worrying so much about minutiae of the language.
7) It supports imperative and object-oriented programming and has some support for functional style programming with map, filter, lambdas and list comprehensions. The functional programming support is on the weak side, but at least there is something.
The language also has some down sides.
1) Python hides low level details from the programmer. As a student learning about programming, ones needs to understand this stuff. Thus 'C' should also be taught.
2) It has been my experience that dynamic typing is useful for relativity small single person tasks. Somewhere around 30,000 lines, one begins to wish for static type checking. However, one needs a good type system. The rise of generics has greatly improved modern statically typed languages.
After reading "Learn You a Haskell For Great Good", I think all programmers should learn Haskell.
It is not really just about learning Haskell either, but understanding the power of function abstraction, combinators, referential integrity, organizing data, and managing side effects.
1) It is easy to learn
2) It has a REPL.
3) It has a large standard library, and most things things in the library are easy to use.
The library is not super abstracted and overly engineered like so many other tools.
4) It has a large universe of third party libraries that are useful and easy to install.
There are bindings to many C/C++ and Fortran libraries. Things like numpy, scipy, and matplotlib.
5) The language and its libraries work on Windows/Linux/Mac.
6) The language is good at allowing one to focus on the problem at hand without worrying so much about minutiae of the language.
7) It supports imperative and object-oriented programming and has some support for functional style programming with map, filter, lambdas and list comprehensions. The functional programming support is on the weak side, but at least there is something.
The language also has some down sides.
1) Python hides low level details from the programmer. As a student learning about programming, ones needs to understand this stuff. Thus 'C' should also be taught.
2) It has been my experience that dynamic typing is useful for relativity small single person tasks. Somewhere around 30,000 lines, one begins to wish for static type checking. However, one needs a good type system. The rise of generics has greatly improved modern statically typed languages.
After reading "Learn You a Haskell For Great Good", I think all programmers should learn Haskell.
It is not really just about learning Haskell either, but understanding the power of function abstraction, combinators, referential integrity, organizing data, and managing side effects.