previous up index search
Previous: 10.29.1 Суперкомпьютеры и Watson    UP: 10.29 10 правил Хольцмана и рекомендации для написания программ, критичных в отношении безопасности

10.29.2 Динамика использования разных языков программирования за последнее десятилетие

Семенов Ю.А. (ИТЭФ-МФТИ)
Yu. Semenov (ITEP-MIPT)

История языков программирования насчитывает уже многие десятилетия. Все началось с программирования в машинных кодах, потом появились ассемблеры и, наконец, языки высокого уровня, такие как Fortran и Algol (конец 50-х годов). Компьютры в СССР тогда были ламповыми. М20 занимала большой зал и имела быстродействие 20000 операций в сек. Ваш мобильный телефон по сравнению с М20 - суперкомпьютер. Программы писались в машинных кодах на перфокартах. Полагаю, многие читатели даже не представляют, как эти карты выглядели. Позднее появились перфоленты. А в 1980 году я видел на берегу Женевского озера гнездо лебедя из перфолент.

Чуть позже появился первый интерпретивный язык Бейсик, пригодный для простых вычислений. Сегодня число таких языков достигает дюжины. Среди них Python. Perl, Visual Basic, Forth, Ruby и др.

Всего создано уже более 5000 языков программирования, большинство из них для различных специальных процессоров и внешних устройств. Многие уже не используются, в употреблении находится немного более 250 языков. Но и это число превосходит количество естественных языков общения людей.

Фортрану уже более 60 лет, по людским меркам возраст пенсионный. В ЦЕРН - одном из основнх центров разработок программ для научных приложений около 20 лет назад приняли решение не создавать более программ на этом языке, а те что есть - переписать на Си.

Но оказалось, что принять решение проще, чем его реализовать практически. Объем прикладного программного обеспечения оказался слишком велик, а люди, которые его создавали, уже вне досягаемости. До сих пор кое-где, включая ЦЕРН, еще пишутся программы на Фортран. В конце прошлого века была создана даже объектро-ориентированная версия. Разумеется, Фортран не входит в первую сотню самых популярных языков программирования. Он живет, так как объемы библиотек для него очень велики и до сих пор их нечем заментить

Время от времени предпринимались попытки создать универсальный язык, пригодный для решения любых задач. Набирают популярность компилятивные языки, несмотря на их низкое быстродействие, например, Python.

