Последние 20 лет были очень хорошими для Python. Он прошел путь от «просто языка сценариев» до основного языка, используемого для написания серверной части большинства веб-приложений, и на сегодняшний день самого популярного языка на GitHub.

Но последние 3 года уже начали обращать вспять эту восходящую тенденцию, и, как пожизненный Pythoneer, причина очевидна — статическая типизация — или, точнее, наследие динамической типизации.

Динамическая типизация помогает новым программистам учиться, не увязая в синтаксисе. Здесь правит Python, способ, которым Гвидо ван Россум спроектировал и руководил развитием языка, создал синтаксис, который читается естественно.

Типовые подсказки — это только начало, но давайте будем честными; они уродливые.

Но динамическая типизация не масштабируется за пределы очень простых программ и небольших групп или, если уж на то пошло, любой ситуации, когда неясно, что может содержать объект. Чтобы бороться с этим, разработчики Python начали использовать строки документации в стиле сфинкса для предоставления подсказок типов. В конце концов, python представил библиотеку Typing — нативную реализацию Type Hinting.

Типовые подсказки — это только начало, но давайте будем честными; они уродливые болт-он. И без настоящей статической типизации вышла клейкая лента; когда мы объединили такие инструменты, как MyPy и Pydantic, для принудительной проверки типов и предотвращения проблем до того, как они попадут в рабочую среду.

Со временем это привело к тому, что код Python постепенно становился все более уродливым, поскольку инструменты Type Hinting и Enforcement нарушают внешний вид Python на естественном языке, добавляя дополнительные шаги в процесс разработки.

В результате давние сторонники Python постепенно начинают отдавать предпочтение другим языкам, которые удовлетворяют их потребности в безопасности типов и более чистом коде. Большинство переходят на Go или Rust, хотя лично мне нравится C# (≥ .NET 6.0/C#11) и современные C++ (≥ C++ 17) для сервисов, которые мне нужно было написать.

Важно отметить, что Python здесь не одинок; тот же исход происходит с JavaScript, где преобладает TypeScript.

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