Файл: Обзор языков программирования высокого уровня (Теоретические основы и история появления первых языков программирования высокого уровня).pdf

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

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

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

Добавлен: 22.04.2023

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

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

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

Введение

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

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

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

Для выполнения поставленной цели, были выбраны качественные источники литературы. Многие из них являются фундаментальными работами, описывающими подробный или обобщенный опыт взаимодействия человека и ЭВМ. Надежность источников подтверждена использованием данной литературы многими высшими учебными учреждениями Российской Федерации. Их авторы, изучали компьютерную науку продолжительную часть своей жизни. Выбран сайт www.Tiobe.com, как показатель популярности и доверия к нему сообщества программистов, он используется только для основы второй главы. Также используются только официальные сайты языков программирования, которым доверяет сообщество разработчиков, что сводит к минимуму количество недостоверной информации.


Глава 1. Теоретические основы и история появления первых языков программирования высокого уровня

1.1 Теоретические основы

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

Под языками программирования низкого уровня принято понимать машинные коды и языки символьного кодирования. Характерной чертой здесь является привязка к конкретной архитектуре вычислительной машины, то есть машино-зависимость. Машинно-независимые языки ориентированы на систему операндов, характерных для записи определенных алгоритмов. Если язык программирования близок к естественному языку, то он называется языком высокого уровня, если ближе к машинным командам — языком низкого уровня.

Для перевода программы на машинно-независимом языке в машинный код были придуманы специальные программы называемые трансляторами. Наиболее популярные виды трансляторов[[1]]:

- интерпретаторы;

- компиляторы;

Интерпретатор производит пооператорную обработку и выполнение исходного кода программы.

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

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

Алфавит – фиксированный набор символов, для составления программы на данном языке;

Синтаксис – свод правил, которые определяют конструкции языка, соответственно из букв алфавита;

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

Языки программирования высокого уровня условно разделяются на несколько парадигм[[3]]: императивную, декларативную, объектно-ориентированную. Но на самом деле их существует большее количество.

При императивном программировании[[4]], записываются инструкции в исходный код, которые в свою очередь, выполняются последовательно. Получаемые данные записываются в память, и могут в дальнейшем использоваться. Также характерно использование:


- именованных переменных;

- оператора присваивания;

- составных выражений;

- подпрограмм.

Императивное программирование подразделяется как бы на несколько подходов: структурное, процедурное и модульное программирование.

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

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

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

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

Функциональный принцип[[6]] основан на математическом понятии функции. Здесь предполагается вычисление результатов функции от исходных данных и результатов других функций, но при этом состояние программы не хранится.

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

При объектно-ориентированном программировании[[7]] первичными считаются данные и объекты, которые взаимодействуют друг с другом. Объектам присваивается класс, а классы используют такой принцип, как иерархия наследования.

Ключевые принципы ООП:

- инкапсуляция;

- наследование;

- полиморфизм;

Инкапсуляция – это когда структуры данных и подпрограммы для работы с этими данными объединены в классы.

Наследование – возможность описать новый класс на основе уже написанного родительского класса.


Полиморфизм – позволяет определять, для какого объекта класса была вызвана функция.

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

1.2 Первые языки программирования высокого уровня

Первым в мире языком программирования высокого уровня считается появление языка Plankalkül[[8]] (по-русски произносится «планкалкюль», приблизительно означает «планирующее исчисление»). Его изобрел немецкий инженер Конрад Цузе в сороковых годах XX века. Язык разрабатывался как средство программирования электромеханического компьютера Z4. Особенностью языка Plankalkül являлась двумерная запись программы, что может считаться признаком его более высокого уровня. Цузе использовал двумерную запись в которой первой строкой записывалось само выражение, затем некоторые его аргументы, вводился тип переменной и индексы. В языке использовались условные конструкции, два вида циклов, наподобие while и for,также присутствовали массивы. К сожалению, данный язык так и остался в теории на долгие годы из за невозможности сделать к нему компилятор.

Пример программы сортировки на языке Plankalkül

P6 sort (V0[:6.8.0]) => R0[:6.8.0]

