C++ подвинул Python в тройке лидеров апрельского рейтинга TIOBE

16.04.2019      41713

Апрельский рейтинг, составленный специалистами аналитического портала TIOBE, принес неожиданные перемены. Относительно молодой и очень перспективный Python, подававший большие надежды, покинул тройку лидеров. Его место занял старый-добрый С++.

Python не виноват

Python – действительно интересный язык: простой, с низким порогом входа и впечатляющими возможностями. У него простой и элегантный синтаксис, избавленный от множества скобок и запятых, и целые россыпи «синтаксического сахара» – одни только генераторы чего стоят!

С Python сегодня работают как математики и специалисты в сфере искусственного интеллекта, так и эксперты по кибербезопасности, разработчики автотестов, бэкенд-разработчики и представители других направлений. Для него доступно огромное количество библиотек с открытым исходным кодом, которые позволяют запустить сложнейшие системы в сжатые сроки.

Почему же Python сдал позиции? По словам экспертов TIOBE, его поклонников меньше не стало. Просто С++ вышел на новую волну популярности. Он все такой же быстрый, обеспечивает работу с данными и компонентами на низком уровне, а аудитория «плюсов» – это как минимум три поколения разработчиков.

 

Первая 20-ка «фигурантов» рейтинга

 

Возрождение легенды

Когда-то доля С++ на рынке составляла 15%. Сейчас рекордные 15% у Java, которая широко применяется в бэкенде сайтов, Android и решениях интернета вещей. А у С++ – менее 9%, весьма скромный результат.

Но эксперты верят, что С++ вполне способен вернуть былую славу. Основные проблемы языка связаны с выходом новых версий компиляторов.

Сейчас же, после выхода трех ключевых редакций C++11, C++14 и C++17 и их поддержки основными компиляторами, ситуация восстанавливается. Популярность «плюсов» стала возрождаться, а новые версии Gcc, Clang и Visual Studio сделали разработку проще, комфортнее и продуктивнее.

Коротко о С++

С++ – компилируемый язык программирования со статической типизацией. Наследник языка С создан в конце 1980-х годов сотрудником Bell Labs Бьерном Страуструпом. Первый коммерческий выпуск С++ состоялся в 1985 году.

Фактически Страуструп взял синтаксис С и дополнил его средствами языка Симула, чтобы эффективно решать возникающие задачи. В С++ появились объекты и классы, и это ускорило разработки за счет внедрения объектно-ориентированного подхода.

Классы в С++ отражают типы объектов, событий и других явлений. Их можно наследовать, создавая целые иерархии классов, а также ограничивать доступ к функциям и данным класса (это обеспечивает инкапсуляцию — сокрытие деталей реализации от пользователя).

Кроме того, классы — это полиморфизм: можно создать единый интерфейс и множество его воплощений, чтобы работать со всеми ними единообразно и не задумываться об особенностях реализации. Реализуется полиморфизм и через перегрузку функций.

Наконец, в С++ есть мощный механизм дружественных функций и классов. Он позволяет открыть доступ к приватным членам классов, сторонним классам и функциям, сохраняя нужный уровень конфиденциальности.

Преимущество С++ в том, что он, как и чистый С, позволяет работать с ресурсами на низком уровне и эффективно оптимизировать код, но в то же время внедрять парадигму объектно-ориентированного программирования. К тому же С++ поддерживает практически любой код на С и имеет обширную стандартную библиотеку классов и функций, которая постоянно расширяется.

Новейший стандарт языка — С++17 2017 года.

Вот как выглядит простейшая программа на С++:

 


#include <iostream> // подключаем стандартную библиотеку ввода-вывода

using namespace std; // устанавливаем пространство имен

int main() // создаем основную функцию, с которой начинается выполнение программы

{

cout << "Hello, world!" << endl; // выводим надпись в консоль и переводим курсор на новую строку

return 0; // возвращаемое значение — показатель корректности завершения программы

}

 

Изучение С++ рекомендуем начать с книги Бьерна Страуструпа «Язык программирования C++» и «Полного справочника по C++» Герберта Шилдта. Обе книги много раз переиздавались и позволяют быстро вникнуть в особенности непростого, но логичного и мощного языка.

Как составляется рейтинг TIOBE

Рейтинг языков программирования TIOBE отражает их популярность в мире. Позиция в списке никак не связана с качеством языка, его возможностями, количеством написанных строк кода или широтой применения.

