Python

Результаты опроса Python-разработчиков 2020

Результаты опроса Python-разработчиков 2020

В октябре 2020 года мы в четвертый раз провели большой опрос Python-разработчиков в сотрудничестве с Python Software Foundation. Более 28 000 человек из почти 200 стран/регионов приняли участие в исследовании и помогли нам определить текущее состояние экосистемы Python.

Результаты опросов 2017, 2018, 2019, 2021, 2022 и 2023 годов.

Использование Python

Python в качестве основного и второстепенного языка

85%Основной
15%Второстепенный

Для 85% участников опроса Python — основной язык программирования.

Использование Python с другими языками

> 100%
ОсновнойВторостепенныйСовместно
2020
2019
42%/43%39%/40%36%/40%34%/37%27%/28%18%/19%10%/10% 9%/10% 8%/9% 8%/8% 6%/7% 4%/5%JavaScriptHTML/CSSBash / ShellSQLC/C++JavaC#PHPGoTypeScriptRRust
Все результаты

Чаще всего в комбинации с Python используется JavaScript. Вместе с HTML/CSS, Bash/Shell и SQL он входит в топ языков, хотя бы один из которых используют совместно с Python 40% опрошенных.

JavaScript и C/C ++ — самые популярные основные языки среди тех, кто назвал Python второстепенным.

Инструменты для веб-разработки и Data Science

> 100%
Data Science
Веб-разработка
43%/49%39%/46%37%/73%35%/62%34%/19%21%/16%17%/2%11%/9% 8%/13% 8%/19% 7%/13% 4%/2% 4%/6% 4%/4%11%/10% 8%/3%SQLBash / ShellJavaScriptHTML/CSSC/C++JavaRC#PHPTypeScriptGoVisual BasicRustKotlinДругоеНет

Диаграмма «Веб-разработка» построена на основе ответов тех, кто выбрал веб-разработку, отвечая на вопрос «С какой целью вы используете Python чаще всего?». На диаграмме «Анализ данных», собраны ответы тех, кто выбрал анализ данных и машинное обучение.

Только 8% пользователей Python, работающих с данными, не используют никаких дополнительных языков, и только 3% веб-разработчиков пользуются исключительно Python. 75% веб-разработчиков используют и Python, и JavaScript, что неудивительно.

Для чего используют Python

Мы спрашивали, с какой целью люди используют Python, какими видами разработки они занимаются и как совмещают разные варианты применения языка.

Для чего вы используете Python?

54%И для работы, и дляличных проектов
26%Для личных,образовательных,сторонних проектов
19%Для работы

С какой целью вы используете Python?

> 100%
ОсновнойВторостепенныйСовместно
2020
2019
55%/59%50%/51%40%/40%38%/39%36%/37%29%/31%27%/26%23%/25%19%/18%19%/21%13%/14% 9%/7% 8%/8% 7%/6% 5%/4% 7%/6%Анализ данныхВеб-разработкаМашинное обучениеDevOps / cистемное администрирование / написание скриптов автоматизацииПрограммирование веб-парсеров / скраперов / краулеровТестирование ПО / написание автоматизированных тестовОбразовательные целиПрототипирование программного обеспеченияРазработка ПО для настольных компьютеровПрограммирование сетевых задачКомпьютерная графикаРазработка игрРазработка ПО для встраиваемых системРазработка мобильного ПОРазработка мультимедийных приложенийДругое

Незначительные различия в цифрах за два года объясняются тем, что в этом году в опросе участвовало больше студентов (13% против 10%). Поэтому больше респондентов выбрали вариант «Образовательные цели», а на долю других областей применения языка пришлось меньше ответов.

Насколько активно вы занимаетесь следующими видами деятельности?

