Перейти к содержимому

Python 4 когда выйдет

  • автор:

Почему будущее не за Python

Сообществу программистов понадобились десятилетия, чтобы по достоинству оценить Python. С начала 2010-х годов он переживает бум — и в итоге превосходит C++, C#, Java и JavaScript по популярности.

Но до каких пор эта тенденция будет сохраняться? Когда Python в конечном итоге будет заменён другими языками и почему это неизбежно произойдёт?

EDISON Software - web-development

Перевод сделан при поддержке компании EDISON.

Мы очень любим и широко используем Python! 😉

Что делает Python популярным сегодня

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

Упоминаемость на StackOverflow некоторых популярных языков программирования — динамика изменений по годам. Показатели Python неуклонно растут, у конкурентов — снижаются.

В то время как R в течение последних нескольких лет находился на плато, а показатели многих других языков неуклонно снижаются, рост Python кажется неудержимым. Почти 14% всех вопросов StackOverflow помечены как «python», и эта тенденция только растёт. И тому есть ряд причин.

Проверен временем

Python существует ещё с девяностых. Речь не только о том, что у него было предостаточно времени для роста. А также о том, что сформировалось большое и поддерживающее сообщество.

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

Дружелюбен к новичкам

И дело не только в том, что язык существует уже несколько десятилетий, за которые программисты написали ряд блестящих учебников. Синтаксис Python ещё и очень удобочитаем.

Во-первых, нет необходимости указывать тип данных. Вы просто объявляете переменную — из контекста Python поймет, является ли она целым числом, значением с плавающей запятой, логическим значением или чем-то ещё. Это огромное подспорье для начинающих. Если вам когда-либо приходилось программировать на C++, то вы знаете, как это грустно, когда программа не компилируется только из-за того, что где-то вместо числа с плавающей запятой подставлено целое.

И если вам когда-либо приходилось сравнивать код на Python и C++, то знаете, насколько более понятным выглядит Python. Несмотря на то, что C++ спроектирован с учётом английского языка, это весьма сложное чтение по сравнению с питоновским кодом.

Универсален

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

Много чисел, векторов и матриц? NumPy в помощь.
Техническо-инженерные расчёты? Используйте SciPy.
Анализ больших данных? Pandas разберётся.
Машинное обучение, нейронные сети, ИИ? Почему бы не Scikit-Learn?

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

Недостатки Python — и могут ли они похоронить язык

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

Скорость

Питон медленный. Не, ну реально медленный. В среднем задача выполняется в 2–10 раз дольше чем на языках-конкурентах.

Тому есть причины. Во-первых, динамическая типизация — помните, выше мы говорили, что очень удобно, когда не нужно указывать типы данных, как в других языках? Обратной стороной медали является необходимость в использовании большого количества памяти, потому что программе необходимо резервировать достаточно места для каждой переменной, чтобы она работала в любом случае. И память «с запасом» приводит к большему расходованию вычислительного времени.

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

Но, по большому счёту, скорость не имеет решающего значения. Производительные компьютеры и серверы настолько доступны, что речь разве что идёт о долях секунды. Конечному пользователю все равно, загружается его приложение за 0,001 или же за 0,01 секунды.

Область видимости

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

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

Python попытался перейти к статической области видимости, но неудачно. Обычно внутренние области видимости, например функции внутри функций, могут видеть и изменять внешние области видимости. В Python внутренние области могут только видеть внешние области, но не изменять их. Это приводит к большой путанице.

Лямбда-функции

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

С другой стороны, объявления переменных и операторы всегда являются операторами. Это означает, что лямбды не могут быть использованы для них.

Это различие между выражениями и утверждениями довольно произвольно и не встречается в других языках.

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

Пробелы и табуляция

В Python пробелы и табуляция используется для обозначения разных уровней кода. Это делает его визуально привлекательным и интуитивно понятным.

В других языках, например в C++, для вложенных структур используются фигурные скобки с точкой с запятой. Хотя это может не так красиво и неудобно для начинающих, это делает код более удобным для сопровождения. С ростом проекта значение такого подхода тоже возрастает.

Новые (относительно) языки, вроде Haskell, решают эту проблему: они полагаются на пробелы, но предлагают альтернативный синтаксис для тех, кто хочет обойтись без них.

Мобильная разработка

Поскольку наблюдается массовый переход от настольных ПК к смартфонам, очевидно, что возрастает потребность в надежных языках для создания мобильного ПО.

Но мобильных приложений на Python раз два и обчёлся. Это не значит, что это вообще невозможно — для этого есть пакет под названием Kivy.

