Введение
Важное место в программном
обеспечении современных ЭВМ занимают
системы программирования. Основное их
назначение - освободить программиста
от необходимости работать на языке машинных
команд. Язык программирования, с которым
работает система программирования, называется
ее входным языком. Системы программирования
именуются по названию своего входного
языка. Например: Бейсик - система, Паскаль
- система, система пролог. Иногда в название
систем включаются префиксы, обозначающие,
например, фирменное происхождение системы.
Очень популярны системы с приставкой
«Турбо»: Турбо-Паскаль, Турбо-Си и другие.
Это системы программирования, разработанные
фирмой Borland.
Выбранная нами тема является
актуальной, так как системы программирования
- это универсальные средства работы с
информацией. С их помощью можно решать
вычислительные задачи, обрабатывать
тексты, получать графические изображения,
осуществлять хранение и поиск данных
и т.д., в общем, делать все, что делают средства
прикладного программного обеспечения
- специализированные исполнители. Кроме
того, сами эти средства (графические и
текстовые редакторы, СУБД и др.) - это программы,
написанные на языках программирования,
созданные с помощью систем программирования.
Языки программирования претерпели
большие изменения с тех пор, как в сороковых
годах началось их использование. Они
все еще продолжают изменяться и теперь
даже быстрее, чем когда либо ранее.
Даже при наличии десятков тысяч
программ для IBM PC пользователям может
потребоваться что-то такое, чего не делают
(или делают, но не так) имеющиеся программы.
В этих случаях следует использовать системы
программирования, т.е. системы для разработки
новых программ. Современные системы программирования
для персональных компьютеров обычно
предоставляют пользователю весьма мощные
и удобные средства для разработки программ.
Если раньше языки программирования
использовались лишь для создания программ
для автоматизации вычислительных процессов,
то на сегодняшний день они используются
для решения более разнообразных задач.
Изучение истории языков программирования,
их разнообразия и особенностей позволяет
программисту сделать правильный выбор
при выборе языка для решения определенной
задачи.
Все многообразие языков программирования
делят на различные классы в зависимости
от решаемых ими задач. Было замечено,
что в процессе развития языки программирования,
входящие в один класс, сближаются между
собой. Хотя само разнообразие классов
увеличивается, т.к. увеличивается сфера
задач, решаемых с помощью компьютерных
технологий.
Понятие о системе программирования
Системой программирования
называется комплекс программ, предназначенный
для автоматизации программирования задач
на ЭВМ1. Система программирования
освобождает проблемного пользователя
или прикладного программиста от необходимости
написания программ решения своих задач
на неудобном для него языке машинных
команд, и предоставляют им возможность
использовать специальные языки более
высокого уровня. Для каждого из таких
языков, называемых входными или исходными,
система программирования имеет программу,
осуществляющую автоматический перевод
(трансляцию) текстов программы с входного
языка на язык машины. Обычно система программирования
содержит описания применяемых языков
программирования, программы-трансляторы
с этих языков, а также развитую библиотеку
стандартных подпрограмм. Важно различать
язык программирования и реализацию языка.
Система программирования является
совокупностью средств, обеспечивающих
автоматизацию разработки и отладки программ,
и включает в себя языки программирования,
трансляторы с этих языков, библиотеки
подпрограмм.
Каждая ЭВМ имеет свой собственный
язык программирования – язык машинных
программ и непосредственно может выполнять
программы, записанные только на этом
языке. Будучи языком цифр, машинный язык2 малопригоден для программирования,
т.к. требует от программиста больших затрат
времени. По этой причине большое распространение
получили языки программирования, не совпадающие
с машинными языками. К языкам высокого
уровня относятся языки Паскаль, Си, Бейсик
и др. Особая роль принадлежит языкам Ассемблера.
Языком Ассемблера пользуются, как правило,
системные программисты.
Программа, составленная на
языке программирования, отличном от машинного,
должна быть преобразована в форму, пригодную
для выполнения компьютером. Такое преобразование
называется трансляцией. Программу, преобразующую
исходный модуль в объективную программу
на машинном языке называют транслятором.
Трансляторы, кроме того, осуществляют
синтаксический анализ программы, которая
транслируется. Они могут также отлаживать
и оптимизировать программы, выдавать
документацию на программу и выполнять
ряд других сервисных функций.
В состав системы программирования
обычно входят:
- описание применяемого языка
программирования;
- текстовый редактор, позволяющий
ввести текст программы и записать его в файл на диске;
- программы-трансляторы, переводящие
исходный текст программы в машинный код;
- развитую библиотеку стандартных
подпрограмм;
- дополнительные сервисные программы,
в частности, отладчик, позволяющий ускорить процесс отладки
программы, а также специальные визуальные
компоненты в современных системах, позволяющие
быстро создать удобный интерфейс пользователя.
История возникновения систем
программирования
История программ начинается
с далеких 20-х годов 19 века, когда английский
исследователь Ч. Бэбидж выдвинул идею
о предварительной записи действий вычислительной
машины.
В 20 веке появились электронные
вычислительные машины. Первые программы,
которые составлялись для них, записывались
в машинных кодах. Программист, чтобы написать
правильную программу, должен был в деталях
представлять себе работу ЭВМ. Это сильно
затрудняло общение человека с компьютером,
поэтому программисты стали серьезно
задумываться над кодированием программ.
Они пришли к выводу, что программа должна
составляться на языке, более доступном
человеку, чем язык машинных команд. Возникла
необходимость в создании языков программирования3.
До конца 1950-х гг. ЭВМ основным
элементом конструкции были электронные
лампы (1-е поколение). В этот период развитие
идеологии и техники программирования
шло за счет достижений американских ученых
Дж. фон Неймана, сформулировавшего основные
принципы построения ЭВМ, и Дж. Бэкуса,
под руководством которого в 1954 г. был
создан Fortran (Formula Translation) – первый язык
программирования высокого уровня, используемый
до настоящего времени в разных модификациях.
Достижения в области электроники
и микроэлектроники позволили заменить
элементную базу ЭВМ на более совершенную.
В конце 1950-х гг. громоздкие электронные
лампы заменяют полупроводниками (миниатюрными
транзисторами). Появляются ЭВМ II поколения;
затем примерно через 10 лет – ЭВМ III поколения
на интегральных схемах; еще через 10 лет
– ЭВМ IV поколения на больших интегральных
схемах (БИС). В Японии в 1990-х гг. реализованы
проекты ЭВМ V поколения, в которых использованы
достижения в области искусственного
интеллекта и биоэлектроники.
В этот период по мере накопления
опыта и теоретического осмысления совершенствовались
языки программирования. В 1958-1960 гг. в Европе
был создан ALGOL, который породил целую
серию алголоподобных языков: Algol W, (1967),
Algol 68, Pascal (Н. Вирт, 1970 г.), С (Д. Ритчи и Б.
Керниган, 1972 г.), Ada (под руководством Ж.
Ишбиа, 1979 г.), C++ (1983). В 1961-1962 гг. Дж. Маккарти
в Массачусетском технологическом институте
был создан язык функционального программирования
Lisp, открывший в программировании одно
из альтернативных направлений, предложенных
Дж. фон Нейманом.
На начало 1970-х гг. существовало
более 700 языков высокого уровня и около
300 трансляторов для автоматизации программирования.
Типы систем программирования
Система программирования представляет
собой совокупность средств разработки
программ (языки программирования, текстовые
редакторы, трансляторы, редакторы связей,
библиотеки подпрограмм, утилиты и обслуживающие
программы), обеспечивающих автоматизацию
составления и отладки программ пользователя.
Системы программирования классифицируются
по признакам, приведенным в табл. 1.
Таблица 1
Классы систем программирования
Признак классификации |
Типы |
Набор исходных языков |
Одноязыковые |
Многоязыковые |
Возможности расширения |
Замкнутые |
Открытые |
Трансляция |
Компиляция |
Интерпретация |
Следует отметить, что:
- отличительной особенностью
многоязыковых систем является то, что
отдельные части (секции, модули или сегменты)
программы могут быть подготовлены на
различных языках и объединены во время
или перед выполнением в единый модуль;
- в открытую систему можно ввести
новый входной язык с транслятором, не требуя изменений
в системе;
- в интерпретирующей системе
осуществляется покомандная расшифровка и выполнение инструкций
входного языка (в среде данной системы программирования); в компилирующей
- подготовка результирующего модуля,
который может выполняться на ЭВМ практически
независимо от среды.
По структуре, уровню формализации
входного языка и целевому назначению
различают системы программирования машинно-ориентированные
и машинно-независимые.
Машинно-ориентированные системы
программирования имеют входной язык,
наборы операторов и изобразительные
средства которых существенно зависят
от особенностей ЭВМ (внутреннего языка,
структуры памяти и т.д.). Машинно-ориентированные
системы позволяют использовать все возможности
и особенности машинно-зависимых языков:
- высокое качество создаваемых
программ;
- возможность использования
конкретных аппаратных ресурсов;
- предсказуемость объектного
кода и заказов памяти;
- для составления эффективных
программ необходимо знать систему команд и особенности функционирования
данной ЭВМ;
- трудоемкость процесса составления
программ (особенно на машинных языках и ЯСК), плохо
защищенного от появления ошибок;
- низкая скорость программирования;
- невозможность непосредственного
использования программ, составленных на этих языках,
на ЭВМ других типов
Машинно-независимые системы
программирования – это средство описания
алгоритмов решения задач и информации,
подлежащей обработке. Они удобны в использовании
для широкого круга пользователей и не
требуют от них знания особенностей организации
функционирования ЭВМ. В таких системах
программы, составляемые языках, имеющих
название высокоуровневых языков программирования,
представляют собой последовательности
операторов, структурированные согласно
правилам рассматривания языка (задачи,
сегменты, блоки и т.д.). Операторы языка
описывают действия, которые должна выполнять
система после трансляции программы на
машинный язык. Таким образом, командные
последовательности (процедуры, подпрограммы),
часто используемые в машинных программах,
представлены в высокоуровневых языках
отдельными операторами.
Программист получил возможность
не расписывать в деталях вычислительный процесс на
уровне машинных команд, а сосредоточиться
на основных особенностях алгоритма.
Структура системы программирования
Системы программирования в
современном мире доминируют на рынке
средств разработки. Практически все фирмы-разработчики
компиляторов поставляют свои продукты
в составе соответствующей системы программирования
в комплексе всех прочих технических средств.
Отдельные компиляторы являются редкостью
и, как правило, служат только узкоспециализированным
целям4.
На рис. 4.1 приведена общая структура
современной системы программирования.
Рис. 4.1. Общая структура и этапы
развития систем программирования.
1 Симонович С.В. и др. Информатика:
Базовый курс – СПб.:2001. С.569
2 Машинный язык — система команд
(набор кодов операций) конкретной вычислительной
машины, которая интерпретируется непосредственно
процессором или микропрограммами этой
вычислительной машины.
3 Язык программирования – это
искусственный язык для написания команд,
выполняемых вычислительной машиной.
Язык программирования состоит из фиксированного
словаря и совокупности правил (синтаксиса)
написания команд.
4 Молчанов А.Ю. Системное программное
обеспечение: Учебник для вузов – СПб.:2003.
С. 332