Для чего Python лучше не использовать?

Опубликовано 22 ноября 2019 в Python

На Quora относительно недавно задали вопрос "What is Python not good for?" Я бы хотел сказать, что питон хорош для всего. Но это неправда. Питон во многих областях второй. Не так много областей, где питон — номер один.

К примеру, Go сейчас гораздо больше подходит для веб-разработки, чем питон. Его довольно легко выучить, его гораздо легче деплоить. В Go есть достаточное количество батареек для любого веб-приложения. Тем не менее питон остаётся второй опцией. Даже в области микроконтроллеров питон будет моим вторым выбором после C благодаря MicroPython. Технически это не питон, то он довольно близок, чтобы считать его питоном.

В машинном обучении и больших данных питон действительно номер один без особых конкурентов. Для этого есть несколько причин. Под питон есть библиотеки практически для всего: батарейки включены. Для него есть оптимизированные библиотеки для вычислений и манипуляции данными. И последнее, питон - это язык-клей, который позволяет соединять разнородные системы в одно целое.

Для чего же питон не так хорош? Я бы назвал три области: UI (десктопные приложения), мобильную разработку и разработку игр.

Все три области, которые я выбрал, так или иначе про взаимодействие конечного пользователя с приложением. Для всех этих областей можно сделать приемлемое по качеству приложение на питоне. Но оно этого не стоит. Во всяком случае для продакшена.

User Interface

Какой лучший язык для UI? Зависит от платформы. Но питон не появится в списке ни для одной. Для веба, во всяком случае пока, выбора нет. JavaScript - единственный вариант. WebAssembly всё ещё находится на ранней стадии. И насколько я знаю, там нет поддержки питона. Если говорим про десктоп, то Swift для Mac и C# для Windows. Linux? C/C++. Нужно что-то кроссплатформенное? Используйте C/C++.

Я не говорю, что для питона нет GUI библиотек. Они есть. И их можно использовать, если нужно сделать что-то для себя или для других разработчиков. Они смогут потратить на решение проблем с ним, если ваше приложение будет им очень нужно.

Но обычные пользователи не очень-то заботятся как следует приложение стилю платформы. Пока оно работает хорошо, они даже не заметят, что вы используете не нативные элементы управления. Но если оно будет требовать каких-то усилий по установке или обновлению, они найдут что-то другое.

И это большая проблема для питона. Довольно сложно собрать один исполняемый файл с GUI приложением на питоне. Ещё сложнее это приложение обновлять. И оно этого не стоит в большинстве случаев.

Мобильная разработка

Есть Kivy. И это хорошая библиотека... для персональных проектов или чего-то не сильно важного для бизнеса. Почему? Она очень хрупкая. Доступ к камере или любой другой функции телефона требует бинарной зависимости. Эти зависимости обновляются с разной скоростью, разными людьми и часто несовместимы между собой. У многих дополнительных библиотек нет майнтейнеров.

Для мобильной разработки надо смотреть на нативные приложения. Вторым вариантом будет Cordova или что-то похожее (в эту категорию попадают React Native, Xamarin и ещё куча других кроссплатформенных решений). Я считаю, что для некоторых приложений Cordova (Ionic) - лучший выбор.

Но в любом случае, питон не войдёт в список технологий разработки мобильного приложения. Ни для какого бизнеса, ни для какого приложения.

Разработка игр

Основная проблема с использованием питона для разработки игр не в том, что нет зрелых фреймворков. Они есть. Но они не популярные, они не кроссплатформенные. Это значит, что ваша игра будет только на ПК. Хотите другие платформы? Будьте добры разработать игру ещё раз, но уже не на питоне.

Маркетинг игр - занятие сложное. Найти издателя во многих случаях лучшее решение. Но питон может стать непреодолимым препятствием: издатели просто не подпишут контракт. Им ведь придётся вложиться в портирование игры на более подходящую технологию, с которой они умеют работать.

Вместо вывода

Я использую питон практически для всего. Я даже подумываю о написании музыки с его помощью (батарейки есть даже для этого!). Тем не менее, я не начну разработку мобильного приложения на питоне. Во всяком случае того, которое планируется опубликовать в сторах.

А что вы думаете? Для чего питоне не так хорошо?