Возврат к списку

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

16.04.2019     

Апрельский рейтинг, составленный специалистами аналитического портала 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. messulete 16.04.19 11:45 Сейчас в теме
Бьерна Страуструпа «Язык программирования C++» если с этой книги начать изучение, то очень быстро и закончишь))
evn-zorin; kalyaka; DoctorRoza; +3 Ответить
3. Darklight 19 16.04.19 12:41 Сейчас в теме
(1)Согласен - очень плохая рекомендация начинать изучение с той книги - она хороша тем, кто какраз-таки хочет углубить я в язык C++ уже имея где-то годовой опыт программировния на нём. Ну и конечно же, прежле чем изучать C++ настоятельно реккомендую изучить просто "Си" - все полученные знания пригодятся при изучении языка C++ а по языку "Си" есть много "лёкой" литературы, которая минимально отпугнёт не опытного читателя. Но вообще, даже "Си" это не очень удачный язык для первого изучения (даже второго - если первым был 1C или любой другой чисто прикладной язык). И вообще, перед изучением C/C++ лучше изучить C# (хоть он сразу явно ООП-язык, но осваивать его куда приятнее чем C|C++ и у них много общего), ну или хотя бы, начать с Java или любого другого языка со статической типизацией.
22. evn-zorin 20 16.04.19 20:48 Сейчас в теме
(1)аналогично и справочник Г.Шилд
Лучшая книга по С++ - Роберт Лафоре! может кому пригодиться)
2. s22 19 16.04.19 12:35 Сейчас в теме
с++ становиться современным и слишком сложным языком.
На стороне питона простота.
У с++ на нише питона просто нет шансов.
Но языки будут сближаться впитывая фишки друг друга.
4. DoctorRoza 16.04.19 12:48 Сейчас в теме
(2) ну не питон, а пайтон. А скорее всего, Go затмит плюсы, хоть в нем и нет всяких дженериков и прочее.
5. s22 19 16.04.19 12:59 Сейчас в теме
(4) Питон все таки. Я сектант в этом вопросе. А у Го потребление памяти по любому в 2 раза больше, так как автоматическое управление памятью
8. Darklight 19 16.04.19 13:14 Сейчас в теме
(5)У Питона тоже автоматическое управление памятью. Но да, Go расходует больше - но для скриптовых языков в областях их применения сейчас это совершенно не критично - памяти у компьютеров теперь очень много, даже на смартфонах - её не очень жалко (ну а при обработке Big data должны применяться другие платформы)!
7. Darklight 19 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 19 16.04.19 13:49 Сейчас в теме
(9)Я про Python говорил, ладно, проехали.
11. spacecraft 16.04.19 13:52 Сейчас в теме
(10) круто:
(4) "А скорее всего, Go затмит плюсы, хоть в нем и нет всяких дженериков и прочее."
(7) "(4) Ему не нужны дженерики, он же с динамической типизацией."
(10) "Я про Python говорил, ладно, проехали."
и по скриптовый язык тоже "про Python"?
17. Darklight 19 16.04.19 14:27 Сейчас в теме
(11)Нет - это, я был не точен
12. s22 19 16.04.19 13:55 Сейчас в теме
(9)
GO - язык со строгой статической типизацией. Полностью компилируемый в объектный код целевой машины и исполняется непосредственно. Сравнивать его с Python не корректно. Он аналог С++. Самый большой его плюс по сравнению с С++, это быстрота компиляции.

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

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

А зачем оно надо? Ну я понимаю - в драйверах там, при работе с оборудованием - это ещё может быть востребовано. Но для решения 95% офисных задача - это только всё усложняет.
Да, и есть поддержка RAII стиля программирования, например, и в С#, и в Python. Но лично я считаю, что это "прошлый век" - а если говорить об алгоритмах описания бизнес-логики - RAII - для них это сущее зло! Будущее - за и языками подходами программирования - где после создания объекта не нужно будет думать о его деструкции - там, где в этом нет прямой потребности, обусловленной логикой приложения - каким-то событием - и эта деструкция никак не должна влиять на устойчивость последующего выполнения алгоритмов.
19. Darklight 19 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 19 16.04.19 13:02 Сейчас в теме
(2)
Но языки будут сближаться впитывая фишки друг друга.

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

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

См. также