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

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

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

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

Добавлен: 29.03.2023

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

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

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

ВВЕДЕНИЕ

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

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

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

Цели исследования:

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

Задачи исследования:

  • Ознакомление с языками программирования.
  • Рассмотрение истории развития языков программирования.
  • Рассмотрение критериев классификации языков программирования высокого уровня.

В первой главе рассматриваются общие сведения о языках программирования и история их развития.

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

Языки программирования

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

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

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

  • наглядность - использование в языке по возможности уже существующих символов, хорошо известных и понятных как программистам, так и пользователям ЭВМ;
  • единство - использование одних и тех же символов для обозначения одних и тех же или родственных понятий в разных частях алгоритма. Количество этих символов должно быть по возможности минимальным;
  • гибкость - возможность относительно удобного, несложного описания распространенных приемов математических вычислений с помощью имеющегося в языке ограниченного набора изобразительных средств;
  • модульность - возможность описания сложных алгоритмов в виде совокупности простых модулей, которые могут быть составлены отдельно и использованы в различных сложных алгоритмах;
  • однозначность - недвусмысленность записи любого алгоритма. Отсутствие ее могло бы привести к неправильным ответам при решении задач [2].

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

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

По этому критерию можно выделить следующие уровни языков программирования:

машинные;

машинно-ориентированные (ассемблеры);

машинно-независимые (языки высокого уровня).

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

Разные типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня. В данном случае “низкий уровень” не значит “плохой”. Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора. [2]

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

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

Язык ассемблера — это машинно-зависимый язык низкого уровня, в котором короткие мнемонические имена соответствуют отдельным машинным командам. Используется для представления в удобочитаемой форме программ, записанных в машинном коде. [2]

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


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

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

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

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

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

Если язык программирования ориентирован на конкретный тип процессора, то он зазывается языком программирования низкого уровня.

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

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

Однако, некоторые семейства ЭВМ (например, EC ЭВМ, IBM/370/ и др.) имеют единый машинный язык для ЭВМ разной мощности. В команде любого из них сообщает информацию о местонахождении операндов и типе выполняемой операции.

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


Языком низкого уровня (машинно-ориентированным) являются Ассемблер, который просто представляет собой каждую команду машинного кода, но не в виде чисел, а с помощью условных символьных обозначений, называемых мнемониками. [6]

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

  • Высокое качество создаваемых программ;
  • Возможность использования конкретных аппаратных ресурсов;
  • Предсказуемость объектного кода и заказов памяти;
  • Для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ;
  • Трудоемкость процесса составления программ, плохо защищенного от появления ошибок;
  • Низкая скорость программирования;
  • Невозможность непосредственно использования программ, составленных на этих языках, на ЭВМ и других типов. [4]

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

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

Особенности конкретных компьютерных архитектур в них не учитываются, поэтому создаваемые программы на уровне исходных текстов легко переносимы на другие платформы, для которых создан транслятор этого языка. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значительно проще, а ошибок при создании программ допускается гораздо меньше. Для перевода исходных программ допускается с языка высокого уровня на машинный язык используются специальные программы – трансляторы. [6]

Работа всех трансляторов строиться по одному из двух принципов: интерпретация и компиляция. [6]

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


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

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

Высокоуровневые языки используются в машинно-независимых системах программирования. Такие системы программирования в сравнении с машинно-ориентированными системами представляют более простыми в использовании.

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

Процедурно-ориентированные языки применяются для записи процедур или алгоритмов обработки информации на каждом переделённом круге задач. К ним относятся:

  • Язык Фортран (Fortran), название которого происходит от слов Formulae Translation – «преобразование формул». Фортран представляет собой один из старейших языков программирования высокого уровня. Длительность его существования и применения можно объяснить простотой структуры данного языка.
  • Язык Бэйсик (Basic), который расшифровывается как Beginner All-purpose Symbolic Code, что в переводе означает – «многоцелевой символический обучающий код для начинающих», разработан в 1964 г. Как язык для обучения программирования.
  • Язык Си (С), применяемый с 1970-х гг. как язык системного программирования специально для написания OC UNIX. В 1980-е гг. на основе языка С был создан язык С++, практически включающий в себя язык С и дополнительный средствами объективно-ориентированного программирования.
  • Язык Паскаль (Pascal), который назван в честь французского ученого Б. Паскаля, начал применятся с 1968-1971 гг. Н. Виртом. При создании Паскаль использовался для обучения программированию, но со временем стал широко применяться для разборки программных средств в профессиональном программировании. [10]

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

  • Язык Лисп (Lisp – List information Symbol Processing), который был изобретен в 1962г. Дж. Маккарти. Первоначально он применялся как средство для работы со строками символов. Лисп употребляется в экспертных системах аналитических вычислений и т.п.
  • Язык Пролог (Prolog – Programming in Loginc), используемый для логического программирования в системах искусственного интеллекта. [10]