Насосы интуиции и другие инструменты мышления. Дэниел Деннетт
Чтение книги онлайн.
Читать онлайн книгу Насосы интуиции и другие инструменты мышления - Дэниел Деннетт страница 39
Блестящую идею создания регистровой машины на заре компьютерной эры предложил логик Хао Ван (1957), между прочим, студент Курта Гёделя и философ. Это изящный инструмент мышления, который вам стоит иметь в своем наборе. Он далеко не так известен, как должен бы[28]. Регистровая машина – это идеализированный, воображаемый компьютер (который вполне можно сконструировать), состоящий из некоторого (конечного) числа регистров и блока обработки данных.
Регистры – это ячейки памяти, каждая из которых имеет уникальный адрес (регистр 1, регистр 2, регистр 3 и так далее) и может содержать одно целое число (0, 1, 2, 3…). Каждый регистр можно представить в виде большого ящика, содержащего произвольное количество бобов, от 0 до …, вне зависимости от размеров ящика. Обычно мы считаем, что в ящике может содержаться любое целое число, поэтому ящики, само собой, должны быть бесконечно большими. Для наших целей подойдут и просто очень большие ящики.
Блок обработки данных имеет всего три простых компетенции, три “инструкции”, которым он может “следовать” пошагово, выполняя одну зараз. Любая последовательность этих инструкций представляет собой программу, и каждой инструкции присвоен номер, чтобы ее идентифицировать. Инструкции таковы:
Конец работы. Машина может остановиться или выключиться.
Инкремент регистра n (прибавить 1 к содержимому регистра n; положить один боб в ящик n) и переход на следующий шаг, шаг m.
Декремент регистра n (отнять 1 от содержимого регистра n; вынуть один боб из ящика n) и переход на следующий шаг, шаг m.
Инструкция “декремент” работает точно так же, как инструкция “инкремент”, но между ними есть одно принципиально важное различие: что делать, если в регистре n содержится число 0? Машина не может отнять 1 от этого содержимого (в регистрах не могут содержаться отрицательные числа; боб из пустого ящика не вынуть), поэтому, оказавшись в безвыходном положении, машина должна сделать “переход”. Иными словами, она должна обратиться к другому фрагменту программы, чтобы получить следующую инструкцию. В связи с этим каждая инструкция “декремент” должна определять, к какому фрагменту программы обращаться, если в текущий момент в регистре содержится 0. Таким образом,
28
Благодарю своего коллегу Джорджа Смита, который познакомил меня с регистровыми машинами, когда в середине 1980-х гг. мы вместе читали вводный курс лекций о компьютерах в Университете Тафтса. Он разглядел огромный педагогический потенциал регистровых машин и нашел способ объяснить принцип их работы, которым я воспользуюсь и здесь, обращаясь к несколько другой аудитории. Мастерская учебных программ, которую мы с Джорджем основали в Университете Тафтса, выросла именно из этого курса лекций.