In the face of demands from my employer to jump in front of the nearest, fastest-moving bandwagon, I have been searching for a reason to “like” Python. Unfortunately as of this writing, I still have not found one. In the meantime, I’ve found plenty of reasons to NOT like Python.
1. Python is definitely NOT SPEEDY. Ask any real programmer out there, they will have to concede that Python is super slow and it’s multi-threading options are totally neutered due to the GIL
2. Python is definitely NOT VERSATILE. There are far more versatile options out there. How do you measure versatility? Easy. Just think of how many projects you CANNOT write in pure Python! Saying “but but but… python can be extended with C!” doesn’t really count… if you extend python with C you’re writing C code, not python code, and virtually every language out there can be extended with C. I can extend GWBASIC with C for gad sake! GWBASIC is probably on-par with Python on speed. It is super easy to come up with dozens of things that cannot be done with Python. Even python’s most beloved machine learning and math libraries e.g. Numpy aren’t actually written in Python. You can’t build an audio engine in Python. You can’t build a 3D engine (worth a darn) in Python. You can’t build high-performance network servers in Python (e.g. a SAN server that talks over 10gbe). You can’t build games any more complex than Minesweeper in pure Python.
4. Just because a language is “easy” (which is arguable in this case) doesn’t make it good. Python makes it hard to write dangerous code in the same way that BASIC did. It has a “fat” interpreter that makes sure you don’t violate your Array ranges and start trashing memory. This is nothing particularly special. There are dozens of languages out there with these kinds of “features” but that can also be compiled with more optimal settings. Another high-level concept, thread-safety, which is difficult to teach newbies is “solved” by Python in the most simplistic fashion imaginable… Python doesn’t really do threads, therefore it is arguably threadsafe… and therefore completely slow and useless to anyone who really wants to use threads. Yeah I know you can “multi-process”, but sometimes you really want threads…. yet another case were you just “can’t do that with Python”.
5. One of the things that people claim about Python is that it somehow magically requires you to write “less” code. In terms of language syntax, I have seen NO EVIDENCE that Python code actually requires fewer instructions than most other typical languages to accomplish a task. Granted it probably requires less than C or C++, but at the cost of 200-300x speed. For the most part it looks a lot like any other computer programming language in every single example I’ve ever seen with FOR loops and WHILE loops and functions. The biggest difference in syntax appears to be it’s universally hated “whitespace” rules and the fact that it is basically slower than any decent computer programming language.
6. There are other languages out the that have already solved virtually ALL the problems with Python and they solved them long before Python ever became popular. C#, for example, allows you to write both safe and fast code. By declaring a function “unsafe” you kick the language into a different mode of operation that follows rules closer to C. It is absolutely possible to write fast code in C#. C# rarely, if-ever, has to be extended with C libraries. It is also promoted by a big sponsor, Microsoft, which has open-sourced the whole thing (see the Mono project). I can run the same binaries I run on windows on my Rasberry Pi even. C# does have a bit of a higher learning curve than Python but that’s fine by me. C# is designed specifically to discourage bad software design and that’s what makes it far more brilliant than the average language… and that’s why C# will be around long long after Python dies a horrible death.
Futhermore, C# is the language of choice for a huge number of high-performance games on the market built with the very popular Unity3D engine. If you know C#, you can do just about anything. You can AOT compile it. It will run on a Raspberry Pi. There is even a an active operating system project created in C#. I would absolutely love for Linux to have a little more competition.
7. There are two types of people on this planet. 1) Those that understand the value of a static-type system and 2) Idiots! Let’s be clear, there’s a time and place for dynamic types, and most static-typed languages have a “variant” or “any” type and even type inference. Yet if I, as a programmer, decided to declare all my variables as “variant” in my entire program… someone should fire me, then put me in front of a firing squad where they shoot me in some very painful part of my body repeatedly, and then invite the entire dev team to point and stand around me, heckling me while I slowly bleed out.
So tell me again why I want to jump on the bandwagon and promote a language that is vastly inferior to what already exists?
When I express my opinions about python, people tell me “don’t take it so personally” or “you don’t need to be religious about it”. But no, you don’t understand. This is my career, and my career is my life. If your stupid company forces me to write useless code in a useless language that I’m going to just throw in the garbage someday, then you’re essentially telling me that my career and, therefore, my life are meaningless.
I want to write the best code with the best tools. Period. That is my motivation. That is my career. I’m sorry if you just don’t get it. I’m sorry that this other garbage is “good enough” for the zero-years-experience script kiddies you hired right out of community college.