Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга Башков.doc
Скачиваний:
40
Добавлен:
20.11.2019
Размер:
26.92 Mб
Скачать

6.2. Средства автоматизации программирования

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

Языки программирования. Языки программирования микроЭВМ делятся на два больших класса: машинно-ориентированные и про­цедурно-ориентированные языки (языки высокого уровня). Ма­шинно-ориентированные языки (ассемблеры, макроассемблеры) тес­но связаны с конкретным микропроцессором, его системой команд. Перенос программы, написанной на машинно-ориентированном язы­ке, с одной микроЭВМ на другую, с отличной системой команд, невозможен. Программы, записанные на языке высокого уровня, практически без изменений могут быть перенесены на любую ЭВМ. Использование языков высокого уровня позволяет значительно упростить написание программ, ускорить их отладку. Необходимо, однако, учитывать, что программы на машинно-ориентированных языках, занимают меньший объем памяти и выполняются быстрее, чем эквивалентные программы на языках высокого уровня.

Для применения языков программирования необходимо наличие специальных программ-трансляторов (translator), которые обеспе­чивают перевод исходной программы на некотором языке в машин­ную программу (объектный код). Различают трансляторы двух типов. Трансляторы компилирующего типа (компиляторы, compi­ler), формируют полный текст программы в машинных кодах, после чего она может быть выполнена. Трансляторы интерпретиру­ющего типа (интерпретаторы, interpreter) каждый отдельный опера­тор входной программы преобразуют в машинный код и сразу его выполняют. С точки зрения пользователя интерпретатор просто выполняет заданную программу.

Ассемблер (Assembler) — это, с одной стороны, машинно-ори­ентированный язык и, с другой стороны, транслятор для преобра­зования ассемблерных программ в машинные коды. Программа на языке Ассемблера состоит из последовательности мнемониче­ских инструкций, в которых коды операций, адреса, различные признаки заданы мнемоническими обозначениями. Используются также псевдокоманды, с помощью которых программист определяет необходимые данные, резервирует требуемые поля памяти, дает указания транслирующей программе о размещении отдельных участ­ков программы и/или данных. При трансляции каждой мнемони­ческой инструкции ставится в соответствие одна машинная коман­да—трансляция «один к одному». В макроассемблерах разрешает­ся использование макроинструкций, которые при трансляции заме­няются последовательностью машинных команд. Фактически макроинструкция — это обращение к некоторой подпрограмме, текст которой задается пользователем или выбирается из библиотеки макроопределений. Ассемблеры и макроассемблеры разрабаты­ваются, как правило, фирмами-изготовителями микропроцессоров и продаются ими как отдельный программный продукт. Так, на­пример, фирма Intel поставляет ассемблирующую программу ASM 86 для своих МП 8086/8088, которая может использоваться на всех микроЭВМ, построенных на базе этих МП [1.8, 3.1]. Любая опера­ционная система обязательно имеет в своем составе ассемблирующую программу. Однако считается, что эффективно работать на языке ассемблера может только квалифицированный программист, хоро­шо знакомый с архитектурой микропроцессора и особенностями его функционирования. Как правило, на языке ассемблера пишутся только системные программы или программы, к которым предъявля­ются жесткие требования по времени выполнения или объему зани­маемой памяти.

Обычный «средний» пользователь для своих задач старается найти готовые программные решения и, только если таковых нет или их стоимость слишком велика, составляет собственные програм­мы на одном из языков высокого уровня. Можно указать не менее 10 языков, нашедших достаточно широкое использование для про­граммирования микроЭВМ (табл. 6.2, по материалам [2.8, 2.10]).

Таблица 6.2. Распространенность языков программирования высокого уровня на микроЭВМ

№№

п/п

Язык програм­мирования

%

микроЭВМ

1

Basic

67,6

2

С

44,3

3

Pascal

43,6

4

Fortran

39

5

Cobol

28,3

6

Forth

8,3

7

Ada

3,3

8

PL/1

3,3

9

PL/M

2

10

Logo

1

11

Modula

1

12

Pilot

0,6

Примечание. Сумма больше 100 %, так как большая часть микроЭВМ допускает использова­ние нескольких (3—4) языков программирования.

Но только четыре языка стали буквально стандартными. Это БЭЙСИК, ПАСКАЛЬ, ФОРТРАН и СИ.

Язык БЭЙСИК (Beginners All-purpose Symbolic Instruction Code, BASIC — многоцелевой язык сим­волических команд для начинаю­щих) разработан в начале 60-х го­дов как простейший язык для обу­чения программированию [1.15, 1.22]. Благодаря своей простоте, минимальным требованиям к опера­тивной памяти получил самое ши­рокое распространение как основ- • ной язык общения с микроЭВМ. Хотя существует стандартный вариант БЭЙСИКа, каждая фирма реализует в своих изделиях собственную версию языка, максимально учитывающую особенности аппаратуры конкретной машины.