При составлении рейтинга эксперты подсчитывают количество поисковых запросов, касающихся того или иного языка, в четырех поисковых системах: Google, Bing, Yahoo! и Baidu. Также учитываются результаты выдачи Wikipedia, Amazon и YouTube.

Рейтинг публикуется ежемесячно. Он дает возможность понять, какие языки заслуживают внимания, и помогает определиться тем, кто хочет сменить направление разработки.

Апрельский рейтинг TIOBE


Автор:
Обозреватель


См. также

Новость ИТ и 1С Языки программирования

Разработчик Брэд Кокс скончался на 76 году жизни. Вместе с Томом Лавом Кокс создал язык программирования Objective-C, который используют преимущественно для разработки приложений для macOS и iOS.

29.01.2021    20187    user1015646    3       

1

Новость Искусственный интеллект Языки программирования

Ларри Теслер , скончавшийся 16 февраля 2020 года, возможно, не является всемирно известным, как Стив Джобс или Билл Гейтс, но его вклад в упрощение использования компьютеров и мобильных устройств нельзя переоценить. Ведь именно он изобрел используемые по всему миру функции «вырезать», «копировать» и «вставить».

25.02.2020    25951    user-programmist    6       

7

Новость Конкурс Языки программирования

Финалистом всероссийского конкурса «Цифровой прорыв» стал 76-летний петербуржец Евгений Полищук. В сентябре он вместе с командой отправится на финал конкурса в Казань.

08.08.2019    28515    user-programmist    23       

24

Новость ИТ-компания Google Языки программирования

Киргизский разработчик Тилек Мамутов создал сервис Outtalent. Разработка поможет ИТ-специалистам справиться с языковыми и культурными барьерами и найти работу за рубежом. 

31.07.2019    16788    user1015646    8       

7

Новость Linux Языки программирования Программист

Разработчики ядра Linux заменили все непристойные и оскорбительные выражения в комментариях к коду на слово «hugs», что переводится как «объятия». Это стало шагом к исполнению нового кодекса поведения.

29.12.2018    22219    Sherlock2850    7       

7

Новость Образование Языки программирования

Карьерный сервис «Мой круг» изучил особенности трудоустройства молодых ИТ-специалистов. Исследование охватывает весь трудовой путь начинающих айтишников: от получения образования до первых рабочих мест.

24.10.2018    25309    VKuser24342747    13       

4

Новость Языки программирования

Авторам языка программирования Python пришло сообщение от программиста Виктора Стиннера с просьбой заменить слова в коде.

14.09.2018    41571    Sherlock2850    56       

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. messulete 16.04.19 11:45 Сейчас в теме
Бьерна Страуструпа «Язык программирования C++» если с этой книги начать изучение, то очень быстро и закончишь))
evn-zorin; kalyaka; DoctorRoza; +3 Ответить
3. Darklight 33 16.04.19 12:41 Сейчас в теме
(1)Согласен - очень плохая рекомендация начинать изучение с той книги - она хороша тем, кто какраз-таки хочет углубить я в язык C++ уже имея где-то годовой опыт программировния на нём. Ну и конечно же, прежле чем изучать C++ настоятельно реккомендую изучить просто "Си" - все полученные знания пригодятся при изучении языка C++ а по языку "Си" есть много "лёкой" литературы, которая минимально отпугнёт не опытного читателя. Но вообще, даже "Си" это не очень удачный язык для первого изучения (даже второго - если первым был 1C или любой другой чисто прикладной язык). И вообще, перед изучением C/C++ лучше изучить C# (хоть он сразу явно ООП-язык, но осваивать его куда приятнее чем C|C++ и у них много общего), ну или хотя бы, начать с Java или любого другого языка со статической типизацией.
23. kuza2000 219 29.02.20 01:37 Сейчас в теме
(3) Ну вот не надо рекомендовать C# "перед" изучением C++. Это совершенно разные языки, с разной парадигмой.
24. Darklight 33 29.02.20 11:27 Сейчас в теме
(23)Языки может и разные - синтаксис схожий. Просто изучать C++ с ходу - очень тяжело (даже ели до этого изучишь другой не Си подобный язык). Не ну мог конечно предложить сначала изучать Си - и ранее в институте на соответствующих факультетах так и делали (не знаю как сейчас). Только зачем? Сейчас Си почти не актуален (кому надо - узкие специалисты - потом его быстро освоят, зная С++). Хотя да, Си - язык не такой уж и плохой, не особо сложный, достаточно изящный. Вот только изучать его (если в этом нет нужды) совсем не нужно. А вот, C# - вполне себе востребованный язык. Может не настолько на сколько Java - но востребованный (и от C# потом проще ко многим языкам переходить, будь то Java, Kotlin, perl, go; разве что Rust тут в особой касте будет - но он вообще достаточно уникальный и не простой в освоении язык, даже после С++). И освоить программирование на C# куда проще, чем на Си или уже тем более на С++. А потом, коли, приспичит, можно переходить к изучению языка С++. Но ни в коем случае не стоит браться за C++ если не умеешь, более менее, сносно программировать ни на одном другом Си -подобном языке (С, C#, Go, Java, Kotlin, Perl (хотя его лучше после освоения C++ изучать); и, конечно, до С++ бы ещё освоить какой-ни будь другой компилируемый язык попроще - правда тут выбор не так уж велик, если не рассматривать Си подобные языки - разве то Delphi Object Pascal) ещё хоть как-то актуальны, ну Fortran ещё можно глянуть).
Но я вообще не стал бы рекомендовать C++ к изучению - пока в этом не появится конкретная необходимость (как и язык Си). Лучше - освоить пару-тройку языков как Java, C#, Python, Go, JavaScript, Switt, Kotlin, PHP (на выбор) - и уже потому если очень надо будет изучать Си, С++, Perl и Rust
25. kuza2000 219 29.02.20 17:35 Сейчас в теме
(24) Мой комментарий к тому, что это совсем разные языки, с разной парадигмой, и разными сферами применения. Знание C# не поможет в изучении C++.

