Снова, в который раз, хочется задать вопрос: только и всего? Но все усугубляется еще одним интересным обстоятельством. Сравните нашу строку с рисунком 8. Конечно, это одно и то же. Только на рисунке надо заполнить содержанием пустые геометрические фигуры (прямоугольники и ромб), а в языковой конструкции — заполнить тем же самым содержанием пробелы между словами FOR и STEP, UNTIL и DO. Оператор цикла представляет собой некий формализм. Чем заставлять программистов заучивать правила его образования, можно было сразу поручить все это делать ЭВМ.
Последний из упомянутых трех операторов — условный — имеет вид:
IF C THEN A ELSE B,
что читается (в том числе и ЭВМ) так: если условие C удовлетворяется, переходи к выполнению фрагмента программы A, в противном случае переходи к выполнению фрагмента программы B.
Человек, хорошо усвоивший все сказанное, с полным основанием может считать, что он овладел соответствующим языком программирования. Не сомневаемся, что подобное утверждение встретит яростное возражение со стороны профессионалов-программистов, но тем не менее это так. С помощью выражений и перечисленных операторов можно составить любую, без каких-либо исключений, программу. Это не частное мнение авторов данной книги, а строго доказанный факт, представляющий собой содержание знаменитой теоремы академика В. Глушкова.
Иное дело, что каждый конкретный язык предоставляет программисту некоторые дополнительные удобства. Как правило, имеются средства, позволяющие систематизировать операнды, оформив их в виде своего рода таблиц (их называют массивами). Язык содержит определенное количество функций, например, функцию синус можно вычислить, просто записав SIN(x), где x — значение.
Хватит подробностей. Наша беседа ни в коей мере не претендует на роль руководства по программированию. Позволили языки уменьшить трудоемкость программирования? Несомненно, да. Прежде всего человек получил возможность не корпеть над бесконечными последовательностями нулей и единиц, перейдя вместо этого к более привычным ему строчкам букв и цифр. Во-вторых, отпала необходимость держать в голове или вырисовывать на листе бумаги все ячейки памяти. При реальном программировании приходится иметь дело с десятками и сотнями тысяч таких ячеек. Отпала необходимость выполнять рутинную работу, например, по оформлению циклов.
Вместе с языками, естественно, появились средства перевода с этих языков на язык машины, так называемые трансляторы. Одновременно с основной функцией перевода трансляторы выполняют также функцию строжайшего контроля соблюдения грамматических правил. Это совершенно необходимо. Как, к примеру, машина отличает адрес операнда (идентификатор) от адреса команды (метки)? Способ единственный: если после строчки букв и цифр следует двоеточие (так не во всех языках, а только в языке Алгол), значит, это метка. В противном случае — идентификатор.
Строгий грамматический контроль имеет большое положительное значение, так как с его помощью вылавливаются многие ошибки программиста. Увы! Программист продолжает ошибаться, даже пользуясь самым совершенным алгоритмическим языком. Столь щепетильная придирчивость ЭВМ к грамматическим ошибкам заставляет тратить слишком много времени на возвраты программ и исправление ошибок. ЭВМ вполне заслуживает того, чтобы ей доверили самостоятельно исправлять большую часть грамматических ошибок типа забытых запятых.
Нельзя обойти молчанием и то, что появление алгоритмических языков, да еще различных, добавило в изрядно заполненную всевозможными терминами мусорную корзину нашего человеческого языка еще немалую толику. Никогда не забудем, какое количество сил пришлось затратить, чтобы усвоить наконец, что за премудрость кроется под магическим словом «идентификатор»! И какая взяла злость, когда стало ясно, что идентификатор всего лишь адрес ячейки памяти.
Заканчивая рассуждения о языках, мы лишь повторим то, что уже сказано на страницах этой книги по поводу изучения языков вообще. Сейчас много говорят о всеобщей компьютерной грамотности и в первую очередь связывают ее с изучением алгоритмических языков. При этом процесс обучения даже простейшему языку, скажем Бейсику, возводится в рамки самостоятельной сложной проблемы. Мы продолжаем придерживаться собственной точки зрения. Конечно, можно поступать и так: сначала вызубрить наизусть все руководство к языку, а это книжка объемом не менее полусотни страниц, и только потом начинать им пользоваться. При подобной методике процесс обучения займет не меньше чем полгода. Мы настойчиво советуем использовать неоднократно проверенный и на самих себе, и на нескольких сотнях учащихся метод. Выучить только то, что сказано на предыдущих страницах, и ничтоже сумняшеся садиться за клавиатуру ЭВМ. Все остальное придет само, и вы даже не заметите как.
Помните бессмертные строчки Пушкина?