Файл: «Классификация языков программирования высокого уровня» _.pdf

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

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

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

Добавлен: 17.06.2023

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

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

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

ВВЕДЕНИЕ

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

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

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

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

В связи с этим тема курсовой работы особенно актуальна.

Целью данной работы является исследование классификации языков программирования высокого уровня.

Для достижения данной цели в работе поставлены следующие задачи:

  1. Изучить понятие и развитие языков программирования.
  2. Выявить особенности языков программирования высокого уровня.
  3. Рассмотреть такие процедурные и непродурные виды языков программирования высокого уровня.
  4. Провести классификацию языков программирования высокого уровня по уровню специализации.
  5. Дать характеристику таких непроцедурных языков программирования высокого уровня как функциональные, логические иобъектно-ориентированные языки программирования.

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

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


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

Наиболее надежными источниками можно считать монографии, учебники и учебные пособия, в том числе и электронные. Они изданы известными издательствами, например, Издательство Юрайт, Питер, Вильямс и др., а также вузами, такими как УлГТУ, СибГУТИ, НГТУ и др.

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

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

1. ПОНЯТИЕ ЯЗЫКА ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ

1.1. Понятие языка программирования. Эволюция развития языков программирования

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

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

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


  • машинные;
  • машинно-оpиентиpованные (ассемблеpы);
  • машинно-независимые (языки высокого уровня) [8, с.405].

Рассмотрим кратко историю развития языков программирования от низкого к высокому уровню.

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

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

Затем возникла идея использовать при записи вместо неудобных и трудных для запоминания кодов мнемонические обозначения команд, после чего специальные люди-кодировщики по таблицам соответствия переводили программу в машинный код. Большой скачок в программировании произошел, когда машине доверили выполнение такого перевода с помощью специальной системной программы (ассемблера). Кроме того, стало возможно обозначать ячейки не конкретными адресами в памяти (фактически, номерами ячеек), а символическими именами и потом ссылаться на них в программе [18].

Язык ассемблера – это машинно-зависимый язык низкого уровня, в котором короткие мнемонические имена соответствуют отдельным машинным командам. Термин ассемблер произошел от английского слова assembler, так называли сборщик частей в одно целое, в данном случае - сборщик программы. Процесс сборки называется ассемблированием. Язык ассемблера отнесем ко второму поколению языков программирования [15].

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

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


Итак, в группу языков низкого уровня входят машинные языки и языки символического кодирования: (Автокод, Ассемблер) [4, с.19].

Очередная революция в языках программирования произошла в 50-х г.г. ХХ в., когда появились языки программирования высокого уровня или третьего поколения. В них характерные для машины понятия, такие как ячейки памяти или простейшие операции суммирования чисел в ячейках памяти, заменялись абстрактными переменными и довольно сложными выражениями, похожими на используемые в математике формулы (неудивительно, что первый язык программирования высокого уровня так и назвали - Фортран, от слов «формульный транслятор»).

При создании языков высокого уровня делалась попытка выразить в языке суть алгоритма решения задачи, абстрагированного от мелких деталей реализации на той или иной ЭВМ, что нашло свое отражение в названии еще одного знаменитого языка программирования - Алгол (от англ. algorithmic language - алгоритмический язык) [10, с.20].

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

К языкам высокого уровня относятся Фортран, Алгол, Кобол, Паскаль, Бейсик, Си, Пролог и т.д. Эти языки машинно-независимы, так как они ориентированы не на систему команд той или иной ЭВМ, а на систему операндов, характерных для записи определенного класса алгоритмов. Отметим, что ряд авторов выделяют и языки сверхвысокого уровня. Повышение уровня таких языков произошло за счет введения сверхмощных операций и операторов [14].

Основные преимущества алгоритмических языков программирования перед машинными и машинно-ориентированными языками:

  • алфавит алгоритмического языка значительно шире алфавита машинного языка, что существенно повышает наглядность текста программы;
  • набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;
  • формат предложений достаточно гибок и удобен для использования, что позволяет с помощью одного предложения задать достаточно содержательный этап обработки данных;
  • требуемые операции задаются с помощью общепринятых математических обозначений; данным в алгоритмических языках присваиваются индивидуальные имена, выбираемые программистом;
  • в языке может быть предусмотрен значительно более широкий набор типов данных по сравнению с набором машинных типов данных [1, с.27].

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

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

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

1.2. Общие особенности языков программирования высокого уровня

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

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

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