Читаем Код. Тайный язык информатики полностью

Даже в моей программе для умножения есть ошибка. Если вы запустите ее дважды, то при втором выполнении машина умножит A7h на 256 и прибавит произведение к уже полученному результату. Это связано с тем, что после первого выполнения программы в ячейке 1003h будет находиться значение 0. Когда вы запустите программу во второй раз, к этому значению будет прибавлено число FFh. Значение в ячейке 1003h будет отлично от 0, поэтому программа будет продолжать работу до тех пор, пока значение в этой ячейке не станет равным 0.

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

Разумеется, это программное обеспечение может быть довольно сложным. Существуют целые книги с описанием алгоритмов, используемых программистами для решения конкретных задач. К обсуждению этой темы мы пока не готовы. Ранее мы работали с целыми числами и не касались вопроса представления десятичных дробей в компьютере. Об этом поговорим в главе 23.

Я уже несколько раз упоминал, что все компоненты для создания таких устройств появились более ста лет назад. Однако компьютер, описанный в этой главе, вряд ли мог быть собран в то время. Многие из концепций, использованных в его конструкции, не были очевидны и в середине 1930-х годов, когда разрабатывались первые релейные компьютеры. Их начали осознавать примерно в 1945 году. До этого люди все еще пытались создавать компьютеры на основе десятичных, а не двоичных чисел. Кроме того, компьютерные программы не всегда хранились в памяти — иногда они были закодированы на бумажной ленте. На заре компьютерной эры память была очень дорогой и громоздкой. Создание массива RAM емкостью 64 килобайт из пяти миллионов телеграфных реле казалось такой же абсурдной идеей, как и сейчас.

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

<p>Глава 18</p><p>От счетов к микросхемам</p>

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

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

Несмотря на то что счеты обычно ассоциируются с азиатскими культурами, они, по-видимому, были завезены торговцами в Китай примерно в 1200 году н. э.

Никто никогда по-настоящему не получал удовольствия от умножения и деления, однако мало кто предпринимал какие-либо действия для решения этой проблемы. Шотландский математик Джон Непер (1550–1617) был одним из таких людей. Он изобрел логарифмы для упрощения счетных операций. Произведение двух чисел — это сумма их логарифмов. Так что, если нужно перемножить два числа, вы находите их в таблице логарифмов, складываете числа из таблицы, а затем ищете в таблице число, логарифм которого соответствует полученной сумме. Построение таблиц логарифмов на протяжении последующих 400 лет занимало одни величайшие умы, в то время как другие разрабатывали небольшие устройства, заменяющие такие таблицы. Долгая история логарифмической линейки началась со счетной линейки, созданной Эдмундом Гюнтером (1581–1626) и усовершенствованной Уильямом Отредом (1574–1660). История этой линейки практически завершилась в 1976 году, когда компания Keuffel & Esser презентовала последнюю произведенную линейку Смитсоновскому институту в Вашингтоне (округ Колумбия). Причиной ее заката послужило изобретение ручного калькулятора.

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

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

Самоучитель UML
Самоучитель UML

Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы. Цель книги – помочь программистам освоить новую методологию разработки корпоративных программных приложений для последующего применения полученных знаний с использованием соответствующих CASE-инструментов.

Александр Васильевич Леоненков , Александр Леоненков

Зарубежная компьютерная, околокомпьютерная литература / Программирование / Прочая компьютерная литература / Книги по IT
Киберкрепость: всестороннее руководство по компьютерной безопасности
Киберкрепость: всестороннее руководство по компьютерной безопасности

Как обеспечить надежную защиту в эпоху, когда кибератаки становятся все более продвинутыми? Каковы последствия уязвимости цифровых систем? Петр Левашов, экс-хакер с богатым бэкграундом, рассматривает все грани кибербезопасности, начиная с базовых принципов и заканчивая новейшими технологиями.Читатели познакомятся с:• основами компьютерной безопасности и актуальными методами защиты;• современными методами шифрования данных и криптографии;• процедурами ответа на инциденты и восстановления после катастроф;• юридическими и регуляторными требованиями к компьютерной безопасности.Автор использует свой уникальный опыт, чтобы предоставить читателям углубленное понимание кибербезопасности. Его подход охватывает теоретические знания и практическую подготовку, делая этот материал доступным для профессионалов и новичков.

Пётр Юрьевич Левашов

Зарубежная компьютерная, околокомпьютерная литература
Исторические информационные системы: теория и практика
Исторические информационные системы: теория и практика

Исторические, или историко-ориентированные, информационные системы – значимый элемент информационной среды гуманитарных наук. Его выделение связано с развитием исторической информатики и историко-ориентированного подхода, формированием информационной среды, практикой создания исторических ресурсов.Книга содержит результаты исследования теоретических и прикладных проблем создания и внедрения историко-ориентированных информационных систем. Это первое комплексное исследование по данной тематике. Одни проблемы в книге рассматриваются впервые, другие – хотя и находили ранее отражение в литературе, но не изучались специально.Издание адресовано историкам, специалистам в области цифровой истории и цифровых гуманитарных наук, а также разработчикам цифровых ресурсов, содержащих исторический контент или ориентированных на использование в исторических исследованиях и образовании.В формате PDF A4 сохранен издательский макет.

Динара Амировна Гагарина , Надежда Георгиевна Поврозник , Сергей Иванович Корниенко

Зарубежная компьютерная, околокомпьютерная литература / Учебная и научная литература / Образование и наука