> 100%
основная деятельность
второстепенная деятельность
хобби
62%23%15%49%27%24%48%34%18%45%39%17%43%26%32%43%47%10%41%45%14%41%27%33%40%39%21%39%30%31%39%28%33%35%30%34%35%28%37%28%38%34%26%16%57%68%12%20%Веб-разработкаМашинное обучениеАнализ данныхПрототипирование программного обеспеченияОбразовательные целиТестирование ПО / написание автоматизированных тестовDevOps / cистемное администрирование / написание скриптов автоматизацииРазработка ПО для встраиваемых системПрограммирование сетевых задачРазработка ПО для настольных компьютеровРазработка мобильного ПОКомпьютерная графикаРазработка мультимедийных приложенийПрограммирование веб-парсеров / скраперов / краулеровРазработка игрДругое

С какой целью вы используете Python чаще всего?

ОсновнойВторостепенныйСовместно
2020
2019
27%/28%17%/18%13%/13% 9%/9% 7%/6% 4%/4% 4%/3% 3%/3% 3%/4% 3%/3% 1%/1% 1%/1% 1%/1% 1%/1% 0%/0% 5%/5%Веб-разработкаАнализ данныхМашинное обучениеDevOps / cистемное администрирование / написание скриптов автоматизацииОбразовательные целиРазработка ПО для настольных компьютеровПрограммирование веб-парсеров / скраперов / краулеровПрограммирование сетевых задачПрототипирование программного обеспеченияТестирование ПО / написание автоматизированных тестовКомпьютерная графикаРазработка ПО для встраиваемых системРазработка игрРазработка мобильного ПОРазработка мультимедийных приложенийДругое

Вы считаете себя дата-сайентистом?

Нет
Да
Другое
63%32%5%

Только 32% Python-разработчиков, занимающихся анализом данных и машинным обучением, считают себя дата-сайентистами.

Они используют Anaconda для обновления версий Python в два раза чаще, чем остальные пользователи языка, которые предпочитают Python.org.

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

Версии Python

Python 3 vs Python 2

Python 2
Python 3
25%75%16%84%10%90%6%94%2017201820192020

Области применения разных версий языка

> 100%
Python 3
Python 2
57%/34%51%/32%40%/30%40%/17%37%/18%30%/24%27%/19%25%/16%19%/16%19%/19%10%/22% 8%/8% 8%/13% 5%/12% 4%/7% 7%/6%Анализ данныхВеб-разработкаDevOps / cистемное администрирование / написание скриптов автоматизацииМашинное обучениеПрограммирование веб-парсеров / скраперов / краулеровТестирование ПО / написание автоматизированных тестовОбразовательные целиПрототипирование программного обеспеченияРазработка ПО для настольных компьютеровПрограммирование сетевых задачКомпьютерная графикаРазработка ПО для встраиваемых системРазработка игрРазработка мобильного ПОРазработка мультимедийных приложенийДругое

Версии Python 3

3%Python 3.5 или болеераннюю версию
14%Python 3.6
28%Python 3.7
44%Python 3.8
12%Python 3.9

Установка и обновление Python

> 100%
34%33%19%17%15% 6% 5% 3% 1% 1% 1% 3%12%Python.orgPython, предоставляемый ОС (через apt-get, yum, homebrew и т. д.)AnacondaDocker-контейнерыpyenvСобираю из исходного кодаЗа меня это делает кто-то другойАвтоматическое обновление через поставщика облачных услугActivePythonIntel Distribution for PythonpythonzДругоеНе обновляю версию языка

Пользователи Windows обычно устанавливают Python с сайта Python.org, тогда как пользователи Linux и macOS чаще используют пакеты, предоставляемые операционной системой, Docker-контейнеры или pyenv.

Способы изоляции окружения

> 100%
54%32%22%18% 8% 5% 3%22%VirtualenvDockerCondaPipenvPoetryVagrant / виртуальные машиныДругоеНет

Между инструментами изоляции окружения и IDE обнаружились интересные зависимости:

  • Больше половины пользователей Jupyter Notebook и JupyterLab предпочитают Conda. А среди пользователей других редакторов доля Conda составляет меньше 20%.
  • Пользователи Virtualenv и Docker чаще всего выбирают PyCharm Professional Edition.
  • Среди тех, кто предпочитает Pipenv, наиболее популярны VS Code и PyCharm.
  • Vim лидирует среди пользователей Vagrant и Poetry.