Python не был создан для мобильных устройств. Даже если он и может дать приемлемые результаты для решения базовых задач в этой области, лучше всего использовать язык, заточенный под разработку мобильных приложений. Некоторые широко используемые платформы программирования для мобильных устройств включают в себя React Native, Flutter, Iconic и Cordova.

Конечно, ноутбуки и настольные ПК ещё будут использоваться долгие годы. Однако мобильные устройства уже давно превосходят настольный трафик. Можно уверенно утверждать, что изучение Python недостаточно, чтобы считаться опытным всесторонним разработчиком.

Ошибки времени выполнения

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

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

Что может заменить Python в будущем — и когда

На рынке языков программирования появилось несколько новых конкурентов:

  • Rust предлагает тот же протокол безопасности, что и Python — никакая переменная не может быть случайно перезаписана. При этом решена проблема производительности наряду с реализацией концепции владения и заимствования. Согласно StackOverflow Insights, он также входит в число самых любимых языков программирования последних лет.
  • Go отлично подходит для начинающих, как и Python. Это так просто, а поддерживать код еще проще. Интересный момент: разработчики Go — одни из самых высокооплачиваемых программистов на рынке.
  • Julia это очень новый язык, который напрямую конкурирует с Python. Он заполняет пробел в крупномасштабных технических вычислениях: обычно можно было использовать Python или Matlab, выполняя часть задач (подчас — весьма значительную часть) с помощью библиотек C++. Теперь вместо жонглирования двумя языками можно просто использовать Julia.

Упоминаемость на StackOverflow для Go/Rust/Julia — динамика изменений по годам. Показатели пока скромные, но у этих языков устойчивый восходящий тренд.

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

Какой из языков это будет — Rust, Go, Julia или ещё какой-то новый язык будущего — трудно сказать на данный момент. Но, учитывая проблемы с производительностью, которые являются фундаментальными для Python из-за его архитектуры, рано или поздно неизбежное случится.

  • Блог компании Edison
  • Высокая производительность
  • Python
  • Программирование
  • Go

Гвидо ван Россум: не надейтесь на выход Python 4.0

Новая версия языка программирования Python 4.0 может никогда не выйти. Об этом в интервью Microsoft Reactor рассказал создатель Python Гвидо ван Россум. По словам разработчика, «почти табу говорить о Python 4.0 после трудной миграции с версии 2.0 на 3.0 в 2008 году».

Освітній курс від robotdreams: Аналітик даних.
Перетворюйте дані на рішення.

Болезненная миграция

Гвидо ван Россум сказал, что он и члены основной команды не в восторге от идеи Python 4.0, так что, вероятнее всего, новая версия языка программирования никогда не выйдет. Вместо этого разработчики планируют продолжить нумерацию до версии 3.33 как минимум.

Python 2.7.18 был последним выпуском в жизненном цикле Python 2.7, он появился в апреле 2020 года. Тогда ван Россум предупреждал, что Python 3.0 не будет совместим с Python 2.0, и разработчики, которые создали зависимости программных библиотек на основе второй сборки, не смогут обновиться до версии 3.0 . Для ван Россума и команды это был медленный и болезненный период миграции, растянувшийся на годы, который они, вероятно, не спешат переживать заново.

Ван Россум не исключил полностью возможность выхода Python 4.0. Он предположил, что, скорее всего, это произойдет только в случае серьезных изменения совместимости с языком программирования С, таких как, например, отказ от определенных двоичных файлов или совместимости с API для расширений С.

Планы по улучшению Python

В связи с ожидаемым в октябре Python 3.10 и некоторыми значительными улучшениями скорости в версии 3.11, ван Россум подчеркнул, что основное внимание уделяется выпуску инкреметных (постепенных) обновлений языка программирования на как можно более длительный срок.

Освітній курс від laba: Клієнтський сервіс.
Залучайте та зберігайте клієнтів.

Ускорение Python — основная задача команды разработчиков, об этом ван Россум объявил на языковом саммите. По его словам, они стремятся удвоить производительность CPython в версии 3.11.

Гвидо ван Россум отметил усилия по ускорению языка с помощью внешних проектов, таких как Pyston (реализация Python 3.8.8, которая началась в Dropbox до того, как была открыта исходная версия). Его создатели недавно выпустили Pyston 2.2, который обещает повышение производительности на 30% по сравнению с CPython 3.8.8.

В ходе интервью ван Россум также поделился мыслями о других языка программирования, сказав, что восхищается способностью Rust улучшать код C++ и назвал Go одним из самых интересных новых «питонических» языков программирования.

Полная версия интервью доступна по ссылке .

Гвидо ван Россум: Python 4 может не быть

Гвидо ван Россум: Python 4 может не быть

Собрали 10 платных и бесплатных онлайн-курсов для изучения SQL. Программы рассчитаны на слушателей, которые только начинают или продолжают знакомство с языком.