В последние годы ассортимент языков программирования изменяется весьма динамично (см. "Forget the most popular programming languages, here's what developers actually use", Alison DeNisco Rayome, October 22, 2018). Появляются новые языки, актуальность традиционных языков претерпевает заметные изменения. Ниже представлен краткий список языков, признанных актуальными на симпозиуме CIO в 2018 году (Equinix's Lance Weaver).

  1. Python
  2. Ruby
  3. JavaScript
  4. Java
  5. C++

В докладе "2019 Developer Skills" названы 10 языков программирования, которые стремятся изучить разработчики (см. "Top 10 programming languages developers want to learn in 2019", Macy Bayern, January 29, 2019). Среди них:

  1. Go (37.2%)
  2. Kotlin (26.5%)
  3. Python (26.1%)
  4. TypeScript (21.6%)
  5. R (21.4%)
  6. Scala (20.9%)
  7. Swift (20.7%)
  8. Rust (17.9%)
  9. Ruby (17.8%)
  10. Haskell (15.6%)

С другой стороны наниматели хотели бы, чтобы их будущие сотрудники владели следующими навыками и знаниями (см. "The top programming skills employers want from freelancers in 2019", Nick Heath, January 15, 2019). Среди этого перечня:

  1. API
  2. Blockchain
  3. Express JS
  4. Shopify templates
  5. Excel VBA
  6. Разработка WEB-страниц
  7. React.js
  8. PhoneGap
  9. Машинное обучение
  10. Django

Ниже приведен список языков программирования, котоые эксперты считают наилучшими для написания приложений для IoT (см. "What programming languages rule the Internet of Things?", Fredric Paul, Network World, Jan 31, 2019).

  1. Java
  2. C
  3. JavaScript
  4. Python
  5. C++
  6. PHP
  7. C#
  8. Assembler
  9. LUA
  10. Go
  11. R
  12. Swift
  13. Ruby
  14. Rust

Компания GitHub выявила 10 наиболее популярных языков программирования для решения задач компьютерного обучения (см. "GitHub: The top 10 programming languages for machine learning", Nick Heath, January 25, 2019). Среди них:

  1. Python
  2. C++
  3. JavaScript
  4. Java
  5. C#
  6. Julia
  7. Shell
  8. R
  9. TypeScript
  10. Scala

Для многих приложений на лидирующее положение вышел Python (см. "Programming languages: Python developers reveal their favorite tools", Nick Heath, February 6, 2019). На рис. 6 представлено распределение областей использования Python.

Рис. 1. Области применения языка Python.

На рис. 7 представлено распределение случаев использования Python в различных популярных приложениях ИТ.

Рис. 2. Распределение случаев использования Python в различных популярных приложениях .

Рис. 3. Распределение случаев использования Python в различных WEB-приложениях .

На рис. 9 представлено распределение случаев использования Python в различных прикладных библиотеках.

.

Рис. 4. Распределение случаев использования Python в различных прикладных библиотеках

Согласно докладу Hired составлен список из 10 наиболее востребованных языков программирования (см. "The 10 most in-demand programming languages across the globe", Alison DeNisco Rayome, February 28, 2019):

  1. Go
  2. Scala
  3. Ruby
  4. TypeScript
  5. Kotlin
  6. JavaScript
  7. Objective-C
  8. PHP
  9. Java
  10. HTML

Вслед за этой десяткой следуют: Swift, Python, C++, C, C# и R.

Опубликован очередной рейтинг 9-и языков программирования для 2020 года (см. "Top 9 computer languages to know for 2020", N.F. Mendoza, December 17, 2019).

  1. Python
  2. Java
  3. JavaScript
  4. Swift
  5. C#
  6. C/C++
  7. React
  8. Node 1
  9. Ruby

Язык программирования Python был создан в 1994 году группой программистов из США во главе с Guido van Rossum (см. "Python is eating the world: How one developer’s side project became the hottest programming language on the planet", Nick Heath, July 2019). На рис. 5 показана динамика популярности различных языков программирования в период 2012-2018 годы. Python по динамике роста числа применений является безусловным лидером.

Рис. 5. Динамика популярности различных языков программирования период 2011-18гг

Ниже представлены данные о наиболее популярных языках в предшестующие годы (индекс TIOBE).

Из приведенных данных видно, что базовой тенденцией является переход большинства программистов на интерпритивные языки, где не требется осуществлять трансляцию и task-building. Это упрощает работу программиста, но замедляет выполнение программы. Чтобы компенсировать потерю в быстродействии, некоторые языки снабжаются средствами, упрощающими распараллеливание вычислений. Так как для интерпретивных языков текст программы всегда доступен, это облегчает нахождение и устранение ошибок. В какой-то мере направление open source становится все более популярным по этой же причине.

Некоторые приложения требуют владения определенными языками (см. "5 programming languages database administrators should learn, Franklin Okeke, July 21, 2023). Так например, работа с базами данных предполагает знание языков: python, SQL, C#. R, PHP, а также, добавлю от себя, javascript.

Приложение. Справки по языкам

Справочные данные взяты из Википедии. Справка не является полной.

Django - свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC. Проект поддерживается организацией Django Software Foundation. Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из существенных архитектурных отличий этого фреймворка от некоторых других (например, Ruby on Rails). Один из основных принципов фреймворка — DRY (Don't repeat yourself). В отличие от других фреймворков, обработчики URL в Django конфигурируются явно при помощи регулярных выражений. Для работы с базой данных Django использует собственный ORM, в котором модель данных описывается классами Python, и по ней генерируется схема базы данных. Автор Lawrence Journal-World.

Go (Golang) — компилируемый язык, разработанный компанией Google. Разработка Go началась в сентябре 2007 года, его созданием занимались Роберт Гризмер, Роб Пайк и Кен Томпсон. Официально язык был представлен в ноябре 2009 года. Поддержка официального компилятора, разрабатываемого создателями языка, осуществляется для операционных систем FreeBSD, OpenBSD, Linux, macOS, Windows, DragonFly BSD, Plan 9, Solaris, Android, AIX. Go поддерживается набором компиляторов gcc. Лицензия BSD.

Julia - высокоуровневый язык программирования с динамической типизацией, созданный для математических вычислений. Эффективен также и для написания программ общего назначения. Синтаксис языка схож с синтаксисом других математических языков (например, MATLAB и Octave), однако имеет некоторые существенные отличия. Julia написана на Си, C++ и Scheme. В стандартный комплект входит JIT-компилятор на основе LLVM, благодаря чему, по утверждению авторов языка, приложения, полностью написанные на языке, практически не уступают в производительности приложениям, написанным на статически компилируемых языках типа Си или C++. Язык имеет встроенную поддержку большого числа команд для распределенных вычислений.

Kotlin - объектно-ориентированный, статически типизированный язык программирования, работающий поверх JVM и разрабатываемый компанией JetBrains. Компилируется в JavaScript. Язык назван в честь острова Котлин в Финском заливе, на котором расположен город Кронштадт. Расширение файлов .kt или .kts.

R - язык программирования для статистической обработки данных и работы с графикой. R был разработан сотрудниками статистического факультета Оклендского университета Россом Айхэкой (Ross Ihaka) и Робертом Джентлменом (Robert Gentleman) (первая буква их имён — R); язык и среда поддерживаются и развиваются организацией R Foundation. Широко используется как статистическое программное обеспечение для анализа данных и фактически стал стандартом для статистических программ. Язык и среда доступны под лицензией GNU GPL; распространяются в виде исходных кодов, а также откомпилированных приложений для ОС: FreeBSD, Solaris и другие дистрибутивы Unix и Linux, Microsoft Windows, Mac OS X. В 2010 году R вошёл в список победителей конкурса журнала Infoworld в номинации на лучшее открытое программное обеспечение для разработки приложений.

Ruby - динамический, интерпретируемый высокоуровневый язык программирования. Язык обладает независимой от операционной системы реализацией многопоточности, динамической типизацией, сборщиком мусора и многими другими возможностями. По особенностям синтаксиса он близок к языкам Perl и Eiffel, по объектно-ориентированному подходу — к Smalltalk. Некоторые черты языка взяты из Python, Lisp, Dylan и Клу. Автор Мацумото, Юкихиро. Расширение файлов .rb или .rbw.

Rust - компилируемый язык программирования общего назначения, спонсируемый Mozilla Research, сочетающий парадигмы функционального и процедурного программирования с объектной системой, с управлением памятью через понятие «владения». ОOП языком не поддерживается. Ключевые особенности языка: безопасность и параллелизм. Rust пригоден для системного программирования, в частности, он рассматривается как перспективный язык для разработки ядер операционных систем. Первая стабильная версия (1.0) вышла 15 мая 2015 года. Автор - Грэйдон Хор. Расширение файлов .rs или .rlib.

Swift - открытый, компилируемый язык программирования общего назначения. Создан компанией Apple для разработчиков iOS и macOS. Swift работает с фреймворками Cocoa и Cocoa Touch и совместим с основной кодовой базой Apple, написанной на Objective-C. Swift задумывался как более лёгкий для чтения и устойчивый к ошибкам программиста язык. Программы на Swift компилируются при помощи LLVM, входящей в интегрированную среду разработки Xcode 6 и выше. Swift может использовать Objective-C, что делает возможным использование обоих языков (а также С) в рамках одной программы. Автор- Крис Латтнер. Разработчик- Крис Латтнер и Apple. Расширение файлов .swift.

TypeScript - язык программирования, представленный Microsoft в 2012 году и позиционируемый как средство разработки веб-приложений, расширяющее возможности JavaScript. Разработчиком языка TypeScript является Андерс Хейлсберг (Anders Hejlsberg), создавший ранее Turbo Pascal, Delphi и C#. Спецификации языка открыты и опубликованы в рамках соглашения Open Web Foundation Specification Agreement (OWFa 1.0). TypeScript является обратно совместимым с JavaScript. Фактически, после компиляции программу на TypeScript можно выполнять в любом современном браузере или использовать совместно с серверной платформой Node.js. Код экспериментального компилятора, транслирующего TypeScript в JavaScript, распространяется под лицензией Apache. Его разработка ведётся в публичном репозитории через сервис GitHub. TypeScript отличается от JavaScript возможностью явного статического назначения типов, поддержкой использования полноценных классов (как в традиционных языках ООП). Расширение файлов .ts,.d.ts.

Смотри также https://www.britannica.com/technology/computer-programming-language.

Интерпретивный язык Python продолжает последние годы лидировать. Но это в среднем, для разного круга задач, оптимальными являются разные языки. Ниже приведен рейтинг для 10 наиболее популярных языков программирования в августе 2023 года.

  1. Python
  2. C
  3. C++
  4. Java
  5. C#
  6. JavaScript
  7. Visual Basic
  8. SQL
  9. Ассемблер
  10. PHP

К 21-му сентября 2023 года (индекс TIOBE) произошли небольшие изменения, но Python остается наверху.

30 ноября 2023 года

>

В сентябре был опубликован более детальный индекс языков программирования TIOBE. Лидером остается python, но из этих материалов я узнал, что мой любимый язык perl занимает 26-ю позицию, а FORTH - 47-ю (все-таки в лидирующей сотне!).

Рис. 6. Изменение популярности языков программирования в период 2002-23 гг

В октябре 2023 года помнялось положения последних двух языков в первой десятке.

В конце ноября 2023 года по данным рейтинга TIOBE список был снова немного обновлен.

  1. Python (14,16%)
  2. C (11,77%)
  3. C++ (10,36%)
  4. Java (8,35%)
  5. C# (7,65%)
  6. JavaScript
  7. PHP
  8. Visual Basic
  9. SQL
  10. Ассемблер (1,35%)

В январе 2024 года поменялся лишь субъект на 10-ом месте - ассемблер заменен языком Scratch (данные TIOBE, 15-01-24). Позднее (к концу января по результатам 2023 года) в индексе TIOBE на первое место вышел C#. Удивительно! Вскоре авторы передумали...

Попытки создать униврсальный язык программирование кажется прекратились.


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

Previous: 10.29.1 Суперкомпьютеры и Watson    UP: 10.29 10 правил Хольцмана и рекомендации для написания программ, критичных в отношении безопасности