Возможности языка

За что любят Python

По результатам ответов на открытый вопрос «Какие три особенности Python нравятся вам больше всего?»

37%30%21%21%20%20%14% 9% 8% 7% 6% 5% 5% 5% 5% 4% 4% 3% 3% 2% 2%32%Понятный синтаксис, простота освоения языкаПростота написания и чтения кода, высокоуровневый языкГенераторы спискаУниверсальность, разнообразие библиотек на любой случайДинамическая типизация, утиная типизацияБогатые стандартные библиотеки, встроенные структуры данных, выражения, концепция «batteries included»*Большое сообщество, поддержка библиотек, понятная документация, PEPМультипарадигменностьБыстрое прототипированиеБольшая экосистема анализа данныхПростая обработка и форматирование строкСписок и словарьПереносимостьКросс-платформенностьДекораторыПараллелизм (asyncio, многопоточность, многопроцессорность)Интерпретируемый язык, не нужно компилироватьКомандная оболочка, интерпретаторы, IDEМенеджеры контекстаЛямбда-функцииСистема импортаДругое **

* Исключая стандартные библиотеки, встроенные структуры данных и выражения, которые мы вынесли в отдельные варианты ответа:

  • Генерация списков
  • Список и словарь
  • Декораторы
  • Asyncio, многопоточность, многопроцессорность
  • Менеджеры контекста
  • Лямбда-функции

** Другие характеристики, которые были отмечены <1% респондентов.

Что ждут от языка

По результатам ответов на открытый вопрос «Какие три языковые возможности вы хотите увидеть в Python больше всего?»

21%20%15%12%11% 9% 7% 7% 6% 5% 5% 4% 4% 3% 2% 2% 2% 1% 1%56%Статическая типизация, строгое указание типовУлучшения производительностиУлучшенный параллелизмСопоставление с образцом, оператор switchОфициальный компилятор Python, JIT-компиляторУлучшения стандартных библиотек*Более удобное управление пакетами, стандартизация установщика пакетовБиблиотеки и фреймворки для мобильной разработкиБольше возможностей функционального программирования, многострочные анонимные функцииРасширенная поддержка GUI-библиотек, улучшения tkinterПостоянные переменные, приватные методы, улучшения классов данныхУдаление/исправление GILОператоры из других языков: поддержка none в операторах, оператор pipe и т. п.Более удобное управление версиями, обратная совместимостьУлучшенное управление импортом, разрешение циклических зависимостей импортаРучное управление памятью, указателиПерегрузка функций/методовОптимизация хвостовой рекурсииВозможность использовать фигурные скобки / точки с запятой вместо отступовДругое **

* Исключая улучшения стандартной библиотеки, которые мы вынесли в отдельные варианты ответа.

** Другие характеристики, которые были отмечены <1% респондентов.

Фреймворки и библиотеки

Веб-фреймворки

> 100%
46%43%12% 4% 3% 3% 2% 2% 2% 1% 6%27%FlaskDjangoFastAPITornadoweb2pyBottlePyramidCherryPyFalconHugДругоеНет

Мы впервые включили FastAPI в варианты ответа, и он сразу оказался на третьем месте по популярности.

Фреймворки и библиотеки для анализа данных

> 100%
62%56%46%33%31%25%19%18%17%12% 4% 2% 1% 4%27%NumPyPandasMatplotlibSciPySciKit-LearnTensorFlowKerasSeabornPyTorchNLTKGensimTheanoMXNetДругоеНет

Пользователи NumPy чаще используют Conda для изоляции окружения, чем другие Python-разработчики (32% против 22%).

Фреймворки для юнит-тестирования

> 100%
49%28%13% 7% 4% 4% 4% 1%37%pytestunittestmockToxdoctestnoseHypothesisДругоеНет

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