С++ и С идут от железа. Это языки для системного программирования. Они обеспечивают практически полный контроль над железом, памятью. Максимум возможностей, никакого контроля (только если сам пожелаешь). Программист ничем не ограничен. Си, вообще, может работать на голом железе, без операционки. (Скорее всего, и C++ так компильнуть можно, точно не знаю). В свое время я Си изучал после ассемблера весьма своеобразным методом. Я писал код на Си, а потом смотрел на ассемблемере, во что он скомпилировался. И заставлял компилятор Си делать то, что мне нужно на ассемблере, и почти всегда получалось. Си, это, фактически ассемблер, только более по человечески записанный :)

С# - это энтерпрайз. Изучение C# может помочь изучить, например, Java, но никак не C++. У Java и C# намного больше общего. Ну да, типизация разная. Но тот же сборщик мусора, похожее управление памятью, нет прямого доступа к памяти, указателей, та же компиляция до байт-кода. Собственно, C# был создан микрософтом именно как конкурент джаве. А на синтаксис смотреть не стоит, он практически ни о чем не говорит. Сейчас очень много даже скриптовых языков с Си-подобным синтаксисом.
26. Darklight 33 02.03.20 09:24 Сейчас в теме
(25)Знание C# поможет в изучении базового синтаксиса (очень много схожих моментов), концепции ООП (хоть в С++ это не обязательно, но применяется часто), концепции построения проекта приложения и применения библиотек (хотя тут есть некоторые важные отличии, базис схожий), и много чего ещё помельче.
Просто C++ очень сложно изучать с нуля. А зная C# - изучить С++ будет на порядок проще. Особенно,вероятно, если сделать переходный период - т.е. начинать изучать C++ CLI для приложений под .NET.

