Файл: Описание и сравнительные особенности наиболее популярных языков.pdf

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

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

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

Добавлен: 30.03.2023

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

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

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

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

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

Различают языки программирования с высоким и низким порогом вхождения. Данная классификация является предметом широких дискуссий, так как зависит не только от субъективных предпочтений, но также и от опыта конкретного программиста, опыта работы с другими языками конкретной языковой семьи (здесь уместно говорить об аналогии с изучением естественных языков), а также уровня, до которого указанное «вхождение» осуществляется. Обычно классифицируются как языки с низким порогом вхождения Си, Бейсик, Паскаль, C#, Python, квази-языки – из-за более понятной семантики и относительно быстрого срока освоения основ языка. К более «сложным» относят Java, Javascript, Си. К языкам с высоким порогам вхождения относят молодые мультипарадигмальные языки (Scala).

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


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

Популярные языки программирования

Для исследования распространенности языков следует прежде всего обозначить возможные критерии оценки. К методам, задействованным в исследованиях вопроса популярности, относятся:

- число строк написанного кода

- число упоминаний имени языка в поисковых запросах

- число вакансий, требующих знания данного языка

- число проектов на GitHub, использующих данный язык

- число курсов программирования и тренировочных площадок, открытых для изучения языка

- число книг и других учебных материалов (напр., видео на YouTube), посвященных языку)

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

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

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


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

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

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

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

Еще одним известным рейтингом популярности языков выступает рейтинг компании RedMonk, публикуемый с 2010 года. Его статистика помогает всем желающим начать новые проекты понять, какие языки наиболее популярны среди разработчиков. Актуальная на сегодняшний день версия рейтинга была опубликована в июне 2019 года. Вот она:

  1. JavaScript
  2. Java
  3. Python
  4. PHP
  5. C++
  6. C#
  7. CSS
  8. Ruby
  9. C
  10. TypeScript
  11. Swift
  12. Objective-C
  13. Scala
  14. Shell
  15. R
  16. Go
  17. PowerShell
  18. Perl
  19. Haskell
  20. Kotlin

RedMonk отмечает, что за исключением одного квартала прошлого года, когда Swift поднимался на десятую строчку, перечень топ-10 языков остается неизменным на протяжении 5 лет, изменяя лишь их последовательность.

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

Еще одной заслуживающей упоминания системой оценки является рейтинг PYPL (PopularitY of Programming Languages). Система оценки PYPL основана на количестве поисковых запросов учебных пособий в Google. Авторы утверждают, что чем больше людей интересуется изучением языка, тем более он популярен. Согласно публикациям PYPL, в октября 2019 года топ-3 языков выглядел так: на первом месте - Python, с индексом 29,49%. Это на 4,5 % больше, чем в прошлом году. На втором месте - Java с индексом 19,57 %, что составило на 2,4 % меньше чем в прошлом году. Замыкает тройку лидеров Javascript с 8,4%, что примерно соответствует значению прошлого года. На четвертом и пятом месте находятся C# и PHP соответственно. Авторы PYPL отмечают, что за последние пять лет популярность Python выросла больше, чем по другим языкам: он прибавил 15,8 процента. Самые большие потери за этот период понес PHP — 6,1 процента.


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

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

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

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

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

Python - это высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Разработан в 1991 году. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объем полезных функций. Python является мультипарадигмальным языком и поддерживает структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное программирование. Основные архитектурные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений, высокоуровневые структуры данных. Поддерживается разбиение программ на модули, которые, в свою очередь, могут объединяться в пакеты.


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

print("Hello, World!")

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

Java - строго типизированный объектно-ориентированный язык программирования, основной язык разработки для Android. Разработан в 1995 году. Язык является мультипарадигмальным. Программы транслируются в байт-код Java, выполняемый виртуальной машиной Java - программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

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

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

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

class HelloWorld {

    public static void main(String[] args) {

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

    }

}

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

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