Що за нісенітниця відбувається з рейтингами популярності мов програмування?
Я сьогодні вивчав індекс TIOBE, як роблю часто, і як часто робить більшість з тих професійних програмістів, яких я знаю. Він претендує на вимірювання популярності мов програмування у світі, а його графік зміни популярності з часом розповідає просту історію: Java і C з незапам’ятних часів залишаються королями мов з великим відривом.
Але, стривайте-но, давайте не так швидко. Конкуруючий список PYPL Index (PopularitY of Programming Languages) каже, що королями є Python і Java, а C (враховується, раптово, спільно з C++) знаходиться десь в глибині списку. Що відбувається?
Просто у цих двох списків дуже різні методології підрахунків. Однак їх об’єднує одне – їх спірність методологій, якщо враховувати, що їх метою є вимірювання популярності мов програмування. TIOBE вимірює кількість запитів у пошуковику. PYPL вимірює, як часто люди гуглят навчальні матеріали по тій чи іншій мові.
Обидві ці заходи погані. Можна очікувати, що доступність онлайн-ресурсів буде дуже відстаючим індикатором. У популярного колись мови, тепер відданий забуттю, повинні залишитися мільйони старих веб-сторінок, присвячених йому, напівмертвих сайтів і записів блоги, які ніхто не читав роками. А пошуки навчальних матеріалів повинні схилятися до тих мов, яким навчають студентів. Ця міра не має відношення до того, які мови реально часто використовуються професіоналами-практиками.
В числах цих рейтингів є безліч аномалій. Якщо вірити TIOBE, в минулий раз C злетів від найнижчого місця в рейтингу до мови року за п’ять місяців. Я можу повірити, що З відроджується за рахунок вбудованих систем. Але я так само легко можу уявити, що цей зліт відбувся за рахунок недоліків далеко не ідеального методу вимірювання.
Більш кричуща аномалія в обох рейтингах – відносна ефективність Objective-C і Swift, двох мов, на яких пишуть рідні додатки для iOS. Я можу повірити, що в сумі вони відчувають деякий занепад перед обличчям популярності таких крос-платформних альтернатив, як Xamarin і React Native. Але я насилу вірю в те, що після чотирьох років розкрутки Swift компанією Apple – з моєї точки зору, мови куди як більш кращого — Objective-C залишається більш популярним і широко використовуваним. Я на роботі стикаюся з різними додатками для iOS/tvOS/watchOS, і розмовляю з безліччю для розробників iOS. Дуже рідко вдається знайти людину, яка досі не перейшов з Objective-C на Swift.
Однак історії з життя даних не замінять, правда? Якщо б з цими методологіями конфліктував тільки мій особистий досвід, я б вирішив, що він просто зіпсований помилкою відбору. І я б спокійно це зробив, якщо б тільки не існувало іншої методики виміру популярності мов програмування. Я кажу про щорічних звітах GitHub, де зазначаються п’ятнадцять найбільш популярних мов програмування, що використовуються на цій платформі. І ці числа ідеально збігаються з моїм досвідом, і серйозно розходяться із заявами TIOBE і PYPL.
Відповідно до звітів GitHub від 2016 і 2017 років, найбільш популярна мова програмування в світі, причому з великим відривом, це Javascript. На другому місці йде Python, на третьому Java, а на четвертому Ruby. Це різко контрастує з TIOBE, де зазначаються Java і C, а потім, з великим відривом, Python і C++ (Javascript взагалі на восьмому місці). І з PYPL, які заявляють про такому порядку: Python і Java, великий відрив, потім Javascript і PHP.
Очевидно, що числа GitHub не відображають всю професійну область на 100%. Їх вибірка дуже велика, але стосується тільки проектів з відкритим кодом. Однак хочу зазначити, що GitHub – єдиний рейтинг, де Swift виявляється більш популярним, ніж Objective-C. З-за цього він виглядає набагато переконливіше. Однак його вибірка, заснована на відкритому коді, робить його не визначальним.
Ця статистика насправді має значення, а не просто задовольняє цікавість і надає певну інформацію про індустрії. Мова – це ще не все, але він все-таки має значення. Люди визначають, які мови їм вивчати, яку роботу шукати і чим займатися, на підставі їх популярності та їх відносної цінності в майбутньому. Тому трохи неприємно, що три ці методики вимірювання так сильно, так радикально відрізняються. На жаль, нам, вочевидь, доведеться задовольнятися ворожінням на чайному листі замість чітких цифр.