С остальным не спорю.
22. evn-zorin 33 16.04.19 20:48 Сейчас в теме
(1)аналогично и справочник Г.Шилд
Лучшая книга по С++ - Роберт Лафоре! может кому пригодиться)
2. s22 22 16.04.19 12:35 Сейчас в теме
с++ становиться современным и слишком сложным языком.
На стороне питона простота.
У с++ на нише питона просто нет шансов.
Но языки будут сближаться впитывая фишки друг друга.
4. DoctorRoza 16.04.19 12:48 Сейчас в теме
(2) ну не питон, а пайтон. А скорее всего, Go затмит плюсы, хоть в нем и нет всяких дженериков и прочее.
5. s22 22 16.04.19 12:59 Сейчас в теме
(4) Питон все таки. Я сектант в этом вопросе. А у Го потребление памяти по любому в 2 раза больше, так как автоматическое управление памятью
8. Darklight 33 16.04.19 13:14 Сейчас в теме
(5)У Питона тоже автоматическое управление памятью. Но да, Go расходует больше - но для скриптовых языков в областях их применения сейчас это совершенно не критично - памяти у компьютеров теперь очень много, даже на смартфонах - её не очень жалко (ну а при обработке Big data должны применяться другие платформы)!
7. Darklight 33 16.04.19 13:11 Сейчас в теме
(4)Ему не нужны дженерики, он же с динамической типизацией.
У Go - мне кажется, нет будущего - гораздо менее изящный язык чем Python, но, впрочем, и Python я бы тоже не назвал особо изящным, но Python всё-таки быстрее набирает популярность, чем Go.
Go - гугловский язык. Не знаю зачем они вообще его разработали, ведь как скриптовый язык - они сейчас Dart (на основе JavaScript) продвигают.
Вряд ли вообще какой-нибудь язык с динамической типизацией затмит C++ в обозримом будущем. Но на перспективу - да, шансы есть - но, возможно, такого динамического языка ещё не появилось. А из статической типизации С++ - его уже затмил язык Java.
9. spacecraft 16.04.19 13:45 Сейчас в теме
(7)
Ему не нужны дженерики, он же с динамической типизацией.

GO с динамической типизацией, да еще скриптовый язык? Мы про один и тот же язык программирования говорим?
GO - язык со строгой статической типизацией. Полностью компилируемый в объектный код целевой машины и исполняется непосредственно. Сравнивать его с Python не корректно. Он аналог С++. Самый большой его плюс по сравнению с С++, это быстрота компиляции.
Solovyeff; +1 Ответить
10. Darklight 33 16.04.19 13:49 Сейчас в теме
(9)Я про Python говорил, ладно, проехали.
11. spacecraft 16.04.19 13:52 Сейчас в теме
(10) круто:
(4) "А скорее всего, Go затмит плюсы, хоть в нем и нет всяких дженериков и прочее."
(7) "(4) Ему не нужны дженерики, он же с динамической типизацией."
(10) "Я про Python говорил, ладно, проехали."
и по скриптовый язык тоже "про Python"?
17. Darklight 33 16.04.19 14:27 Сейчас в теме
(11)Нет - это, я был не точен
12. s22 22 16.04.19 13:55 Сейчас в теме
(9)
GO - язык со строгой статической типизацией. Полностью компилируемый в объектный код целевой машины и исполняется непосредственно. Сравнивать его с Python не корректно. Он аналог С++. Самый большой его плюс по сравнению с С++, это быстрота компиляции.

Сравнивать его с С++ не корректно, вероятно ближе Джава и Шарп, так как автоматическое управление памятью.
14. spacecraft 16.04.19 14:00 Сейчас в теме
(12) вот сравнивать его с Java и C# еще более не корректно. GO полностью компилируемый язык в целевую платформу и не использует виртуальную машину. Так же как и С++.
А то что управление памятью, то во-первых оно (управление памятью) регулируется и можно управлять памятью самим, во-вторых это не принципиально-концептуальное отличие, которое не дает их сравнивать. Отличие С++ от Си еще больше, однако их сравнивают.
15. s22 22 16.04.19 14:25 Сейчас в теме
(14)
это принципиально-концептуальное отличие

Автоматическое управление памятью напрочь убивает RAII.
Это делает языки принципиально разными.
Rust как раз между С++ и JAVA в этом смысле - код требуется писать так(и только так?), что бы на этапе компиляции можно было определить где освобождается память.
18. spacecraft 16.04.19 14:36 Сейчас в теме
(15) ок. QT это новый язык и его нельзя сравнивать с С++? А у него есть сборщик мусора, пусть только для встроенный типов и их производных.
Есть библиотеки и прочие инструменты для автоматической сборки мусора программ на С++.
Не надо пытаться сравнивать код разных ЯП построчно.
20. Darklight 33 16.04.19 14:54 Сейчас в теме
(15)
Автоматическое управление памятью напрочь убивает RAII.

