Table of Contents

rating

Python безусловно прекрасный язык программирования. Он идеально подходит для новичков,благодаря простому синтаксису, богатой библиотеке( в том числе идущей “из коробки” ), профилированию. Да и сам я заметил,что любая статья про python начинается с перечисления его достоинств. А вот называть недостатки языка не принято. Не понятно почему так сложилось,ведь абсолютно у всего в этом мире есть свои достоинства и недостатки. Думаю,что читателю будет полезно знать про плохие стороны змеиного языка.

Нет,я не буду упоминать про медлительность стандартного интерпретатора на Си. Во-первых большинству этой скорости будет за глаза. Во-вторых никто не мешает использовать другие реализации,по типу: Jython, IronPython, PyPy. Или вообще отказаться от стека вызовов и перейти на собственный стек с микропотоками, используя Stackless.

Не буду указывать и на совсем специфичную проблему,GIL или же далее,глобальный замок, который не дает исполняться нескольким потокам(threads) одновременно. Опять же, вопрос – какие задачи лучше решаются потоками? В сфере web-программирования все работает на процессах. Порождение потока на каждый запрос убьет систему в два счета.

Есть у меня претензии к оформлению кода с использованием конструкций args, kwargs. Сама по себе это классная штука, однако при неправильном использовании полезность сочтётся на нет и будет только хуже. Например, функция принимает много необязательных параметров. Хорошим тоном будет перечислить их все со значениями None. Однако, попадаются такие программисты, которые просто лепят args, kwargs, и внутри тела функции разбирают их вручную. В лучшем случае в docstring указано, что можно передавать. Это ломает автокомплит, подсказки в редакторах, вынуждая перечитывать код. Короче, выходит проигрыш в усилиях – поленившись один раз, разработчик вынуждает напрягаться других многократно, code-review производить становится сложнее. И это плохо ,если над проектом работает сразу несколько человек.

Не буду упоминать и про несовместимость веток (2x и 3x).К примеру,изменения в третьем Питоне – повсеместный Unicode. Спрашиваю, в чем были проблемы со строками во второй ветке? Как кодируется и декодируется Unicode? Сколько байт тратит UTF-8 на один символ? Какие операции быстрей выполняются – на Unicode или на 8-битных строках? Заметил – тот, кто понимает работу со строками, исправлениям в третей версии не рады.

Строки и третья ветка python. Моя точка зрения здесь лаконична. Разработчик, который хорошо знает, как устроены кодировки и конкретно Unicode, не получит в тройке никаких преимуществ, наоборот – только боль. Очень часто приходится работать с 8-битными строками. Да, по сути это байты, но что с того? На каждый чих переводить байты в Unicode, я считаю, глупо. В третей версии потенциальные трудности со строками спрятали в черный ящик. Оставили начинающих разработчиков в неведении, что происходит под капотом. Незнание кодировок рано или поздно выстрелит в самый неприятный момент.

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

Для себя я отметил ,что различные модули могут зависеть от версии языка. К примеру,python славится кроссплатформенностью. Это верно,т.к интерпретатор есть под все ОС . Но допустим мне необходимо завести софт без него, в контексте UNIX систем это не проблема, т.к интепретатор идет ,как правило, в составе дистрибутива. Другая ситуация в семействе NT(windows), и по идее в такой ситуации выручит pyinstaller(или ему подобные),однако работает честно говоря криво.К примеру он может не собрать необходимые модули или просто откажется собирать проект.

После мучений с Pyinstaller я захотел поскачивать видосики с youtube. Чтобы автоматизировать данный процесс(python славится, как прекрасное средство для автоматизации рутинных задач). Пошел на официальный сайт. С официальной документацией - там ничего не нашлось ( что, кстати, уже бывало не раз).

documentation

Вопрос зачем тогда этот сайт вообще нужен? Не понятно… Сделал help(“pytube”) - в качестве исчерпывающей информации получил какую-то мутную справочку, в которой не содержалось ничего полезного.

help

В конце концов мне всё это окончательно надоело и я снёс эту библиотеку куда подальше, настроение испортилось и программу так и не написал в итоге.

error

Кто же виноват? Что делать? Эти извечные вопросы.. Они всегда возникают у тех, кто пытается использовать Python в полезных для себя целях, а в результате теряет время и нервы. И хочется сказать тем, кто там выпускает все эти новые версии постоянно: Ребята, сделайте так, что всё работало уже наконец! Можно возразить ,что за стандартные модули работают прекрасно, а вот за сторонние либы отвечаеют эти самые разработчики сторонних библиотек. Однако за окружение языка,да и не только языка программирования,но и в целом любого продукта, отвечают всё же разработчики целевого продукта. Каков сам продукт,таково и его окружение. А потому сделайте нормальную документацию, пофиксите баги в своем языке. А то все классно и безотказно работает только пока решаешь задачки из учебника, а как доходит до практических задач, то ваш замечательный питон сворачивается в кольца и его даже пинком не заставишь что-то делать. На этом всё.