Файл: Классификация языков программирования высокого уровня ( Исторические аспекты развития программирования ).pdf
Добавлен: 01.04.2023
Просмотров: 68
Скачиваний: 1
СОДЕРЖАНИЕ
1. Исторические аспекты развития программирования
2. Понятие «язык программирования».
3. Классификация и обзор языков программирования
3.1 Процедурное программирование
3.2 Функциональное программирование
3.3 Логическое программирование
3.4 Объектно-ориентированное программирование
Введение
Широкое использование информационных технологий во всех сферах человеческой деятельности является одним из основных признаков цивилизованного общества. Мировая история не знает никакой другой отрасли науки и технологий, развивающейся столь стремительными темпами. Трудно представить себе современного специалиста, не владеющего основными навыками работы с компьютером.
Прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов – языков программирования. Смысл появления такого языка – оснащенный набор вычислительных формул дополнительной информации, превращает данный набор в алгоритм. Язык программирования служит двум связанным между собой целям: он дает программисту аппарат для задания действий, которые должны быть выполнены, и формирует концепции, которыми пользуется программист, размышляя о том, что делать.
Цель данной работы – исследование видов языков программирования и их характерных черт.
Для достижения поставленной цели в ходе работы будет решены следующие задачи:
- изучены исторические аспекты развития программирования;
- дано определение понятию «язык программирования»;
- приведена классификация существующих языков программирования;
- рассмотрены основные их виды.
При подготовке к написанию работы были изучены труды следующих авторов: Брукшир Дж., Воройский Ф. С., Голицына О. Л., Соболь Б.В., Микрюков В.Ю. и др.
1. Исторические аспекты развития программирования
Программирование – совокупность процессов, связанных с разработкой программ и их реализацией[1]. В широком смысле к указанным процессам относят все технические операции необходимые для создания программ, включая анализ требований, все стадии разработки, а также реализации в виде готового программного продукта. В узком смысле под программированием часто понимают только процессы выбора структуры, кодирования и тестирования программ.
Компьютерная программа представляет собой логически упорядоченную последовательность команд, предназначенных для управления компьютером. Процессор компьютера – это большая интегральная схема. Все данные и команды он получает в виде электрических сигналов. В двоичном коде наличие сигнала описывается понятием «1», а его отсутствие – понятием «0». Команды, обрабатываемые процессором, можно интерпретировать как ряд чередующихся определенным образом единиц и нулей. То есть любая команда преобразуется в двоичное число. Таким образом, процессор исполняет программы, представляющие собой последовательность чисел и называемые машинным кодом.
Писать программы в машинных кодах очень сложно, причем с ростом размера программы эта задача усложняется. В компьютерах первого поколения использовались программы, написанные в машинных кодах, причем для каждого компьютера существовал свой собственный машинный код. Числовая кодировка команд, адресов ячеек и обрабатываемых данных, зависимость вида программы от ее места в памяти не давали возможность следить за смыслом программы. Это во многом ограничивало область применения компьютеров первого поколения. В тот период (начало 50-х гг.) средства программирования и программное обеспечение только зарождались и были еще не развиты.
Для того чтобы сделать программу читабельной и иметь возможность следить за ее смысловой структурой, придумали символический язык ассемблер, близкий к машинному (конец 50-х - начало 60-х гг.), в котором появилось понятие переменной. Ассемблер стал первым полноценным языком программирования. Благодаря этому заметно уменьшилось время разработки и возросла надежность программ. Для записи кодов операций и обрабатываемой информации в ассемблере используются стандартные обозначения, позволяющие записывать числа и текст в общепринятом виде, для кодов команд приняты мнемонические обозначения. Для обозначения величин, размещаемых в памяти, можно поменять имена. После ввода программы ассемблер сам заменяет символические имена на адреса памяти, а символические коды команд на числовые.
Использование ассемблера сделало процесс программирование более наглядным. Дальнейшее развитие этой идеи привело к созданию языков программирования высокого уровня, в которых длинные и сложные последовательности машинных кодов были заменены одним единственным обозначающим их словом – операторы.
2. Понятие «язык программирования».
Сегодня практически все программы создаются с помощью языков программирования. Теоретически программу можно написать и на естественном языке (говорят: программирование на метаязыке), но из-за неоднозначности естественного языка автоматически перевести такую программу в машинный код пока невозможно.
Языки программирования – это формальные искусственные языки. Как и естественные языки, они имеют алфавит, словарный запас, грамматику и синтаксис, а также семантику[2].
Алфавит – разрешенный к использованию набор символов, с помощью которого могут быть образованы слова и величины данного языка.
Синтаксис – система правил, определяющих допустимые конструкции языка программирования из букв алфавита.
Семантика – система правил однозначного толкования каждой языковой конструкции, позволяющих производить процесс обработки данных.
Взаимодействие синтаксических и семантических правил определяет основные понятия языка, такие как операторы, идентификаторы, константы, переменные, функции, процедуры и т.д. В отличие от естественных, язык программирования имеет ограниченный запас слов (операторов) и строгие правила их написания, а правила грамматики и семантики, как и для любого формального языка, явно однозначно и четко сформулированы.
Языки программирования, ориентированные на команды процессора и учитывающие его особенности, называют языками низкого уровня. «Низкий уровень» не означает неразвитый, имеется в виду, что операторы этого языка близки к машинному коду и ориентированы на конкретные команды процессора.
Языком самого низкого уровня является ассемблер. Программа, написанная на нем, представляет последовательность команд машинных кодов, но записанных с помощью символьных мнемоник. С помощью языков низкого уровня создаются компактные оптимальные программы, так как программист получает доступ ко всем возможностям процессора. С другой стороны, при этом требуется хорошо понимать устройство компьютера, а использование такой программы на компьютере с процессором другого типа невозможно. Такие языки программирования используются для написания небольших системных приложений, драйверов устройств, модулей стыковки с нестандартным оборудованием, когда важнее компактность, быстродействие, прямой доступ к аппаратным ресурсам.
Языки программирования, имитирующие естественные, обладающие укрупненными командами, ориентированные «на человека», называют языками высокого уровня. Чем выше уровень языка, тем ближе структуры данных и конструкции, использующиеся в программе, к понятиям исходной задачи. Особенности конкретных компьютерных архитектур в них не учитываются, поэтому исходные тексты программ легко переносимы на другие платформы, имеющие трансляторы этого языка. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значительно проще, число ошибок, допускаемых в процессе программирования, намного меньше. В настоящее время насчитывается несколько сотен таких языков (без учета их диалектов).
Таким образом, языки программирования высокого уровня, ориентированные на решение больших содержательных прикладных задач, являются аппаратно-независимыми и требуют использования соответствующих программ-переводчиков для преобразования текста программы в машинный код, который в итоге и обрабатывается процессором.
3. Классификация и обзор языков программирования
Современное состояние языков программирования можно представить в виде следующей классификации (рис. 1).
Языки программирования
Процедурные
(императивные)
Объектно-ориентированные
Декларативные
Операционные
Структурные
Функциональные
Логические
Визуальные
Объектные
Рис. 1 Классификация языков программирования
3.1 Процедурное программирование
Процедурное или императивное (от лат. imperativus – повелительный) программирование есть отражение фон Неймановской архитектуры компьютера. Программа, написанная на этом языке, представляет собой последовательность команд, определяющих алгоритм решения задачи. Основной командой является команда присвоения, предназначенная для определения и изменения содержимого памяти компьютера. Фундаментальная идея процедурного программирования – использование памяти компьютера для хранения данных.
Функционирование программы сводится к последовательному выполнению команд с целью преобразования исходного состояния памяти, т.е. программа производит пошаговое преобразование содержимого памяти, изменяя его от исходного состояния к результирующему.
Одним из первых процедурных языков программирования высокого уровня стал Фортран (FORmula TIMNslation), созданный в начале 50-х гг. в США фирмой IBM. Первая публикация о нем появилась в 1954 г. Основное назначение языка – программирование научно-технических задач. Объектами языка являются целые и вещественные числа и числовые переменные. Выражения в нем формируются с помощью четырех арифметических действий: возведения в степень, логических операций И, ИЛИ, НЕ, операций отношения и круглых скобок. Основные операторы Фортрана – ввод, вывод, присваивание, условный и безусловный переход, цикл, вызов подпрограмм.
Долгие годы он был одним из самых распространенных языков в мире. За это время накоплена огромная библиотека программ, написанных на Фортране. И сейчас ведутся работы над очередным стандартом Фортрана. В 2000 г. была реализована версия Фортран F2k, имеется стандартная версия HPF (High Performance Fortran) для параллельных суперкомпьютеров. Многие средства Фортрана использованы в языках PL-1 и Бейсик.
Кобол (COmmon Business Oriented Language – общепринятый деловой язык) – язык программирования, ориентированный на решение задач обработки данных. Широко используется для решения учетно-экономических и управленческих задач. Разработан в США в 1958-1960 гг. Программа на Коболе имеет вид ряда предложений на английском языке и напоминает обычный текст. Группы последовательно записанных операторов объединяются в предложения, предложения – в параграфы, параграфы – в секции. Программист присваивает параграфам и секциям имена (метки), что облегчает непосредственное обращение к нужному участку программы. В СССР был принят русский вариант языка. В Коболе были реализованы мощные средства работы с большими объемами данных, хранящимися на различных внешних носителях. На этом языке создано много приложений, некоторые из них активно эксплуатируются и сейчас. Достаточно сказать, что одной из высокооплачиваемых категорией граждан в США являются программисты на Коболе.
Алгол (ALGOrithmic Language) разработан группой зарубежных специалистов в 1960 г., явился результатом международного сотрудничества конца 50-х гг. (Алгол-60). Алгол предназначался для записи алгоритмов, построенных в виде последовательности процедур, применяемых при решении поставленных задач. Специалисты-практики воспринимали этот язык неоднозначно, но, тем не менее, он как признанный международный язык сыграл большую роль в становлении основных понятий программирования и для обучения программистов. В нем впервые введены понятия «блочная структура программы», «динамическое распределение памяти». Внутри блока в Алголе можно вводить локальные обозначения, которые не зависят от остальной части программы. Несмотря на свое интернациональное происхождение, Алгол-60 получил меньшее распространение, чем Фортран. Например, не на всех зарубежных ЭВМ имелись трансляторы с Алгола-60. В 1968 г. в результате дальнейшего развития и усовершенствования Алгола-60 была создана версия Алгол-68. Это многоцелевой универсальный расширенный язык программирования.