Каким должен быть язык программирования? Анализ и критика Описание языка Компилятор
Отечественные разработки Cтатьи на компьютерные темы Компьютерный юмор Новости и прочее

Ряд важных языков в 2017 году

Постановка вопроса «Какие языки важны в 2017 году?» даёт ряд ответов от «ну, это, очевидно, X, Y и Z» до «что вы подразумеваете под важными?». Хотя существуют важные устаревшие языки с миллионами строк существующего кода (Fortran, и, возможно, COBOL и, возможно, даже C), здесь мы прагматично исследуем различные недавние рейтинги популярности языков программирования:

Рейтинги языков программирования RedMonk (июнь 2016 года), [http://redmonk.com/sogrady/category/programming-languages/] лучших языка программирования 2015 года по версии IEEE Spectrum (июль 2015 года) [http://spectrum.ieee.org/computing/software/the-2015-top-ten-programminglanguages], и индекс TIOBE (февраль 2017 года) [http://www.tiobe.com/tiobe-index/].

Это, конечно, только часть доступных рейтингов; рейтинги различаются относительно того, как измеряется важность языка; трудно получить данные об объеме написанного кода, когда большая часть развернутого кода недоступна для общего доступа на исходном уровне (Wired сообщила в 2015 году, что «Google - это 2 миллиарда строк кода - и все это в одном месте» [https://www.wired.com/2015/09/google-2-billion-lines-codeand-one-place/]); и маловероятно, что дублирование кода учитывается при оценке того, сколько кода связано с конкретным языком - недавнее исследование Lopes et al. показывает, что учет дублирования является сложной задачей [24]. Мы отмечаем, что эти рейтинги оценивают важность языка на основе объема кода, а не путем оценки влияния языка с точки зрения идей (генов), которые он содержит или вводит, которые используются в более поздних языках.

Тем не менее, мы полагаем, что данные, предлагаемые этими рейтингами, дают разумный снимок, отражающий, по крайней мере, базовый набор языков, которые широко используются сегодня. Они суммированы в Таблице 1, где рейтинг IEEE Spectrum останавливается на 10, а остальные - на 20 (по модулю 20-го места).

Положение RedMonk (2016) IEEE Spectrum (2015) TIOBE (2017)
1 JavaScript Java Java
2 Java C C
3 PHP C++ C++
4 Python Python C#
5 C# C# Python
6 C++ R PHP
7 Ruby PHP JavaScript
8 CSS JavaScript Visual Basic
9 C Ruby Delphi/Object Pascal
10 Objective-C MATLAB Perl
11 Shell Ruby
12 R Swift
13 Perl Assembly language
14 Scala Go
15 Go R
16 Haskell Visual Basic
17 Swift MATLAB
18 MATLAB PL/SQL
19 Visual Basic Objective-C
20 Clojure Scratch
21 Groovy

Мы широко разделяем языки в этих рейтингах на пять категорий:

  • Главное направление: языки, присутствие которых и приблизительное положение в рейтинге не вызывает удивления, и мы ожидаем, что это произойдет в обозримом будущем.
  • Восходящие: языки, которые, по нашему мнению, имеют быстро растущие сообщества пользователей, со связанным гулом волнения. Популярность растущего языка, скорее всего, будет недавней, и ожидается, что она будет расти либо напрямую, либо косвенно за счет влияния на основные языки.
  • Заходящие: языки, которые все еще активно используются, в том числе для новых проектов, но которые, по нашему мнению, находятся в упадке, например потому что они менее широко используются, чем обычные языки, но им не хватает ажиотажа вокруг растущих языков.
  • Старые: языки, которые широко используются для поддержки устаревших систем и в которых, как мы ожидаем, разрабатывается очень мало нового кода.
  • Проблемно-ориентированные: языки, которые являются ключевыми для важных областей применения, но которые обычно не используются для разработки программного обеспечения общего назначения.

Это разделение на категории между ними искажено нашими личными предубеждениями, взглядами и опытом; Без сомнения, наши ставки на повышение и снижение будут противоречивыми.

Основной поток. Твердо входя в десятку из всех трех рейтингов, широко распространено мнение, что основные императивные и объектно-ориентированные языки - C, C++, C# и Java - являются мейнстримом. К ним относятся языки, используемые для реализации большей части системной инфраструктуры (C/C++), большой массив корпоративных приложений (Java/C#), большинство настольных компьютерных игр (C++) и большинство приложений для Android (Java).

Все эти языки статически типизированы. Мы также рассматриваем JavaScript, Python и Ruby - все с динамической типизацией - в качестве основного направления. JavaScript занимает первое место в рейтинге RedMonk, Python входит в первую пятерку всех рейтингов, а Ruby - в первую десятку всех, кроме рейтинга TIOBE, где он находится на 11-м месте.

Рост. Мы ощущаем большое волнение вокруг функциональных языков программирования и языков с первоклассными функциями функционального программирования, поэтому мы считаем, что Haskell, Clojure и Scala растут. Эти три языка представлены в нижней половине диаграммы RedMonk, но не отображаются в списке TIOBE. Один из авторов вспоминает, что в 2000 году его преподавали на Хаскелле как студенту, и в этот момент, как казалось, было мало общих ожиданий того, что язык, хотя и явно важный и влиятельный, станет ближе к мейнстриму; Ситуация очень изменилась 17 лет спустя. Мы также видим влияние Haskell и функционального программирования на новые языки, такие как Elm. Elm написан на Haskell и имеет синтаксис, похожий на Haskell, но компилируется в HTML, CSS и JavaScript для браузера, что делает его кандидатом на широкий круг задач веб-программирования.

Очевидно, что Swift становится популярным языком для разработки под iOS, отчасти как замена Objective-C. На синтаксис Swift явно влияют такие языки, как Ruby, хотя Swift имеет статическую типизацию. Поскольку Swift теперь имеет открытый исходный код, мы видим, что сообщество вокруг него растет и помогает улучшить его инструментальную экосистему.

За исключением Swift, который пользуется хорошей поддержкой в Xcode Apple, когда сравнивают инструментальную поддержку для этих растущих языков с поддержкой для языков, которые мы классифицируем как основные, контраст разителен. Если эти языки продолжат развиваться, мы ожидаем и надеемся, что вокруг них появится более совершенный инструментарий.

Некоторые языки, которые не занимают этих рейтингов, но которые мы рассматриваем как растущие, включают: Rust, который, безусловно, вызвал много академических волнений в связи с его системой типов; F# (хорошо поддерживается Visual Studio), которая, как и Scala, является мультипарадигмой с мощной функциональной поддержкой программирования; и Kotlin, который, будучи собранным вместе со своей IDE, мог бы избежать риска нехватки инструментов для нового языка. Еще один язык с синтаксисом, на который влияет Ruby - это Elixir, который нацелен на виртуальную машину Erlang и продвигает актерскую модель параллелизма.

Закат. Похоже, что в нишах, занимаемых Objective-C, PHP и Perl, постепенно доминируют Swift, JavaScript и Python/Ruby, поэтому мы рассматриваем эти языки как убывающие. Точно так же у нас сложилось впечатление, что Visual Basic - это ухудшающийся язык, его ниши, вероятно, заняты C#.

Наследие. Мы связываем присутствие Object Pascal (и его диалект Delphi) в первой десятке рейтинга TIOBE со значительным объемом такого кода, поддерживаемого в устаревшем программном обеспечении, и предполагаем, что этот язык редко используется для новых проектов.

Предметно-ориентированность. Отрадно видеть Scratch, образовательный язык, упомянутый в списке TIOBE; мы классифицируем это как предметно-ориентированный, так как его цель - учить программированию, а не производственные задачи.

Среди языков, используемых людьми, которые часто не считают себя программистами, R и MATLAB, вероятно, являются наиболее широко используемыми приложениями, включая науку о данных и машинное обучение. Мы также классифицируем язык запросов на диалекте PL/SQL как предметно-ориентированный.

У нас нет ощущения того, растет ли Go - занимает лидирующие 20 место в рейтинге RedMonk и TIOBE - или падает. У нас сложилось впечатление, что он играет полезную роль в реализации серверного программного обеспечения, ниши, которую он может продолжать занимать, не становясь мейнстримом. То же самое можно сказать о нескольких языках, не перечисленных в Таблице 1: Erlang, который занимает важную нишу распределенных систем, за которую его широко уважают; Фортран, часто язык, который предпочитают ученые; VHDL и Verilog в разработке процессоров; и, например, OpenCL и CUDA в мире параллельного программирования.

Из остальных языков, перечисленных в Таблице 1, CSS не является полноценным языком программирования, а «Shell» и «Assembly language» охватывают множество языков сценариев оболочки и ассемблера для разных платформ, которые мы не пытаемся классифицировать. (Кроме того, мы сомневаемся относительно высокого ранга «ассемблера» в рейтинге TIOBE.)



Перевод: Д.Ю.Караваев. 14.11.2019

Опубликовано: 2019.11.25, последняя правка: 2019.11.25    21:58

Оцените

Добавить свой отзыв

Написать автору можно на электронную почту mail(аt)compiler.su

Авторизация

Регистрация

Выслать пароль

Карта сайта


Содержание

Каким должен быть язык программирования?

Анализ и критика

Описание языка

Компилятор

Отечественные разработки

Cтатьи на компьютерные темы

●  Двадцать тысяч строк кода, которые потрясут мир?

●  Почему владение/заимствование в Rust такое сложное?

●  Масштабируемые архитектуры программ

●  Почему Хаскелл так мало используется в отрасли?

●  Программирование исчезнет. Будет дрессировка нейронных сетей

●  Бесплатный софт в мышеловке

●  Исповедь правового нигилиста

●  Русской операционной системой должна стать ReactOS

●  Почему обречён язык Форт

●  Программирование без программистов — это медицина без врачей

●  Электроника без электронщиков

●  Программисты-профессионалы и программирующие инженеры

●  Статьи Дмитрия Караваева

●●  Идеальный транслятор

●●  В защиту PL/1

●●  К вопросу о совершенствовании языка программирования

●●  О реализации метода оптимизации при компиляции

●●  О реализации метода распределения регистров при компиляции

●●  О распределении памяти при выполнении теста Кнута

●●  Опыты со стеком или «чемпионат по выполнению теста Кнута»

●●  О размещении переменных в стеке

●●  Сколько проходов должно быть у транслятора?

●●  Чтение лексем

●●  Экстракоды при синтезе программ

●●  Об исключенных командах или за что «списали» инструкцию INTO?

●●  Типы в инженерных задачах

●●  Непрерывное компилирование

●●  Об одной реализации специализированных операторов ввода-вывода

●●  Особенности реализации структурной обработки исключений в Win64

●●  О русском языке в программировании

●●  Формула расчета точности для умножения

●●  Права доступа к переменным

●●  Заметки о выходе из функции без значения и зеркальности get и put

●●  Модификация исполняемого кода как способ реализации массивов с изменяемыми границами

●●  Ошибка при отсутствии выполняемых действий

●●  Скорость в попугаях

●●  Крах операции «Инкогнито»

●●  Предопределённый результат

●  Следующие 7000 языков программирования

●●  Что нового с 1966 года?

●●  Наблюдаемая эволюция языка программирования

●●  Ряд важных языков в 2017 году

●●  Слоны в комнате

●●  Следующие 7000 языков программирования: заключение

Компьютерный юмор

Новости и прочее




Последние отзывы

2019/12/08 17:48 ••• Noname
Почему обречён язык Форт

2019/12/05 23:29 ••• Автор сайта
Слоны в комнате

2019/12/03 22:45 ••• Автор сайта
Следующие 7000 языков программирования: заключение

2019/12/03 22:36 ••• Автор сайта
Наблюдаемая эволюция языка программирования

2019/11/30 20:55 ••• Сергей
Каким должен быть язык программирования?

2019/11/09 21:27 ••• kt
Программирование без программистов — это медицина без врачей

2019/11/07 10:58 ••• kt
Признаки устаревшего языка

2019/10/28 23:55 ••• Автор сайта
Типы в инженерных задачах

2019/10/15 16:32 ••• kt
Модификация исполняемого кода как способ реализации массивов с изменяемыми границами

2019/10/07 14:15 ••• Автор сайта
О наименовании проекта и языка программирования

2019/09/19 15:23 ••• kt
Некошерный «goto»

2019/09/13 16:38 ••• Автор сайта
Программирование исчезнет. Будет дрессировка нейронных сетей