Процедурные языки программирования

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

Системы программирования

 

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

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

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

Трансляция с помощью компилятора исходного кода программы в объектный код (говорят: генерируется объектный код или object code). Нередко при этом выполняется оптимизация с помощью набора методов, позволяющих повысить быстродействие программы.

• Создание исполняемого кода. Сгенерированный объектный код обрабатывается специальной программой — сборщиком (компоновщиком) или редактором связей, который производит связывание модулей объектного кода и стандартных функций из библиотек (например, файлов *.LIB, *.DLL) в машинный код для конкретной платформы (загрузочного модуля, готового к исполнению, например, файла *.ЕХЕ).

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

В системах визуального программирования все необходимые графические элементы оформления и управления создаются путём перетаскивания и редактирования готовых визуальных компонентов. Соответствующий этим элементам вспомогательный исходный код формируется в RAD-средах (Rapid Application Development - средах быстрого проектирования) автоматически, что позволяет сосредоточиться только на логике решаемой задачи.

 

 

Языки программирования можно разделить на пять поколений.

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

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

Третье поколение – с 60-х годов – универсальные языки высокого уровня. С их помощью решаются задачи из любых областей. Небольшие программы инженерного и экономического характера создаются специалистами из некомпьютерных областей

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

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

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

 

 

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

 

 

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

Фортран (FORTRAN – FORmula TRANslation – транслятор формул) – один из первых компилируемых процедурных языков программирования высокого уровня, создан в начале 50-х гг. в США сотрудником фирмы IBM Джимом Бэкусом. Основное назначение языка – программирование научно-технических задач. Долгие годы он был одним из самых распространенных языков в мире. За это время накоплена огромная библиотека программ, написанных на Фортране. К 2000 г. появилась версия Фортрана F2k, для параллельных суперкомпьютеров со множеством имеется версия HPF (High Performance Fortran – высокоэффективный Фортран). Многие средства Фортрана использованы в других языках, например PL-1 и Бейсик.

Кобол (COBOL – COmmon Business Oriented Language – общепринятый деловой язык) – язык программирования, ориентированный на решение задач обработки больших объемов данных, хранящихся на различных внешних носителях. Широко используется для решения учетно-экономических и управленческих задач. Разработан в США в 1958—1960 гг. Программа на Коболе имеет вид ряда предложений на английском языке и напоминает обычный текст.

Алгол (ALGOL – ALGOrithmic Language – алгоритмический язык) разработан международной группой зарубежных специалистов в 1960 г. В результате дальнейшего развития и усовершенствования в 1968 г. была создана версия Алгол-68. Алгол предназначался для замены Фортрана. Но не получил широкого распространения, так как из-за сложной структуры и отсутствия эффективных компьютеров для него не удалось своевременно создать хороших компиляторов.

ПЛ/1 (PL/1 – Programming Language One – первый язык программирования) разработан фирмой IBM в 1963—1966 гг. как первый многоцелевой универсальный язык, не привязанный к конкретной архитектуре ЭВМ. При разработке PL/1 были широко использованы лучшие понятия и средства языков Фортран, Алгол-60, Кобол. Компания IBM и сегодня продолжает поддерживать этот язык, который по своим возможностям мощнее многих других языков.

Бейсик (BASIC – Beginners All-purpose Symbolic Instruction Code – универсальный символический код для начинающих) создан в середине 60-х гг. сотрудниками математического факультета Дартмутского колледжа Томасом Курцем и Джоном Кемени как учебный язык программирования, состоящий из простых английских слов. Популярность Бейсика объясняется как простотой его освоения, так и наличием достаточно мощных универсальных средств, пригодных для решения научных, технических, экономических и других задач.

Паскаль (Pascal) был назван в честь французского математика и философа Блеза Паскаля (1623–1662). Созданный как учебный язык программирования в 1968–1971 гг. Никлаусом Виртом в Высшей технической школе (ЕТН) в Цюрихе (Швейцария), он стал одним из наиболее популярных процедурных языков программирования, особенно для персональных компьютеров. В основу разработки языка Паскаль был положен Алгол-60, но ужесточен ряд требований к структуре программы и добавлены возможности, позволяющие успешно применять его для создания крупных проектов.

Ада (Ada) – язык программирования, названный в честь Ады Лавлейс, дочери поэта Байрона, которая была увлечена идеями Чарльза Бэббиджа и разработала первую в мире программу для вычислительной машины. Период с конца 60-х до начала 80-х гг. характеризуется бурным ростом числа различных языков программирования. Однако среди бесчисленного множества языков ни один не мог удовлетворить требованиям военного ведомства США. В мае 1979 г. группа ученых во главе с Жаном Ихбиа победила в конкурсе на создание языка для Пентагона. Язык Ада – прямой наследник Паскаля. Он предназначен для создания и длительного сопровождения больших программных систем, управления процессами в реальном масштабе времени. Важным его достоинством является возможность параллельного программирования ветвей программы, которые затем могут реализоваться на многопроцессорных компьютерах.

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