Те, кто занимаются анализом данных и машинным обучением, используют тестовые фреймворки чаще, чем веб-разработчики и DevOps. А наиболее часто ими предсказуемо пользуются те, кто занимается тестированием ПО и написанием автоматических тестов.

Другие фреймворки и библиотеки

> 100%
54%32%22%19%16%16%13%11%10% 5% 5% 4% 4% 8%18%RequestsPillowAsyncioTkinterScrapyPyQTaiohttpPygameSixKivywxPythonTwistedPyGTKДругоеНет

72% разработчиков, предпочитающих AWS, используют фреймворк Requests.

Tkinter и Pygame в основном выбирают молодые специалисты с опытом работы менее года.

ORM

> 100%
35%35%32%14% 5% 3% 1% 1% 1% 4%Не занимаюсь разработкой баз данныхSQLAlchemyDjango ORMЧистый SQLSQLObjectPeeweeTortoise ORMPonyORMDejavuДругое

Большинство Python-разработчиков, использующих Flask, предпочитают SQLAlchemy, а пользователи Django используют Django ORM.

Базы данных

> 100%
45%39%38%19%18%11% 6% 3% 2% 2% 1% 1% 1% 1% 6%18%PostgreSQLSQLiteMySQLMongoDBRedisMS SQL ServerOracle DatabaseAmazon RedshiftNeo4jCassandraDB2HBaseCouchbaseh2ДругоеНет

PostgreSQL — самая распространенная база данных среди Python-разработчиков. Еще популярнее она среди пользователей AWS: ее предпочитают 65%.

Инструменты для работы с большими данными

> 100%
11% 9% 6% 5% 4% 2% 2% 1% 1% 1% 2%76%Apache SparkApache KafkaApache Hadoop / MapReduceDaskApache HiveApache BeamClickHouseApache FlinkApache TezApache SamzaДругоеНет

Большинство пользователей инструментов для работы с большими данными предпочитают JupiterLab, особенно те, кто работает с Apache Spark и Dask. На втором месте — Jupyter Notebook, а PyCharm Professional чаще всего выбирают пользователи Apache Kafka.

Облачные технологии

Популярные облачные платформы

> 100%
53%33%23%21%20%13% 5% 5% 4% 1% 8%AWSGoogle Cloud PlatformHerokuMicrosoft AzureDigitalOceanPythonAnywhereLinodeOpenStackOpenShiftRackspaceДругое

Heroku и PythonAnywhere популярны среди молодых специалистов с опытом работы до 2 лет. Более опытные Python-разработчики чаще выбирают AWS и DigitalOcean.

Как у вас реализовано выполнение рабочего кода в облаке?

> 100%
2020
2019
47%/47%43%/46%27%/25%25%/24% 2%/2%11%/11%Внутри контейнеровНа виртуальных машинахНа платформе PaaSБессерверноДругоеНет

Контейнеры — по-прежнему самый популярный способ запуска кода, а вот виртуальные машины понемногу сдают позиции: в 2020 году их использовали только 43% респондентов. Два года назад виртуальные машины были на первом месте с долей 47%.

Как вы разрабатываете облачные приложения?

> 100%
2020
2019
56%/56%40%/41%21%/22%18%/18%17%/17% 8%/9% 1%/1% 9%/8%Локально с помощью virtualenvВ Docker-контейнерахНа виртуальных машинахИспользую интерпретатор локальной системыВ удаленных окруженияхНапрямую в продакшен-окруженииДругоеНет

Тестировщики составляют большинство тех, кто ведет разработку в контейнерах Docker.

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

Инструменты

Операционная система

> 100%
Linux

68%

Linux

Windows

48%

Windows

macOS

29%

macOS

BSD

2%

BSD

1%

Другое

Чем опытнее Python-разработчики, тем чаще они предпочитают работать в Linux и macOS и тем реже выбирают Windows.

Системы непрерывной интеграции (CI)