А зачем оно надо? Ну я понимаю - в драйверах там, при работе с оборудованием - это ещё может быть востребовано. Но для решения 95% офисных задача - это только всё усложняет.
Да, и есть поддержка RAII стиля программирования, например, и в С#, и в Python. Но лично я считаю, что это "прошлый век" - а если говорить об алгоритмах описания бизнес-логики - RAII - для них это сущее зло! Будущее - за и языками подходами программирования - где после создания объекта не нужно будет думать о его деструкции - там, где в этом нет прямой потребности, обусловленной логикой приложения - каким-то событием - и эта деструкция никак не должна влиять на устойчивость последующего выполнения алгоритмов.
19. Darklight 33 16.04.19 14:45 Сейчас в теме
(14)У С/С++ тоже есть управление памятью, просто оно не такое автоматическое как, у то же Java. Да и, скажем, поддержка фремворка .NET и полного автоматического управления памятью у MS C++ тоже есть - правда этим никто не пользуется и эта часть уже не развивается.

C# Тоже может полностью компилироваться в целевую платформу. Для Java тоже есть сторонние решения.

Вообще, я считаю - будущее за языками, которые компилируются в LLVM - а далее либо выполняются на виртуальной машине либо компилируются далее уже в байткод инструкций процессора конечной платформы. И там не важно - какой язык был использован для написания исходного текста, в LLVM среде уже все языки равны между собой!
Языки C/C++ имеют компилятор в LLVM, как и много других языков (например Java, Python, Haskell) - а, со временем, их будет ещё больше. Считаю, что даже платформе "1С: Предприятие" в будущем (наверное уже к 9-тому поколению) стоит перейти именно на эту виртуальную машину LLVM, вместо своей стековой - это, как минимум, позволит легко подключать библиотеки, написанные на других языках (например - универсальные алгоритмы писать на относительно низкоуровневых языках, имеющих, минимальные накладные расходы при компиляции в LLVM, а бизнес-логику и интерфейсное взаимодействие писать на более высокоуровневых скриптовых языках - которые в итоге так же будут скомпилированы в единое пространство выполнения LLVM - и все алгоритмы смогут вызывать друг друга независимо от исходного языка). Ну а если и вся платформа будет скомпилирована в LLVM - то она сразу же станет чрезвычайно кросс-платформенной и расширяемой (аддонами)!
6. Darklight 33 16.04.19 13:02 Сейчас в теме
(2)
Но языки будут сближаться впитывая фишки друг друга.

Они уже давно это делают, но языки С/С++ ещё очень долго будут популярны - они не заемными при низокуровневой работе с оборудованием (и его драйверами) и там, где производительность критична (обычно это игровые движки или очень серьёзные математические вычисления).
Там где просто нужна высокая производительность и/или надёжность, или нужна кросплатформенность - сейчас в основном рулит Java (и, значительно в меньшей степени - C#)
JavaScript в основном окупировал клиентский контекст WEB-сегмента (ну просто потому что его все браузеры поддерживают, и случилось эта популяризация ещё до HTML5), да и новые инкарнации JavaScript (и его очень молодого аналога TypeScript) очень даже мощны - так что активно набирают популярность и в бизнес-приложениях - как внутренний скриптовый язык - но обычно в средствах визуализации, особенно если нужна поддержка web-браузера (или использование его движка).
Python - очень популярен именно как внутренний скриптовый язык для различных приложений (от игр до бизнес приложений) - на нем пишут бизнес-логику, когда она не критична по скорости выполнения, но нужна простота и надёжность алгоритма.
SQL - сейчас это стандарт работы с реляционными базами данных - и, видимо, ещё долго будет, несмотря на ущербность своего синтаксиса и сложность отладки.
PHP, Perl - обычно чисто серверные web-языки для обычных сайтов (не требующих сложной логики), хотя простыми я бы их не назвал - применяют там где нет поддержки Java
13. Поручик 4661 16.04.19 13:59 Сейчас в теме
Я как-то начинал с Бьёрна, но Turbo/Borland/Delphi быстро показали, как жить надо.
messulete; sikuda; +2 Ответить
16. s22 22 16.04.19 14:26 Сейчас в теме
(13)
Я как-то начинал с Бьёрна, но Turbo/Borland/Delphi быстро показали, как жить надо.

Аналогично.
21. PerlAmutor 155 16.04.19 19:01 Сейчас в теме
Я как-то начинал с В.В. Подбельского "Язык Си++" 4 изд. 1999 год. В итоге понял, что DOS - прошлый век и перешел на Borland Builder C++ 5. Затем понял, что жизнь есть за пределами MS Windows и пересел на Qt. В последствии понял, что Qt штука классная, но за 1С платят больше и работу тут найти проще. В итоге телом с 1С, а душой с Qt.
VsHome; wowik; YPermitin; +3 Ответить
Оставьте свое сообщение