Python удалось обойти ключевые проблемы открытого программного обеспечения и занять новые ниши, для которых он не предназначался. Почему этот язык занимает первые строчки рейтингов?
В этой статье я приведу собственные аргументы и наблюдения.
Подробнее про возможности Python у меня есть несколько видео: , , .
Термин "экосистема" часто используется для описания современного научного программного обеспечения с открытым исходным кодом.
Википедия определяет экосистему как совокупность совместно обитающих организмов и условий их существования, находящихся в закономерной взаимосвязи друг с другом и образующих систему.
Современная разработка научного программного обеспечения с открытым исходным кодом происходит взаимосвязанным образом. иллюстрирует концепцию научной экосистемы Python. В основе стека лежит Python (классическая реализация на Си - CPython).

Ядро Python/CPython
, автор языка Python, в далекие времена над ОС Амеба под руководством профессора Таненбаума. Да, это тот самый ученый, который вдохновил Торвальдса на создание GNU/Linux. Python по идее Гвидо должен был заменить bash, Си и ускорить написания прикладных утилит для ОС Амеба. Новый язык решил актуальную задачу.
В основе Python лежит язык ABC, который Гвидо проектировал когда-то для задач обучения программированию. ABC не стал популярен, так как, по одной из версий он не дожил до эпохи Интернета. Интересно, что до сих пор новые возможности Python соотносятся с позицией начинающего программиста и разработчикам языка удается удерживать низкий порог входа. Гвидо первоначально разработал встроенные инструменты ( с интерактивным режимом) для обучения.
Гвидо не сразу, но выбрал лицензию , совместимую с GPL.
Обсуждение новых возможностей Python происходит через открытые документы — это проектный документ, предоставляющий информацию сообществу Python или описывающий новую функцию для Python, его процессов или среды. PEP содержит краткую техническую спецификацию функции и ее обоснование.
В состав Python входит большое число для повседневной работы.
Гвидо предусмотрел возможность расширяемости Python с помощью модулей на языке Си, для этого существует . Это как раз помогло построить поверх Python новые модули.
Python включает (относительно) удобный встроенный .
Существует хранилище программного обеспечения для языка программирования Python ().
Рост популярности Python в первые годы появления, привел Гвидо в компанию Гугл, где он занимался облачными сервисами. Любопытно, что в это время западные вузы стали активно отказываться от обучения lisp-подобным языкам в пользу Python. Западное вузовское сообщество не долго сопротивлялось и постепенно перевело свои вводные ИТ-курсы на Python (в то время у нас преподавали С/С++ и Java), выросло поколение стартаперов со знанием Python. Затем Гвидо перешел в Dropbox, которая содержала ядро программистов на Python и активно участвовала в поддержке языка. Теперь автор языка на пенсии и присоединился к Микрософт в качестве , где занимается CPython.
Слой прикладных модулей в экосистеме
Выше над Python находится слой фундаментальных программных пакетов. Эти пакеты предоставляют полезные возможности для всей научной экосистемы. Например Numpy для n-мерных массивов, Matplotlib для построения графиков, Pandas для фреймов данных и Jupyter для интерактивных вычислений.
За каждым из пакетов стоит ученый-разработчик, который первоначально решал собственные научные задачи.
Перечислю некоторых:
- физик Фернандо Перез, автор IPython и . Ныне Фернандо доцент в Беркли, где продолжает влиять на развитие Jupyter (идею блокнота взяли, кстати, у ) и инструментов для анализа данных.
- нейробиолог Джон Хантер, создатель библиотеки . Документация выстроена вокруг .
- астроном Дж. Вандер Плас, создатель Google Colab, автор популярной .
- финансовый аналитик Уэс МакКинни, который взял за основу язык R и создал библиотеку pandas, написал первое .
- бизнесмен и руководитель лаборатории биомедицинской визуализации Трэвис Олифант — создатель NumPy, один из основателей SciPy, соучредитель фонда NumFOCUS () и PyData, основатель Anaconda.
Здесь отдельного внимания заслуживает экосистема NumPy, представленная на .

На рисунке ниже перечислены библиотеки, которые построены на основе .

Слой специализированных проектов
Следующий уровень состоит из специализированных проектов, таких как для машинного обучения или для параллельных вычислений, на эти проекты полагаются другие участники экосистемы.
Самый верхний уровень — это проекты, ориентированные на предметную область, которые предназначены для обслуживания определенного сообщества исследователей.
Вокруг каждой библиотеки формируется свое сообщество, участники всей экосистемы периодически собираются на .
На современном этапе документация пакетов унифицируется благодаря поддержке фонда NumFOCUS.
Проблема установки и обновления экосистемы
На рисунке XKCD показана проблема установки перечисленных выше пакетов, у нее есть свое название "Dependency hell", когда необходимо установить сотни сторонних пакетов.

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

На этом завершаю обзор экосистемы Python. Получилось кратко, так как каждый модуль заслуживает отдельной статьи :)