Чтобы привести аргументы в споре о том, какой язык программирования популярнее, участники дискуссии часто ссылаются на те или иные исследования. Хорошо, что в последнее время количество подобных исследований растет — выбирай любое.
А что, если с ростом всевозможных индексов, списков и рейтингов усилятся споры между самими исследователями? На что будут ссылаться они в своей аргументации?
Журнал IEEE Spectrum представил общественности плод коллективного труда – новый рейтинг языков программирования.
Постоянные лидеры рейтинга не упали с пьедестала, однако без сюрпризов все-таки не обошлось.
Как пишет издание, у исследователей не было возможности «посмотреть через плечо каждого программиста» и увидеть, какой язык он использует. Поэтому они пошли другим путем: исследовали чаты, open source сообщество, а также объявления о вакансиях. Рейтинг также учитывает результаты поиска в Google, Twitter, GitHub, StackOverflow, Reddit, Hacker News, CareerBuilder, Dice. Кроме того, в рейтинге отражены данные собственной цифровой библиотеки Institute of Electrical and Electronics Engineers (Институт инженеров электротехники и электроники) – Xplore Digital Library.
В 2016 году C стал самым популярным языком программирования по версии IEEE Spectrum: после двух лет пребывания на втором месте он, наконец, вытеснил Java. За ним следуют Java, Python, C ++ и R. Если C и Java просто поменялись местами, то скачок языка R на 5 место — это неожиданность. В результате из ТОП-5 выпал, казалось бы, более популярный язык – C#.
Активное распространение R связано с трендом больших данных. С проникновением ИТ-систем во все сферы деятельности человека экспоненциально растет объем всевозможных данных: о нас, нашей личной жизни, машинах, компаниях, клиентах, процессах и так далее. По оценкам IDC, к 2020 году мировой объем цифровой информации увеличится в 10 раз и достигнет 44 зеттабайт. Для хранения и анализа таких объемов данных создаются новые ИТ-инструменты и иногда используются не привычные нам языки программирования.
R — это универсальный язык программирования, разработанный для применения в таких областях, как разведочный анализ данных, классические статистические тесты и высокоуровневая графика. Благодаря своей обширной и непрерывно расширяющейся библиотеке пакетов язык R занимает ведущие позиции в статистике и в добыче данных. Язык R был интегрирован в ряд коммерческих пакетов, таких как IBM SPSS и InfoSphere, а также Mathematica.
Изначально R был разработан сотрудниками статистического факультета Оклендского университета Россом Айхэкой (англ. Ross Ihaka) и Робертом Джентлменом (англ. Robert Gentleman) (первая буква их имён — R).
R доступен под лицензией GNU GPL.
В 2010 году R вошёл в список победителей конкурса журнала Infoworld в номинации на лучшее открытое программное обеспечение для разработки приложений.
Справедливости ради, напомним, что индекс TIOBE поставил этот язык только на 17 позицию.
Python обошел С++ и занял 3 место. В индексе TIOBE он тоже поднялся, но на 4, сместив на позицию вниз многострадальный C#.
Язык программирования Swift (от компании Apple) преодолел сразу пять строк и переместился на 11 позицию. Впервые он появился в рейтинге IEEE Spectrum в 2015 году. Он мог бы подняться еще выше, но язык Go (от компании Google) удержал свои позиции и замыкает 10-ку лидеров. Хотя еще в прошлом году Go занимал 13 место.
На 12 и 13 месте в рейтинге расположились Arduino и Ассемблер. Правда, Arduino не является языком программирования – это платформа для разработки электронных устройств. Зато рост она демонстрирует значительный – на целых пять позиций год к году.
Shell потерял много приверженцев и сразу восемь мест. Он стал даже менее популярным, чем Perl и Visual Basic.
Исследователи IEEE поставили Visual Basic на 18 место, а в TIOBE полагают, что он должен быть на 8-м.
В топ-20 также вошли HTML, Matlab, Scala и Objective-C. Исследователи пишут, что по поводу HTML у некоторых собеседников был чрезвычайно пессимистичный настрой. Однако язык разметки не потерял высокую позицию.
30-ку с достоинством замыкают Fortran, Delphi и D. Хотя индекс TIOBE поставил Delphi на 12 место.
IEEE Spectrum составляет этот рейтинг уже третий год подряд. В этом году в списке самых популярных языков программирования по версии IEEE не появился ни один новый (по сравнению с прошлым годом) язык.
IEEE Spectrum — ежемесячный журнал. Его издателем является Институт инженеров электротехники и электроники. Википедия приводит официальное описание журнала:
«Журнал «IEEE Spectrum», флагманская публикация IEEE, исследует развитие, применение и последствия внедрения новых технологий. Он предвосхищает тенденции в области машиностроения, науки и техники, а также служит форумом для понимания, обсуждения и руководства в этих областях».
Индекс TIOBE, в отличие от IEEE Spectrum, ставит на первое место язык Java, а C — на второе.
Пусть кто-то скажет, что С устарел, что его широкое распространение — следствие удачи и активного PR. Пусть кто-то скажет, что без UNIX язык С никогда бы не создали.
Тем не менее, С стал своего рода стандартом. Он, так или иначе, прошел испытание временем в отличие от многих других языков. С-разработчики до сих пор востребованы, а создателей языка IT-сообщество вспоминает добрым словом.
Комментарии (62)
bfDeveloper
28.07.2016 19:30-6Мне рейтинг IEEE Spectrum видится более реалистичным, нежели TIOBE. Первая десятка тиоба ещё ничего, но дальше сплошные странности. ActionScript, который живее всех живых, и процветает в социалках, не попал даже в топ50, хотя там есть куча экзотики.
Ну и всё равно все эти рейтинги не несут полезной информации. По ним бессмысленно выбирать язык для изучения, будь то первый или десятый изучаемый язык. С качеством языка, зарплатой или сложностью применения рейтинг никак не коррелирует. Так помериться, у когодлиннеепопулярнееPrototik
29.07.2016 10:53-2Зато коррелирует с популярностью языка на рынке, а значит и со сложностью найти работу по данному языку. Так что и не абсолюнто бессмысленны эти рейтинги.
geher
28.07.2016 20:25-1Интересно, почему для питона не указано мобильное применение?
Народ до сих пор пишет на нем скрипты под пусть и безнадежно устаревшие, но до сих пор существующие на руках Nokia N900, N950 и N9, а также под вполне здравствующую йолку.psyriccio
28.07.2016 22:57-3Чего чего, а подобные python-у языки, да без нормального (хотя бы) JIT-а, совсем не хочется видеть на мобильных устройствах. Вернее приложения на них написанные. Большой очень оверхед. Python очень хорош для всякой прикладнухи на ББ, для science-вычислений неторопливых (ну или торопливых если тяжёлую часть в какой-нибудь cublas перенести, а Пайтоном только рулить этим всем). Хорош, как встраиваемый язык плагинов и скриптов (blender тому отличный пример). Но не в мобильных приложениях, давайте пожалеем аккумуляторы и нервы пользователей, и тем, и другим — не сладко и без того.
geher
29.07.2016 11:37Пес его знает. Иногда нужно бывает на мобильном устройстве быстро набросать какой-нибудь простой скрипт для быстрого решения разовой задачи.
Я использую для таких целей shell script (благо, N9 это позволяет «из коробки»). Но очень многие предпочитают в таких случаях именно python. Да и серьезные приложения на python написаны. И батарейка вроде как-то не особенно страдает.postgree
29.07.2016 19:23+1Мне кажется, что я повторяюсь. Но очень небольшому количеству людей необходимо топить урановые ломы в ртути. Если так рассуждать, то практически у всех языков на картинке должны быть все иконки. Я больше чем уверен, что есть скрипты и демоны на пыхе у некоторых индивидов для локальной автоматизации (десктоп). И даже больше, я видел демона на пыхе, управляющей турникетами, и прекрасно работало в школе.
Просто есть люди, у которых справочник экстремальных половых извращений — настольная книга. И есть люди, которые про него даже не знают.psyriccio
31.07.2016 14:06+1Ну, что касается домашней и не очень автоматизации, то можно встретить и автоматизацию, где какая нибудь утилита по «скрипту» в гуёвых окнах мышей клацает. Я не думаю что такие случаи надо в подобной статистике вообще учитывать. Демон на пыхе в турникетах тоже вообщем-то нормально, если этот код никогда не попадет в какую-нибудь систему побольше, не станет библиотечным и т.п. Просто часто оверхэд имеет свойство накапливаться, сегодня это скрипт в турникете, завтра он вошел в состав «системы контроля доступа ВИТЯЗЬ-11», которая на пакетных файлах построена, потом эта система установлена на одном сервере с системой видео наблюдения «Базилио», написанной на 1С. (Я сильно утрировал, конечно, но ход мысли думаю понятен). В итоге это такой маленький (маленький ли?) легаси-ад, причем сопровождать его не всегда будут те же люди, что были виновны в его «разработке». Вот вернёмся к мобильной разработке, очень многие «разработчики», такое ощушение, что совсем не учитывают, что в телефоне пользователя будет работать ещё какое-либо приложение, коме их собственной разработки. Нужно обязательно иметь пару-тройку сервисов, стартующих вместе с ОС телефона, нужно запросить побольше прав на всякий случай, поменять или попросить поменять побольше настроек. Почаще отображать всякие уведомления. Насовать в софт побольше всяких зависимостей, причем половина функционала, обеспеченного этими зависимостями, может при этом быть обеспечена самой ОС. Но нет, разрабам не нравится вид уведомлений или тулза для сканирования QR-кода, которая уже установлена в системе, и они попросят установить другую или вообще вкорячат этот функционал в приложение. Другой пример — сейчас каждый третий сайт пытается подписать тебя на уведомления. Кто-нибудь пробовал подписаться хотя бы на 5-6? И как ощущения? Но функция-то вроде полезная? Но многие сайты будут слать уведомления так, как будто вы получаете только их уведомления, а именно по любому «чиху». В итоге если таких сайтов 5-6 это превращается в ад и в итоге эта функция не используется вовсе или требует фильтрации сторонними плагинами.
psyriccio
31.07.2016 13:41Так речь же не про простой скрипт, а про разработку мобильных приложений? Простой скрипт конечно можно и наверное даже нужно писать на python и подобных.
FreeNickname
28.07.2016 22:57+1Думаю, по той же причине, по которой для Swift не указан веб (см. хотя бы perfect.org): как бы можно, в теории, но очень ограниченно и не серьёзно.
Shamov
28.07.2016 20:38А кто-нибудь знает, зачем составляются подобные рейтинги? Какой в этом смысл? Что это вообще за метрика такая — «популярность языка»? Почему так важно её мерить? По-моему, в этих рейтингах смысла не больше, чем было бы в составлении рейтинга популярности тригонометрических функций. Типа: Сенсация! Срочно в номер! Исследователи проанализировали корпус всех математических текстов, опубликованных в 2015 году, и выяснили, что функция sin() используется на 12% чаще функции cos(). Ну обалдеть теперь! Будем теперь везде использовать sin(). Ведь он же популярнее.
Rastishka
28.07.2016 20:48+1Например для планирования личного будущего на пару лет вперед.
Типа, "пора хоронить Делфи и начинать учить С".
Хотя более наглядно были бы два рейтинга — спроса и предложения.
Shamov
28.07.2016 21:47Языки не взаимозаменяемы. Они как инструменты. Как бы популярен ни был гаечный ключ, он никогда не сможет заменить отвёртку. Как можно планировать личное будущее, отталкиваясь от популярности инструмента, которая вообще ничего не значит? Вот потребуется тебе через пару лет закрутить шуруп, а ты уже похоронил отвёртку и два года изучал приёмы работы с гаечным ключом, который все эти два года был фантастически популярен и не покидал чартов. Как эта его популярность поможет закрутить шуруп?
warlock13
29.07.2016 02:41+10Вы не умеете закручивать шурупы гаечным ключём? И вы называете себя программистом?
punkkk
29.07.2016 10:34+1Не взаимозаменяемы? А вы знаете много программистов на A или B?
У некоторых людей есть потребность применять свои знания за хорошие деньги, а с популярным инструментом это сделать, обычно, проще. Если во всем доме используются только болты, то как бы вы мастерски не придерживались своей отвертке…Shamov
29.07.2016 11:06Наоборот, навык владения популярным инструментом гораздо сложнее продать за хорошие деньги. Высокая конкуренция давит на цену сверху и снижает её. Хотя постойте… Кажется, я только что понял, кто и зачем заказывает составление таких рейтингов.
punkkk
29.07.2016 11:18+2Ну уж нет, популярность порождает востребованность, но не порождает специалистов.
Shamov
30.07.2016 16:45См. выше. Ровно один комментарий назад кое-кто думал, что владение популярным инструментом позволяет хорошо зарабатывать. Верно только одно из двух. Либо это правда, но тогда популярность порождает новых специалистов. Либо популярность языка специалистов не порождает, но тогда объяснить это можно только тем, что на владении популярным языком нельзя хорошо заработать.
punkkk
30.07.2016 20:45Нет, популярность вполне может рождать спрос, так как популярность и есть этот спрос. Но как бы много не было предложений, не факт что хотя бы одно из них окажется качественным. (грубо говоря)
Shamov
30.07.2016 21:11Вы говорите какой-то бред. Не в том смысле, что я не согласен, а в том, что речь не согласована. Противоречащие друг другу утверждения идут в одном предложении через запятую. Даже если принять то, что популярность — это проявление спроса, то это значит, что спрос рождает популярность… а не наоборот.
punkkk
31.07.2016 01:56Вполне себе согласована, если вдуматься в написанное. В чем именно противоречие то? Популярность рождает спрос, так как популярность есть совокупность возможностей, и преимуществ языка, одновременно с этим возможности и преимущества развиваются вместе со спросом на этот язык.
VaalKIA
29.07.2016 12:29Неудачный пример, в строительстве часто шурупы забивают молотком. Я не придираюсь, просто для инфо.
Shamov
29.07.2016 23:02Напротив, аналогия очень удачная. Если в качестве контрпримера можно привести тот факт, что где-то кто-то забивает шурупы молотком, то аналогия просто превосходная. Ведь когда кто-то забивает шуруп молотком, он тем самым показывает, что вообще не понимает концепцию шурупа. Прям как с языками программирования. Всегда находятся те, кто активно использует тот или иной язык, совершенно не понимая его концепцию.
daiver19
28.07.2016 21:24+11На 12 и 13 месте в рейтинге расположились Arduino и Ассемблер. Правда, Arduino не является языком программирования – это платформа для разработки электронных устройств. Зато рост она демонстрирует значительный – на целых пять позиций год к году.
На 15-м месте в рейтинге расположилась Tesla. Правда, Tesla не является языком программирования — это марка автомобиля. Зато рост она демонстрирует значительный.
North
29.07.2016 10:00+7Я считаю, что нужно включить в рейтинг Покемонов. Они, правда, тоже не язык программирования — зато о них много пишут и они демонстрируют значительный рост!
pehat
29.07.2016 12:45I think that Arduino is pretty cool guy. Eh demonstrates significant growth and doesnt afraid of anything.
perfect_genius
28.07.2016 21:28+3Всегда забавно видеть ассемблер так высоко.
mark_slepkov
29.07.2016 10:35+1Ну там же не уточняется какой именно ассемблер. ) Видимо это в совокупности x86 + ARM + AVR + etc. Вот и получился так высоко.
BelBES
28.07.2016 22:27-2Благодаря своей обширной и непрерывно расширяющейся библиотеке пакетов язык R занимает ведущие позиции в статистике и в добыче данных.
Хм, он действительно так уж сильно развивается? По моим впечатлениям, народ близкий к BigData/ML предпочитает Python… а вот как использовать R для полноценной работы с большими массивами данных, даже представить сложно, т.к. хоть в rpan'е и есть куча всяких библиотек, но чего-либо способного параллелиться на CUDA/TBB/MPI/etc. там фиг найдешь, большинство пакетов представляют собой уровень качественных лабораторных работ и не более того.
ZaEzzz
29.07.2016 00:20+1Я дико обожаю питон, но подскажите пожалуйста, каким образом в нем можно обрабатывать на раз массивы хотя бы на пару десятков террабайт?
nuald
29.07.2016 02:49Используя соотвествующие алгоритмы, конечно. Напомнило мне вопрос к Гвидо: как отсортировать миллион 32-битных целых используя 2 мегабайта памяти. Вот его ответ: Sorting a million 32-bit integers in 2MB of RAM using Python Вкратце: используя merge-sort и временные файлы (естественно, при условии что оригинальный список тоже в файле, т.к. в памяти он не поместится).
gorodnev
29.07.2016 08:26+1А если они в памяти и есть 2 мегабайта памяти дополнительно, то еще проще — merge sort in place.
nuald
29.07.2016 02:38+2R очень популярен в Big Data (по крайней мере, на западе), на нем прототипируют, а потом переписывают на Python, Scala или другой язык программирования, более пригодный для разрабатываемой платформы. С развитием Apache Spark уже появилась возможность использовать R непосредственно в production (SparkR), так что прогресс на месте не стоит.
GPU instances использовать в AWS дороговато, поэтому многие не особо заморачиваются, но опять-таки прогресс идет, и на последнем Spark Summit уже обсуждали поддержку GPU: GPU Support In Spark And GPU/CPU Mixed Resource Scheduling At Production Scale Как я понял, в случае R это было бы: Spark создает RDD, R использует GPU для вычислений фаз DAG (используя соответствующие пакеты или непосредственно через Rcpp). Но могу быть не прав, без экспериментов не скажу насколько это практично.
Terras
29.07.2016 00:55-1Ребят, а можно уточнить.
Реально ли кто-то на питоне пишет что-то адекватное для десктопа? Там же очевидно, что есть более продуктивные языки под это дело.grossws
29.07.2016 01:05Видел довольно много гуёв на PyQt, пишут. Например, calibre. На pygtk тоже делают.
А какие языки для гуя вы считаете более продуктивными?
nuald
29.07.2016 02:59Dropbox написан на Python: 6 Lessons From Dropbox — One Million Files Saved Every 15 Minutes В частности, они используют wxPython (Google Drive клиент тоже использует эту библиотеку).
Небольшой оффтопик. Сравнивая разные кроссплатформенные библиотеки, мне больше всего тоже нравится wxWidgets, потому что она использует нативные контролы. Qt, конечно, богатая библиотека, но все-равно не то (контролы собственные), плюс необходима лицензия для коммерческих приложений.grossws
29.07.2016 03:19+1Qt, конечно, богатая библиотека, но все-равно не то (контролы собственные), плюс необходима лицензия для коммерческих приложений.
Справедливости ради, у них есть LGPLv3, т. е. можно динамически связывать с закрытым кодом. Требование на публикацию изменений самой библиотеки (при распространении), естественно, имеется.
wxPython
kicad тоже его использует
WST
29.07.2016 08:33Когда-то пользовался мессенджером Gajim (как основным — никогда, предпочитал Psi+), он как раз написан на Python. Есть ещё видеоредактор OpenShot, тоже на нём, вроде бы (хотя могу ошибаться).
monolithed
29.07.2016 01:16-1В статье приводятся два очень важных ресурса, на которые действительно можно ссылаться при формировании подобных рейтингов. Однако, я не знаю какие цели преследовала команда IEEE Spectrum, но их компетенция в этом вопросе ничтожна. Ни алгоритма вычисления рейтинга, ни декомпозиции по перечисленным ресурсам в их исследовании нет.
Вот реальные цифры GitHub'а и StackOverflow — безусловный лидер JavaScript.Indemsys
29.07.2016 09:55-3Реальные цифры будут это если взять всех железячников.
Что такое миллионы программистов под PC и WEB и даже мобильные приложения по сравнению с миллиардами устройств в IoT.
Скажем возьмем производственную фирму на 100 человек. На ней будет один Web программист, один программист внутренней ERP, и куча ардуинщиков и юзеров Raspberry PI, а это чисто C и иногда проблески C++.
bfDeveloper
29.07.2016 13:35-1GitHub — новомодное явление для новомодных языков. Под новым я понимаю лет 10. C, C++, asm x86, COBOL, FORTRAN и многие другие там представлены очень слабо. Просто потому, что программисты на этих языках часто не пользуются гитхабом. Да и Full Stack Overflow Developer'ов на этих языках нет — не взлетит. Но это не значит, что на этих языках не пишут. Большинство таких языков постепенно вымирает, в том числе из-за того, что не вписались в современный мир, но вымирать они могут ещё десятилетиями и будут востребованы очень долго.
alaska332
29.07.2016 09:00+1Если HTML — язык программирования, то почему в рейтинге нет других, мега популярных языков: pdf, rtf, xml, docx...?
Indemsys
29.07.2016 09:58Почему же, есть Ladder logic.
pdf просто не попал по популярности.
Мой VBA тоже не попал. Хотя думаю Excel знают все и формулы из VBA вставлять все умеют. В реальности он бы и занял первое место.alaska332
29.07.2016 10:12+1Странно, на pdf в мире создается в миллион раз больше текстов, чем на java.
;-)
Bellicus
29.07.2016 10:40Да что вы к HTML пристали? А всякие, cuda, labview, ladder и arduino никого прям не смущают.
zenkz
29.07.2016 10:35Для Enterprise разработки наверно более справедлив такой рейтинг (из личного опыта):
— HTML + Javascript (Потому что эта связка есть почти на всех современных проектах, т.к. все стараются уйти от десктопа в веб, а в вебе без этого не выжить)
— Java (потому что кросс-платформенный)
— C# (потому что удобный)
— C/C++ (потому что мощный/быстрый)
— Python (потому что самый удобный из скриптовых)
— PHP (не знаю почему)
ShadowsMind
29.07.2016 11:23+1Еще один «булщит-рейтинг». Не один из этих рейтингов никогда не будет отражать полной картины.
Судить об том насколько язык популярен и востребован надо совершенно иным способом — непостредственно опрашивать самих разработчиков, IT-компании и прочее. Из таких наиболее правдивых рейтингов мне показался рейтинг от dou, там хоть цифры наиболее проадивые, а не какойто асбтрактный «spectrum rating»: % от рынка, индекс удовлетворенности, работают/планируют в след.проекте/мечтают и т.д…
А если судить по рейтингу со статьи, то выходит, что R/Matlab специалисты в разы востребованее чем те же Scala разработчики — ну смешно же.
DoDius
30.07.2016 02:55А все равно, Си — лучше чем Pascal !
© Вечные споры в кофейне в середине 90-х.
sayber
31.07.2016 14:02Все эти рейтинги не отображают реальное положение дел.
Даже если смотреть языки для веб-программирования, рейтинг будет не однозначный.
Т.к. проекты в веб бывают разного направления. Для коммерции одно, для поиска другое, для данные третье и т.д.
Вот если взять сферу программирования, разбить на определенные направления и составить рейтинг, то тогда будет более реальная картина.
meta4
Прикольные языки: Microsoft, AJAX, Lynx, Windows, Dos
hoxnox
Ага, особенно PEARL на картинке в облаке тегов…
samizdam
Как говорится, Вы не поверите https://en.wikipedia.org/wiki/PEARL_(programming_language)
Из-за чего, между прочим, Perl — именно так в итоге и называется ;)
ZaEzzz
Посмотрев на критерии оценки, я понял желтизну и незначительность рейтинга. Это как спрашивать у пользователей интернета пользуются-ли они интернетом.
Нет, правда, составлять рейтинг по форумам и вопросам? А если у языка дока настолько замечательная, что вопросов не возникает совсем?
Это не рейтинг популярности, а рейтинг «твиттеровости». Особенно повеселило, что shell стал менее популярным, чем VB и рядом еще есть такой ЯП как HTML и он не столь популярен как ассемблер.
А почему нет ЯП Word? Я возмущен!
rauch
Последние лет 5-6 здесь публикуется этот/подобные рейтинги популярности языков.
Неизменным остается комментарий, подобный вашему…
сменилось поколение, пришли новые юные, а спор все о том же
ZaEzzz
Наличие подобных комментариев говорит о том, что в статье нет адекватного рейтинга. Видимо его до сих пор никто не смог составить (вот этом я не удивлюсь).
Данный рейтинг вроде как бы «новый» на хабре, интересно посмотреть на критерий оценки. А вот с критериями оказалось все плохо — их по сути нет. То есть по факту данный рейтинг представляет из себя абстрактное высказывание мнения неизвестно кого неизвестно по какой теме. У меня сложилось впечатление, что кто-то взял околоразрабные теги и начал по ним искать проанализировав кол-то результаов выдачи гуглом. Иначе логику нахождения html с asm в одном срезе я понять не могу. Это как сравнить верблюда с отверткой.
sp01
LabView — NIшная SCADA-среда разработки