В связи с этим создалось положение, при котором БЭЙСИК пе­рестал поддерживать одну из основных функций языка высокого уровня — переносимость программ. Однако в силу своей необы­чайной простоты, доходчивости и ясности БЭЙСИК остается наи­более широко используемым в мире языком высокого уровня.

Язык ПАСКАЛЬ (Pascal, назван в честь французского матема­тика и механика, создавшего первый действующий механический арифмометр), разработан в 1971—1973 гг. в техническом универси­тете г. Цюриха (Швейцария) для обучения студентов принципам программирования и алгоритмизации задач [1.33]. Язык позволяет записывать хорошо структурированные, выразительные, ясные для понимания программы. Он обладает рядом возможностей, недо­ступных или излишне усложненных в ранних языках высокого уров­ня: удобные и универсальные операции обработки символьных дан­ных и структур данных, создание пользователем собственных типов данных с заданными свойствами. Отмечаются также удобные сред­ства ввода-вывода языка.

Язык ФОРТРАН (Formula Translation — переводчик формул) является самым старым и, по-видимому, самым распространенным языком высокого уровня для всех типов ЭВМ [1.14, 1.15]. Первая версия языка (ФОРТРАН I) была создана в 1954 г. сотрудниками фирмы IBM. Наибольшую популярность получила версия ФОРТ­РАН IV, разработанная в 1962 г. Существуют две стандартные вер­сии языка: ФОРТРАН-66 и ФОРТРАН-77, принятые в качестве национального стандарта в США. Привлекательность ФОРТРАНА заключается в его простоте, высокой эффективности получаемых машинных программ, незначительно отличающихся от запрограмми­рованных вручную. Считается, что ФОРТРАН ориентирован, в первую очередь, на решение научно-технических задач, связанных с обработкой численных данных, хотя последние версии языка позволяют работать и с символьными переменными.

Язык СИ (С) создан в начале 70-х гг. для операционной системы UNIX, причем сама операционная система также была написана на этом языке [1.3]. Язык СИ часто называют «языком системного программирования», так как на нем наиболее удобно записывать системные программы для мини- и микроЭВМ всех классов. Основ­ное отличие языка СИ от обычных языков высокого уровня заклю­чается в его приближенности к аппаратуре. Причем не к конкретной машине, а к аппаратуре некоторой обобщенной ЭВМ. Язык СИ работает с теми же типами данных, что и сама машина — числами, адресами, символами, имеет ограниченный набор операторов уп­равления — проверки, циклы, вызовы подпрограмм. Тесная связь языка и аппаратуры дает возможность строить трансляторы, созда­ющие весьма эффективные в смысле быстродействия и объема зани­маемой памяти машинные программы. Это позволяет полностью отказаться от языка Ассемблера при разработке программ.

Редакторы и отладчики. Для создания и модификации текстов программ используются специальные системные программы, полу­чившие название редакторы (editors). С точки зрения принципа редактирования — модификации содержимого некоторого тексто­вого файла, различают строчные и экранные редакторы. Строчный редактор поддерживает модификацию только одной, выбранной или указанной в директиве специальным образом строки. Пользователь может полностью или частично удалить эту строку (директива D — delete), заменить в ней отдельный символ или сочетание символов (директива S — substitute) или добавить новые символы. Экранный редактор позволяет модифицировать совокупность строк текста, одновременно отображаемых на экране. Причем для модификации используются клавиши управления курсором и другие специальные клавиши клавиатуры. В любом варианте редактор обеспечивает создание символьного файла и занесение в него любой последова­тельности символов в произвольном формате. Ввод текста можно выполнять вручную с системной консоли (директива I — insert) или из некоторого, ранее подготовленного файла (директива А — append), находящегося на внешнем носителе. Имеется возможность распечатать содержимое файла (директива Т — type) на экране дисплея или печатающем устройстве. Отредактированный файл можно записать на внешний накопитель (директива S — save), сохранив исходный файл в виде запасной копии (backup file) или стерев его. Следует отметить, что усовершенствование редакторов программ привело к созданию мощных прикладных программ для редактиро­вания текстов самого общего вида — текстовых обработчиков.

Любая программа, даже написанная высококвалифицированным программистом, первоначально содержит ошибки. Выявить и устра­нить их помогает специальная программа — отладчик (debugger). Отладчики, как правило, поддерживают разработку программ, на­писанных на языке Ассемблера. Они позволяют в интерактивном режиме покомандно отслеживать выполнение программы в целом или отдельных ее участков, распечатывать на экране дисплея и моди­фицировать при необходимости содержимое отдельных регистров или полей памяти. Разрабатываются и более «интеллектуальные» отладочные комплексы программ, ориентированные на языки вы­сокого уровня. Такие суперотладчики отображают на экране дис­плея текст выполняемого фрагмента программы, его графическое представление (блок-схему), возможные переходы по блокам, зна­чения указываемых пользователем переменных программ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]