> 100%
23%21%12% 7% 2% 2% 2% 1%10%46%Gitlab CIJenkins / HudsonTravis CICircleCITeamCityBambooAppVeyorCruiseControlДругоеНет

На этот раз первое место занимает Gitlab CI, опередив прошлогоднего лидера Jenkins/Hudson.

Тестировщики — самые активные пользователи систем непрерывной интеграции. Почти 80% респондентов, участвующих в тестировании ПО или написании автоматизированных тестов, используют CI-системы.

Инструменты управления конфигурацией

> 100%
17% 9% 4% 3% 2% 3%69%AnsibleСобственное решениеPuppetSaltChefДругоеНет

Редакторы и IDE

ОсновнойData ScienceВеб
33%29% 8% 4% 4% 3% 2% 2% 2% 2% 2% 1%PyCharmVS CodeVimSublime TextJupyter NotebookAtomEmacsSpyderIDLEJupyterLabIntelliJ IDEANotePad++
Все результаты

Чтобы определить, какие IDE и редакторы наиболее популярны, мы задали вопрос, в котором можно было выбрать только один вариант ответа. Варианты, набравшие меньше 0,5% в 2019 году, объединены в группу «Другое».

Совокупная доля PyCharm Community и PyCharm Professional — 33%, что соответствует результатам прошлого года. VS Code продолжает расти, набрав за год 5%. Между тем, большинство текстовых редакторов, таких как Vim или Sublime Text, сдают позиции.

Jupyter Notebook, Jupiter Lab и Spyder привлекли больше пользователей из Data Science.

Среди пользователей VS Code примерно поровну веб-разработчиков и аналитиков данных.

А среди пользователей PyCharm веб-разработчиков почти вдвое больше, чем тех, кто работает с данными. Эта разница особенно заметна среди пользователей PyCharm Professional Edition.

Инструменты для Python-разработки

> 100%
Хотя бы иногда
Никогда или крайне редко
89%11%89%11%87%13%85%15%79%21%78%22%77%23%73%27%71%29%64%36%63%37%61%39%51%49%42%58%41%59%используют системы контроля версийиспользуют автодополнение в редакторевыполняют рефакторинг кодаиспользуют виртуальные окружения Python для своих проектовиспользуют линтерыпишут тесты для своего кодаиспользуют базы данных SQLиспользуют отладчикиспользуют подсказки опциональных типовзапускают, отлаживают или редактируют код на удаленныхкомпьютерахиспользуют баг-трекерыиспользуют инструменты непрерывной интеграциииспользуют инструменты оценки покрытия кодаиспользуют Python-профилировщикиспользуют базы данных NoSQL

Большинство действий, перечисленных в этом вопросе, имеют явный сдвиг в пользу более опытных пользователей. Чем дольше люди в профессии, тем выше вероятность, что они будут использовать перечисленные технологии. Однако это не относится к опциональному указанию типов и автодополнению. Разработчики с более чем 11-опытом гораздо реже пользуются этими функциями, чем те, кто занимается программированием 3-5 лет.

Работа и занятость

В команде vs самостоятельно

48%Работаю в команде
48%Работаю над своимипроектамисамостоятельно
4%Работаю в качествеконсультанта илипреподавателя

Работа над проектами

42%Работаю над несколькимиразными проектами
41%Работаю над основным инесколькимидополнительнымипроектами
17%Работают над однимпроектом

Размер команды

75%2-7 человек
16%8-12 человек
5%13-20 человек
2%21-40 человек
2%Более 40 человек

Вид занятости

62%13% 7% 6% 6% 4% 1% 2%Работаю полный рабочий день в компании или организацииСтудентРаботающий студентСамозанятый(-ая)ФрилансерРаботаю неполный рабочий день в компании или организацииНа пенсииДругое

Размер компании

7%13%18%24% 6%10%19% 3%Только я2–1011–5051–500501–1 0001 001–5 000Более 5 000Затрудняюсь с ответом

