I'm really annoyed at Python - and not for the reasons already mentioned on this list.
Everyone know that programming is supposed to be a dark art, nearly impossible to learn. Computer code is supposed to be something impossible to read to the common person and yet reveal their secrets to the initiated - just remember the code displayed in the Matrix... Python takes all of that away. It is just too readable. Even beginners can quickly learn to read code written by experts. To make it even friendlier to beginners, Python uses ugly double underscores both as prefix and suffix on "magic methods" to be invoked only by more advanced programmers. What's the fun in hiding the complexity so that beginners can stay away from potential problems. And why, oh why, does raw_input() have to go? Here was at least one good example of something that gave a hint (what does "raw" mean?) at the underlying complexity. Combined with the evil of the hidden eval in the more obvious input(), there was at least a chance to trip beginners into doing something "dangerous". Alas, that will no longer be the case... Python does not even make good use of weird symbols like $ and @ and % to define variable types like Perl does. Now, that's a language to learn if you want to be respected. I think that Georg Brandl had it right in his recent proposal: http://mail.python.org/pipermail/python-dev/2007-April/072419.html If not Perl, perhaps Python should be inspired by a language like C++, full of arcane stuff and, thankfully, requiring typing declaration. This dynamic typing thing makes it just too easy to write working programs quickly, especially combined with the ease of use of the interpreter. And this other thing called "duck typing" is just too flexible to use. No, Python should be more difficult. It should take a full two minutes to compile a "Hello World" program on a modern computer. Also, this "docstring" business has to go. Any programmer should, as a rite of passage, have to spend countless hours reading obscure documentation to learn other people's code before finding out what methods can be used and how they should be used. Having to use things like "dir" and "help" just makes it too easy. And don't get me started about the absence of curly braces to define blocks of code. What's the fun in making it so darn visually easy to define such blocks of code, removing the possibility of creating subtle bugs due to the misplacement of a curly bracket. No sir, with Python, the structure has to be obvious at a glance - newbies can see it just as well as experts, thereby decreasing the aura surrounding the latter. This is not fair for people that have spent dozens of hours in learning to program using Python! And don't talk to me about functions, classes and methods, not to mention modules. Python makes it too easy to write code in many different styles, trying to please people who like to write only object-oriented code as well as those that follow the more traditional procedural approach. Even "functional" type people find their way to write code in their preferred method using Python. This is not right. Fortunately, Python has incorporated some newbie-unfriendly features, like metaclasses and, to a lesser extent, decorators which, at last, make use of a special character. There should be more of these, to make Python something more challenging to learn. Programming should be more difficult than this - otherwise, how can programmers be respected by the common folks? --- André -- http://mail.python.org/mailman/listinfo/python-list