| Python is a terrible choice as a first language. Idiomatic python is just glue code that obfuscates the underlying algorithms. Object oriented programming (implementation inheritance) is increasingly regarded as an antipattern, and it encourages that too. The massive performance penalty of writing logic in python vs calling out to external libraries mostly forces developers to program by lego-brick assembling external modules instead of reasoning about algorithm design. There’s no concept of types, either, and instead of attempting to detect programming errors early on, it leaves them to runtime. It’s not surprising that Java and also C/C++ are more popular than python for introductory CS courses. (I could see using python as an intro course for non-CS majors, fwiw.) |
Its low barrier to entry, high reward/effort ratio and quick feedback loop make a good way to recruit potential CS majors!
As others have mentioned, Python's slowness can also require you to pick good algorithms, and its minimal compile-time error checking means that you really need to test your code well and also handle unexpected runtime errors. ;-)
BASIC is a great first language for similar reasons.