Рейтинг языков программирования-извечная тема для споров и обсуждений. Оно и понятно, никому не хочется бесполезно тратить свое время на изучение мало известного или давно забытого языка. Выбор языка программирования определяет будущее программиста особенно на начальной стадии его головокружительной карьеры. Вашему вниманию небольшое исследование на эту тему, основанное на результатах опросов. Особенностью этого анализа можно считать то, что отношение к языку программирования не представлено здесь как застывший снимок в данный момент времени, а предпринята попытка изучить динамику на основе приобретенного практического опыта.
В опросе приняли участие 2394 человека (2019 из Украины). Основные результаты представлены ниже:
На каком языке начинали работать
И что изменилось:
На каком языке пишут для работы сейчас
Первые выводы — Cobol наконец-то умер, популярность С# и Java приблизительно одинакова, за ним следует PHP и С/C++, затем скрипт-языки новой волны (Python и Ruby). Сообщество программистов на Objective-C уже превысило сообщество разработчиков на Delphi. Сегмент разработки на 1C все еще значимый (как раз та граница, которая отделяет маргинальные языки от мейнстрима).
А что люди думают о будущем?
Если бы сейчас начинали коммерческий проект и была свобода выбора…
О-о: видим что разрыв между С# и Java возрастает, а место третьего языка занимает Python вместо PHP. Готовимся к новому мейнстриму?
В опросе был вопрос — планируете ли Вы сменить язык разработки в ближайший год. Можно посчитать “индекс приверженности” к языку: каков процент разработчиков не планирует сменить основной язык разработки в следующем году.
Приверженность к языку
⅔ пользователей Delphi планируют сменить язык в течение ближайшего года (если у Вас есть проект на Delphi, то вам следует задуматься). Впрочем, половина пользователей PHP тоже думает куда-то сбежать. Куда — можно использовать вопрос о том, какой язык люди бы выбрали в новом проекте, для определения направления движения.
Итак, PHP-программисты выбрали бы:
45% — остаться на PHP
18% — Python
10% — Java
8% — Ruby
3% — другой
3% — C/C++
а вот из Delphi хотят переходить в основном на Java и С#:
31% — остаться на Delphi
20% — Java
14% — C#
7% — Python и С/С++
по 5.5% — Ruby и PHP
Java-программисты в свою очередь после Java ориентируются в основном на Scala (5%), Python (5%) и С# (4%), а C#-программисты после С# — на Java (5%) и на тот-же Python (5%).
Теперь посмотрим на соотношение языка и опыта работы:
Опыт работы: C#, Java, C/C++
Как мы видим, после приобретения 5-ти лет опыта люди начинают уходить из активной разработки, ну а те кто остался — в итоге “накапливаются” в последней колонке. Как и следовало ожидать, пользователи С/С++ заметно старше. Еще видно, что аудитория Java в последнее время также моложе аудитории C#: возможно это связанно с адаптацией Java в вузовские учебные программы в последние годы. Куда уходят люди после 5-ти лет — непонятно. Позиций в менеджменте на всех не хватит, следовательно, либо 5 лет назад возрос приток специалистов, либо это такая эмиграция.
Посмотрим на эти же тенденции в скрипт-языках:
Опыт работы: PHP, Python, Ruby
Первое что можно сказать — представители этой категории программистов задерживаются в программировании заметно реже. Обращает на себя факт, что очень много “Ruby-стов” имеют именно пятилетний опыт работы — 5 лет назад как раз все о нем говорили?
Следующий вопрос — а какие языки используются как дополнительные? Всего наши респонденты привели 68 языков, среди которых встречается даже APL, CPL и Cobol. Я отобрал только те, которые встречаются больше десяти раз:
Какие дополнительные языки используете для работы
Видим, что JavaScript нужен всем, а дальше цепочка лидеров все та же. Также обращает на себя внимание относительная распространенность Lua и Lisp.
Ну и наконец, на каких языках люди пишут “для себя”? Всего было приведено 45 языков, среди которых есть brainf*ck, Boo и Go. Те, которые встречаются больше десяти раз:
Языки для pet-projects
Особенных изменений нет (разве что исчез Fortran). Что еще интересно — у скольких из заполнивших анкету, есть свои проекты — по блогам ходит утверждение, что поддерживают свои проекты около 10% программистов, но среди заполнивших анкету их порядка 63%. Еще можно выделить группу языков, которые используются для open-source и развлечений гораздо больше, чем для работы. Это Haskell, Asm, Scala, Lua, JavaScript и Lisp. Ну а меньше всего отношение хобби проектов к реальным, как и следовало ожидать, у 1С, C# и Java.
Кем производится выбор языка:
Как видим, какого-то одного доминирующего способа выбора нет. Распределение по языкам более или менее однородно, за исключением 1С, где относительно велико число специализированных организаций. Также, результаты выбора языка программирования зависит от того, как он делался: заказчики чаще выбирают С# и Java (то-же самое с совместным решением и “зависит от проекта”), если выбор делается исполнителем то чаще выбираются С/С++ и PHP.
Есть ли какие-то различия в нашей аудитории в Украине и за рубежом?
Разницы между распределением опыта работы между респондентами из Украины и за ее пределами особой нет, а вот в использовании языков — есть, что иллюстрирует следующая диаграмма:
То есть зарубежные респонденты заметно больше пишут на Python, Ruby и С/С++ и заметно меньше — на Java, C# и PHP.
Ошибки:
- перечень языков был взят из TIOBE-top20, однако порядка 5% респондентов указали, что их основного языка программирования нет в этом перечне. Это хоть и не сильно искажает общую картинку, но все-же довольно много. В следующий раз сделаем какой-то предварительный анализ набора языков.
- Отсутствие четких объяснений в преамбуле анкеты привело к некоторой терминологической путанице, в частности:
- JavaScript и ActionScript представляют собой реализацию одного и того же языка, однако Flex сообщество не идентифицирует свой язык как JavaScript.
- Я не уверен, что DBase-подобные языки были поняты всем респондентами в нормативном значении (т.е. совместимыми с DBase: Clipper, Foxpro и т.д.)
- Не было четко оговорено, что языки программирования это именно языки программирования, а не вспомогательные языки запросов или разметки. В дальнейшем сделаем отдельный список таких языков.
Руслан Шевченко