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

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

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

В последние годы ассортимент языков программирования изменяется весьма динамично (см. "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 становится все более популярным по этой же причине.

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

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

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.

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