Файл: Классификация языков программирования высокого уровня. (Классификация языков программирования).pdf
Добавлен: 29.03.2023
Просмотров: 237
Скачиваний: 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]