“Python is overrated”.
Well, this statement may well be a bit hasty, and maybe it is. The problem is that after having used some languages I have seen that some characteristics of Python that if on one hand can be seen as amazing (coinciseness of the code), on the other hand I think they can become a double edged-sword.
In fact, behind the simplicity of Python syntax, there is always the concrete risk of doing something in a superficial way. While some languages as Java (imho C and C++ too) implement a precise idea of programming, Python gives too much freedom to the programmer.
This freedom, in the proper hands, may result in well written and coincise code, but in the wrong hands it may become a disaster.
The last is, obviously, the real problem about Python.
Python is very often recommended as first language to learn, but it is not able to offer a tangible frame within which the programmer can act. This often becomes an illusion of simplicity of the language and, finally, a less robust code (if not wrong).
While Python lives with this problem, languages as C++ or Java force the programmer to organize much better their code introducing concepts such as declarations and, in the case of C/C++, pointers.
This fact is very important for a newbie programmer.
As if that were not enough, C and C++ allow newbie programmers to see how a data structure (e.g. linked list) is really made, something that doesn’t happen in Python, a language where someone can literally improvise something without knowing exaclty how things work.
Can simplicity be seen as a Python trait? Well, only if you really know what programming means, something that doesn’t happen when you’re a newbie.
Writing a one line hello world is not as useful as learning to declare a main function on C.