Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ. ( КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ).pdf

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

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

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

Добавлен: 31.03.2023

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

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

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

2.1. Критерии выбора языка программирования

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

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

Рассмотрим самые значимые критерии выбора для написания программ.

1. Скорость работы конечного продукта.

Требовательным к скорости выполнения могут быть программы с большим объемом математических вычислений, например, моделирование физических систем, расчеты большого объема экономических данных, выведение трехмерной графики и прочее. Для данных целей хорошо подойдут компилируемые языки: ассемблер, С/С++, фортран и т.д. Рассмотрим более подробно почему именно такие. После сборки программа не требует (грубо говоря) ничего лишнего и содержит в себе машинные команды, которые выполняются без лишних задержек [4], [6].

Схема работы таких программ такая:

1) программа исполняется сразу, так сказать она самодостаточна и не требует дополнительных библиотек;

2) программа кроме своего кода содержит вызовы библиотек с машинным кодом (как системных, так и входящих в проект), поэтому, кроме исполнения собственно своих команд, программа вызывает функции из библиотек;

3) в дополнение случаям 1 и 2, программа может работать через прослойку драйверов, которые написаны на языках низкого уровня и работают по умолчанию быстро. Как видно, максимум в схеме возможны 4 блока: программа  библиотеки  драйвера  железо.

2. Объем занимаемой оперативной памяти.

Данное требование появляется, когда программа разрабатывается для встраиваемых систем, мобильных платформ, микроконтроллеров и так далее. В данных случаях, чем меньше памяти расходует программа на данном языке – тем лучше. К таким языкам, опять же, относятся ассемблер, С/С++, Objective-C и другие. Список языков подобен списку пункта 1, так как чем меньше функциональных блоков в схеме исполнения, тем меньше занимается и памяти компьютера [5], [6].


Если данное требование некритично, то можно использовать «истинно высокоуровневые языки».

3. Скорость разработки программы.

Данное требование возникает тогда, когда заказчик/начальник говорит: «программа нужна не позже, чем вчера!» или еще подобной этой фразе срочность. Тогда выбор падает на высокоуровневые языки с максимально человеколюбивым синтаксисом. Это, например, Java, Flash и подобные. На данных языках время разработки может существенно сокращаться из-за обилия сторонних библиотек, максимально «очеловеченного» синтаксиса, и подобных вещей. Скорость выполнения программ, написанных на данных языках страдает, причем порой весьма ощутимо. Схема выполнения на примере Java:

Программа в виде байт-кода  виртуальная машина-анализатор  системные библиотеки  драйвера  железо.

Самым медленно работающим блоком в данной схеме является анализатор – он должен байт-код программы транслировать «на лету» в машинный код, при этом потратив много времени на точное определение инструкции. Поэтому быстрая разработка зачастую означает медленное выполнение [5].

4. Ориентированность на компьютер или человека

Поставим ряд вопросов:

- С кем будет работать программа в первую очередь?

- С человеком, или с компьютером?

В первом случае программа должна обладать мощной графической частью, отвечающей требованиям дизайна и юзабилити. Разработка графической части зачастую требует достаточно много времени, т.к. отличается немалой сложностью. Здесь сложность возникает в том, что вывод графики – это немало математики, а значит присутствует требовательность к скорости исполнения, а из-за сложности разработки присутствует необходимость в высокоуровневом языке.

В данном случае, на мой взгляд, очень хорошо подходит С++/C# с их одновременной и высокоуровневым языком, и скоростью выполнения программ на них. Однако, если ГИП не очень сложный, но красивый, возможно использование Java и Flash, на которых создание красивых интерфейс гораздо проще, нежели на С++ и, тем более, С.

Если программа ориентирована в первую очередь на «скрытую работу» с минимумом взаимодействия с пользователем, тогда выбор должен ложиться в сторону быстрых языков (ASM, C) [6], [9].

5. Кроссплатформенность.

Сразу же дадим определение этому критерию. Кроссплатформенность – возможность работы программы на различных платформах, в различных ОС с минимальными изменениями. В этой сфере можно выделить такие языки: Java, C#,Flash,C++ с различными библиотеками и другие, менее используемые, языки.


Java создавался с тем условием, что программы на данном языке должны работать на любой платформе, где есть JVM – Java Virtual Machine. Программы на Java вообще не требуют никаких изменений – после компиляции получается .jar файл, который будет работать и на Windows, и на Mac OS, и на Linux и еще немало где. Аналогичная ситуация и с Flash, только список платформ гораздо менее обширный. С С++ дело обстоит труднее. На чистом С++ написать кроссплатформенную программу довольно трудно, у кода возникает обширная избыточность, теряется достоинство в скорости выполнения. Облегчают задачу кроссплатформенные библиотеки, например, Qt, которые позволяют добиться принципа «один код на все платформы», однако на каждую платформу нужно программу собирать отдельно (при этом разными компиляторами) [4], [16].

В этот раздел так же можно включить интерпретируемые, скриптовые языки – для их работы нужно наличие интерпретатора языка в системе. Данные языки очень удобны в плане разработки, но достаточно медлительны. Схема их работы напоминает схему работы Java/Flash, только анализатор стал еще медленнее – полумашинный байт код анализировать «на лету» гораздо проще, чем человеческий код. Так же, это влечет к большему потреблению памяти.

6. Скорость внесения изменений, скорость тестирования

К примеру, опишем часто встречаемую ситуацию в современном мире: проект стремительно развивается, в него постоянно вносятся изменения, порой масштабные и большие изменения, а самое главное объемные.

