Модуль взаимодействия с автоматизированной системой расчётов компании ОАО "Мобильные ТелеСистемы"

дипломная работа

2.3 Анализ языков программирования

Перед этапом реализации разработанного алгоритма в виде ПО возникает задача выбора языка программирования.

Рассмотрим рейтинг популярности и характеристики языков программирования. В таблице 2.1 представлена двадцатка популярных языков программирования за 2014-ый год согласно проводимому рейтингу TIOBE. Измерения проводятся 10 раз в месяц.

Метод подсчета популярности языков программирования базируется и на количестве запросов в наиболее популярных поисковых системах и сайтах, по данным сайта alexa.com. Ключевое слово, которое используется для анализа статистики, - "<language> programming". TIOBE использует статистику запросов пользователей на следующих сайтах: Google, Blogger, Wikipedia, YouTube, Baidu, Yahoo!, Bing, Amazon.

Таблица 2.1 - Рейтинг языков программирования

На рисунке 2.12 приведен график рейтинга языков программирования за период времени с 2002 по 2014 год.

Рисунок 2.12 - Рейтинг языков программирования

Из представленных языков программирования выделим наиболее подходящие: C, C++, C#, Java, Python, Ruby. Языки С и С++ являются родственными, поэтому будем рассматривать их вместе.

С - язык программирования, разработанный в 1969--1973 годах сотрудниками Bell Labs Кеном Томпсоном и Деннисом Ритчи как развитие языка Би. Первоначально был разработан для реализации операционной системы UNIX, но, впоследствии, был перенесён на множество других платформ.

Благодаря близости по скорости выполнения программ, написанных на Си, к языку ассемблера, этот язык получил широкое применение при создании системного программного обеспечения и прикладного ПО для решения широкого круга задач. Язык программирования Си оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования как C++, C#, Java и D .

C++, потомок "Си", объектно-ориентированный язык высокого уровня. Одно из главных преимуществ ООП (объектно-ориентированное программирование) - не только адекватное отображение объектов реального мира, а способность поддерживать эволюционное развитие программ за счет сочетания виртуализации и наследования. Новые версий этих языков программирования работают с графическим пользовательским интерфейсом в среде Windows, в них встроен механизм "управления от событий" (Microsoft Visual C++). Это существенно снижает трудоемкость разработки прикладных программ, что особенно важно для таких, например, задач, как создание систем искусственного интеллекта.

Язык C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщенные типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML. Переняв многое от своих предшественников (языков C++, Java, Delphi, Модула и Smalltalk), С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ не поддерживает множественное наследование классов (между тем допускается множественное наследование интерфейсов).

Второе место в списке занимает Java/JavaScript (88%). Java - объектно-ориентированный язык высокого уровня, потомок С++, но с более легким синтаксисом, удобен для интернет-программирования. Три фактора: простота освоения, удобство работы, лучшая (чем у C++) приспособленность к задачам проектирования - способствуют тому, что число программирующих на Java разработчиков огромно, оно исчисляется миллионами. На базе других языков сложно разрабатывать крупномасштабные комплексные системы для корпоративного сектора. В Java можно найти решения, обрабатывающие несколько миллионов параллельных потоков в сложных средах, например в системах фондовых бирж или онлайнового бронирования авиабилетов. Технология Java - это основа для веб- и сетевых сервисов, она позволяет надежно и безопасно наращивать информационную структуру предприятия. Все виды систем могут взаимодействовать друг с другом - начиная со смарт-карт и заканчивая суперкомпьютерами - независимо от аппаратной платформы и системного программного обеспечения. Главным конкурентом Java является технология Microsoft .NET. Предполагается, что полной интеграции с .NET не будет, обе платформы в ближайшие 10 лет будут существовать параллельно.

