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
Насколько конструктивна критика автора? Согласны с его словами? Пишите об этом в комментариях.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: