«Всего–то и дел!» – возможно, скажете вы. Действительно, всего–то... Но это не так мало, как может показаться на первый взгляд. Не верите? Вот вам тогда пару вопросов «на засыпку»: как вы думаете, почему болты нужно ослабить до того, как вы поставите машину на домкрат? Почему с ними нужно работать в два приема? Давайте выкрутим их сразу...
Вот тут и скрываются те тонкости, которые знает каждый шофер, но которые не всегда доступны стороннему наблюдателю. Если не ослабить сильно затянутые болты сразу, то потом будет очень нелегко отвернуть их, когда колесо будет поддомкрачено и сможет свободно вращаться. С другой стороны, если вы открутите все болты сразу до конца, есть риск, что при постановке домкрата открученное колесо попросту свалится вам на ноги. И хорошо, если при этом вас еще не придавит сама машина...
Поменять операции местами тоже не удастся – это приведет к тому, что какую–то операцию вам придется делать дважды. К примеру, вы, конечно, можете достать запасное колесо из багажника вместе с домкратом и инструментом, но вам все равно придется временно отставить его в сторону, а потом брать в руки еще раз.
Итак, наглядный пример, возможно, убедил вас, что для составления программы программист должен хорошо представлять себе суть дела. Но это еще не все. Повелители компьютеров имеют ведь дело не с другими людьми, а с машинами. Объяснить же машине что–либо гораздо труднее, чем человеку, хотя бы потому, что ЭВМ гораздо хуже понимают нормальный человеческий язык.
Происходит это по двум причинам. Причина первая: для работы вычислительной машины оказалось удобнее использовать другую систему счисления, чем привычная нам десятичная. В основе работы ЭВМ, как уже говорилось, лежит двоичная система, потому что она очень легко реализуется в электрических цепях: есть импульс или контакт – это соответствует логической «1», нет импульса или контакта – «О».
Причина вторая – из–за несовершенства конструкции ЭВМ их пользователям приходится для общения с машиной использовать и специальные, машинные языки. Поначалу они вообще представляли собой некую «китайскую грамоту»: каждая команда имела свой индекс, который программисту приходилось заучивать наизусть. Ныне положение стало несколько проще: машины понимают и некоторые слова обычного языка. Как вы узнали на школьных уроках информатики, в настоящее время в мире ЭВМ имеют хождение несколько специализированных языков, на которых общаются между собой люди и машины.
Поскольку машинные языки начали приходить к нам с Запада, то в их составе чаще всего используют наиболее ходовые слова и выражения английского языка. Например, слово «PRINT», в переводе с английского означающее «печатать», используется в «Бейсике» как команда, заставляющая машину выдать результат исполненных действий. Команда эта осталась с тех времен, когда в качестве выходного устройства использовался телетайп, который действительно печатал все результаты на бумажной ленте. Ныне же, как вы знаете, для этой цели чаще всего используется телеэкран дисплея.
Кроме того, в программах часто используется слово «INPUT» – «вход»; оно обычно используется для обозначения операции по приему информации. «LET» – «позволять», «пускать» – дает разрешение на выполнение заранее запрограммированных действий. «RUN» – «бежать», «двигаться» – обозначает начало выполнения вычислений после введения в какие–то формулы численных значений. И наконец, слово «END» – «конец», понятно, и означает конец действий по данной программе.
В ходу у программистов и наиболее распространенные математические символы. Например, знак «+» обозначает, как обычно, операцию сложения, «–» – вычитания, наклонная черточка « /» – деления... Ну а знак умножения, чтобы не путать его с буквой «х», решили обозначить звездочкой «*».
В итоге, если вы, например, дадите машине такую команду: PRINT «4+1–5», то она мгновенно отреагирует, высветив на экране «О».
Арифметическая задача, конечно, может быть и значительно сложнее: PRINT «21*(287,35+89)–44,9». ЭВМ все равно ответит практически мгновенно: 7858,45.
Такие вычисления для нее, как говорится, семечки. Но вот если вы, к примеру, отпечатаете на клавиатуре дисплея «HELLO», что в переводе, как известно, означает «привет», то в ответ получите «SINTAX ERROR» – синтаксическая ошибка. Машина считает, что вы попросту ошиблись, ваша вежливость для нее бессмысленна.
Ныне общение с компьютером упрощено до минимума. В персональных компьютерах, как правило, стоят программы, для управления которыми достаточно навести указатель «мышки» – выносного пульта управления – на тот или иной графический символ и нажать кнопку (или, как говорят бывалые пользователи, «кликнуть мышкой»). Тут же запускается соответствующая стандартная подпрограмма, и ваше желание выполняется: открывается тот или иной файл, машина переходит от одной программы работы к другой и т. д.
Наиболее совершенные ЭВМ ныне не только исправляют грамматические ошибки, но и могут откликаться на ваш голос, автоматически включаются в заданное время и производят необходимые операции автоматически... Работают они тихо, безотказно и для своего функционирования требуют энергии не больше, чем электрическая лампочка.
Но так было далеко не всегда.
«...Никогда в жизни мне не приходилось спать и завтракать так, как в течение тех месяцев, когда мы по двадцать четыре часа в сутки просиживали у машины, сменяя друг друга. «ЭНИАК», на котором мы работали, оказался довольно дёликатной и, я бы сказала, капризной машиной. То и дело выходили из строя какие–нибудь лампы или контуры, и нам приходилось сидеть сложа руки. Однажды гроза вывела из строя механизм. Все мы сидели по своим комнатам, прилипнув к телефонам и ожидая, пока ремонтная группа не разрешит нам продолжать работу. Несколько раз нам звонили и сообщали, что через десять минут все будет в порядке. Но когда мы бросались к своим местам, выяснялось, что разрешение было преждевременным».
Так описывала «капризы» первой большой ЭВМ математик Герда Эванс. Машина больше простаивала, чем работала. Каждые две минуты выходила из строя какая–нибудь из ее 18 тыс. ламп или другая деталь.
Справедливости ради надо отметить, что и наши отечественные компьютеры на электронных лампах отличались не лучшим характером. Скажем, первая в нашей стране ЭВМ, несмотря на название «МЭСМ» – малая электронная вычислительная машина, – была весьма громоздкой, помещалась в целом машинном зале. Быстродействие же ее оставляло желать лучшего – машина могла выполнять лишь 50 операций в секунду, запоминать 31 число и 63 команды.
Тут впору с грустью вспомнить о механических вычислительных устройствах. Так, скажем, автоматический арифмометр, созданный в 1883 году великим русским математиком П.Л. Чебышевым, развивал скорость до нескольких операций в секунду, имел клавиши для выбора операций и мог работать сутками напролет – его работоспособность зависела просто от выносливости человека, ведущего вычисления.
Однако назад хода уже не было. В те редкие минуты, когда электронные вычислительные машины первого поколения все–таки работали, они с лихвой наверстывали упущенное. Большая электронная счетная машина «БЭСМ», к примеру, делала уже 10 тыс. операций в секунду и имела оперативную память на 2048 чисел. Так что механическому арифмометру за ней было уже не угнаться.
Однако ахиллесовой пятой ЭВМ оставалась все–таки низкая надежность. Дело порой доходило до курьезов. Один из специалистов, например, всерьез утверждал, что его машина – будучи особой женского рода – определенно предпочитает перфокарты розового цвета голубым. Другой называл свою машину компьютером, т. е. субъектом мужского рода, и на основании этого полагал, что его детище явно неравнодушно к присутствию в машинном зале некой Мэри. Стоило ей появиться в дверях, как компьютер тотчас начинал «волноваться», допуская сбои в работе.
«Вася, не мучь машину – она не выспалась, – такую фразу мне довелось однажды услышать в вычислительном центре родного института. – После обеда займемся наладкой – все будет как часы...»