PHP 8.0 достиг EOL, оставив некоторые сайты уязвимыми
PHP 8.0 достиг конца срока службы (EOL) 26 ноября 2023 года и больше не будет получать обновлений и исправлений.
Выбирая Python для разработки программного обеспечения, вы получаете обширную языковую экосистему с множеством пакетов для решения самых разных задач программирования. Но помимо библиотек для разработки графических интерфейсов и машинного обучения, вы также можете выбрать один из нескольких вариантов исполнения Python, причем некоторые из них могут лучше подходить для конкретной задачи.
Вот краткий обзор дистрибутивов Python: от стандартной реализации (CPython) до версий, оптимизированных для быстродействия (PyPy), специальных вариантов использования (Anaconda, ActivePython), вариантов выполнения на разных языках (Jython, IronPython) и экспериментальных вариантов использования (MicroPython, RustPython).
CPython - это эталонная реализация Python, стандартная версия, на которую ориентируются все остальные версии Python. CPython написан на языке C, что следует из названия, и разрабатывается той же основной группой людей, которая отвечает за принятие решений по языку Python на высшем уровне.
Поскольку CPython является эталонной реализацией Python, он исторически является наиболее консервативной средой выполнения с точки зрения оптимизации. Сопровождающие Python разработчики хотят, чтобы CPython был наиболее широко совместимой и стандартизированной реализацией Python. Тем не менее, за последние несколько редакций команда разработчиков внедрила оптимизации, призванные сделать Python в целом более быстрым, и планируются еще более масштабные работы - но не за счет обратной совместимости.
CPython - лучший выбор, если совместимость и соответствие стандартам Python имеют большее значение, чем производительность и другие проблемы. CPython также полезен специалистам, которые хотят работать с Python в его наиболее фундаментальном воплощении и готовы отказаться от некоторых удобств.
Например, при использовании CPython вам придется приложить немного больше усилий для настройки виртуальных сред. Другие дистрибутивы (в частности, Anaconda) предоставляют больше возможностей для автоматизации настройки рабочего пространства.
CPython не обладает теми оптимизациями производительности, которые есть в других версиях Python. В нем нет собственного компилятора JIT (just-in-time), ускоренных математических библиотек или сторонних дополнений для повышения производительности. Все эти возможности можно добавить самостоятельно, но они не входят в комплект поставки. Опять же, это сделано специально, чтобы обеспечить максимальную совместимость и позволить CPython выступать в качестве эталонной реализации. Но при этом оптимизация производительности остается на усмотрение разработчика.
Кроме того, CPython предоставляет лишь базовый набор инструментов для работы с Python. Менеджер пакетов pip, например, получает и устанавливает пакеты из собственного репозитория пакетов Python PyPI. Pip даже установит предварительно скомпилированные двоичные файлы (через формат дистрибутива wheel), если вы их предоставите, но он не установит никаких зависимостей, которые могут быть у пакетов за пределами PyPI.
Anaconda, выпускаемая компанией Anaconda Inc. (ранее Continuum Analytics), предназначена для разработчиков Python, которым необходим дистрибутив, поддерживаемый коммерческим поставщиком и имеющий планы поддержки для предприятий. Основными областями применения Anaconda Python являются математика, статистика, инженерное дело, анализ данных, машинное обучение и смежные области.
Anaconda объединяет многие из наиболее распространенных библиотек, используемых в коммерческой и научной работе на Python, -ciPy, NumPy, Numba и т.д., а также делает многие из них доступными через собственную систему управления пакетами.
Anaconda отличается от других дистрибутивов тем, как она интегрирует все эти компоненты. При установке Anaconda предоставляет приложение для рабочего стола - Anaconda Navigator, которое делает все аспекты среды Anaconda доступными через удобный графический интерфейс. Найти компоненты, поддерживать их в актуальном состоянии и работать с ними гораздо проще в Anaconda, чем в CPython.
Еще одним преимуществом является то, как Anaconda работает с компонентами, не входящими в экосистему Python, если они требуются для конкретного пакета. Менеджер пакетов conda, созданный специально для Anaconda, справляется с установкой как пакетов Python, так и сторонних, внешних программных требований.
Поскольку Anaconda включает в себя большое количество полезных библиотек и может установить еще большее количество библиотек всего несколькими нажатиями клавиш, размер инсталляции Anaconda может быть гораздо больше, чем CPython. Базовая установка CPython занимает около 100 МБ, а установки Anaconda могут достигать гигабайтов. Это может стать проблемой в условиях нехватки ресурсов.
Одним из способов уменьшения объема Anaconda является установка Miniconda - урезанной версии Anaconda, включающей лишь абсолютный минимум необходимых для работы компонентов. Затем можно добавлять пакеты в Miniconda по своему усмотрению, ориентируясь на то, сколько места занимает каждый пакет.
Как и Anaconda, ActiveState Python создается и поддерживается коммерческой компанией, в данном случае ActiveState, которая выпускает ряд языковых сред исполнения, а также многоязычную среду разработки Komodo IDE.
ActiveState Python ориентирован на корпоративных пользователей и специалистов по исследованию данных - людей, которые хотят использовать Python, но не хотят тратить много усилий на сборку и управление установкой Python. ActiveState использует штатный менеджер пакетов Python pip, но при этом поставляет несколько сотен общих библиотек в виде проверенных пакетов, а также некоторые общие библиотеки с зависимостями от сторонних разработчиков, например, библиотеку Intel Math Kernel Library.
У подхода ActiveState к работе с пакетами с внешними зависимостями есть один потенциальный недостаток. Если вы захотите перейти на новую версию проекта со сложными зависимостями (например, TensorFlow), вам придется обновить и установку ActiveState Python. В средах, где разработка привязана к конкретной версии проекта, это не столь важно. Но в среде, где разработка ведется с использованием самых современных версий, это может стать проблемой.
Кроме того, версии ActiveState Python имеют тенденцию отставать от последней версии CPython. Например, на момент написания статьи последняя поддерживаемая версия Python - 3.12, но ActiveState предоставляет только 3.10.
PyPy, являясь полноценной заменой интерпретатора CPython, использует JIT-компиляцию для ускорения выполнения Python-программ. В зависимости от задачи прирост производительности может быть значительным.
Распространенная претензия к Python в целом и CPython в частности - это скорость. По умолчанию Python работает во много раз медленнее, чем C, иногда в сотни раз. PyPy JIT-компилирует код Python на машинный язык, обеспечивая ускорение по сравнению с CPython в среднем в 4,8 раза. Некоторые задачи выполняются в 50 раз быстрее.
Самое приятное, что для получения этих преимуществ от разработчика не требуется практически никаких усилий. Замените CPython на PyPy, и все будет готово. Кроме того, все основные платформы поддерживаются в 64-битных версиях - Windows, CentOS 7-совместимый Linux (как ARM64, так и Intel) и macOS (также как ARM64, так и Intel).
PyPy всегда лучше всего работал с "чистыми" Python-приложениями. Пакеты Python, взаимодействующие с библиотеками C, такие как NumPy, работали не так хорошо из-за того, что PyPy эмулировал нативные двоичные интерфейсы CPython. Однако со временем разработчики PyPy решили эту проблему и сделали PyPy гораздо более совместимым с большинством пакетов Python, зависящих от расширений C. Одним словом, поддержка расширений C по-прежнему ограничена, но гораздо меньше, чем раньше.
Еще одним возможным недостатком PyPy является размер среды выполнения. Основная среда выполнения CPython под Windows, не считая стандартной библиотеки, занимает около 6 МБ, в то время как среда выполнения PyPy - около 43 МБ.
JVM (виртуальная машина Java) служит средой выполнения для множества языков, помимо Java. В этот список входят Kotlin, Groovy, Scala, Clojure и, конечно же, Python, созданный в рамках проекта Jython.
Jython компилирует код Python 2.x в байткод JVM и запускает полученную программу на JVM. В некоторых случаях Jython-компилированная программа будет работать быстрее, чем ее аналог на CPython, но не всегда.
Самым большим преимуществом Jython является прямое взаимодействие с остальной экосистемой Java. Выполнение Python на JVM позволяет разработчикам Python подключиться к огромной экосистеме библиотек и фреймворков, которые иначе они не смогли бы использовать. Аналогичным образом Jython позволяет разработчикам Java использовать библиотеки Python.
Самым большим недостатком Jython является то, что он поддерживает только ветвь Python 2.x. Поддержка Python 3.x находится в стадии разработки, но пока ничего не выпущено.
Следует также отметить, что хотя Jython и привносит Python в JVM, он не привносит Python в Android. Поскольку в настоящее время не существует переноса Jython на Android, Jython не может быть использован для разработки Android-приложений.
Так же как Jython является реализацией Python на JVM, IronPython является реализацией Python на среде исполнения .Net, или CLR (Common Language Runtime). IronPython использует DLR (Dynamic Language Runtime) CLR для того, чтобы программы на Python выполнялись с той же степенью динамичности, что и в CPython.
Как и Jython, IronPython - это мост. Основная задача - взаимодействие между Python и вселенной .Net. Существующие сборки .Net могут быть загружены в программы на IronPython с помощью встроенного в Python синтаксиса импорта и манипулирования объектами. Также можно скомпилировать код IronPython в сборку и запустить ее как таковую или вызвать из других языков. Однако следует учитывать, что к языку MSIL (Microsoft Intermediate Language), содержащемуся в сборке, нельзя обращаться напрямую из других языков .Net, поскольку он не соответствует спецификации Common Language Specification.
IronPython поддерживает Python 2.7, а также Python 3, но последняя поддерживаемая версия Python 3 - Python 3.4. Это существенно ограничивает возможности работы с существующей экосистемой Python, поскольку версия 3.4 уже некоторое время не поддерживается.
Как следует из названия, WinPython - это дистрибутив Python, созданный специально для пользователей Microsoft Windows. Ранние версии CPython для Windows были недостаточно хорошо проработаны, и пользователям Windows было сложно использовать все преимущества экосистемы Python. С течением времени версия CPython для Windows улучшилась, но WinPython по-прежнему предлагает многое, чего нет в CPython.
Основная привлекательность WinPython заключается в том, что это самостоятельная версия Python. Его не нужно устанавливать на машину, где он запускается; его достаточно распаковать в каталог. Это делает WinPython полезным в тех случаях, когда программное обеспечение не может быть установлено на данной системе; в сценариях, когда необходимо распространять предварительно настроенную среду исполнения Python вместе с приложениями, которые должны на ней работать; или когда несколько редакций Python должны работать рядом, не мешая друг другу.
Сам CPython поставляется в формате "распаковать и запустить" - он называется "встраиваемый редистрибутив" - но при этом он развертывается с крайне минимальным набором пакетов. В отличие от него, WinPython содержит множество пакетов, ориентированных на науку о данных - NumPy, Pandas, SciPy, Matplotlib и т.д., - поэтому их можно использовать сразу, без дополнительных шагов по установке. Также в комплект входит компилятор C/C++, поскольку на многих машинах Windows он отсутствует, а многие расширения Python требуют или могут его использовать.
Одним из ограничений WinPython является то, что по умолчанию в него может быть включено слишком много для некоторых случаев использования. Чтобы исправить это, создатели WinPython предоставляют "нулевую" версию каждого выпуска WinPython, содержащую только минимально возможную установку продукта. Дополнительные пакеты могут быть добавлены позже, либо с помощью собственного инструмента Python pip, либо с помощью утилиты WinPython WPPM.
Python Portable - это среда выполнения CPython в виде автономного пакета. Она поставляется на основе коллекции аналогичных самодостаточных приложений PortableDevApps.
Как и WinPython, Python Portable включает в себя множество пакетов для научных вычислений - Matplotlib, Numba, SymPy, SciPy, Cython и другие. Как и WinPython, Python Portable не требует формальной установки на хост Windows, он может находиться в любой директории или на съемном диске. В комплект поставки также входит IDE Spyder и менеджер пакетов Python pip, позволяющий добавлять, изменять или удалять пакеты по мере необходимости.
В отличие от WinPython, в состав Python Portable не входит компилятор C/C++. Для использования кода, написанного с помощью Cython (и, соответственно, скомпилированного в C), необходимо предоставить компилятор C. Кроме того, последняя версия Python, предлагаемая на момент написания статьи, - 3.9.
Эти дистрибутивы вносят существенные изменения в Python - либо потому, что используют Python в качестве отправной точки для создания чего-то совершенно нового, либо потому, что вносят стратегические изменения в стандартный Python. По большому счету, эти Python пока не рекомендуются для использования в производстве.
Если в обозримом будущем вы будете жить с кодовой базой Python 2.x, то вам стоит ознакомиться с нашей статьей об экспериментальных дистрибутивах Python, поддерживающих Python 2.x.
MicroPython представляет собой минимальное подмножество языка Python, которое может работать на очень дешевом оборудовании, таком как микроконтроллеры. MicroPython реализует Python 3.4 с некоторыми отличиями. Если вы знаете язык Python, написать код на MicroPython не составит труда, однако существующий код может не работать в исходном виде.
Стандартная среда выполнения Python, написанная на языке C, по мнению многих, представляет собой высококачественный код, минимизирующий количество "ловушек", создаваемых языком C. Проект RustPython реализует среду выполнения Python на языке Rust, используя преимущества безопасности памяти и скорости Rust. В настоящее время он поддерживает лишь часть синтаксиса языка Python, но его развитие идет полным ходом. Вы даже можете опробовать демонстрационную версию в браузере.
PHP 8.0 достиг конца срока службы (EOL) 26 ноября 2023 года и больше не будет получать обновлений и исправлений.
Доступен новый Python для использования, а не просто для тестирования. Python 3.12 не является чем-то революционным, но он может стать таковым, если следующий релиз будет с энтузиазмом развивать его новые возможности.
Опрос Python Software Foundation показал, что значительное число разработчиков Python по-прежнему используют Python 2 для анализа данных, компьютерной графики и devops.
Продолжаем добавлять языки программирования для Вас.
Впереди много интересного!
Только свежие новости программирования и технологий каждый день.
Комментарии