Тогда выбор должен падать на высокоуровневые языки, где любой функциональный блок можно быстро переписать. Для подтверждения –думаю, гораздо проще добавить тот же С++, чем ассемблер. А еще проще Java. Но тут очень много тонкостей, которые таятся даже не сколько в языке, сколько в разработчике с его стилем программирования и компиляторах. Тем не менее, язык вносит свою долю в это дело, так или иначе упрощая/осложняя работу программиста.

Таким образом проанализировав основные критерии, которые требуются программистам, выявили и предложили самые популярные и подходящие языки под каждый критерий.

2.2. Сравнение популярных языков программирования

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


  1. Подсчет числа вакансий с упоминанием этого языка.
  2. Количество проданных книг (учебников или справочников).
  3. Оценка количества строк кода, написанных на языке (например, по статистике хостингов, где публикуются тексты программ).

Например, журнал IEEE Spectrum попытался составить самый объективную картину популярности языков программирования по двенадцати метрикам из десяти источников (приложение, рисунок 3).

По активности разработчиков на GitHub в 2017 году рейтинг представлен в приложении рисунок 4.

По каждой метрике может лидировать какой-то один язык, а по другой метрике — другой. Например, Cobol до сих пор доминирует в корпоративных дата-центрах, на нем написано много программ, хотя новых практически не пишут. Вариации языка C используются в системном программировании, а язык Java популярен для написания приложений под Android. Прочие языки регулярно используются для создания других разнообразных приложений. [6], [9].

За каким языком программирования будущее — покажет история, но исследователи отмечают, что по совокупности метрик в последнее время растет популярность Python, который сейчас вышел на 1-е место. Поднялись по рейтингу C# и Swift. По количеству вакансий для программистов C значительно опережает Python. В веб-программировании популярны JavaScript и PHP.

Помимо универсальности, есть ещё критерии, такие как:

  1. Простота — спотыкаться о сложный синтаксис и застревать в дебрях нечитаемого кода — не самое приятное начало обучения.
  2. Популярность — язык должен часто обновляться, иметь большое сообщество разработчиков, быть востребованным в крупных компаниях. Ещё один плюс — чем популярнее язык, тем легче найти ответ на возникший рабочий вопрос. Под эти три описания лучше всего подходят языки Python, C#, Java и Ruby [2], [9], [13].

Рассмотрим подробнее эти языки.

Python

Разработан в 80-е годы голландским программистом Гвидо ван Россумом. Большие технологические компании работают с Python: Яндекс, Google, Facebook и YouTube. Это так называемый скриптовый язык — на нём пишут то, что у программы под капотом. Его используют для веб-приложений, в разработке игр, софта для серверов. Python — пожалуй, самый простой язык программирования из нашего списка. Здесь минимум служебных символов, динамическая типизация, максимально понятный синтаксис. Несмотря на визуальную простоту, этот язык — один из мощнейших. С его помощью с одинаковой легкостью можно и работать с текстом, и строить нейронные сети.

Простота:

Код легко читается, у него понятная структура. Стандартного инструментария достаточно для начала обучения.


Популярность:

Занимает 1-е место в программах начального обучения программированию в университетах США.

Универсальность:

Регулярно обновляется — раз в 2,5 года. Входит в пятерку популярных языков по версии аналитической компании TIOBE Software на январь 2016 года.

На Python пишут почти всё: скрипты управления системами, веб-сайты, системы машинного обучения, игры.

С#

Язык был разработан в конце 90-х на базе C++ и Java. В основном используется для больших enterprise-проектов, но не ограничивается только ими. Например, скрипты в игровом движке Unity пишут на C#. Универсальный инструмент для всех направлений разработки. Чтобы создавать десктопные приложения, понадобится Visual Studio (версия Community — бесплатная).

Простота:

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

Популярность:

На C# пишут под Windows Phone, iOS и Android. Большое количество документации, но библиотек со свободной лицензией не много — это значит, что для обучения программист может использовать чужой код, но вот для использования в коммерческом продукте нужно платить.

Универсальность:

Последнее обновление было в 2015-м году

Язык придумали программисты из Microsoft для разработки Windows-приложений. Несмотря на это, его используют и в других системах. Также работает на встраиваемых, десктопных и серверных платформах.

Ruby

Создан японским разработчиком под влиянием языка Perl. Запущен в 1995 году. На Ruby написаны: Shopify, Github, Groupon, Yellow Pages, Twitter и Slideshare. Он набирает популярность, но чаще встречается в стартапах, нежели в крупных компаниях. Хорошо подходит для создания простого интернет-проекта.

Простота:

Как и Python, код легко читается. Структура также идентична Python. В сравнении с остальными языками, выбор стандартных библиотек скуднее — нужно потратить время на поиски.

Популярность:

Большое и лояльное сообщество разработчиков — замыкает десятку самых популярных языков по версии TIOBE Software. Много библиотек в свободном доступе.

Универсальность:

Наименее универсальный из всей четвёрки — в основном подходит для web-разработок. С другой стороны, внутри интернет-проектов с ним можно делать очень разные и очень крутые вещи.

Java

Более двух десятков лет этот язык находится в списке самых востребованных, а это уже что-то значит. Сегодня он в основном ассоциируется с разработкой приложений для Android — но это лишь малая часть его возможностей. При помощи Java вы можете создавать графические виджеты для веба или писать десктопные приложения — принцип независимости от платформы и устройства в Java живет и процветает.