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

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

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

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

Добавлен: 30.03.2023

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

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

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

Введение

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

Из этого можно сделать вывод, что предмет моих исследований очень актуален и представляет интерес для всех кто взаимодействует с ЭВМ, а это почти каждый человек. Объектом и темой своей курсовой работы я выбрал: «Классификация языков программирования. Критерии выбора среды и языка разработки программ».

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

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

Общеизвестно, что существует несколько сотен языков программирования. Для выполнения одной задачи или комплекса задач ЭВМ, программист может использовать различные языки программирования, один или несколько для одной задачи. Профессиональный программист знает несколько языков программирования и пользуется в основном только ими. Все созданные ЯП (языки программирования), даже устаревшие и не востребованные, были созданы для выполнения каких-либо задач и/или устраняли недочеты предшественников.

Для всех задач не существует единого языка программирования, но для определенной, специальной задачи может быть оптимален определенный язык программирования. Языки программирования делят на универсальные и узкоспециализированные. Универсальные языки, которые наиболее оптимальны для распространённых программ/задач, с помощью них можно создать широкий круг программ. Узкоспециализированные ЯП могут быть не так распространены и востребованы, но все-таки востребованы. Найти специалиста со знанием универсальных языков и узкоспециализированного языка, на вес золота, можно сделать вывод по новой тенденции HR специалист по поиску IT специалистов. В своей курсовой я рассмотрю: как же разделяются языки программирования; насколько они нужны. При этом использую востребованность и на рынке труда, и заработную плату, предложенную работодателям.


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

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

1. Классификация языков программирования

Язык программирования – это знаковая система для планирования ведения компьютера, а также средство общения между человеком и компьютером[1]. Языком программирования называется система обозначений и правил, позволяющая записать программу решения задачи в виде последовательного текста в удобном для человека виде[2].

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

В программировании, совокупность методов, подходов, понятий и идей, определяющих способ конструирования программ, называют парадигмами. Виды парадигм программирования: Императивная, Аппликативная, Основанная на системе правил, Объектно-ориентированная[3]. Практически все современные языки мультипарадигматичные, это означает что язык допускает использование различных парадигм. Стили написания программы могут пересекаться друг с другом в деталях парадигм.


Императивная парадигма. Программы, написанные на языке в стиле императивного программирования наиболее близки к машинному коду и понятны машине. Эта модель вытекает из особенностей аппаратной части стандартного компьютера, выполняющей инструкции (команды) последовательно. Основные требования для данного стиля, в исходном коде программы команды написаны пошагово и последовательно. Основным видом абстракции, используемым в данной парадигме, являются алгоритмы. Императивные программы реализуются быстро и эффективно, этим объясняется популярность императивных ЯП[4].

Противоположность императивному стилю программирования является декларативное. Если императивный стиль нацелен на выполнения процесса, то декларативный стиль описывает, что необходимо получить. Подвиды декларативной парадигмы: аппликативные и основанные на системе правил (логичные).

Аппликативная парадигма представляет собой другой взгляд на вычисления, производимые с помощью языка программирования. В основу этой парадигмы рассматриваются функции, которые выполняет программа, преобразование изначальных данных с помощью функции. Как и у декларативного стиля программирования, не рассматривается последовательность действий или алгоритмов, через которые должна пройти вычислительная машина. Задача состоит в выяснении необходимой функции для применения к начальному состоянию машины (путем выбора начального набора переменных и комбинирования их определенным образом[5]). Такую модель поддерживают такие языки как ML и LISP. Синтаксис таких языков в основном выглядит так:

Функция_n(… функция_2 (функция_1 (данные))…)[6]

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

Объектно-ориентированная парадигма. Данная парадигма состоит из кооперативных объектов, которые включают в себя самостоятельные данные, группы данных и методов, имеющие иерархию и объединённые через отношения наследования[7]. В этой модели строятся сложные объекты данных. Создаваемые объекты могут наследовать свойства более простых объектов[8]. Программы, написанные на объектно-ориентированном языке, имеют высокую эффективность, схожую с написанными на императивных языках, при этом затрачивается меньше усилий и времени от разработчика.


Существующие языки программирования можно разделить на две группы: процедурные(алгоритмические) и непроцедурные.

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

Характерным для процедурного языка является наличие оператора присваивания. Процедурные языки пишутся в стиле императивной парадигмы программирования[9]. Данные языки ближе к машинному коду и компьютеру потребуется меньше усилий для перевода языка, при составлении алгоритма придётся приложить дополнительные усилия от разработчика. Машинный код не удобен для передачи команд компьютеру связи с большой детализацией и сложностью описания для человека. Процедурный язык- это язык, выдающий приказы к последовательным действиям и указанным путем для получения результата, при этом ожидаемый результат не описывается. Процедурный язык подразумевает под собой подробную детализацию по шагам понятных для ЭВМ, а формулировки алгоритма и его специальной записи от программиста. Примеры процедурных ЯП: Basic (обозначение оператора присваивания «Y = X»)[10], Pascal (Y : = X) ,C (Y : = X).

С развитием языков программирования, росли и запросы на все более сложные задачи, которые требовалась выполнять быстрее и эффективнее. Языки программирования видоизменялись с течением времени все больше стремясь к автоматизации, требовалось чтобы программист не описывал во всех деталях алгоритмы и действия. Согласно детализации, произошло отделение группы языков программирования. Чем меньше детализации, тем проще писать программу и выше уровень языка[11]. Процедурные языки разделились на низкие и высокие ЯП.

Уровни языка программирования согласно критерию детализации, делятся на:

-машинные

-машино–ориентированные;

-машинно-независимые[12].

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

Для облегчения программирования в виде машинных команд (кодирование) был разработан машинно-зависимый язык[13], Ассемблер, но не в виде чисел, а с помощью условных символьных обозначений, называемых мнемониками[14]. Ассемблер, язык с высокой детализацией, разрабатывался под конкретный компьютер, при изменении компьютера код приходилось разрабатывать заново, что было не удобно. При этом Ассемблер обеспечивал максимальную скорость в решении небольших задач[15].


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

Языки программирования высокого уровня, не требуют написания языка под конкретный компьютер. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значительно проще, а ошибок при создании программ допускается гораздо меньше. Для упрощения процесса создании программ, важным шагом было заставить компьютер работать переводчиком с языков программирования на машинный код. Языки программирования высокого уровня переносятся на другие языки или код, с помощью транслейтора (компилятор, интерпретатор). Одними из первых языков программирования высокого уровня был Fortran (система трансляции формул; используемый в решении задач математической ориентации[16]), предоставляющей возможность записи алгоритма с использованием условных операторов. В Фортране, строгости и изяществу языка уделяется меньшее внимание, основной акцент на организации ввода-вывода и модульности[17].

Высокие языки программирования (машинно-независимые) так же можно подразделить, на: машинно-ориентированные (Си) и универсальные (Бейсик, Паскаль, Фортран, Кобол, Пл/1, Ада, Модула-2, Алгол). Универсальные языки объединяют в себе черты машинно-ориентированных и процедурно-ориентированных ЯП.

Универсальные языки нацелены на решение широкого спектра задач. Одни из первых универсальных языков были Алгол и Фортран[18]. Алгол- акцент внимания в языке на строгости определения и изяществе языковых конструкций[19]. Фортран – широко распространённый язык, благодаря его простоте, написание близко к общепринятой математической форме и работает почти со всеми известными методами и алгоритмами, библиотеками данных. Универсальные языки решают значительно более разнообразные научные и экономические задачи, чем предшественники, но эти достоинства могут сделать языки сложными для изучения и использования, например, ПЛ/1.