Ruby - динамический, интерпретируемый высокоуровневый язык программирования для быстрого и удобного объектно-ориентированного программирования. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и многими другими возможностями. Ruby близок по особенностям синтаксиса к языкам Perl и Eiffel, по объектно-ориентированному подходу - к Smalltalk. Также некоторые черты языка взяты из Python, Lisp, Dylan.

Python - высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Python поддерживает несколько парадигм программирования, в том числе структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное. Основные архитектурные черты - динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Программный код организовывается в функции и классы, которые могут объединяться в модули (которые в свою очередь могут быть объединены в пакеты). На рисунках 2.13-2.16 представлены результаты сравнения языков программирования с сайта The Computer Language Benchmarks Game. Проведенные авторами сайта тесты оценивают скорость, потребление памяти и размер программного кода одних и тех же алгоритмов на разных языках программирования.

Рисунок 2.13 - Сравнение языков C++ и Java

Рисунок 2.14 - Сравнение языков Python и C++

Рисунок 2.15 - Сравнение языков С++ и С#

Рисунок 2.16 - Сравнение языков Python и Ruby

Согласно тестам затраченное время представляет следующую последовательность, отображенную в таблице 2.2, затраченный объем памяти представляет последовательность, отображенную в таблице 2.3, а затраченный объем программного кода - в таблице 2.4.

Таблица 2.2 - Результаты сравнения языков программирования по затраченному времени

Занимаемое место

Язык программирования

1

С++

2

Java

3

C#

4

Python

5

Ruby

Таблица 2.3 - Результаты сравнения языков программирования по затраченному объему памяти

Занимаемое место

Язык программирования

1

C++

2

Python

3

C#

4

Ruby

5

Java

Таблица 2.4 - Результаты сравнения языков программирования по затраченному объему программного кода

Занимаемое место

Язык программирования

1

Python

2

Ruby

3

C#

4

Java

5

C++

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

Таблица 2.5 - Рейтинг языков программирования

Занимаемое место

Язык программирования

Баллы

1

C++

7

2

Java

11

3

C#

9

4

Ruby

11

5

Python

8

Исходя из графиков сравнения работы языков программирования и их сфер использования, видим, что каждый язык программирования имеет свои преимущества и недостатки. Однако, согласно проведённому анализу, наибольшими преимуществами обладают языки С++ и Python.

Рассмотрим дополнительно статистику использования языков программирования, собранную сайтами github.com и stackoverflow.com.

GitHub - самый крупный веб-сервис для хостинга IT-проектов и их совместной разработки. Основан на системе контроля версий Git и разработан на Ruby on Rails и Erlang компанией GitHub, Inc (ранее Logical Awesome).

Stack Overflow - популярная система вопросов и ответов о программировании, разработанная Джоэлем Спольски и Джеффом Этвудом (англ.) в 2008 году. Является частью Stack Exchange Network. Как и в других системах подобного рода, Stack Overflow предоставляет возможность оценивать вопросы и ответы, что поднимает или понижает репутацию зарегистрированных пользователей.

На рисунке 2.17 по горизонтальной оси - количество проектов, реализованных на сайте Github, по вертикали - количество вопросов на сайте Stackoverflow по соответствующим языкам программирования.

Рисунок 2.17 - Статистика использования языков программирования на сайте Github и Stackoverflow

На основании результатов полученных в ходе анализа языков программирования было решено использовать язык С++.

Кроме того, для удобства создания ПО и его визуализации было решено использовать дополнительно библиотеку Qt. Qt - кроссплатформенный инструментарий разработки ПО на языке программирования C++. Позволяет запускать написанное с его помощью ПО в большинстве современных операционных систем путём простой компиляции программы для каждой ОС без изменения исходного кода. Включает в себя все основные классы, которые могут потребоваться при разработке прикладного программного обеспечения, начиная от элементов графического интерфейса и заканчивая классами для работы с сетью, базами данных и XML. Qt является полностью объектно-ориентированным, легко расширяемым и поддерживающим технику компонентного программирования.

Делись добром ;)