Файл: Современные языки программирования (Краткая история языков программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 30.03.2023

Просмотров: 123

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Рассмотрим несколько рейтинговых систем, часто упоминаемых в профессиональном сообществе. [10][33]

Одним из наиболее распространенных рейтингов популярности языков программирования является индекс TIOBE (TIOBE programming community index) - индекс, оценивающий популярность языков программирования, на основе подсчета результатов поисковых запросов, содержащих название языка. [7][34] (Актуальный на момент написания данной работы Индекс TIOBE представлен в Приложении 1). Для его формирования используется поиск в нескольких наиболее посещаемых порталах: Google, Blogger, Wikipedia, YouTube, Baidu, Yahoo!, Bing, Amazon. Расчет индекса происходит ежемесячно, текущая информация предоставляется бесплатно. Методика расчета индекса очень чувствительна к внутренним алгоритмам и политикам поисковых систем, в частности, к алгоритму оценки количества найденных страниц. Например, в апреле 2004 года после проведения в поисковой системе Google очистки от нечестных способов продвижения сайтов, произошло резкое падение значения индекса для языков Java и C++, хотя они и остались на вершине таблицы. Для борьбы с такими флуктуациями TIOBE начал использовать большее количество поисковых систем.

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

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

Рисунок 1. Индекс TIOBE топ-10 языков программирования.

[7][35]

TIOBE использует в отборе на исследование критерий полноты по Тьюрингу. Это означает, к примеру, что не исследуется HTML или базовый SQL, тогда как расширения PL/SQL и T-SQL входят в индекс. Еще одним спорным критерием является наличие у исследуемого языка статьи в Википедии, в которой указано, что язык является языком программирования. По этому критерию в индекс не были включены Ruby on Rails, Excel, ASP, AJAX.

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

Еще одним известным рейтингом популярности языков выступает рейтинг компании RedMonk, публикуемый с 2010 года.


Данные RedMonk помогают всем желающим понять, какие языки на данный момент наиболее популярны среди разработчиков. Актуальная на момент написания данной работы версия рейтинга была опубликована в июне 2019 года (Рисунок 2).

Рисунок 2. Рейтинг популярности языков программирования Red Monk за 3 кв. 2019 г. [11][36]

RedMonk ежеквартально собирает статистику по каждому из языков на профессиональных порталах программистов GitHub и Stack Overflow. Первый из них помогает определить частоту использования языка для написания кода (без учета ветвлений проектов). Второй из указанных ресурсов помогает создателям рейтинга оценить статистики обсуждения языков. Цель рейтинга RedMonk - выявить популярные языки для будущих проектов.

Представленный в виде графика, рейтинг сопровождается также нумерическим списком: топ-10 наиболее популярных языков, в порядке убывания, это JavaScript, Java, Python, PHP, C++, C#, CSS, Ruby, C и TypeScript. Создатели рейтинга RedMonk отмечают, что за исключением одного квартала прошлого года, когда Swift поднимался на десятую строчку, перечень топ-10 языков остается неизменным на протяжении 5 лет, изменяется лишь их последовательность. [11][37]

Еще одной заслуживающей упоминания системой оценки является рейтинг PYPL (PopularitY of Programming Languages).[9][38] Система оценки PYPL основана на количестве поисковых запросов учебных пособий в Google. Авторы утверждают, что чем больше людей интересуется изучением языка, тем более он популярен. Согласно публикациям PYPL, в октября 2019 года топ-3 языков выглядел так: на первом месте - Python, с индексом 29,49%. Это на 4,5 % больше, чем в прошлом году. На втором месте - Java с индексом 19,57 %, что составило на 2,4 % меньше чем в прошлом году. Замыкает тройку лидеров Javascript с 8,4%, что примерно соответствует значению прошлого года. На четвертом и пятом месте находятся C# и PHP соответственно. Авторы PYPL отмечают, что в глобальной популярности,за последние пять лет, язык Python вырос больше, чем другие: он прибавил 18,9 процента. Самые большие потери за этот период понес Java - 7,0 процента (Рисунок 3). Данный тренд еще более выражен, если исчислять популярность по отдельным регионам – Индия, и в меньшей степени, США. В Европе показатели обоих языков, по данным PYPL, подвержены более слабой динамике.

Рисунок 3. Динамика изменения глобальной популярности языков Python и Java, по данным рейтинга PYPL[9][39]


Заслуживает упоминания система отчетов портала Stack Overflow, который, кроме упоминавшегося выше индекса частоты использования, ежегодно опрашивает представителей профессионального сообщества о языках, наиболее удобных в работе (вызывающих позитивную оценку) – такие языки, как Rust, Python, TypeScript и Kotlin лидируют в данном опросе последние два года, и можно говорить о тенденции к росту их популярности. Среди факторов, влияющих на высокую оценку, часто указывают относительную легкость освоения, лаконичность синтаксиса, высокую безопасность языка и актуальные сферы его распространения. [10][40]

Таким образом, анализируя публикации наиболее известных рейтинговых систем, можно говорить о сходных результатах, выделяющих топ-5 и топ-10 наиболее популярных языков. Тем не менее, следует учитывать, что один язык может отнимать наибольшее количество человеко-часов, на другом написано наибольшее число строк кода, третий занимает наибольшее процессорное время, а четвертый наиболее часто служит исследовательской базой в академических кругах. Кроме того, некоторые языки очень популярны для конкретных задач. Например, Кобол до сих пор доминирует в корпоративных дата-центрах, Фортран — в научных и инженерных приложениях, вариации языка Си — в системном программировании, Лисп и его потомки – в работе с искусственным интеллектом, а потомки ML — в формальной верификации.

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

Тем не менее, рейтинги популярности, как и некоторые параметры классификации, могут служить ориентиром для выбора программистом (как начинающим, так и специалистом, желающим расширить свою квалификацию) языка изучения.


1.4 Описание и сравнительные особенности наиболее популярных языков

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

Python - это высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Разработан в 1990 году. [6, c. 392][41] Синтаксис ядра Python минималистичен, в то же время стандартная библиотека включает большой объем полезных функций. Python является мультипарадигмальным языком и поддерживает структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное программирование. Основные архитектурные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений, высокоуровневые структуры данных. [2, c. 86][42] Поддерживается разбиение программ на модули, которые, в свою очередь, могут объединяться в пакеты.

Программа-приветствие, выводящая на экран текст «Hello World», написанная на Python, выглядит следующим образом: print("Hello, World!")

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

Java - строго типизированный объектно-ориентированный язык программирования, основной язык разработки для Android. Разработан в 1995 году, на основе С++, как более простой и надежный – что достигнуто, к примеру, за счет удаления половины приведений типов, введения параллельности, а также проверки диапазона изменения индексов при доступе к массивам. [4, c. 116-117][43] Язык является мультипарадигмальным: поддерживает обобщенную, объектно-ориентированную, процедурную парадигмы. Программы транслируются в байт-код Java, выполняемый виртуальной машиной Java - программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор. [3, c.611][44]

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


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

Программа-приветствие на Java выглядит так:

class HelloWorld {

    public static void main(String[] args) {

        System.out.println("Hello, World!");

    }

}

JavaScript - компилируемый язык программирования. Мультипарадигмальный: поддерживает объектно-ориентированный, императивный и функциональный стили. [2, c. 84][45] Разработан в 1995 году. JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам.

Основные архитектурные черты языка: динамическая типизация, слабая типизация, автоматическое управление памятью, прототипное программирование, функции как объекты первого класса.

На JavaScript оказали влияние многие языки. Имеет синтаксис, сходный языку Си. [6, c. 256][46] При разработке JavaScript была цель сделать язык похожим на Java, но при этом легким для использования непрограммистами.

Программа-приветствие выглядит так:

<!DOCTYPE HTML>

<html>

<body>

<script>

alert( 'Hello, world!' );

</script>

</body>

</html>

Одним из достоинств JavaScript является гибкость языка, которая позволяет использовать множество шаблонов программирования применительно к конкретным условиям и реализовывать приемы, невозможные в более жестких языках. [5, с. 23][47] Взаимодействие с приложением может осуществляется даже через текстовые редакторы. К недостаткам относят безопасность: JavaScript может использовать систему пользователя, поэтому вредоносный код может быть запущен на клиентской машине. Также JavaScript иногда интерпретируется по-разному разными браузерами. Различные механизмы компоновки могут отображать JavaScript по-разному, что приводит к несогласованности с точки зрения функциональности и интерфейса. К недостаткам часто относят и систему наследования – в JavaScript реализовано наследование, основанное на прототипах.

В практической части данной работы будут отмечены особенности языка JavaScript будут изучены подробнее.