Читаем Насосы интуиции и другие инструменты мышления полностью

Теперь давайте напишем программу, которая просто перемещает содержимое одного регистра в другой регистр:

программа 2: MOVE [4,5]

Вот граф потока:

Обратите внимание, что первый цикл этой программы очищает регистр 5, так что, каким бы ни было его содержимое в самом начале, оно никак не повлияет на то, что окажется в регистре 5 ко второму циклу (циклу сложения, в ходе которого содержимое регистра 4 прибавляется к 0 в регистре 5). Этот начальный шаг называется обнулением регистра и представляет собой весьма употребительную стандартную операцию. Вы постоянно будете использовать ее, чтобы готовить регистры к использованию.

Третья простая программа копирует содержимое одного регистра в другой регистр, оставляя изначальное содержимое нетронутым. Изучите граф потока, а затем саму программу:

программа 3: COPY [1,3]

Это явно не самый очевидный способ копирования, поскольку мы осуществляем операцию, сначала перемещая содержимое регистра 1 в регистр 3, затем делая копию в регистре 4 и, наконец, перемещая эту копию обратно в регистр 1. Но это работает. Всегда. Каким бы ни было содержимое регистров 1, 3 и 4 в самом начале, когда программа остановится, содержимое регистра 1 останется на месте, а копия этого содержимого – в регистре 3.

Если принцип работы этой программы вам не очевиден, возьмите несколько чашек, чтобы сделать регистры (подпишите номер каждой чашки, ее адрес), и горстку монеток (или бобов) и “вручную смоделируйте” весь процесс. Положите по несколько монеток в каждый из регистров и обратите внимание, сколько именно монеток вы положили в регистр 1 и регистр 3. Если вы будете в точности следовать программе, когда вы закончите, количество монеток в регистре 1 будет таким же, каким оно было изначально, и такое же количество монеток будет лежать в регистре 3. Очень важно, чтобы вы усвоили базовый принцип работы регистровой машины и вам не пришлось больше ломать над ним голову, поскольку мы собираемся использовать этот новый навык в дальнейшем. Выделите несколько минут и станьте регистровой машиной (как актер может стать Гамлетом).

Я замечаю, что некоторые мои студенты совершают простую ошибку: им кажется, что при декрементировании регистра монетку, которую они только вынули из регистра n, нужно положить в какой-нибудь другой регистр. Нет. Декрементированные монетки просто возвращаются в общую кучу, в ваш “бесконечный” запас монеток для использования в этих простых операциях сложения и вычитания.

Научившись перемещать, копировать и обнулять содержимое регистров, мы можем улучшить нашу программу сложения. Программа 1 помещает верный ответ на задачу на сложение в регистр 2, но в процессе уничтожает изначальное содержимое регистров 1 и 2. Возможно, нам нужна более сложная программа сложения, которая сохраняет эти значения для последующего использования, помещая ответ в другой регистр. Попробуем прибавить содержимое регистра 1 к содержимому регистра 2, поместить ответ в регистр 3 и оставить содержимое регистров 1 и 2 нетронутым.

Вот граф потока, показывающий, как этого добиться:

Проанализируем циклы, чтобы понять, что делает каждый из них. Сначала мы обнуляем регистр ответа, регистр 3, а затем обнуляем дополнительный регистр (регистр 4), который станет временным хранилищем, или буфером. После этого мы копируем содержимое регистра 1 в регистры 3 и 4 и перемещаем это содержимое обратно из буфера в регистр 1, восстанавливая его (и в процессе обнуляя регистр 4, чтобы снова использовать его в качестве буфера). Затем мы повторяем эту операцию с регистром 2, фактически прибавляя содержимое регистра 2 к содержимому, которое мы уже переместили в регистр 3. Когда программа останавливается, буфер 4 снова оказывается пуст, ответ находится в регистре 3, а два числа, которые мы складывали, – на своих изначальных местах, в регистрах 1 и 2.

Вот написанная на РПА 13-шаговая программа, которая переводит всю информацию с графа потока на язык, понятный блоку обработки данных:

