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