Статья:

Методика сравнения языков программирования

Конференция: XXIX Студенческая международная научно-практическая конференция «Технические и математические науки. Студенческий научный форум»

Секция: Технические науки

Выходные данные
Чирков М.М. Методика сравнения языков программирования // Технические и математические науки. Студенческий научный форум: электр. сб. ст. по мат. XXIX междунар. студ. науч.-практ. конф. № 6(29). URL: https://nauchforum.ru/archive/SNF_tech/6(29).pdf (дата обращения: 26.11.2024)
Лауреаты определены. Конференция завершена
Эта статья набрала 0 голосов
Мне нравится
Дипломы
лауреатов
Сертификаты
участников
Дипломы
лауреатов
Сертификаты
участников
на печатьскачать .pdfподелиться

Методика сравнения языков программирования

Чирков Михаил Михайлович
студент, Казанский национальный исследовательский технический университет им. А.Н. Туполева, РФ, г. Казань
Гибадуллин Руслан Фаршатович
научный руководитель, Казанский национальный исследовательский технический университет им. А.Н. Туполева, РФ, г. Казань

 

Производительность — это способность программного продукта как можно меньше зависеть от ресурсов оборудования: процессорного времени, пространства, занимаемого во внутренней и внешней памяти, пропускной способности каналов связи. Она зависит как от непосредственной реализации исходного кода, так и от используемого языка программирования [1, с. 34].  Увеличение производительности способствует уменьшению нагрузки на аппаратные части компьютера, ускорению работы программ. Мировые корпорации по разработке программных продуктов ежедневно ведут работы по оптимизации кода и улучшению производительности своих программных продуктов, проводят различные исследования, тратя на это большие.

Рейтинг не дает ответ на вопрос, какой язык программирования лучше, скорее он характеризует популярность его использования. Ниже приведены рейтинги от различных компаний, которые занимаются мониторингом популярности языков программирования длительное время. Рейтинг компании TIOBE Software на рисунке 1. Анализ результатов рейтинга включает данные на основе поисковой выдачи 25 основных поисковых систем, включая Google, Ebay, YouTube и другие.

 

Рисунок 1. Сравнение языков программирования компанией TIOBE

 

Рейтинг Red Monk для сравнения языков использует данные GitHub и StackOverFlow, представлен на рисунке 2. Параметры, по которым составляется рейтинг – частота обсуждения и использования языка в проектах.

 

Рисунок 2. Рейтинг от компании Red Monk

 

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

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

Типичные требования предъявляемые к бенчмаркам:

  • Результат запуска: значение некоторой метрики
  • Должен быть объективным
  • Должен быть надёжным (воспроизводимым)
  • Классификация:
  • Реальные приложения – запуск и измерения производятся вручную.
  • Автоматические сценарии приложений – имеется определенный зафиксированный сценарий, подлежащий исследованию. Автоматически измеряются время, мощность, трафик.
  • Синтетические (макро) бенчмарки – целое приложение, похожее на типичное, эталонное. Измерения производятся автоматически.
  • Микробенчмарки – тестирование отдельной небольшой части приложения. Измерения производятся автоматически.

Одним из наиболее известных бенчмарков считается «Computer Language Benchmarks Game» или же коротко CLBG. Это некоммерческий программный проект для сравнения языков программирования на наборах простых алгоритмов. На сегодняшний день набор тестов состоит из 10 микробенчмарков с реализациями на более чем 25 языках [2].

Для разработки методики программирования был выбран ряд тестов серии CLBG. Тесты состоят из небольших четко определенных алгоритмических задач, которые характеризуют различные типы рабочих нагрузок. Чтобы предлагать такое большое разнообразие языков, включенных в комплект, CLBG позволяет вносить пользовательские реализации тестов. Чтобы гарантировать сопоставимость и правильность эталонных тестов, CLBG вводит правила о том, как должны быть написаны реализации, чтобы решения были функционально эквивалентны. В этом контексте функционально эквивалентный относится к тому факту, что реализации выдают одинаковый вывод при одинаковом вводе, тем самым решая одну и ту же проблему. Кроме того, он также накладывает ограничения на то, как алгоритмы должны быть реализованы. Это сделано для того, чтобы гарантировать, что тесты действительно проверяют производительность языковых конструкций и функций, а не оптимизацию алгоритмов. Исходные коды тестов находятся в открытом доступе.

Для методики выбраны следующие тесты:

  • Fasta
  • FannkuchRedux
  • N-body
  • Reserve-complement

Тесты выбраны таким образом, чтобы затрагивалась работа с основными типами данных в программировании. В более наглядном виде это отображено в таблице 1.

Таблица 1.

Соответствие сценариев тестирования и основных типов данных

Бенчмарк

Тип данных

Int

Float

Pointer

String

Fasta

 

 

+

 

FannkuchRedux

+

 

 

 

N-body

 

+

 

 

Reserve-complement

 

 

 

+

 

Тест FannkuchRedux используется для оценки производительности операций с типом данных Integer, N-body используется для сравнения языков в интенсивных операциях с плавающей запятой. Для операций с указателями выбран бенчмарк Fasta, поскольку несколько других бенчмарков зависят от его вывода в качестве входных данных. Тест Reserve-complement используется для изучения производительности операций со строками.

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

 

Список литературы:
1. В. В. Воеводин, Вл. В. Воеводин. Параллельные вычисления – СПб.: БХВ-Петербург, 2002. – 608с.
2. Isaac Gouy. The Computer Language Benchmarks Game. – [Электронный ресурс] – Режим доступа. – URL: http://benchmarksgame.alioth.debian.org/ (Дата обращения: 20.12.2019)