9 Reasons Python Sucks

This is a list of reasons why I think Python is a terrible programming language. Naturally, none of them apply to other programming languages.

  1. It's impossible to determine at compile time whether a Python program can terminate.

  2. While strings in Python 3 are significantly better than strings in Python 2, they consist of a series of "code points" instead of characters, so there's no way to reference the third character of a Python string. For ASCII strings, this works fine in C, so I prefer writing in C. Python claims to support Unicode but can't even get this right.

  3. If I compile a Python module on Linux, it doesn't work on a Mac. This is a shocking oversight for a so-called "cross-platform" language.

  4. The os.link function does not let you create a hard link to a directory.

  5. The standard library sorting function takes at least O(n log n) time. I understand dynamic languages are slow, but why is it this slow?

  6. The cryptography module claims to implement public-key cryptography, but mathematicians have so far been unable to prove that one-way functions, a prerequisite of public-key cryptography, even exist. It's surprising that the Python ecosystem is of such low quality and holds to dubious scientific standards.

  7. When you compile NumPy or SciPy from source, you need to build FORTRAN code, and FORTRAN sucks which is clearly Python's fault.

  8. If you're running two Python programs from different users on the same machine, a speculative load in one program might be able to learn information from the other program based on cache timing side channels.

  9. Python is unable to reverse entropy.

18 December 2018