Чему нас учит экосистема языка Python?

Чему нас учит экосистема языка Python?
Свой диплом по анализу зловредного сетевого трафика в 2009 году я писал на PHP и SQL в программе Weka (данные и текст диплома доступны тут). Сегодня подобные задачи решаются в экосистеме Python.

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

В этой статье я приведу собственные аргументы и наблюдения.

Подробнее про возможности Python у меня есть несколько видео: история языка, экосистема языка, этапы анализа данных.

Термин "экосистема" часто используется для описания современного научного программного обеспечения с открытым исходным кодом.

Википедия определяет экосистему как совокупность совместно обитающих организмов и условий их существования, находящихся в закономерной взаимосвязи друг с другом и образующих систему.

Современная разработка научного программного обеспечения с открытым исходным кодом происходит взаимосвязанным образом. Рисунок иллюстрирует концепцию научной экосистемы Python. В основе стека лежит Python (классическая реализация на Си - CPython).


Ядро Python/CPython

Гвидо, автор языка Python, в далекие времена работалнад ОС Амеба под руководством профессора Таненбаума. Да, это тот самый ученый, который вдохновил Торвальдса на создание GNU/Linux. Python по идее Гвидо должен был заменить bash, Си и ускорить написания прикладных утилит для ОС Амеба. Новый язык решил актуальную задачу.

В основе Python лежит язык ABC, который Гвидо проектировал когда-то для задач обучения программированию. ABC не стал популярен, так как, по одной из версий он не дожил до эпохи Интернета. Интересно, что до сих пор новые возможности Python соотносятся с позицией начинающего программиста и разработчикам языка удается удерживать низкий порог входа. Гвидо первоначально разработал встроенные инструменты ( редактор IDLE с интерактивным режимом) для обучения.

Гвидо не сразу, но выбрал лицензию PSFL, совместимую с GPL.

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

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

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

Python включает (относительно) удобный встроенный менеджер пакетов.

Существует хранилище программного обеспечения для языка программирования Python ( Python Package Index).

Рост популярности Python в первые годы появления, привел Гвидо в компанию Гугл, где он занимался облачными сервисами. Любопытно, что в это время западные вузы стали активно отказываться от обучения lisp-подобным языкам в пользу Python. Западное вузовское сообщество не долго сопротивлялось и постепенно перевело свои вводные ИТ-курсы на Python (в то время у нас преподавали С/С++ и Java), выросло поколение стартаперов со знанием Python. Затем Гвидо перешел в Dropbox, которая содержала ядро программистов на Python и активно участвовала в поддержке языка. Теперь автор языка на пенсии и присоединился к Микрософт в качестве заслуженного инженера, где занимается оптимизацией CPython.

Слой прикладных модулей в экосистеме

Выше над Python находится слой фундаментальных программных пакетов. Эти пакеты предоставляют полезные возможности для всей научной экосистемы. Например Numpy для n-мерных массивов, Matplotlib для построения графиков, Pandas для фреймов данных и Jupyter для интерактивных вычислений.

За каждым из пакетов стоит ученый-разработчик, который первоначально решал собственные научные задачи.
Перечислю некоторых:
- физик Фернандо Перез, автор IPython и Jupyter. Ныне Фернандо доцент в Беркли, где продолжает влиять на развитие Jupyter (идею блокнота взяли, кстати, у Вольфрама) и инструментов для анализа данных.
- нейробиолог Джон Хантер, создатель библиотеки Matplotlib.  Документация выстроена вокруг примеров графиков.
- астроном Дж. Вандер Плас, создатель Google Colab, автор популярной книги по анализу данных.
- финансовый аналитик Уэс МакКинни, который взял за основу язык R и создал библиотеку pandas, написал первое руководство по pandas.
- бизнесмен и руководитель лаборатории биомедицинской визуализации Трэвис Олифант — создатель NumPy, один из основателей  SciPy, соучредитель фонда NumFOCUS ( годовой отчет) и PyData, основатель Anaconda.

Здесь отдельного внимания заслуживает экосистема NumPy, представленная на рисунке.




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




Слой специализированных проектов

Следующий уровень состоит из специализированных проектов, таких как Scikit-learn для машинного обучения или Daskдля параллельных вычислений, на эти проекты полагаются другие участники экосистемы.

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

Вокруг каждой библиотеки формируется свое сообщество, участники всей экосистемы периодически собираются на конференцию PyData.

На современном этапе документация пакетов унифицируется благодаря поддержке фонда NumFOCUS.

Проблема установки и обновления экосистемы

На рисунке XKCD показана проблема установки перечисленных выше пакетов, у нее есть свое название "Dependency hell", когда необходимо установить сотни сторонних пакетов.



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



На этом завершаю обзор экосистемы Python. Получилось кратко, так как каждый модуль заслуживает отдельной статьи :)
Python
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
Красная или синяя таблетка?

В Матрице безопасности выбор очевиден

Выберите реальность — подпишитесь

Дима Федоров

Open Source и аналитика данных в ИБ