Файл: Классификация языков программирования высокого уровня (Понятие языка программирования. Классификация языков программирования высокого уровня).pdf
Добавлен: 23.04.2023
Просмотров: 235
Скачиваний: 3
СОДЕРЖАНИЕ
Глава 1. Теоретические положения языков программирования
1.1 Понятие языка программирования
1.2 Классификация языков программирования
Глава 2. Языки программирования высокого уровня
2.1. Классификация языков программирования высокого уровня
ВВЕДЕНИЕ
Сегодня категория «информация» нередко определяется как нечто, дающее нам представление об окружающем мире и его составляющих. К таким составляющим относятся различные явления и предметы, другие люди, представители флоры и фауны и вообще все, что мы можем ощутить при помощи органов чувств.
Не так давно информация перешла в новый для человечества формат – в электронный вид. И это стало одновременно и спасением, и проклятием. Так, с одной стороны, человечество сделало несравненно значительный шаг вперед, получив возможность обрабатывать информацию в миллионы раз быстрее, чем раньше – мы можем узнать практически все за считанные секунды, можем общаться с людьми, находящимися на другом конце света. Новые информационные технологии перевернули также представление о медицине, науке и технике, и вообще во многих сферах жизни общества сегодня мы можем делать то, о чем раньше и не мечтали.
С другой же стороны, мы получили еще одну уязвимую сторону жизни. Информация, хранящаяся в электронном виде, подвержена значительному числу угроз. Частная жизнь может стать достоянием общественности, корпоративная и даже государственная тайна могут быть раскрыты в считанные минуты, что приведет к непредсказуемым последствиям.
Современные технические средства обработки информации и, в частности, персональные компьютеры стали по-настоящему неотъемлемой частью жизни общества и отдельных людей. Каждое такое средство функционирует благодаря стройной взаимосвязанной работе систем логического и аппаратного обеспечения. Программное обеспечение многогранно и разнообразно, нацелено на выполнение различных задач и целей. И достигать этих целей позволяет целый ряд современных языков программирования, благодаря использованию которых сегодня возможно создание самых разнообразных программных продуктов.
Для подробного исследования проблемы необходимо выполнить цель – осуществить классификацию языков программирования высокого уровня. Для достижения цели выполним следующие задачи:
- рассмотреть понятие языков программирования;
- привести классификацию языков программирования;
- классифицировать языки программирования высокого уровня;
- рассмотреть частные примеры наиболее распространенных языков программирования высокого уровня;
- подвести итоги исследования.
Объект исследования – языки программирования. Предмет – языки программирования высокого уровня.
Теоретическая основа работы – исследования известных авторов, освещающих проблему программирования в целом и языков программирования – в частности. Например, такие авторы как Рак И. П,, Финогенов К. Г. и др.
Глава 1. Теоретические положения языков программирования
1.1 Понятие языка программирования
Сегодня практически все программы создаются с помощью языков программирования. Теоретически программу можно написать и на естественном языке (говорят: программирование на метаязыке), но из–за неоднозначности естественного языка автоматически перевести такую программу в машинный код пока невозможно.
Языки программирования – это формальные искусственные языки [12]. Как и естественные языки, они имеют алфавит, словарный запас, грамматику и синтаксис, а также семантику.
Язык программирования – искусственный (формальный) язык, предназначенный для записи программ для исполнителя (например, компьютера или станка с числовым управлением). Язык программирования задается своим описанием. Описание языка программирования – это документ, специфицирующий возможности алгоритмического языка [4]. Обычно описание содержит:
- алфавит допустимых символов и служебных (ключевых) слов;
- синтаксические правила построения из алфавита допустимых конструкций языка;
- семантику, объясняющую смысл и назначение конструкций языка [4].
Алфавитом в языках программирования называется набор символов, который является разрешенным к использованию и применяется для образования слов, конструкций и величин каждого конкретного языка.
Синтаксис в языках программирования представляет собой систему правил, которые определяют допустимые конструкции внутри языка из символов его алфавита.
Семантика – система правил однозначного толкования каждой языковой конструкции, позволяющих производить процесс обработки данных [4].
Взаимодействие синтаксических и семантических правил определяет основные понятия языка, такие как операторы, идентификаторы, константы, переменные, функции, процедуры и т.д. В отличие от естественных, язык программирования имеет ограниченный запас слов (операторов) и строгие правила их написания, а правила грамматики и семантики, как и для любого формального языка, явно однозначно и четко сформулированы.
Языки программирования, ориентированные на команды процессора и учитывающие его особенности, называют языками низкого уровня. «Низкий уровень» не означает неразвитый, имеется в виду, что операторы этого языка близки к машинному коду и ориентированы на конкретные команды процессора.
Языком самого низкого уровня является ассемблер. Программа, написанная на нем, представляет последовательность команд машинных кодов, но записанных с помощью символьных мнемоник. С помощью языков низкого уровня создаются компактные оптимальные программы, так как программист получает доступ ко всем возможностям процессора. С другой стороны, при этом требуется хорошо понимать устройство компьютера, а использование такой программы на компьютере с процессором другого типа невозможно. Такие языки программирования используются для написания небольших системных приложений, драйверов устройств, модулей стыковки с нестандартным оборудованием, когда важнее компактность, быстродействие, прямой доступ к аппаратным ресурсам [7].
Язык программирования служит двум связанным между собой целям: он дает программисту аппарат для задания действий, которые должны быть выполнены, и формирует концепции, которыми пользуется программист, размышляя о том, что делать. Первой цели идеально отвечает язык, который настолько «близок к машине», что всеми основными машинными аспектами можно легко и просто оперировать достаточно очевидным для программиста образом. Второй цели идеально отвечает язык, который настолько «близок к решаемой задаче», чтобы концепции ее решения можно было выражать прямо и коротко.
Связь между языком, на котором мы думаем/программируем, и задачами и решениями, которые мы можем представлять в своем воображении, очень близка. По этой причине ограничивать свойства языка только целями исключения ошибок программиста в лучшем случае опасно. Как и в случае с естественными языками, есть огромная польза быть, по крайней мере, двуязычным. Язык предоставляет программисту набор концептуальных инструментов, если они не отвечают задаче, то их просто игнорируют. Например, серьезные ограничения концепции указателя заставляют программиста применять вектора и целую арифметику, чтобы реализовать структуры, указатели и т.п. Хорошее проектирование и отсутствие ошибок не может гарантироваться чисто за счет языковых средств. [19]
Может показаться удивительным, но конкретный компьютер способен работать с программами, написанными на его родном машинном языке. Существует почти столько же разных машинных языков, сколько и компьютеров, но все они суть разновидности одной идей простые операции производятся со скоростью молнии на двоичных числах.
Можно писать программы непосредственно на машинном языке, хотя это и сложно. На заре компьютеризации (в начале 1950–х г.г.), машинный язык был единственным языком, большего человек к тому времени не придумал. Для спасения программистов от сурового машинного языка программирования, были созданы языки высокого уровня (т.е. немашинные языки), которые стали своеобразным связующим мостом между человеком и машинным языком компьютера. Языки высокого уровня работают через трансляционные программы, которые вводят «исходный код» (гибрид английских слов и математических выражений, который считывает машина), и в конечном итоге заставляет компьютер выполнять соответствующие команды, которые даются на машинном языке. Существует два основных вида трансляторов: интерпретаторы, которые сканируют и проверяют исходный код в один шаг, и компиляторы, которые сканируют исходный код для производства текста программы на машинном языке, которая затем выполняется отдельно [19].
Языки программирования, имитирующие естественные, обладающие укрупненными командами, ориентированные «на человека», называют языками высокого уровня. Чем выше уровень языка, тем ближе структуры данных и конструкции, использующиеся в программе, к понятиям исходной задачи. Особенности конкретных компьютерных архитектур в них не учитываются, поэтому исходные тексты программ легко переносимы на другие платформы, имеющие трансляторы этого языка. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значительно проще, число ошибок, допускаемых в процессе программирования, намного меньше. В настоящее время насчитывается несколько сотен таких языков (без учета их диалектов).
Таким образом, языки программирования высокого уровня, ориентированные на решение больших содержательных прикладных задач, являются аппаратно–независимыми и требуют использования соответствующих программ–переводчиков для преобразования текста программы в машинный код, который в итоге и обрабатывается процессором.
1.2 Классификация языков программирования
За 60 с лишним лет развития ЭВМ были разработаны сотни языков программирования, многие из которых используются и сейчас (например Бейсик и Фортран были впервые применены уже в конце 1950–х годов), ежегодно появляется несколько новых языков промышленного применения (не считая десятков экспериментальных). Для того чтобы разобраться в них, языки классифицируют по важнейшим признакам:
- эволюционным – поколения языков (1GL, 2GL, 3GL, 4GL, 5GL...);
- функциональным – по назначению, исполняемым функциям (описательные, логические, математические);
- уровню языка – то есть уровню обобщения в словах–операторах языка (низкого, среднего, высокого...);
- области применения – то есть где применяется язык (системные, сетевые, встроенные и пр.
Все типы классификаций естественным образом пересекаются, гармонируют между собой, что мы увидим при рассмотрении этих классификаций, что при понимании этого позволит легко разобраться в любом новом языке – его назначении, возможностях, технике освоения [14].
Рассмотрим классификацию относительно поколений языков программирования
Поколение 1GL.
Машинные языки, языки низкого уровня – двоичные языки процессоров, представляющие собой набор (алфавит) команд, записанных в двоичном коде (0,1), которые данный процессор может выполнить непосредственно, если эти команды ввести в его память в виде последовательности или сразу подать в арифметическо–логическое устройство процессора. Примеры: язык процессора IBM–PC, язык ARM–процессора [19].
Поколение 2GL.
Ассемблеры, автокоды, системные языки, языки среднего уровня – текстовые языки, понятные человеку и однозначно переводимые (транслируемые) в языки низкого уровня, то есть машинный двоичный код. Программирование на 2GL на порядок производительнее, чем на 1GL, так как более удобны для человеческого восприятия. Примеры: Макроссемблер, С, PL/1.
Поколение 3GL.
Языки высокого уровня – текстовые языки, приближенные по словарю и синтаксису к человеческому языку (обычно утрированному английскому, пиндосу), позволяющие записывать программные конструкции в форме, удобной для человеческого мышления и подобные обычному тексту – конспекту, стенограмме. Программирование на 3GL на порядок производительнее, чем на 2GL, так как более удобны для человеческого восприятия и на порядок короче ассемблерных. Примеры: бейсик, фортран, PHP и практически все сетевые языки.
Поколение 4GL.
Языки визуального программирования – языки блок–схем, позволяющие отображать алгоритмы в программных проектах, что облегчает создание и анализ алгоритмов. Программирование на 4GL на порядок производительнее, чем на 3GL. Примеры: RAD–системы, CAD–пакеты, OLAP–системы.
Поколение 5GL.
Интеллектуальные языки программирования – позволяют передать функцию создания алгоритмов компьютеру, а за человеком оставить лишь постановку задачи. Программирование на 5GL на порядок производительнее, чем на 4GL. Примеры: система MatCAD, экспертные системы [19].