10 способов научиться программировать самостоятельно

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

10+ сертификаций Coursera, которые могут изменить вашу карьеру

Бюджетный способ прокачать навыки и повысить зарплату — это профессиональный сертификат от Google, IBM или крупного зарубежного университета. На Coursera как раз можно найти десятки полезных обучающих программ по машинному обучению, проджект-менеджменту и не только. Собрали 10+ сертификаций, которые будут выигрышно смотреться в резюме как новичка, так и опытного специалиста.

Python 4 Isn’t Coming Out Anytime Soon

Unless there are major changes in C compatibility that make the advantages of upgrading outweigh the mess it’d make, that is.

Written by Artturi Jalli
Published on Sep. 20, 2022

CEO/Co-founder and Founder at Nodesk and Codingem
Artturi Jalli is CEO and co-founder of Nodesk and founder of Codingem.

The numeral 4, styled out of a snake print texture, sits against a white background.

Image: Shutterstock / Built In

Python 4.0 will probably never come — according to the creator of Python, Guido van Rossum . The lessons learned from migrating from Python 2 to Python 3 demonstrated what a hassle it is to move to a new language version. Thus, there will probably not be a new version of Python soon. But that doesn’t mean Python wouldn’t get updates anymore. As a matter of fact, Python gets new updates all the time. It’s the major version that will not change from 3 to 4.

Why Won’t Python 4.0 Come Out Anytime Soon?

If you were looking for a Python 4.0 release date, I’ve got bad news for you. Python 4.0 will probably never come because of the compatibility problems it would create, which we saw in the past with the transition from Python 2 to Python 3. Developers with software library dependencies in Python 2 couldn’t update to Python 3. And no, this was not a surprise. Rather it was a well-known side effect of having a new language version. This is the key problem that prevents a new version of Python from turning into reality. Instead of pushing a new major version out, the Python developer team will continue to focus on improving Python 3. We Have Tons More Python Info on Built In’s Expert Contribtuors Network 3 Ways to Write Pythonic Conditional Statements

Will Python Still Be Updated?

Because there will be no major new Python releases, you might be wondering whether the language is relevant anymore. The good news is that Python still gets frequent updates — exactly like before. As an example, in October 2021, Python 3.9.13 was upgraded to Python 3.10.0. This introduced a major update to Python 3 — the switch statements. The fact that Python 4.0 is not coming is mostly a good thing. There will be no hassle for developers migrating from Python 3 to Python 4.0. Also, the Python core development team can focus on making Python 3 even better and more robust. Everything You Need to Know About Python on BuiltIn.com 5 Ways to Write More Pythonic Code

Why Did Developers Think Python 4.0 Would Come?

One key reason why developers are searching for Python 4.0 release dates is Python version 3.9. If you’re unfamiliar with the version numbers, a logical next step for Python 3.9 would be Python 4.0, right? But that’s not how it works. Instead, Python 3.9 upgrades to 3.10, which turns into 3.11, and so on. Also, there are minor releases, such as 3.10.3. Speaking of versioning, here is a quick look at how the version numbering system works.

How Does the Software Versioning System Work?

  • Major refers to the major release of the programming language. It comes with backwards-incompatible updates that need attention and action from the developers. Usually, a major update comes with drastic code changes and restructuring.
  • Minor release refers to a smaller upgrade. A minor update adds new functionality and meaningful updates to the language. There might be some changes that cause compatibility issues in a minor release too, but more often than not, these are not hard to deal with.
  • Patch releases are the smallest type of upgrade. They usually fix a bug, patch something, or include a tiny update. A patch release is different than a minor one. This is because a patch shouldn’t require developers to change anything. If an action needs to take place, the update should be minor instead of a patch.

I think Python’s major version will never change. Instead, the core development team will keep on updating the third major version. So there will be minor and patch version updates indefinitely.

More Python Tutorials on Built In’s Expert Contributors Network How to Define Empty Variables and Data Structures in Python

When Could Python 4.0 Theoretically Turn Into Reality?

The only scenario when Python 4.0 could become reality, according to Guido van Rossum, is if C compatibility changes drastically.

This is what Rossum said:

“I could imagine that at some point we are forced to abandon certain binary or API compatibility for C extensions… If there was a significant incompatibility with C extensions without changing the language itself and if we were to be able to get rid of the GIL. If one or both of those events were to happen, we probably would be forced to call it 4.0 because of the compatibility issues at the C extension level.”

Basically, this means the only scenario in which Python 4.0 would turn into reality is if the advantages of breaking backward compatibility would outweigh the huge issues it would cause, as the developer community saw in the Python 2-to-Python3 transition.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *