Й.Янсен Курс цифровой электроники. Том 4. Микрокомпьютеры (1987) (1092084), страница 51
Текст из файла (страница 51)
Хотя он известен далеко не каждому, однако с помощью микроЭВМ можно легко выполнить преобразование алфавитно-цифровых символов в код Морзе, и наоборот. Проблемы, возникающие при использовании кода Морзе, являются характерными для процесса связи с ЭВМ на машинном языке.
ЭВМ имеет свой собственный язык, закодированный в виде групп битов, состоящих из нулей и единиц, и не воспринимает никаких буквенно-цифровых символов, пока этн символы не будут переведены на язык, понятный ОС ЭВМ. То же самое имеет место и для логических понятий, которыми пользуется ЭВМ. Они являются чрезвычайно простыми, а это означает, что при вводе команд в ЭВМ человек должен описывать их очень подробно. Мы привыкли к более сложным понятиям и нам часто мешает то обстоятельство, что ЭВМ не может «понять» наше задание, выраженное с помощью простых команд.
В первые годы развития ЭВМ общение с ними было исключительной прерогативой отдельных специалистов, которые создавали машинный язык. Этот «языковой барьер» стоял годами на пути развития программирования для ЭВМ, пока не появились компилирующие программы, которые позволили общаться с ОС иа человеческом языке, вернее, вначале на его научном диалекте, а затем и на языке с тем уровнем сложности, который характерен для человеческого общества в целом.
Теперь не требуется писать сотни отдельных команд, только для того чтобы напечатать какое-то одно слово, — для этой цели используется всего лишь одна команда РК1ХТ Х. Для решения научно-технических задач используются такие языки программирования, как Алгол-60, Алгол-68 н Фортран. Для административных и бухгалтерских расчетов используется язык Кобол. Эти языки 315 в!в Глааа а программирования применяются в соответствующих областях знания и в настоящее время. В последние годы разработан язык программирования Бейсик, который отличается простотой и находит широкое применение в небольших системах типа персональных компьютеров, снабженных МП, гибкими дисками, принтером или видеодисплеем.
Название Бейсик является сокращением от слов Веп!ппегз А!1 Ригрозе БушЬо1!с 1пз!гпсИоп Собе (мноцелевой язык символических команд для начинающих); этот язык программирования создан группой авторов из Дартмутского колледжа (США) для одной из систем, работавшей в режиме с разделением во времени.
Новым языком программирования является также Паскаль, названный в честь французского философа н ученого Паскаля, который жил в ХЧП в. В повседневной жизни мы имеем дело со сложными командами и при этом обычно не осознаем, что эти команды являются в действительности комбинациями простых команд.
Поясним эту мысль примером, Мастер-плотник, узнав, что запас гвоздей кончился, дает своему ученику следующее указание: «принеси гвозди». Это указание является сложной командой, так как в нем не уточняется, какого типа нужны гвозди, сколько их требуется и где их можно взять. Однако ученик знает, что речь идет о гвоздях определенного типа, что нужно взять пакет гвоздей и что гвозди находятся на складе.
Для расчетов на складе используется накладная. В этом примере ученик играет роль предварительно запрограммированного объекта. У него имеется подпрограмма, в которой подробно описаны все специальные операции. Вполне вероятно, что другой исполнитель этого указания, скажем снабженец предприятия, также выберет эту же подпрограмму. Можно также представить себе, что мастер дает указание «купить гвозди» в отдел снабжения. При этом, естественно, будет выбран другой путь решения задачи. После получения та. кого указания снабженец начнет с изучения рынка и выяснит, какая фирма продает гвозди высокого качества по приемлемой цене.
Скорее всего он закажет партию пакетов этих гвоздей, которая будет поставлена в один прием. При этом ученик плотника не будет принимать никакого участия в операции пересылки пакетов. Аналогичные ситуации наблюдаются при переходе к языкам программирования высокого уровня. Если в макрокоманде, написанной на таком языке, речь идет о поиске наиболее удобного перевода (преобразования), соответствующего деятельности снабженца в рассмотренном выше примере, то мы прибегаем к компиляции (трансляцин).
Если же операции необходимо выполнить в том порядке, который определяется набором стан- Языки крогреммироеакик высокого рроеке — Бзагик з1з дартных подпрограмм (один пакет гвоздей взять в определенном складе), то мы говорим о программе трансляции в виде интерпретатора. Снабженец, имея на входе макрокоманду «купить гвозди», не разделенную на специальные операции, ищет наиболее выгодного поставщика. Его миссия заканчивается после того, как он найдет требуемого поставщика и разместит заказ на гвозди.
По истечении определенного срока гвозди будут до. ставлены на склад предприятия. В процессе компилирования происходит примерно то же самое. Компилятор <переводит» (транслирует) программу, написанную на языке высокого уровня, в программу, написанную на машинном языке, и на этом свою работу заканчивает. Оттранслированную программу можно передать в дисковое ЗУ и, более того, поместить в ту часть ЗУ, которую первоначально занимала компилирующая программа. В случае программы для генерации кода Морзе речь идет об интерпретаторе. В данном случае для всех генерируемых сообщений соответствие между кодами Морзе и буквенно-цифро* вымн символами зафиксировано в библиотеке кодов Морзе.
В упоминавшейся выше программе используется это соответствие и она обеспечивает генерацию знаков с требуемой длительностью. Элементы библиотеки, оформленные в виде коротких подпрограмм, всегда находятся в ЭВМ. Та же ситуация наблюдается и в примере с учеником плотника при выполнении подпрограммы «принести гвозди», так как она также может понадобиться в любой момент времени. Интерпретатор языка высокого уровня тоже должен постоянно находиться в распоря. женин системы в ходе выполнения программы.
И наоборот, как уже отмечалось выше, при компилировании программа-транслятор во время выполнения основной программы нетребуется. Транслятор для преобразования языка высокого уровнгр в машинный язык может иметь структуру, аналогичную структуре генератора кода Морзе. По аналогии с кодом Морзе можно хранить в библиотеке подпрограммы для описания команд на языке высокого уровня, т. е. операторы. Выполняя в последовательном порядке различные подпрограммы, указанные в основной программе, можно реализовать самые сложные способы обработки данных; при этом описание соответствующих команд может быть достаточно простым.
Так происходит при вводе команды РК1ХТ В, т. е. оператора, который может понять и запомнить любой человек и который выполняет операцию печати,. а именно печати данной величины В принтером, для чего на машинном языке требуется несколько сотен команд. Подпрограмма РК1МТ находится в библиотеке подпрограмм;. при считывании оператора РЙ1ИТ в пользовательской программе происходит переход, по которому производится обращение. шв Глава в к подпрограмме Рй!ХТ в этой библиотеке. Затем выполняется эта подпрограмма, после чего осуществляется обратный переход (возврат) в основную программу или в другую подпрограмму.
При использовании интерпретатора команды )МР и СА1Л. обрабатываются так же, как подпрограммы. Поэтому при выполнении операторы типа 1Р А= В ТНЕУ бОТО 100 (если А=В, то переход к строке 100) сначала проверяется равенство А=В, а затем в зависимости от результата этой проверки передается (или не передается) управление программе по адресу (номеру строки) 100. Переход производится в том случае, когда эта проверка получает утвердительный ответ Да (истина). В случае языков высокого уровня обычно подразумевается десятичная адресация и переменные вводятся в буквенно-цифровой форме, а не в восьмеричном или шестнадцатеричном коде, как в машинном языке.
Во всех языках программирования такие арифметические операции, как сложение, вычитание и деление, представляются с помощью стандартных символов +,— .и /. Операция умножения является исключением из правила и обозначается символом в (звездочкой), а операция возведения в степень — стрелкой г. Более сложные действия описываются в виде буквенно-цифровых символов, например 31г)(Х), СОВ(Х), ТАМ(Х) и т. д. Первоначально каждая программа вводится в ЭВМ вручную, причем в случае языков высокого уровня для этой цели используется обычно терминал с буквенно-цифровой клавиатурой.
Во время ввода программы в ЭВМ все символы высвечиваются на экране видеодисплея, что позволяет контролировать правильность ввода информации (текста) в ЭВМ. При вводе строки текста, написанной на языке Бейсик, мы начинаем с печати десятичного номера строки, после которого следует одна или несколько команд (операторов). Ввод строки заканчивается нажатием клавиши КЕТ()КН (Возврат), что предписывает системе авозврат в начало новой строки». Если эта операция выполнена и система (терминал) готова к приему новой информации, в начале строки появляется знак так называемой подсказки, например ). После его появления можно начинать заполнение новой строки.