[Перевод] Хватит ссылаться на TIOBE
Что такое TIOBE?
Индекс TIOBE — это показатель популярности языков программирования. Индекс обновляется раз в месяц… Важно заметить, что индекс TIOBE — это не признак лучшего языка программирования или языка, на котором написано больше всего строк кода.Индекс можно использовать для проверки актуальности ваших навыков программирования или для принятия стратегического решения о том, какой язык программирования следует применять для создания новой программной системы.
Источник: tiobe.com.
Индекс языков программирования, помогающий выбрать язык, который нужно использовать. Похоже, полезная штука!
Как TIOBE вычисляет этот индекс? Звучит странно, но подсчитывается количество результатов поисковых движков по каждому языку программирования. Не количество выполняющих поиск людей, не количество отправляемых запросов, не эмоциональная составляющая запроса. Он полностью зависит от того бесполезного числа, которое возвращают поисковые движки. (Источник: TIOBE Index Definition.)
Чтобы создать иллюзию зависимости от данных, создатели индекса проверяют не один поисковый движок (google.com), а несколько (bing.com, google.de, google.co.in и некоторые другие). Но 25 бесполезных источников не лучше, чем один бесполезный источник.
Хотя по такому запросу в Google есть 24,9 миллиона результатов, не рекомендую программировать на этом языке.
Абсурдность TIOBE
Какой же итог мы получаем на выходе, имея такой мусор на входе?
Давайте посмотрим на общие тренды. Возможно, это позволит нам принимать стратегические решения.
В 2016 и 2017 годах обрушились линии трендов двух самых популярных языков в индексе: Java (зелёный) и C (чёрный). Java упал на 42%. У языка C всё было ещё хуже — 62%. Что произошло? Упал спрос или предложение? За их счёт не выросли никакие другие языки, возможно, мы наблюдаем признаки рецессии в отрасли разработки ПО? Стоит ли отдать приоритет переписыванию написанных на Java приложений?
Оказалось, что в 2018 году и C, и Java существенно выросли в индексе, вернувшись к своему уровню 2016 года. Полагаю, так получилось из-за изменений в алгоритме поиска Google. И надеюсь, никто не принимал решений на основании этих данных.
Возможно, вместо трендов мы должны учитывать рейтинг конкретных языков.
- По любой подходящей метрике (будь то пул-реквесты в Github, вопросы на StackOverflow, опросы разработчиков или количество вакансий) языком номер 1 является JavaScript. Согласно TIOBE, JavaScript (7-е место) ниже, чем Visual Basic (6-е место).
- Вероятно, вам интересно, почему Visual Basic забрался так высоко? Раньше так не было. 4 марта 2020 года его доля составляла 0,77%. Но когда мир перешёл в состояние локдауна, популярность VB взлетела до небес. 29 дней спустя он вырос в шесть раз, достигнув 4,72%, и с тех пор продолжал расти. (Кстати, подтвердить этого не может ни один другой источник. Ни тренды Google Search, ни вопросы на StackOverflow, ни что-либо иное. Что это произошло, считает только TIOBE.)
- Чтобы ощутить абсурдность этого, для контекста сообщим, что Visual Basic вдвое лучше языков Swift (1,27%) и Objective-C (0,94%) вместе взятых. Вся экосистема iOS, iPadOS, watchOS и macOS вполовину меньше могучей экосистемы Visual Basic.
- Язык ассемблера (8-е место) находится или слишком высоко, потому что никто не программирует на нём, или слишком низко, ведь разве в конечном итоге всё программирование не сводится к ассемблеру? Как бы то ни было, рейтинги ошибочны.
- К сожалению, рынок программирования на Logo (48-е место) очень сузился. Во времена своего расцвета в TIOBE он находился на 21-м месте. Это язык программирования, на котором нужно двигать черепашку по экрану.
И так можно продолжать долго. Можно задаться вопросом, почему TypeScript чахнет на 37-м месте, сильно отставая от Delphi/Object Pascal (14-е место) и Scratch (21-е место). Но вы поняли принцип — всё это может иметь смысл только по случайности.
Возможно ли, что при полностью неверных результатах индексу всё равно удаётся делать правильные прогнозы? И снова нет. В отчёте TIOBE за март 2012 года высказывается пессимизм относительно Go — популярного в 2022 году языка программирования. Также низко в рейтингах оказался Python, сегодня по любым метрикам находящийся в тройке лидеров.
Любопытно, что старых отчётов с неудачными прогнозами на сайте индекса не найти.
Выбор языков для проектов
К счастью, существуют более подходящие способы для оценки языков.
Нужно смотреть на то, насколько они технически подходят к проектам.
- Можно ли нанять/обучить разработчиков для работы с ним?
- Будут ли они рады писать на нём?
- Какой будет скорость разработки на этом языке? Какими будут эксплуатационные издержки от выполнения кода в продакшене?
- Нужно ли нам будет использовать сторонний код? Существует ли этот код и насколько он качественный?
Только ваша команда может ответить на эти вопросы. Это зависит от ваших бизнес-задач, от местного рынка труда и вашего бюджета на разработку. Если вы наняли умных людей, они смогут в этом разобраться.
Чуть в меньшей степени вашей команде нужно учитывать долговременные тенденции. В будущем язык тоже должен хорошо подходить технически. Будет плохо, если вы можете найти разработчиков сегодня, но спустя несколько лет вам придётся умолять программистов вернуться с пенсии.
Прогнозировать будущее сложно, но вы можете обратить внимание на:
- Опросы разработчиков
- StackOverflow Annual Survey — самые используемые, любимые и желанные для работодателей языки.
- JetBrains — самые популярные и быстрорастущие языки.
- Тренды Github.
- Тренды StackOverflow того, о чём спрашивают люди.
- Тренды Google того, что ищут люди.
Как выбирать языки разработчику
В отличие от проекта, в котором нужно выбрать язык и придерживаться его, вам это делать необязательно. Если вы привязали себя к одному языку, откажитесь от этого. Вы разработчик, а не «разработчик на языке X».
Постепенно расширяйте свой инструментарий. Ваш любимый язык программирования не сможет решить любую задачу, с которой вы столкнётесь
в будущем, поэтому периодически учите новые. Если у вас в руках только молоток, всё начинает казаться гвоздями.
Если вы работали с языками, где есть сборка мусора, то попробуйте изучить язык, где есть ручная работа с памятью, и наоборот. Если вы в основном работали с императивными языками, попробуйте язык, в котором используются функциональные конструкции, и наоборот. Анализируйте известные вам языки и пробуйте те, которые предлагают что-то отличающееся.
Но что бы вы ни делали, не принимайте решение на основании количества результатов в Google.
В комментарии на Reddit мне указали на другие статьи с критикой TIOBE. В них объясняется, почему в этом индексе так высоко находятся малоизвестные языки наподобие Delphi (14-е место). Так получилось, потому что сообщество разработчиков на Delphi приложило много усилий для манипуляций с рейтингами TIOBE. Молодцы, ребята. [Прим. пер.: автор опубликованного в 2008 году поста для накрутки популярности рейтинга языка включал ключевые слова про него в личные блоги, посты на форумах и призывал других заниматься подобным.]