Рубріки: Мнение

Python — отстой: разочарованный разработчик обрушился с критикой на популярный язык программирования

Богдан Мирченко

Разработчику программного обеспечения Майклу Морено не угодил Python. Чем именно, специалист написал в блоге на Medium, чем привлек внимание более 6,5 тысяч пользователей. Что, по мнению разработчика, такого плохого в детище Гвидо ван Россума — узнаете далее.

«Повторю еще раз: Python — плохой язык программирования», — с таких слов начал свой пост возмущенный разработчик. Главная причина, по которой язык настолько популярен, в том, что Google сильно продвигала его в первой декаде «нулевых», уверен Майкл Морено. Вот что он написал.

Все началось в Google

Создатель Python работал в Google с 2005 по 2012 год. Таких языков, как Go и Dart, тогда еще не было, или, по крайней мере, они не были широко известны, а с учетом того, что C# набирал популярность, в Google, вероятно, поняли, что им нужен собственный язык. По сути, можно было использовать Java, но тогда бы они не миновали очередных юридических проблем с Oracle. Тогда, по неизвестным причинам, боссы компании выбрали Python.

Пруф, что Гвидо ван Россум работал на Google

Позвольте объяснить, почему Python — отстой. Да, будет трудно, учитывая его популярность, но постараюсь. Я расскажу не о самом языке, не о его производительности или возможностях реализации, в основном моя цель — сравнить его с Java и C#. Почему? Потому что эти два известных, зрелых языка программирования уже более 15 лет находят широкое применение в мире разработки программного обеспечения.

Язык фрагментарного программирования

В течение очень долгого времени у Python было две основные версии — Python 2 и 3, которые, к слову, несовместимы друг с другом. Таким образом, разработчики попадали в странную ситуацию. В Google призывали всех изучать Python, потому что это «круто». Кто-то скачивал вторую версию, кто-то третью, и только потом выяснялось, что, например, у Python 3 почти нет совместимых библиотек, и никто не использует эту версию. Единственная причина, зачем ее разрабатывали, — это добавление круглых скобок в функцию print() и поддержка эмодзи. Что до Python 2, то из-за множества ошибок (около 3300), в Ubuntu, например, вообще решили отказаться от его использования.

Уродливая ориентация объекта

Класс в Python выглядит так:

  • Обратите внимание на ключевое слово self. Оно в Python везде! Это способ обращения к переменным экземпляра класса. Чем-то похоже на this в Java и С#, только в Python оно обязательно.
    class Car:
        def __init__(self):
            self.color = "red"
            self.wheels = 4
    
        def get_wheels(self):
            return f"{self.wheels}!"

    Почему? Потому что Python тупой.

  • Еще один пример. У класса есть две переменные экземпляра: color и wheels. Чтобы работать с ними, разработчик должен объявить их и инициализировать в конструкторе! Это очень глупо.
  • Возможно, у вас возникнет вопрос: «как сделать их переменными частного экземпляра?». Ответ: никак. Вы не сможете! В Python попросту не существует такого понятия. Максимум, что вы сможете сделать, — это начинать переменные с двух подчеркиваний, например self.__color = "red".
    • Но это приведет к тому, что интерпретатор Python исказит имя переменной так, что она станет недоступной за пределами класса. Так или иначе, она не станет частной переменой, но имя исказится 100%. Оно вам надо?
    • Другое дело — Java и C#. Хотите определить переменную частного экземпляра? Просто поставьте перед ней ключевое слово private.

Кстати, если спросить об этом Python-разработчика, он лишь ухмыльнется и посоветует не обращаться к переменным экземпляра другого класса. Будьте готовы, разработчики Python враждебны и беспощадны к тем, кто указывает на недостатки их «родного» языка программирования.

Пробелы — то, чего нельзя увидеть

Еще одна причина, по которой Python — это мусор. В нормальном языке для разграничения области видимости используются фигурные скобки или ключевые слова BEGIN и END. Но не в Python! Создатели языка решили, что было бы здорово придать пробельным символам семантическое значение. Но с какой стати они придали семантическое значение тому, чего нельзя увидеть? Кто решил, что это хорошая идея?

Ок. Уговорили!

Динамическая типизация — это лук и стрелы

Динамическая типизация — это плохо. Любой, кто со мной не согласен, вероятно, написал еще недостаточно программного обеспечения, чтобы это понять. При динамической типизации, чем больше программа, тем выше вероятность, что она необслуживаемая. Вангую, в будущем все основные языки программирования будут статически типизированными, а использование динамически типизированного языка будет похоже на использование лука и стрел. Не удивлюсь, если видео, как люди программируют на динамических типизированных языках, есть на YouTube-канале Primitive Technology. Языки, появившиеся совсем недавно, такие как TypeScript, вселяют в меня надежду.

Кодинг на Python равен процессу создания первобытного орудия, уверен автор

Некоторые питонисты поняли, что динамическая типизация — это плохо, следствием чего стало создание модуля mypy. Но! Если вы собираетесь добавить аннотации типов в Python, почему бы вам просто не использовать Java или C#?

Константы. Точнее их отсутствие.

В Python нет констант. А чего вы еще ожидали, дочитав до этого места? Кстати, вопрос о том, как сделать переменную постоянной, задали на Stack Overflow, и совет разработчика Python был «просто не меняйте ее». 

Заключение и взгляд в будущее

Python — это пример того, как люди пытаются жить с чем-то, приспособиться и заставить себя полюбить что-то, вместо того, чтобы избавиться от этого и перейти на что-то лучшее. Может быть, это все история про любовь, надежду или что-то еще? Каким-то образом этот некачественный язык превзошел несколько более современных языков, и, возможно, уже слишком поздно что-то с этим делать.

В 2014 году Python стал самым популярным вводным учебным языком в университетах. Так что в ближайшее время мы начнем видеть все больше детей, приходящих в индустрию с Python в качестве основного языка, и его популярность будет только расти по мере того, как на нем будет писаться все больше и больше программ. На момент написания материала он занимает второе место в индексе TIOBE, и эта компания назвала Python «языком программирования 2020 года». 

Рейтинг TIOBE

Да, если хотите заниматься машинным обучением и наукой о данных в 2021-м, используйте Python, поскольку это язык с наибольшим количеством библиотек. По крайней мере, мы можем быть благодарны Google за то, что они не стали продвигать Brainfuck.

Синтаксис Brainfuck

Насколько конструктивна критика автора? Согласны с его словами? Пишите об этом в комментариях.

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023