«Универсальное» означает, что машина способна решать широкий круг задач в зависимости от конкретной необходимости. Понятие «программируемое» как раз подсказывает нам путь к осуществлению такой универсальности – нужно всякий раз подсказывать машине, что именно она будет делать. То есть составить для нее программу действий.
В принципе все мы умеем программировать как свою, так и чужую работу. Понаблюдайте, к примеру, хотя бы за работой шофера, меняющего пробитое колесо. Быть может, сам того не осознавая, он осуществляет свои действия по строго разработанной, последовательной программе. Если вы возьметесь записать действия шофера в качестве инструкции для другого, неопытного водителя, то у вас получится примерно следующее:
1. Поставьте машину на ручной тормоз.
2. Достаньте из багажника домкрат, гаечный ключ.
3. Снимите колпак с пробитого колеса.
4. Ослабьте болты крепления.
5. Поднимите машину на домкрате.
6. Выверните болты, крепящие колесо.
7. Снимите колесо.
8. Достаньте «запаску».
9. Поставьте запасное колесо на место пробитого.
10. Заверните болты.
11. Опустите домкрат.
12. Затяните болты до отказа.
13. Наденьте колпак.
14. Положите домкрат, пробитое колесо и гаечный ключ в багажник.
15. Все, багажник захлопнут, можно ехать дальше.
Собственно говоря, примерно такие же программы составляют и программисты. Только работают по ним не люди, а машины. Чтобы составить такую программу, нужны всего–навсего два качества: во–первых, программист должен cебе хорошо представлять суть описываемого процесса и, во–вторых, быть предельно внимательным, чтобы не пропустить какой–либо частности, не перепутать последовательность операций.
«Всего–то и дел!» – возможно, скажете вы. Действительно, всего–то... Но это не так мало, как может показаться на первый взгляд. Не верите? Вот вам тогда пару вопросов «на засыпку»: как вы думаете, почему болты нужно ослабить до того, как вы поставите машину на домкрат? Почему с ними нужно работать в два приема? Давайте выкрутим их сразу...
Вот тут и скрываются те тонкости, которые знает каждый шофер, но которые не всегда доступны стороннему наблюдателю. Если не ослабить сильно затянутые болты сразу, то потом будет очень нелегко отвернуть их, когда колесо будет поддомкрачено и сможет свободно вращаться. С другой стороны, если вы открутите все болты сразу до конца, есть риск, что при постановке домкрата открученное колесо попросту свалится вам на ноги. И хорошо, если при этом вас еще не придавит сама машина...
Поменять операции местами тоже не удастся – это приведет к тому, что какую–то операцию вам придется делать дважды. К примеру, вы, конечно, можете достать запасное колесо из багажника вместе с домкратом и инструментом, но вам все равно придется временно отставить его в сторону, а потом брать в руки еще раз.
Итак, наглядный пример, возможно, убедил вас, что для составления программы программист должен хорошо представлять себе суть дела. Но это еще не все. Повелители компьютеров имеют ведь дело не с другими людьми, а с машинами. Объяснить же машине что–либо гораздо труднее, чем человеку, хотя бы потому, что ЭВМ гораздо хуже понимают нормальный человеческий язык.
Происходит это по двум причинам. Причина первая: для работы вычислительной машины оказалось удобнее использовать другую систему счисления, чем привычная нам десятичная. В основе работы ЭВМ, как уже говорилось, лежит двоичная система, потому что она очень легко реализуется в электрических цепях: есть импульс или контакт – это соответствует логической «1», нет импульса или контакта – «О».
Причина вторая – из–за несовершенства конструкции ЭВМ их пользователям приходится для общения с машиной использовать и специальные, машинные языки. Поначалу они вообще представляли собой некую «китайскую грамоту»: каждая команда имела свой индекс, который программисту приходилось заучивать наизусть. Ныне положение стало несколько проще: машины понимают и некоторые слова обычного языка. Как вы узнали на школьных уроках информатики, в настоящее время в мире ЭВМ имеют хождение несколько специализированных языков, на которых общаются между собой люди и машины.
Поскольку машинные языки начали приходить к нам с Запада, то в их составе чаще всего используют наиболее ходовые слова и выражения английского языка. Например, слово «PRINT», в переводе с английского означающее «печатать», используется в «Бейсике» как команда, заставляющая машину выдать результат исполненных действий. Команда эта осталась с тех времен, когда в качестве выходного устройства использовался телетайп, который действительно печатал все результаты на бумажной ленте. Ныне же, как вы знаете, для этой цели чаще всего используется телеэкран дисплея.