Сфера деятельности компании

42% 7% 6% 5% 4% 4% 3% 2%Информационные технологии / разработка ПОНаукаОбразование / обучениеБухгалтерское дело / финансы / страхованиеМедицина / здравоохранениеПроизводствоБанковское дело / недвижимость / ипотечное финансированиеПродажи / дистрибуция / развитие бизнеса
Все результаты

Целевая отрасль

45% 5% 4% 4% 3% 3% 3% 3%Информационные технологии / разработка ПОБухгалтерское дело / финансы / страхованиеПродажи / дистрибуция / развитие бизнесаБанковское дело / недвижимость / ипотечное финансированиеМедицина / здравоохранениеПроизводствоТранспорт / логистикаУправление бизнесом / стратегический менеджмент
Все результаты

Рабочая роль

> 100%
72%19%19%18% 9% 7% 7% 6% 6% 5% 5% 4%14%Разработчик / программистАрхитекторАналитикРуководитель командыТехническая поддержкаСистемный аналитикIT- / генеральный / технический директорМенеджер продуктаИнженер по тестированиюАдминистратор баз данныхБизнес-аналитикТехнический писательДругое

Опыт программирования на Python

24%22%28%15%10%Менее 1 года1–2 года3–5 лет6–10 летБольше 11 лет

Опыт профессионального программирования

34%19%19%12%16%Менее 1 года1–2 года3–5 лет6–10 летБольше 11 лет

Возраст

10%40%31%12% 5% 2%18–2021–2930–3940–4950–5960 и старше

В какой стране/регионе вы живете?

Страны/регионы, которые указали меньше 1% респондентов, объединены в группу «Другое».

16%11% 7% 5% 5% 4% 4% 3% 3% 2% 2% 2% 2% 2% 1% 1% 1% 1% 1% 1% 1% 1%23%СШАИндияГерманияВеликобританияФранцияКитайРоссияБразилияКанадаПольшаНидерландыИспанияИталияАвстралияУкраинаИзраильЧехияШвецияЯпонияТурцияМексикаШвейцарияДругое

Исходные данные и методология

Хотите изучить данные самостоятельно? Скачайте анонимизированные ответы, чтобы провести собственный анализ. Делитесь выводами и наблюдениями в Твиттере с хештегом #pythondevsurvey и отмечайте @jetbrains и @ThePSF.

Прежде чем анализировать данные самостоятельно, обратите внимание:

1

Набор данных включает в себя ответы, полученные только через официальные каналы Python Software Foundation. После того как мы исключили дубликаты и ненадежные ответы, в наборе данных осталось 28 000 ответов, собранных с октября по ноябрь 2020 года за счет продвижения опроса на сайте python.org, в блоге Python Software Foundation, его аккаунтах в Твиттере и LinkedIn, а также через официальную рассылку Python и связанные с Python сабреддиты. Чтобы избежать искажения результатов в пользу определенного инструмента или технологии, для сбора ответов не использовались никакие каналы, связанные с какими-либо продуктами, сервисами и поставщиками.

2

Данные полностью анонимны и не содержат информации о респондентах и их местонахождении. Чтобы исключить вероятность идентификации респондентов по их комментариям, мы удалили все ответы на открытые вопросы.

3

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

Скачать исходные данные

JetBrains и Python Software Foundation благодарят всех, кто участвовал в опросе. Вы помогли нам составить актуальное представление об экосистеме Python.

Результаты опросов 2017, 2018, 2019, 2021, 2022 и 2023 годов.

Спасибо, что уделили время!

Если вам было интересно, поделитесь результатами исследования с друзьями и коллегами.

Примите участие в будущих опросах

Я даю согласие на обработку моих персональных данных с этой целью.

Если у вас есть вопросы, касающиеся этого исследования, или предложения для будущих опросов, напишите нам по адресу surveys@jetbrains.com или psf@python.org.

© JetBrains s.r.o., 2000 – 2021 гг. Все права защищены.