Входные языки программирования
В § 2 приведен пример программы. Если читатель уделил ему достаточно внимания, то он, конечно, заметил, что задача, для которой составлена программа, очень проста, а работа по составлению программы довольно кропотлива и утомительна. Какова же трудность программирования в тех случаях, когда приходится составлять тысячи команд?!
Поэтому вполне естественно появилась идея некоторую и, возможно, большую часть работы по программированию делать с помощью самой ЭВМ. После довольно длительного периода проб и экспериментов сложился определенный метод программирования, основанный на изложенной идее. Были разработаны различные языки, на которых гораздо легче составлять алгоритмы, чем непосредственно программы. В практике в данное время получили широкое распространение такие входные языки программирования, как фортран, алгол, кобол и некоторые так называемые автокоды. Это формальные языки, имеющие очень простую и четкую грамматику. Автокодами называют формальные языки, очень близкие к языкам машины, но значительно более простые для применения человеком.
Обычно в автокодах всевозможные величины обозначаются не их адресами, как это делается в программах, а буквами или недлинными сочетаниями букв. Операции обозначаются не сочетаниями цифр, а либо обычными знаками действий, либо краткими словами, которые лзгко можно запомнить. Мы знаем, что адреса бывают нужны не только для указания данных, но и для указания команд (например, при переходах — условном или безусловном). Для этой цели в автокоде применяют так называемые метки (метками являются целые числа).
Программа на автокоде по-прежнему состоит из приказов. Но метки ставятся не перед каждым приказом, а только перед теми приказами, к которым производится переход. Программирование обычно производится на бланках, состоящих из нескольких вертикальных граф.
Приведем пример программы решения уже известного нам квадратного уравнения, составленной на одном из столь простых автокодов, что читатель ее поймет даже без пояснений (а мы все же сделаем некоторые пояснения). Такая программа приведена в табл. 5.
В автокоде, пример которого мы рассмотрели, каждый приказ занимает одну или несколько (ввод и печать) строк. Приказ состоит из метки и команды или только из команды (если метка не нужна). Знак действия «на» означает переход (условный, если за «на» следуют две метки, и безусловный, если — одна). Остальное в примере понятно. Автокод такого типа, как приведенный в примере, каждый приказ которого соответствует одному определенному приказу программы, называется автокодом 1:1. Программировать на таком автокоде легче, чем на языке программ, но все же трудно.
Более сложные автокоды позволяют записывать в виде формул целые цепочки операций. Приведем пример той же программы и на более сложном автокоде (табл. 6). Подобные автокоды называют автокодами 1: несколько (1 приказ автокода — несколько приказов программы). Программы для них тоже пишут на бланках, но уже состоящих только из двух граф (для метки и для команды).
Чем проще запись алгоритма на таком автокоде, тем более сложной должна быть заранее составленная программа, по которой алгоритм, заданный на автокоде, будет преобразован в программе для решения задачи на ЭВМ. Специально созданные программы, предназначенные для выполнения перевода с языка программирования на язык машины, называются трансляторами.
Если мы хотим программировать на автокоде, нам необходим соответствующий транслятор.
Составив программу на автокоде, переносим ее на перфокарты с помощью специальных технических устройств, имеющих клавиатуру, затем вводим в центральный процессор программу-транслятор, а колоду перфокарт устанавливаем в устройстве ввода. Далее" все идет автоматически.
Было бы очень хорошо, если бы программисты не совершали всевозможных ошибок. Эти ошибки приходится «вылавливать», производя очень тщательную проверку программы.
Чаще всего допускаемые программистом ошибки получаются в результате описок. При этом появляются нарушения грамматических правил автокода. Такие нарушения может выявлять сама ЭВМ. Для этой цели в состав транслятора включают подпрограмму синтаксического контроля. Вместо проверки программы, составленной на автокоде, путем ее прочитывания и сопоставления ее смысла с нашим замыслом, делают синтаксический контроль, да еще с помощью самой ЭВМ.
Автокоды относятся к так называемым машинно-ориентированным входным языкам программирования.
Указанные ранее языки фортран, алгол и кобол принадлежат к группе так называемых машинно-независимых языков.
Эти языки еще более удобны для программиста, чем автокоды, еще более экономят человеческий труд. Трансляторы с этих языков значительно сложнее, чем с автокодов. Но, в общих чертах, программирование на машинно-независимых входных языках сходно с программированием на автокоде.
Мы не будем даже пытаться познакомить читателя с этими языками, так как не располагаем для этого возможностями. Желающих изучить машинно-независимые языки программирования и конкретные автокоды отсылаем к специальной литературе[22].