Файл: Классификация языков программирования. Критерии выбора среды и языка программирования.pdf

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

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

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

Добавлен: 27.04.2023

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

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

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

В процессе рассмотрения перспектив программных технологий [2], можно было выделить технологические концепции и методологии, которые скорее всего повлекут изменения в операционных средах: программные шаблоны (паттерны), компонентная разработка, программы как сервис, сервисно-ориентированные архитектуры [4].

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

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

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

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

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

Наибольшие требования к скорости выполнения могут предъявлять программы со значительным объемом математических вычислений, например, моделирование физических систем, расчеты большого объема экономических данных, выведение трехмерной графики и др. [4]. Для этого хорошо подойдут компилируемые языки: ассемблер, С/С++, фортран и т.д. Дело в том, что после сборки программа не требует лишних процессов и содержит в себе машинные команды, выполняемые без лишних задержек. Схема работы таких программ следующая: 1) программа выполняется сразу, так как является самодостаточной и не требует дополнительных библиотек; 2) программа помимо кода включает в себя вызовы библиотек с машинным кодом, поэтому, кроме выполнения своих команд, программа вызывает функции из библиотек; 3) в дополнение к предыдущим пунктам, программа может работать через прослойку драйверов, написанных на языках низкого уровня и работающих по умолчанию быстро. Как видно, в схеме возможны максимум 4 блока: программа - библиотеки - драйвера – железо [3].


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

Это требование существует, когда программа разрабатывается для встраиваемых систем, мобильных платформ, микроконтроллеров и др. В данных случаях, значение имеет количество расходуемой памяти. К таким языкам также относятся ассемблер, С/С++, Objective-C и др.

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

Требование возникает при высокой срочности разработки программы. В этом случае выбор останавливается на высокоуровневых языках с максимально приближенным к человеку синтаксисом. Это, например, Java, Flash и т.п. Скорость выполнения программ, созданных на данных языках, не является оптимальной [5]. Схема выполнения на примере Java:
Программа в виде байт-кода - виртуальная машина-анализатор - системные библиотеки - драйвера - железо. Самым медленным блоком в данной схеме является анализатор. Поэтому быстрая разработка часто влечет медленное выполнение [3].

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

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

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

Кроссплатформенность – это возможность работы программы на различных платформах, в различных ОС с минимальными изменениями. Здесь можно выделить такие языки: Java, C#, Flash, C++ с различными библиотеками и другие, менее используемые, языки. Java создавался с учетом того, что программы на нем должны работать на любой платформе, где есть JVM – Java Virtual Machine. Программы на Java не требуют никаких изменений – после компиляции получается .jar файл, способный работать и на Windows, и на Mac OS, и на Linux и на многих других системах [7]. Однако, например, на одном С++ создать кроссплатформенную программу довольно сложно, и при возникновении обширной избыточности теряется достоинство в скорости выполнения. Значительно облегчают задачу кроссплатформенные библиотеки, например, Qt, позволяющие добиться принципа «один код на все платформы», однако на каждую платформу необходимо программу собирать отдельно разными компиляторами. В этот раздел так же можно включить интерпретируемые, скриптовые языки – для их работы необходимо наличие интерпретатора языка в системе. Данные языки очень удобны в плане разработки, но по скорости достаточно медлительны. Схема их работы напоминает схему работы Java/Flash, но анализатор работает еще медленнее [2].


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

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

Таким образом, тема выбора языка программирования достаточно обширна и имеет множество нюансов. Стоит учитывать, что большие программы могут создаваться на разных языках в зависимости от их функционала. Например, критичные к скорости работы части пишутся на низкоуровневых языках, графическая часть — на высокоуровневых и медленных. С и С++ являются действительно универсальными языками с большим количеством библиотек, высокой скоростью работы и многими другими достоинствами. Но, кроме них, они обладают еще довольно большим недостатком – по причине такой универсальности данные языки довольно трудны в освоении, имеют очень много особенностей. Язык Java также достаточно универсален, более прост в изучении, но обладает серьезным недостатком – крайне низкая скорость работы [4]. Это очень ограничивает его применение: большие программы на нем лучше не разрабатывать из-за возникающей потребности в мощном аппаратном обеспечении. Скриптовые/интерпретируемые языки хорошо подойдут для написания «одноразовых программ», автоматизации некоторых действий, а так же для работы вместе с другими языками. Ассемблер – группа языков со схожим синтаксисом, но многими различными параметрами в зависимости от платформы [5].

ЗАКЛЮЧЕНИЕ

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

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

В результате проведенной работы, были достигнуты поставленные задачи и получены следующие выводы: