Добавлен: 24.04.2023
Просмотров: 267
Скачиваний: 1
Введение
Мы живем во время невиданных ранее возможностей. Мобильная связь, Глобальная сеть, роботы–пылесосы – о подобных вещах не так давно люди не могли и мечтать. Тем не менее, довольно давно – в начале 19 века появился первый прообраз современных гаджетов – вычислительная машина Беббиджа. Она могла производить крупные математические вычисления – для этого и была создана. Чуть позднее стали появляться и постепенно развиваться первые языки программирования – специальные знаковые системы, обеспечивающие взаимодействие оператора с вычислительной машины.
За прошедшее с 19 века время было изобретено множество языков программирования, различных по назначению, функционалу, сложности освоения и другим параметрам. В целом все они делятся на две большие группы – языки программирования низкого и языки программирования высокого уровня. Первые направлены на прямую коммуникацию с компьютером на близком ему языке, в то время как высокий уровень предполагает большую ориентированность на пользователя или оператора.
Языки программирования высокого уровня очень многообразны. И так как мы живем в «век информационных технологий», их улучшение и создание новых поставлено на широкую ногу. Сегодня каждый программист может выбирать, какой язык ему осваивать и на каком осуществлять непосредственное программирование. Для подробного изучения вопроса выполним цель работы – осуществление обзора языков программирования высокого уровня.
Для достижения данной цели необходимо выполнить следующие задачи:
- Рассмотреть понятие языка программирования.
- Проанализировать классификацию языков программирования.
- Охарактеризовать языки программирования высокого уровня в целом.
- Осуществить краткий обзор языков программирования высокого уровня.
- Подвести итоги работы.
Объектом работы выступают языки программирования, а предметом – рассматриваемые языки программирования высокого уровня.
В качестве методологической и теоретической базы работы используются научные работы российских и зарубежных исследователей, в частности таких авторов как Абрамов В. Г., Зуев. Е. А., Моргун А. Н., Фаронов В. В. и других. Авторы, чьи труды используются в работе, заслужили доверие и признание в научных трудах, в частности, в вопросах программирования и изучения языков программирования высокого уровня, так что использование текстов их работ в исследовании целесообразно.
Структура работы включает две главы, каждая из которых, в свою очередь, содержит по два параграфа. Также включены содержание, введение, заключение и список использованных источников.
1. Языки программирования
1.1. Понятие языка программирования
Программу можно представить как набор последовательных команд (алгоритм) для объекта (исполнителя), который должен их выполнить для достижения определенной цели. Так можно «запрограммировать» человека, если составить для него инструкцию «как приготовить оладьи», а он начнет четко ее исполнять. При этом инструкция (программа) для человека будет написана на так называемом естественном языке, например, русском или английском [11].
Обычно принято программировать не людей, а вычислительные машины, используя при этом специальные языки. Использование особых языков вызвано тем, что машины не в состоянии «понимать» наши, т. е. человеческие, языки. Инструкции для машин пишут на языках программирования, которые характеризуются синтаксической однозначностью (например, в них нельзя менять местами определенные слова) и ограниченностью (имеют строго определенный набор слов и символов).
Язык программи́рования – формальная знаковая система, предназначенная для записи компьютерных программ [2]. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под её управлением.
- Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами.
- Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека к компьютеру, в то время как естественные языки используются для общения людей между собой. Можно обобщить определение «языков программирования» – это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.
- Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений [2].
Первые программы заключались в установке ключевых переключателей на передней панели вычислительного устройства. Очевидно, таким способом можно было составить только небольшие программы.
Первые программы писались на машинном языке, т.к. для ЭВМ того времени еще не существовало развитого программного обеспечения, а машинный язык – это единственный способ взаимодействия с аппаратным обеспечением компьютера, так называемым «железом». Каждую команду машинного языка напрямую выполняет то или иное электронное устройство. Данные и команды записывали в цифровом виде (например, в шестнадцатеричной или двоичной системах счисления). Понять программу на таком языке очень сложно; кроме того, даже небольшая программа получалась состоящей из множества строк кода. Ситуация осложнялась еще и тем, что каждая вычислительная машина понимает лишь свой машинный язык [14].
Людям, в отличие от машин, более понятны слова, чем наборы цифр. Стремление человека оперировать словами, а не цифрами привело к появлению ассемблеров. Это языки, в которых вместо численного обозначения команд и областей памяти используются словесно–буквенные.
При этом появляется проблема: машина не в состоянии понимать слова. Необходим какой–нибудь переводчик на ее родной машинный язык. Поэтому, начиная со времен ассемблеров, под каждый язык программирования создаются трансляторы – специальные программы, преобразующие программный код с языка программирования в машинный код. Ассемблеры на сегодняшний день продолжают использовать. В системном программировании с их помощью создаются низкоуровневые интерфейсы операционных систем, компоненты драйверов [9].
После ассемблеров наступил рассвет языков так называемого высокого уровня. Для этих языков потребовалось разрабатывать более сложные трансляторы, т. к. языки высокого уровня куда больше удобны для человека, чем для вычислительной машины. В отличие от ассемблеров, которые остаются привязанными к своим типам машин, языки высоко уровня обладают переносимостью. Это значит, что, написав один раз программу на языке программирования высокого уровня, программист может выполнить ее на любом компьютере, если на нем установлен соответствующий ему транслятор [9].
Следующим значимым шагом было появление объектно–ориентированных языков программирования, что, в первую очередь, было связано с усложнением разрабатываемых программ. С помощью таких языков программист как бы управляет виртуальными объектами, что в определенном смысле сближает программу с реальностью. На сегодняшний день в большинстве случаев реализация больших и сложных проектов осуществляется с помощью объектно–ориентированных возможностей языков. Хотя существуют и другие современные парадигмы программирования, поддерживаемые другими или теми же языками.
Ранее было сказано, что для перевода кода с языка программирования высокого уровня на машинный язык требуется специальная программа – транслятор. Заложенный в транслятор алгоритм такого перевода сложен. Нам же достаточно знать, что выделяют два основных способа трансляции – компиляция программы или ее интерпретация.
При компиляции весь исходный программный код (тот, который пишет программист) сразу переводится в машинный. Создается так называемый отдельный исполняемый файл, который никак не связан с исходным кодом. Выполнение исполняемого файла обеспечивается операционной системой (ОС). После того как получен исполняемый файл, для его чтения транслятор уже не нужен.
При интерпретации выполнение кода происходит последовательно (условно можно сказать, строка за строкой). Грубо говоря, операционная система взаимодействует с интерпретатором, а не с файлом, содержащим программный код. Интерпретатор же, прочитав очередной кусок исходного кода, переводит его в машинный (или не совсем машинный, но «понятный» для ОС) и «отдает» его ОС. ОС исполняет этот код и ждет следующей «подачки» от интерпретатора. Питон именно такой язык. Он интерпретируемый язык программирования.
Выполнение откомпилированной программы происходит быстрее, т.к. она представляет собой готовый машинный код. Однако на современных компьютерах снижение скорости выполнения при интерпретации обычно не заметно. Кроме того, интерпретируемые языки обладают рядом преимуществ, среди которых отсутствие подготовительных действий для исполнения программы, что может быть важным для начинающих программировать в первый раз [9].
.
1.2. Классификация языков программирования
Языки программирования можно разделить на два класса: процедурные и непроцедурные. Процедурные (императивные) языки – это языки операторного типа. Описание алгоритма на этом языке имеет вид последовательности операторов. Характерным для процедурного языка является наличие оператора присваивания (Basic, Pascal, С) [3]. Программа, написанная на императивном языке, очень похожа на приказы, выражаемые повелительным наклонением в естественных языках, то есть это последовательность команд, которые должен выполнить компьютер. Программируя в императивном стиле, программист должен объяснить компьютеру, как нужно решать задачу.
Непроцедурные (декларативные) языки – это языки, при использовании которых в программе в явном виде указывается, какими свойствами должен обладать результат, но не говорится, каким способом он должен быть получен. Непроцедурные языки делятся на две группы: функциональные и логические [17].
Декларативные языки программирования – это языки программирования высокого уровня, в которых операторы представляют собой объявления или высказывания в символьной логике. Типичным примером таких языков являются языки логического программирования (языки, основанные на системе правил и фактов). Характерной особенностью декларативных языков является их декларативная семантика. Основная концепция декларативной семантики заключается в том, что смысл каждого оператора не зависит от того, как этот оператор используется в программе. Декларативная семантика намного проще семантики императивных языков, что может рассматриваться как преимущество декларативных языков над императивными [7].
Рисунок 1 Классификация языков программирования
В программах на языках логического программирования соответствующие действия выполняются только при наличии необходимого разрешающего условия на вывод новых фактов из данных фактов согласно заданным логическим правилам. Логическое программирование основано на математической логике.
Первым языком логического программирования был язык Planner, он был разработан Карлом Хьюитом в Лаборатории искусственного интеллекта Массачусетсского технологического института в 1969 г. В этом языке была заложена возможность автоматического вывода (получения) результата из данных и заданных правил путем перебора вариантов (совокупность которых называлась планом). Но самым известным языком логического программирования является ПРОЛОГ (Prolog), который был создан во Франции в Марсельском университете в 1971 г. Аленом Кольмеро (Colmerauer) [5].
Рисунок 2 Ален Кольмеро
Программа на языке ПРОЛОГ содержит две составные части: факты и правила. Факты представляют собой данные, с которыми оперирует программа, а совокупность фактов составляет базу данных ПРОЛОГа, которая, по сути, является реляционной базой данных. Основная операция, выполняемая над данными, – это операция сопоставления, называемая также операцией унификации или согласования. Правила состоят из заголовка и подцелей. Выполнение программы, написанной на ПРОЛОГе, начинается с запроса и состоит в доказательстве истинности некоторого логического утверждения в рамках заданной совокупности фактов и правил. Алгоритм этого доказательства (алгоритм логического вывода) и определяет принципы исполнения программы, написанной на ПРОЛОГе.