Точно так же, представляя числа с помощью электрического тока, допустим, с помощью звонка, мы не интересуемся силой и длительностью этих звонков — нам важно лишь их количество.
Три нажатия кнопки — число «три». Сто нажатий кнопки — число «сто», Тысяча нажатий кнопки — число «тысяча». Не многовато ли? Попробуйте-ка дать вручную тысячу звонков! Ведь если вводить в машину числа таким образом, то миллион потребует неделю времени, а миллиард — много лет. Нельзя ли найти какой-либо более простой способ изображать числа на «языке электричества»?
Число «десять» можно записать в виде палочек, а можно и в виде цифр: либо 1111111111, либо 10. Ясно, что пользоваться цифрами удобнее, особенно если числа очень большие.
Нельзя ли применить нашу цифровую систему для электронных машин? Разумеется, можно. Но еще лучше использовать не десятичную систему, а более простую — двоичную. Систему записи чисел, в которой не десять цифр, а только две — нуль и единица.
Число «один» запишется как 1, число «два» — 10, «три» — 11, «четыре» — 100, «пять» — 101, «шесть» — 110, «семь» -111, «восемь» — 1000, «девять» — 1001, «десять» — 1010, «одиннадцать» — 1011, и т. д. С помощью нуля и единицы можно записать любое число.
Великий немецкий математик Лейбниц даже выбил в честь этого двоичного счисления медаль, по краю которой было написано: «Чтобы вывести из ничтожества все, достаточно единицы».
По сравнению с десятичной эта система записи неэкономна. Чтобы записать восьмерку, в нашей обычной системе нужна одна цифра — 8, а в двоичной — четыре: единица и три нуля. Число 32 для записи в двоичной системе требует шести цифр, 512 — десяти, а 1026 — одиннадцати. В среднем запись в двоичной системе в 3,3 раза длиннее, чем в десятичной.
Зато как упрощаются все арифметические правила! Вам, вероятно, пришлось немало посидеть за таблицей умножения, заучивая ее наизусть (иначе ведь нельзя!) А вот таблица умножения в двоичной системе может быть записана на одной строчке. И выучить ее можно за несколько секунд!
Только и всего! И с помощью таких элементарных действий можно перемножать любые числа. Например, перемножьте сами 1026 на 23 — в двоичной записи это будет выглядеть так:
и убедитесь сами, как легко считать, пользуясь двоичной таблицей умножения.
Впрочем, правила сложения так же просты, как и правила умножения:
(ведь 10 равно числу 2 нашей десятичной системы).
Как видите, вся арифметика сведена к минимуму; тут и знать, по существу, нечего… Но ведь такая простота как раз и нужна для машины-счетчика, в которой работу выполняет электрический ток.
Ток может либо быть, либо не быть. Электрическое реле может быть либо включено, либо выключено. Или — или, да — нет… нуль или единица!
Состояние «без тока» можно считать нулем, а с током — единицей. И тогда легко представить машине любое число, записанное в двоичной системе.
Замечательная двоичная система позволяет машине не только считать, но и совершать логические операции, «рассуждать» и «принимать решения»!
«НУЛЬ И ЕДИНИЦА» — «ПРАВДА ИЛИ ЛОЖЬ»
«Моя фамилия Кондратов». Так это или не так? Правдиво или ложно это высказывание? Очевидно, что правдиво, или, говоря иначе, истинно.
Всякое высказывание, всякая мысль может быть либо истинной, либо ложной. Снова «или — или», «да — нет», «нуль или единица». Нельзя ли вычислять, нельзя ли пользоваться языком чисел и при решении логических задач — задач «на рассуждение»?
Мысль о том, что можно создать своеобразную «алгебру мысли», заменить рассуждения вычислениями, была высказана задолго до создания электронных машин-математиков.
Много веков назад великий греческий ученый и философ Аристотель свел воедино разрозненные обрывки логических учений и создал науку логику, науку об «умении правильно рассуждать». Почти полторы тысячи лет просуществовала неизменной Аристотелева система логики, подобно геометрии, созданной другим гениальным ученым античности — Евклидом.
Но вот у отдельных ученых начинает зарождаться мысль: а нельзя ли усовершенствовать Аристотелеву логику? И даже сделать ее такой же точной, как математика. Особенно горячо пропагандировал эту идею немецкий математик Лейбниц. Он писал: «Споры не при-
дут к концу, если не отказаться от словесных рассуждений в пользу простого исчисления, если не заменить слова неясного и неопределенного смысла определенными символами. После введения их при возникающих противоречиях между двумя философами будет не больше надобности перекрикивать друг друга, чем между двумя бухгалтерами. Не требуется ничего другого, как то, чтобы противники взяли в руки перья, сели за свои конторки и сказали друг другу: давайте-ка вычислять!»
Эта мысль волновала Лейбница давно. «Когда я, будучи еще мальчиком, знакомился с предложениями обычной логики и мне еще была незнакома математика, у меня возникла, не знаю в результате какого мановения, мысль о том, что может быть изобретен анализ понятий, с помощью которого могут быть комбинированы истины и вычисления при помощи чисел», — писал он в конце своей жизни.
Мечты Лейбница начали сбываться лишь в середине прошлого столетия. Ирландский математик Джордж Буль (кстати сказать, отец писательницы Этель Войнич, автора знаменитой книги «Овод») выпускает в свет в Лондоне книгу «Математический анализ логики». Буль доказывает, что правила построения рассуждений можно выразить в математической форме. Доказательство можно вычислять!
В самом деле, каждое высказывание может быть либо истинным, либо ложным. Значит, можно обозначить истинность цифрой 1 и ложность — 0. А затем оказывается, что правила «двоичной арифметики» могут быть применимы и к решению логических задач.
Из простых высказываний можно строить какие угодно сложные, подобно тому как из нуля и единицы можно строить какое угодно большое число. Сумма двух высказываний, истинных или ложных, также должна иметь одно из двух значений — быть либо истинным, либо ложным. Иными словами, иметь значение либо 0, либо 1.
Впрочем, только в этом случае есть небольшое отличие «логической арифметики» от «арифметики двоичной»: 1 + 1 = 1, а не 10. Это понятно, так как в логике нас интересует лишь вопрос о том, истинно или ложно то или иное высказывание.
Зато логическая «таблица умножения» полностью совпадает с «двоичной».
Значение работы Буля, его «алгебры высказываний» часто сравнивают со значением работ гениального русского ученого Н. И. Лобачевского, создателя неевклидовой геометрии. И, как Лобачевского, Буля ждала такая же участь: потребовалось много лет, прежде чем был понят великий революционный смысл трудов этих ученых.
Работы Буля считались бесполезной «математической забавой». Лишь немногие выдающиеся умы того времени понимали, что математические символы в логике так же важны, как буквенные обозначения в алгебре или символические знаки в химии.
Больше того, русский ученый П. С. Эренферст уже в 1910 году сумел предвидеть, какое огромное значение может иметь алгебра Буля для техники. Он указал и конкретный пример ее применения — составление схем проводов телефонной станции.
Но век электроники тогда еще не наступил. И лишь в конце 30-х годов начался настоящий триумф «алгебры Буля». В 1938 году американский математик Клод Шеннон, тогда еще студент Массачусетского технологического института, доказал, что алгебра Буля применима для релейных и переключательных схем — основы автоматики.
Значения истинности и ложности соответствуют состояниям «включено» и «выключено», «единице» и «нулю». Таким образом, появилась возможность поручить электричеству не только вычислять, но и «рассуждать». Вычислительные машины стали «разумными».
«НУЛЬ ПИШЕМ, ОДИН В УМЕ…»
Работой машины обязательно управляет человек… Это казалось таким естественным, таким очевидным, что никому и в голову не приходило другое решение. Человек-оператор управляет машиной, производящей вычисления. Он распоряжается, какие действия арифметики должна она выполнять, устанавливает порядок этих действий. Скажем, велит сначала сложить два миллиарда семьсот миллионов триста восемьдесят тысяч восемьсот двадцать пять с подобным же числом-гигантом; затем прикажет перемножить полученную сумму на самое себя, то есть возвести в квадрат, и т. д.