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

Конец работы. Машина может остановиться или выключиться.

Инкремент регистра n (прибавить 1 к содержимому регистра n; положить один боб в ящик n) и переход на следующий шаг, шаг m.

Декремент регистра n (отнять 1 от содержимого регистра n; вынуть один боб из ящика n) и переход на следующий шаг, шаг m.

Инструкция “декремент” работает точно так же, как инструкция “инкремент”, но между ними есть одно принципиально важное различие: что делать, если в регистре n содержится число 0? Машина не может отнять 1 от этого содержимого (в регистрах не могут содержаться отрицательные числа; боб из пустого ящика не вынуть), поэтому, оказавшись в безвыходном положении, машина должна сделать “переход”. Иными словами, она должна обратиться к другому фрагменту программы, чтобы получить следующую инструкцию. В связи с этим каждая инструкция “декремент” должна определять, к какому фрагменту программы обращаться, если в текущий момент в регистре содержится 0. Таким образом, полное определение инструкции “декремент” звучит так:

Декремент регистра n (отнять 1 от содержимого регистра n), если это возможно, и переход на шаг m ИЛИ, если декрементировать регистр n невозможно, переход на шаг p.

Теперь снабдим все возможности регистровой машины короткими названиями: Кон, Инк и Деп (декремент-или-переход).

На первый взгляд может показаться, что такая простая машина не способна ни на что особенно интересное, ведь она умеет лишь класть боб в ящик или вынимать боб из ящика (если там есть боб – и переходить к другой инструкции, если его нет). Но на самом деле она может производить такие же вычисления, которые умеет производить любой другой компьютер.

Начнем с простого сложения. Допустим, вы хотите, чтобы регистровая машина прибавила содержимое одного регистра (скажем, регистра 1) к содержимому другого регистра (регистра 2). Таким образом, если в регистре 1 содержится [3], а в регистре 2 содержится [4], мы хотим, чтобы в итоге программа сделала так, чтобы содержимое регистра 2 стало равняться [7], потому что 3 + 4 = 7. Вот программа, которая справится с этой задачей, написанная на простом языке РПА (регистровое программирование на ассемблере):

программа 1: ADD [1,2]

Первые две инструкции образуют простой цикл, в рамках которого регистр 1 декрементируется, а регистр 2 инкрементируется снова и снова, пока регистрне опустеет. Это “заметит” блок обработки данных, который в результате сделает переход на шаг 3, останавливающий программу. Блок обработки данных не может сказать, каково содержимое регистра, если только это содержимое не 0. Если снова представить ящики с бобами, можно сказать, что блок обработки данных слеп и не видит, что находится в регистре, пока он не опустеет, потому что отсутствие содержимого он может определить на ощупь. Несмотря на то что, в принципе, он не может сказать, каково содержимое регистров, если задать ему программу 1, он всегда будет прибавлять содержимое регистра 1 (какое бы число ни содержалось в регистре 1) к содержимому регистра 2 (какое бы число ни содержалось в регистре 2), а затем останавливаться. (Вы понимаете, почему так должно происходить всегда? Разберите несколько примеров, чтобы удостовериться.) Вот любопытный способ на это взглянуть: регистровая машина мастерски умеет складывать числа, не зная, какие именно числа она складывает (а также что такое числа и что такое сложение)!

упражнение 1

а. Сколько шагов потребуется регистровой машине, чтобы сложить+и получить 7, выполняя программу(считая Кон отдельным шагом)?

б. Сколько шагов потребуется машине, чтобы сложить+ 2?

(Какой из этого можно сделать вывод?)[29]

Этот процесс можно изобразить наглядно, построив так называемый граф потока. Каждый кружок обозначает инструкцию. Число в кружке обозначает адрес регистра, с которым необходимо произвести манипуляции (а не содержимое регистра), “+” обозначает инструкцию Инк, а “–” – инструкцию Деп. Программа всегда начинается с , альфы, и завершается, когда достигает , омеги. Стрелки показывают переход к следующей инструкции. Обратите внимание, что каждая инструкция Деп имеет две исходящих стрелки, одну для направления, в котором двигаться, если декрементировать содержимое регистра возможно, а другую – если невозможно, потому что содержимое регистра 0 (переход на ноль).

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

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

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

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

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

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

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

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

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

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

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

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