Файл: Обзор языков программирования высокого уровня (Языки программирования: понятие и история развития).pdf
Добавлен: 30.03.2023
Просмотров: 410
Скачиваний: 1
СОДЕРЖАНИЕ
1 Языки программирования: понятие и история развития
1.1 Понятие языка программирования
1.2 История развития языков программирования
1.3 Примеры основных языков программирования
2 Классификация языков программирования высокого уровня
2.1 Процедурно-ориентированные языки программирования
2.2 Проблемно-ориентированные языки программирования
2.3 Объектно-ориентированные языки программирования
3 Составление программы на примере языка программирования C++
3.1 Обоснование выбора языка программирования
3.2 Пример решения задачи коммивояжера методом Прима на C++
ВВЕДЕНИЕ
Программирование - это искусство создания программных продуктов, написанных на языке программирования, под которым понимается формальная знаковая система, предназначенная для написания программ, понятной для исполнителя. Изобретение языков программирования высшего уровня, а также их постоянное совершенствование и развитие, дало возможность человеку общаться с машиной и понимать ее, использовать ЭВМ для сложных расчетов в области самолетостроения, ракетостроения, медицины и даже экономики.
На данный момент, любое среднее и крупное предприятие, имеет в своем штате группу программистов, которые обладают знаниями программирования различными языками, что говорит о том, что на рынке труда пользуются спросом обладающими знаниями и опытом работы с различными языками программирования. Язык программирования определяет набор лексических, синтаксических и семантических правил, которые задают внешний вид программы и действия, которые выполняет исполнитель под ее управлением.
Со времени создания первых программируемых машин было создано более двух с половиной тысяч языков программирования, и каждый год их количество растет. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей, а вот профессиональные программисты обычно применяют в своей работе несколько языков программирования.
Актуальность темы курсового исследования обусловлена тем, что прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов - языков программирования.
Цель курсовой работы – анализ языков программирования высокого уровня. Для определения поставленной цели необходимо решить следующие задачи:
- Анализ истории языков программирования;
- Определение понятия языка программирования;
- Анализ видов языков программирования высокого уровня;
Объект курсовой работы - языки программирования и история их развития. Предмет курсовой работы – разработанная программа на языке программирования высокого уровня С++.
Степень разработанности проблемы. В процессе исследования были проанализированы работы, посвященные анализу истории, понятия языков программирования. Весомый вклад в исследование данных вопросов внесли отечественные ученые: Акулич, И.Л., Балдин, К.В., Грошев А.С., Зрюмова А.Г., Зрюмов Е.А., Пронин С.П., и другие.
Практическая значимость работы заключается в возможности использования результатов исследования для решения практических задач, и свидетельствует о перспективности использования конечного результата.
Теоретическая значимость курсовой работы состоит в том, что в процессе рассмотрения данной темы с различных позиций, используются взгляды и мнения различных авторов, таких как Вайсфельд Мэтт., Меженный О.А., Орлова И.В., Таганов Л.С., Пимонов А.Г., Меняев М.Ф., Карпов Ю.Г., Цветкова М.С., Великович Л.С., Хубаева Г.Н., Акулич, И.Л., Балдин, К.В., Грошев А.С., Зрюмова А.Г., Зрюмов Е.А., Пронин С.П.
Основная часть
1 Языки программирования: понятие и история развития
1.1 Понятие языка программирования
В современном мире все программы создаются при помощи языков программирования[1]. Теоретически программу можно написать и на естественном языке, впрочем, из-за неоднозначности естественного языка автоматически перевести такую программу в машинный код пока невозможно. Языки программирования - это формальные искусственные языки. Языки программирования в отличие от естественных языков обладает ограниченным запасом слов (операторов), и строгими правилами их написания, а что касается правил грамматики и семантики, то, как и для любого формального языка, они явно однозначно и четко сформулированы.
Возникает вопрос, так для чего же нужны языки программирования?
Процесс работы персонального компьютера - это выполнение программы, иными словами выполнение пакета команд, которые следуют в определенном порядке. Вид команды машинного типа, состоящий из нулей и единиц, указывает, какие должен выполнять действия центральный процессор, из чего следует: чтобы задать персональному компьютеру последовательность выполняемых действий, задается последовательность кодов двоичного типа соответствующих команд. В машинных кодах софты состоят из множества команд, и написание подобного софта является достаточно трудным делом, а также очень утомительным и тяжелым.[2] Программист должен разбираться в комбинации единиц и нулей кода двоичного типа каждой программы, помимо этого, он должен помнить коды двоичного типа адресов данных, используемые при ее выполнении. Намного проще писать софт на языке, который более близок к человеческому естественному языку, и поручить персональному компьютеру перевод этой программы в коды машинного типа. Именно таким образом и появились языки программирования, предназначаемые для написания софта.
На данный момент существует много разных языков программирования. Для разрешения большого количества задач, можно применить каждый из них. Программисты знают, какой именно нужно использовать язык программирования для разрешения каких-либо задач, так как каждый из языков оснащен своими возможностями, ориентацией на определенные типы задач. Вместе с тем, каждый язык программирования обладают своим собственным способом написания и понятия, которые применяются для того, чтобы разрешить большое количество задач.[3]
Языки программирования бывают разными, так, например, языки которые ориентированы на команды процессора, и которые учитывают его особенности, называются языками низкого уровня, но он не означает неразвитый. Низкий уровень подразумевает то, что операторы этого языка близки к машинному коду и ориентированы на конкретные команды процессора. Языком самого низкого уровня является ассемблер. Программа, которая написана на ассемблере, представляет собой последовательность команд машинных кодов, но записанных с помощью символьных мнемоник. При помощи языков низкого уровня создаются компактные оптимальные по быстродействию программы, в качестве примера можно привести драйверы устройств, модули стыковки с нестандартным оборудованием, когда важнее компактность, быстродействие, прямой доступ к аппаратным ресурсам.[4]
Вместе с тем, существуют языки высокого уровня, под которыми понимается языки, которые имитируют естественные языки, они являются обладателями укрупненными командами, ориентированные отдельные прикладные области обработки информации.
Чем выше уровень языка программирования, тем ближе структуры данных и конструкции, которые используются в программе, к понятиям исходной задачи. Особенности конкретных компьютерных архитектур в них не учитываются, и потому исходные тексты программ легко переносимы на другие платформы, имеющие трансляторы этого языка. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд существенно легче, и число ошибок, которые допускаются в процессе программирования, намного меньше. В 2018 году насчитывается несколько сотен таких языков, не принимая во внимание их диалектов.
Таким образом, языки программирования высокого уровня, ориентированные на решение больших содержательных прикладных задач, являются аппаратно-независимыми и требуют использования соответствующих программ-переводчиков для преобразования текста программы в машинный код, который в итоге и обрабатывается процессором.
Разработать язык, который был бы удобный для написания программы – недостаточно, так как каждый язык должен обладать переводчиком, который и является специальной программой - транслятором. Транслятор – это программа, предназначенная для перевода софта, который был написан на одном языке программирования, в софт на другой язык программирования.[5] Данный процесс перевода носит название трансляцией. В качестве примера транслятора можно привести компилятор, являющийся программой. Компилятор предназначен для перевода софта, который написан на каком-либо языке, в софт в кодах машинного типа. Данный процесс носит название - компиляция. Существует еще один способ, который может сочетать в себе процессы трансляции и выполнения программ, и носит он название интерпретация. Суть интерпретации состоит в следующем: сперва переводится в коды машинного типа, затем выполняется первая строчка софта. Когда выполнение первой строчки закончено, начинается перевод второй строчки и так далее. Вследствие чего, можно сделать вывод, что интерпретацией называется программа, которая предназначается для построчных трансляций и исходной программы.
Язык большей части современных компьютеров достаточно скуп и состоит из команд типа: «выделить память определенного размера», «прочитать содержание определенной ячейки памяти», «добавить два числа», «переслать число из регистра памяти процессора в определенную ячейку оперативной памяти», «сравнить два числа, перехода к выполнению следующей команды» и т.п. Таких команд несколько сотен, и они настолько просты, что могут реализоваться аппаратной частью компьютера. Набор данных команд носит название языка машинных кодов. Используя команды этого набора, можно описать алгоритм, но запись может быть настолько громоздок, что вероятность его безошибочности чрезвычайно мала.[6]
1.2 История развития языков программирования
История языков программирования начинается с высказанной в 20-х годах 19 века Ч.Бэббиджем мыслью о предварительной записи порядка действий машины – программе. Революционным моментом в истории языков программирования стало появление системы кодирования машинных команд с помощью специальных символов, которая была предложена Джоном Моучли, сотрудником Пенсильванского университета. Система кодирования Моучли, настолько увлекла одну из сотрудниц его компании, что она посвятила которая посвятила всю свою жизнь компьютерам и программированию. Данной женщиной является Грейс Мюррей Хоппер. Хоппер Г., в процессе работы на компьютере «Марк-i» столкнулась с многочисленными проблемами. В частности, они придумали подпрограммы.[7]
На заре истории языков программирования машинный код был единственным средством общения человека с компьютером. Феноминальным достижением создателей языков программирования было то, что они смогли заставить сам компьютер работать переводчиком с этих языков на машинный код.
В конце 40-х годов Джона Моучли создал систему под названием «Short Code». Данная модель являлась примитивным языком программирования высокого уровня, в которой программист мог записывать решаемую задачу в виде математических формул, а затем, используя специальную таблицу, переводил символ за символом, преобразовывал эти формулы в двухлитерные коды. В дальнейшем специальная программа компьютера превращала эти коды в двоичный машинный код. Система, разработанная Дж. Моучли, была по существу одним из первых примитивных интерпретаторов.
Грейс Мюррей Хоппер в 1951 году создала первый в мире компилятор, так же она стала создателем данного термина. Компилятор осуществлял функцию объединения команд и в ходе трансляции производил организацию подпрограмм, выделение памяти компьютера, преобразование команд высокого уровня (в то время псевдокодов) в машинные команды.
Стремительный прогресс языков программирования пришелся на середину 50 – х годов. Роль программирования в машинных командах стала уменьшаться, начали появляться языки программирования нового типа, которые выступают в роли посредника между машинами и программистами. Первым и одним из наиболее распространенных был Фортран, разработанный группой программистов фирмы IBM в 1954 г. (первая версия).
В середине 60-х годов был создан специализированный язык программирования, создателями которого являлись сотрудники математического факультета Дартмутского колледжа Томас Курц и Джон Кемени. Данный язык состоял из простых слов английского языка. Новый язык назвали BASIC.[8] Если рассматривать начало 60-х годов, то можно заметить что все существующие языки программирования высокого уровня можно было пересчитать по пальцам, впрочем, впоследствии их число достигло трех тысяч. Безусловно, большая часть языков не получила в истории языков программирования хоть какого-нибудь широкого распространения, так как в практической деятельности используется не более двух десятков. Разработчики ориентировали языки программирования на разные классы задач, в той или иной мере привязывали их к конкретным архитектурам ЭВМ, реализовывали личные вкусы и идеи. В 60-е годы в истории языков программирования были предприняты попытки преодолеть эту «разноголосицу» путем создания универсального языка программирования. И первым выпуском этого направления стал PL/I. PL/I – это Programm Language One. Затем на эту роль претендовал АЛГОЛ-68. Как ожидалось, что подобные языки будут развиваться и усовершенствоваться и вытеснят все остальные, впрочем, ни одна из этих попыток на сегодняшний день не увенчалась успехом. Всеохватность языка приводила к неоправданной, с точки зрения программиста, сложности конструкций, неэффективности компиляторов.