habrahabr

«За что вы так меня не любите?» (с) Python

  • вторник, 13 апреля 2021 г. в 00:39:36
https://habr.com/ru/post/552006/
  • Python
  • Программирование


Python уже на протяжении нескольких лет держится в топе языков программирования. А любая популярная вещь так или иначе обречена на шквал критики разной степени конструктивности. IT-сообщество разделилось на три основных лагеря:

  1. те, кто Python боготворят;

  2. те, кто делают вид, как будто его не существует, или о нём практически не слышали;

  3. те, кто ненавидит Питон всем сердцем.

И под влиянием общепринятого человечеством правила, когда на негативное мы обращаем гораздо больше внимания, в этой статье (скорее небольшом эссе из категории «Мысли на тему») я решил обсудить пять основных причин, за которые язык Python ненавидят и критикуют.

Скорость

Наверное, каждый слышал, что Python медленный и уступает в скорости другим языкам по типу С++, С# и т.д.

Отрицать это глупо, однако дьявол, как обычно, в деталях. Python интерпретируемый язык, он по определению не заточен под разработку проектов, специфика которых требует межгалактической скорости. Если используют для других целей и проектов. Там, где это нужно, все узкие, критические для производительности места и библиотеки (например, Numpy) обычно пишут на С или Fortran и оборачивают в питон-код. А в большинстве оставшихся мест это скорость-то особо не нужна или не сильно критична. Кстати, если всё-таки кровь из носу нужно повысить производительность, никто не запрещает использовать другие реализации интерпретатора, например, PyPy, Stackless, Numba и т.д.

К слову, Python далеко не самый медленный язык по сравнению с конкурентами в «своей весовой категории», взять те же PHP и Ruby.

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

Ниша Python – это веб, скриптинг и Data Science. Он хорош именно в этих сферах. Если тебе нужны сложные вычисления, CPU-bound задачи, то тебе надо смотреть в сторону свеженького Rust или С/С++. Никто не заставляет писать highload на Питоне. Поэтому попытки ругать Python за скорость схожи с ситуацией, когда ты покупаешь кроссовки на два размера меньше и ругаешь потом фирму за то, что в кроссовках их производства неудобно ходить. Или пытаешься гонять в футбол в свадебных туфлях с носами. Ну вы поняли.

Другая аналогия. Не надо сверлить зуб пациента перфоратором. В смысле, конечно, можно, но будет ли доволен хоть кто-то из вас двоих после этого? Когда инженеры придумывали дрель, они не задумывались, как люди могли бы с помощью неё рыбачить. Продолжать эту цепочку можно довольно долго.

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

Проблемы с многопоточностью и GIL (запрещенная на территории РФ организация)

Как уже оговаривалось раньше, исходя из специфики применения, Python может позволить себе плохо работать с потоками. Кстати, если ты не особо понимаешь, о чем мы сейчас говорим, у меня на YouTube канале есть видео про GIL, рекомендую ознакомиться.

А вообще, объективно говоря, на вкус и цвет товарищи разные. Думаю, про синтаксис мы закончили.

Типизация

Это одновременно и плюс, и минус. С одно стороны, безусловно, динамическая типизация тянет проблемы в очень крупных проектах и затрудняет тестирование. С другой же, проще даётся новикам, что обеспечивает приток новой крови в сообщество. Также динамическая типизация дает и несколько других бонусов в виде упрощения метапрограммирования, плюшек интроспекции и рефлексии. Также в Python 3.5 появились аннотации типов – type hinting. Да, это не панацея уровня TypeScript, но указание типов стало довольно приятным нововведением, значительно облегчившим жизнь, и программисты очень часто стали им пользоваться.

Если вы не согласны со мной или вам есть что добавить, то милости прошу в комментарии.

Заключение

Подытожить всё выше сказанное хочется фразой Страуструпа, создателя С++:

«Есть всего два типа языков программирования: те, на которые люди всё время ругаются, и те, которые никто не использует».

И, как я сказал в начале текста:

«Python уже несколько лет держится в топе языков программирования».