программа 4: ADD [1,2,3] без разрушения

Я не буду советовать вам вручную смоделировать эту программу, используя чашки и монетки. Жизнь коротка, поэтому, когда вы усвоите все базовые процессы, вам можно будет пользоваться вспомогательным устройством RodRego, регистровой машиной, которую можно скачать по ссылке http://sites.tufts.edu/rodrego/.

Перейти на страницу:

Похожие книги

Кафедра и трон. Переписка императора Александра I и профессора Г. Ф. Паррота
Кафедра и трон. Переписка императора Александра I и профессора Г. Ф. Паррота

Профессор физики Дерптского университета Георг Фридрих Паррот (1767–1852) вошел в историю не только как ученый, но и как собеседник и друг императора Александра I. Их переписка – редкий пример доверительной дружбы между самодержавным правителем и его подданным, искренне заинтересованным в прогрессивных изменениях в стране. Александр I в ответ на безграничную преданность доверял Парроту важные государственные тайны – например, делился своим намерением даровать России конституцию или обсуждал участь обвиненного в измене Сперанского. Книга историка А. Андреева впервые вводит в научный оборот сохранившиеся тексты свыше 200 писем, переведенных на русский язык, с подробными комментариями и аннотированными указателями. Публикация писем предваряется большим историческим исследованием, посвященным отношениям Александра I и Паррота, а также полной загадок судьбе их переписки, которая позволяет по-новому взглянуть на историю России начала XIX века. Андрей Андреев – доктор исторических наук, профессор кафедры истории России XIX века – начала XX века исторического факультета МГУ имени М. В. Ломоносова.

Андрей Юрьевич Андреев

Публицистика / Зарубежная образовательная литература / Образование и наука
Опасная идея Дарвина: Эволюция и смысл жизни
Опасная идея Дарвина: Эволюция и смысл жизни

Теория эволюции посредством естественного отбора знакома нам со школьной скамьи и, казалось бы, может быть интересна лишь тем, кто увлекается или профессионально занимается биологией. Но, помимо очевидных успехов в объяснении разнообразия живых организмов, у этой теории есть и иные, менее очевидные, но не менее важные следствия. Один из самых известных современных философов, профессор Университета Тафтс (США) Дэниел Деннет показывает, как теория Дарвина меняет наши представления об устройстве мира и о самих себе. Принцип эволюции посредством естественного отбора позволяет объяснить все существующее, не прибегая к высшим целям и мистическим силам. Он демонстрирует рождение порядка из хаоса, смысла из бессмысленности и морали из животных инстинктов. Принцип эволюции – это новый способ мышления, позволяющий понять, как самые возвышенные феномены культуры возникли и развились исключительно в силу биологических способностей. «Опасная» идея Дарвина разрушает представление о человеческой исключительности, но взамен дает людям возможность по-настоящему познать самих себя. Книгу перевела М. Семиколенных, кандидат культурологии, научный сотрудник РХГА.

Дэниел К. Деннетт

Зарубежная образовательная литература, зарубежная прикладная, научно-популярная литература / Зарубежная образовательная литература / Образование и наука
История Соединенных Штатов Америки
История Соединенных Штатов Америки

Андре Моруа, классик французской литературы XX века, автор знаменитых романизированных биографий Дюма, Бальзака, Виктора Гюго, Шелли и Байрона, считается подлинным мастером психологической прозы. Однако значительную часть наследия писателя составляют исторические сочинения.История возникновения Соединенных Штатов Америки представляла для писателя особый интерес, ведь она во многом уникальна. Могущественная держава с неоднозначной репутацией сформировалась на совершенно новой территории, коренные жители которой едва ли могли противостоять новым поселенцам. В борьбе колонистов из разных европейских стран возникло государство нового типа. Андре Моруа рассказывает о многих «развилках» на этом пути, о деятельности отцов-основателей, о важных связях с метрополиями Старого Света.Впервые на русском языке!

Андре Моруа , Андрэ Моруа

История / Зарубежная образовательная литература / Образование и наука