Программа поиска числа в массиве
Дополнительный материал к главе II (§§ 8 - 21). Системы программирования
Дополнительный материал к главе II (§§ 8 - 21). Работа компилятора
Компьютерный практикум ЦОР. Одна задача обработки массива (Задание 1 - 6)
Компьютерный практикум ЦОР. Одна задача обработки массива (Задание 7 - 13)
«Родным» языком ЭВМ является язык машинных команд (ЯМК). Самые первые ламповые ЭВМ понимали только этот язык. В программах на ЯМК данные обозначаются их адресами в памяти машины, выполняемые операции — числовыми кодами. Программист сам должен заботиться о расположении в памяти ЭВМ команд программы и данных.
Современные программисты так не работают. Для программирования на современных компьютерах применяются системы программирования. В учебнике 7 класса (глава 2) говорилось о том, что программное обеспечение компьютера делится на три части:
• системное ПО;
• прикладное ПО;
• системы программирования.
С первыми двумя видами программного обеспечения вы уже знакомы. Системное ПО — это прежде всего операционные системы, сервисные программы. Прикладное ПО — это многочисленные редакторы, электронные таблицы, информационные системы, математические пакеты, экспертные системы и многое другое, с чем работает абсолютное большинство пользователей.
Системы программирования предназначены для создания компьютерных программ.
Системы программирования (СП) позволяют разрабатывать и исполнять на компьютере программы, написанные на языках более высокого уровня, чем язык машинных команд.
Что понимается под уровнем языка программирования? Понятие уровня языка связано со степенью его удаленности от языка процессора компьютера и приближенности к естественному человеческому языку, к формальному языку предметной области (чаще всего — математики). Чем выше уровень, тем дальше язык от компьютера и ближе к человеку. Этот принцип схематически отражен на рис. 2.17.
Язык машинных команд — это язык самого низкого уровня. Первые языки программирования, отличные от ЯМК, появились на машинах первого поколения, и назывались они автокодами.
Автокод — это машинно-ориентированный язык символического программирования.
Одна команда на автокоде соответствует одной машинной команде. Работая на автокоде, программист освобожден от необходимости распределять память под программу и величины; ему не приходится работать с адресами ячеек. Переменные величины и числовые константы обозначаются так же, как в математике, коды операций — мнемонически буквами.
Начиная с машин третьего поколения, языки такого типа стали называть ассемблерами. В наше время на ассемблере программируют довольно редко. Это, как правило, делают системные программисты.
Аббревиатура ЯПВУ расшифровывается так: языки программирования высокого уровня. Сегодня большинство программистов работают именно на этих языках. Примеры языков высокого уровня: Паскаль, Бейсик, Си (С), Фортран.
Вот пример записи одной и той же команды сложения двух чисел на трех языках разного уровня: ЯМК, автокоде и Паскале:
С:=А+В Паскаль
ADD А, В, С автокод
01 24 28 2С ЯМК
Видно, как с повышением уровня языка повышается «понятность» команды (по-английски слово «ADD» означает «сложить»). Однако чем понятнее язык для человека, тем он непонятнее для процессора компьютера. Процессор понимает только ЯМК. Человеку же легче писать программы на языках более высокого уровня. Как же быть?
Как сделать так, чтобы человек мог писать программы на автокоде или Паскале, а компьютер мог исполнять эти программы? Ответ на поставленный вопрос такой же, как на вопрос «Как мне общаться с японцем, если я не знаю японского языка?». Нужен переводчик! По-английски «переводчик» — «translator».
Программы-переводчики с автокода, Паскаля, Фортрана и других языков на язык машинных команд называются трансляторами.
Таким образом, компьютер сам производит перевод под управлением программы-транслятора. Процесс перевода программы на язык машинных команд называется трансляцией. Прежде чем выполнить, например, программу на Паскале, ее нужно оттранслировать. Трансляцию можно представить как спуск с верхней ступеньки языка на самую первую ступеньку — ЯМК (рис. 2.18).
Транслятор является обязательным элементом любой системы программирования. Первые СП включали в себя только транслятор. Затем к транслятору стали добавляться различные сервисные средства: текстовые редакторы, отладчики, системы обслуживания программных библиотек, средства организации дружественного интерфейса с пользователем.
Наиболее удобными для пользователя стали системы программирования, созданные на персональных компьютерах.
Язык программирования, с которым работает СП, называется ее входным языком. Системы программирования именуются по названию своего входного языка. Например: «система Бейсик», «система Паскаль», «система Фортран». Иногда в название систем включаются префиксы, обозначающие, например, ее фирменное происхождение. Очень популярны системы с приставкой «Турбо»: Турбо Паскаль, Турбо С и др. Это системы программирования, разработанные фирмой Borland.
Реализовать тот или иной язык программирования на компьютере — это значит создать транслятор с этого языка для данного компьютера. Существуют два принципиально различных метода трансляции. Они называются компиляция и интерпретация.
Для объяснения различия можно предложить такую аналогию: представьте себе, что иностранный лектор должен выступить перед аудиторией на незнакомом для слушателей языке. Требуется перевод, который можно организовать двумя способами:
1) полный предварительный перевод: лектор заранее передает текст выступления переводчику, тот записывает перевод, размножает его и раздает слушателям (после этого лектор может уже и не выступать);
2) синхронный перевод: лектор читает доклад, переводчик одновременно с ним, слово за словом, переводит выступление.
Компиляция является аналогом полного предварительного перевода; интерпретация — аналог синхронного перевода. Транслятор, работающий по принципу компиляции, называется компилятором. Транслятор, работающий методом интерпретации, называется интерпретатором.
Следующая страница Дополнительный материал к главе II (§§ 8 - 21). Работа компилятора