Особенно в Python

В последнее время мы со студентами ждали появления современного JavaScript pipe operator (|>) (который он позаимствовал у Эликсира или Джулии).

В Python его нет (как и во многих других вещах).

У Python есть кое-что похуже: перегрузка операторов.

Один студент нашел этот пост Hacker Noon, в котором предлагалось использовать перегрузку для создания фактического оператора pipe |.

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

Перегрузка операторов - это полная противоположность простоте, ожиданиям и предсказуемому контексту.

Python снова оказывается лицемером (как и многие консерваторы, которые его используют).

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

Хотите знать, что непросто? Перегрузка оператора. Ему нет места в любом языке. Это заблуждение, которого следует избегать.

Из любопытства я прочитал, почему Go очень конкретно решил оставить это, низко и вот, объяснение (опять же) точное.

Отправка методов упрощается, если также не требуется выполнять сопоставление типов. Опыт работы с другими языками показал нам, что наличие множества методов с одним и тем же именем, но разными сигнатурами иногда бывает полезным, но на практике это может сбивать с толку и быть нестабильным. Сопоставление только по имени и требование согласованности типов было основным упрощающим решением в системе типов Go.

Что касается перегрузки операторов, это кажется скорее удобством, чем абсолютным требованием. Опять же, без него все проще.

«Все проще без».

Так почему же язык, рекламируемый как самый простой как для начинающих, так и для продвинутых пользователей, с пренебрежением к контекстно-зависимым конструкциям включает их?

Вы можете угадать ответ, но я сразу скажу его.

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

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

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