What is Python not good for?

Posted on Tue, 15 Oct 2019 in Python

There is a question on Quora - "What is Python not good for?" I want to say that Python is good for everything, but it is not true. Honestly, Python is a second-best language for many things. There are not many spots there it is the best language to use.

For example, I think Go is the best language for web services. It's easy to learn, it's much easier to distribute. However, Python is the second-best option. Event for microcontrollers I would think of using Python not C/C++ because of MicroPython. Well, MicroPython is technically not Python, but it's close enough to call it Python.

In data science and machine-learning Python is number one.

There are several reasons for that. First of all, Python has libraries for everything. Batteries are included. And it has highly optimized libraries for math and data manipulation. Finally, it is a glue language.

So, what is Python not good for? I would name three fields: UI (desktop applications), mobile development, and game development. As you can see all my cases are related to end-users interaction with a Python application. In all these cases it's possible to develop good software with Python. But it's not worth doing it at least for production.

User Interface

What is the best language for UI? It depends on the platform. And in any case, Python isn't at the top of a list. For web UI you have no choice. JavaScript is the only option. WebAssembly is at an early stage. And as far as I know, there is no Python support.

If we talk about desktop applications, the option for Mac is Swift, the option for Windows is C#. Linux? C/C++. Want something cross-platform? Use C/C++.

I don't say that there are no GUI libraries for Python. There are some. And they are OK if you are writing an application for yourself or other developers. They can spend a lot of time solving problems with it.

But regular users do not care much how close your program to platform guidelines. If it works reasonably well, they don't notice that you use non-native controls. But if they have to make efforts to install or update it, they'll find something else. And it's a big problem for Python. It is hard to build one executable file with Python GUI application inside. And it's even more difficult to update it. I don't say it is impossible. It's not worth doing it in most cases.

Mobile Development

There is Kivy. It's good... for pet projects or for something that is not important for the business. Why? Because it is so fragile. Accessing camera or other device features usually depends on binary libraries that updates with different speed. And you'll get random errors after updates. Many extra libraries have no maintainers.

So for mobile development, the best option is a native application. The second option is Cordova or something similar. Depending on your business Cordova can be the best option. But in any case, I doubt that there is a place for Python in the list of options for mobile development.

Game development

The main problem with using Python for game development is not the luck of mature frameworks. There are some. However, they are not popular. They are not cross-platform. So that means your game will be for PC only forever. Other platforms? Develop a new game, but this time not using Python.

Marketing a game is incredibly hard. It is wise to find a publisher who can help you to promote your game. But again, the vast majority of publishers will not publish your games because of Python.

Conclusion

I'm using Python almost for everything. I even thinking about writing some music with it (there are some possibilities to do it). However, I will not start a new mobile application with Python at least that is supposed to be published in stores. What do you think? What is Python not good for?