W1[0](4)[

V0[i0:8.0] => Z0[i0:8.0]

1 => Z4[:32.0]

W1[1](i0)

[

(V0[i0:8.0] < Z0[i1:8.0]) & (Z4[:32.0]=1) →

[

i0-i1 => Z1[:32.0]

W1[2](Z1[:32.0])

[

i0 — i2 — 1 => Z3[:32.0]

i0 — i2 => Z2[:32.0]

Z0[Z3[:32.0]:8.0] => Z0[Z2[:32.0]:8.0]

]

V0[i0:8.0] => Z0[i1:8.0]

0 => Z4[:32.0]

]

]

]

END

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

Время шло. Во всем мире предпринимались попытки облегчить работу при создании программ. В 1954 - 1957 годах укрепилась идея замены ячеек памяти и групп машинных инструкций абстрактными переменными. То есть, произошло абстрагирование от системы команд определенного вычислительного устройства и особенностей архитектуры аппаратных средств. Созданный транслятор заменял имена переменных и вызовы подпрограмм на соответствующие адреса ячеек памяти при переводе программы в машинный код. Эта идея была отлично реализована в языке программирования Фортран[[9]]. Он был создан группой программистов под руководством Джона Бэкуса в корпорации IBM. Принято считать, что именно он является первым реализованным языком программирования высокого уровня. Благодаря большому количеству математических библиотек, Фортран отлично подходит для инженерных и научных вычислений, и используется в наше время. Fortran имеет достаточно большой набор встроенных математических функций, поддерживает работу с целыми, вещественными и комплексными числами высокой точности. Выразительные средства языка изначально были весьма бедны, поскольку Fortran был одним из первых языков высокого уровня. В дальнейшем были добавлены многие лексические конструкции, характерные для структурного, функционального и даже объектно-ориентированного программирования.


Пример кода на языке Fortran[1. c.5]

program p1 ! p1 - имя программы

real x, y, z ! Объявляем 3 переменные вещественного типа

x = 1.1 ! Присваиваем переменным x и y значения

y = 2.2

z = x + y ! Присваиваем z результат сложения x и y

print *, 'z = ', z ! Вывод результата на экран

! Результат вывода: z = 3.300000

end program p1 ! END - обязательный оператор завершения программы

Приведенная программа называется главной. Она построена по схеме, в которой сначала следует объявление типов используемых переменных, затем операторы, выполняющие над объявленными переменными некоторые действия. Программа завершается оператором END, в котором имя программы p1и одновременно PROGRAM p1 могут быть опущены. Иными словами, программу можно завершить так: END PROGRAM или END. Программа имеет заголовок: PROGRAM имя - программы. Однако такой заголовок может быть опущен. В этом случае имя - программы не может присутствовать в операторе END. Имя - программы должно отличаться от используемых внутри главной программы имен.

В период 1960-1970х годов были разработаны основные парадигмы языков программирования, некоторые используются по настоящее время. Но начало истории языков программирования высокого уровня можно считать с языков Планкалкюль и Фортран.

1.3 Лисп

В шестидесятые годы, Джоном Маккартни из массачусетского технологического института, создается язык Lisp[[10]]. И достигает своего расцвета в эпоху ЛИСП – машин, то есть компьютеров, процессоры которых, были оптимизированы для выполнения ЛИСП – программ. Они были ориентированы на обработку списков. Операционная система, в свою очередь, тоже была написана на Лиспе, а операционная среда представляла расширение интерпретатора Лиспа. Все программы составлялись на нем же. Лисп преимущественно использовался в программировании искусственного интеллекта. Из-за активного развития и удешевления процессоров и микросхем памяти, от Лисп – машин отказались.

Пример кода на языке Лисп[[11]]

(DEFUN СУМНЕЧЕТ(ЧИСЛА)

(COND

((NULL ЧИСЛА) 0)

((ODD (CAR ЧИСЛА)) (+ (CAR ЧИСЛА)(СУМНЕЧЕТ(CDR ЧИСЛА))))

(T (СУМНЕЧЕТ (CDR ЧИСЛА))))))

1.4 Алгол

Следующим языком программирования высокого уровня, стал Алгол[[12]]. Он был разработан в Швейцарии в шестидесятых годах, при участии нескольких стран. Впоследствии, он много дорабатывался и в 1960 году, на пике популярности был обновленный Алгол60. Этот язык был довольно стройный, имел более-менее точное описание синтаксиса, блочная структура, в нём были некоторые новые интересные языковые черты (прежде всего, - рекурсия, чего не было в Фортране).