Но физический труд – только один из видов труда, доступных человеку, и если вы когда-нибудь делали перерыв в учебе, чтобы расслабиться, поиграть, потаращиться в стену, пробежаться или поделать что угодно, только не учить, вы знаете, что умственный труд утомляет не меньше. А до этого момента вы не изобрели ничего такого, на что можно сгрузить эту работу… но вы к такому близки [236].
Потребуется невероятно много работы, чтобы создать копию работающего человеческого мозга (и этот «искусственный интеллект», который мы в силах сотворить, может оказаться неидеальным, а когда его призовут к проектированию отдельных частей машины времени FC3000 тм, предназначенной для аренды, то покажет себя склонным к допущению катастрофических просчетов, к которым неприменима никакая форма страхования), но даже механизм, способный выполнять базовые вычисления, станет великолепным подспорьем во многих делах.
И пусть настоящий ИИ отстоит от вас на поколения, машины, которые вы построите для того, чтобы безошибочно считать, преобразуют общество, особенно когда вы научите эти машины совершать операции в сотни тысяч раз быстрее, чем могут люди. Нам вовсе не нужно сообщать вам об этом, поскольку вы выросли в окружении компьютеров. Вы знаете, насколько они полезны, продуктивны, многосторонни и вообще удивительны.
А теперь мы покажем, как создать их с нуля.
Какую разновидность чисел ваш компьютер будет использовать, и что он будет с ними делать
Вы собираетесь использовать двоичную систему исчисления для компьютера по двум причинам: вы придумали их еще в разделе 3.3, а кроме того, это облегчает процесс, поскольку оставляет в вашем распоряжении всего два возможных значения: 0 и 1 [237]. Теперь осталось только придумать, что ваш компьютер будет делать с этими цифрами. Идеальная ситуация подразумевает, что наша машина может их складывать, отнимать, делить и умножать, но нужно ли на самом деле все это?
Другими словами, какой минимальный набор возможных действий для вычисляющей машины? Так получается, что у компьютера нет технической потребности знать, как умножать, поскольку любое умножение можно представить в виде повторяющегося сложения: 10 умножить на 5 то же самое, что добавить 10 к самому себе 5 раз.
Поэтому умножение заменяем сложением:
x × y = x, прибавленный к самому себе y раз
Вычитание мы убираем тем же самым образом: 10 минус 5 равно 10 плюс –5 (отрицательное число).
Поэтому вычитание тоже заменяем сложением:
x – у = x + (—y)
И да, деление тоже можно заменить сложением.
Если мы делим 10 на 2, то мы пытаемся узнать, сколько раз 2 умещается в 10.
Можно рассчитать это, прибавляя 2 к самому себе (как мы делали при умножении), но в этот раз отслеживая, сколько двоек мы добавили, пока не добрались до нужного значения. 2 + 2 +2 + 2+ 2 = 10, то есть пять двоек, поэтому 10 разделить на 2 будет 5. Подобная техника работает даже с числами, которые нельзя разделить без остатка: необходимо добавлять до тех пор, пока следующее добавление не приведет вас за пределы числа, в котором вы заинтересованы, а то, что при этом останется, как раз и будет остатком [238].
Отсюда:
x / y = y добавляется к себе столько раз, чтобы получился x, а потом мы считаем число добавлений
Таким образом, четыре базо вые математические операции – сложение, вычитание, деление и умножение – можно свести к одной, к сложению. Поэтому, чтобы изготовить компьютер, вам нужно построить машину, способную складывать числа.
Разве это не круто, а?
О чем вообще речь и как можно говорить о сложении, если я даже не знаю, как работают компьютеры?
Прежде чем вы попытаетесь изобрести машину для сложения, давайте вернемся немного назад и вспомним пропозициональное исчисление, которое вы придумали в главе 10.13.1. Там вы определили оператор «не», означающий «противоположное тому, что говорится в утверждении». Так что если у нас есть утверждение p, которое истинно, то «не p» (или ¬p) будет, следовательно, ложным.
Что произойдет, если заменить «истинно» на «1», а ложно на «0»?
Ну, у вас есть таблица истинности для p и ¬p, которая выглядит подобным образом (табл. 19)…
Таблица 19.Таблица истинности для p и ¬p
…и которую можно превратить в список ожидаемых входных и выходных состояний бинарной машины – мы называем их «ячейками», – выглядящий следующим образом (табл. 20).
Читать дальше
Конец ознакомительного отрывка
Купить книгу