Код. Тайный язык информатики — страница 36 из 71

Ключевой фактор при оценке старых вычислительных машин — насколько успешно они справлялись с переносом. Например, конструкция механизма переноса, разработанная Паскалем, не позволяла машине производить вычитание. Для того чтобы вычесть одно число из другого, необходимо было дополнение до девяти, которое я продемонстрировал в главе 13. Эффективные механические калькуляторы, которыми могли пользоваться люди, появились только к концу XIX века.

Одним из любопытных изобретений, которому предстояло значительно повлиять на историю вычислений, а также на текстильную промышленность, был автоматический ткацкий станок, разработанный Жозефом Жаккаром (1752–1834). В станке Жаккара, созданном в 1804 году, для задания узора ткани использовались металлические карты с пробитыми в них отверстиями (вроде перфокарт для самоиграющих пианино). Величайшим достижением Жаккара стал его черно-белый автопортрет в шелке, на создание которого потребовалось около десяти тысяч карт.

В XVIII веке вычислителем назывался человек, нанятый специально для того, чтобы производить вычисления. Большим спросом пользовались таблицы логарифмов, а таблицы тригонометрических функций широко применялись для астрономической навигации. Если вам нужно было опубликовать новый набор таблиц, приходилось нанимать многочисленных «компьютеров», организовывать их работу, а затем систематизировать полученные данные. Разумеется, ошибки могли возникнуть на любой стадии, начиная от расчетов и заканчивая подготовкой к печати.

Стремлением избавить математические таблицы от ошибок руководствовался в своей работе Чарльз Бэббидж (1791–1871), британский математик и экономист, практически современник Сэмюэла Морзе.

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

В начале 1820-х годов Бэббидж считал, что он в состоянии разработать и сконструировать машину для автоматизации процесса составления таблицы, вплоть до подготовки к печати. Это устранило бы ошибки. Он придумал «разностную машину», которая по сути была большим механическим сумматором. Многоразрядные десятичные числа представлялись с помощью зубчатых колес, каждое из которых могло находиться в любом из десяти положений. Отрицательные числа обрабатывались с использованием дополнений до десяти. Несмотря на то что ранние модели доказали работоспособность конструкции Бэббиджа, разностная машина так никогда и не была завершена, поскольку создавалась на гранты британского правительства, которых, разумеется, никогда не хватало. В 1833 году Бэббидж прекратил работу над ней.

Однако к этому времени у Бэббиджа возникла лучшая идея. Она заключалась в создании так называемой аналитической машины, разработка конструкции которой занимала ученого до самой смерти, причем ему удалось фактически собрать несколько небольших моделей и частей этого механизма[22].

Аналитическая машина — устройство, наиболее приближенное к компьютеру из всего, что было создано в XIX веке. Конструкция Бэббиджа предусматривала хранилище (концептуально напоминающее память компьютера) и мельницу (устройство для выполнения арифметических операций). Умножение можно было производить путем многократного сложения, а деление — путем многократного вычитания.

Самое интересное заключается в том, что аналитическую машину можно было запрограммировать с помощью карт наподобие тех, что использовались в ткацком станке Жаккара. Как выразилась Августа Ада Байрон, графиня Лавлейс (1815–1852), в примечаниях к своему переводу статьи, написанной итальянским математиком об аналитической машине Бэббиджа: «Можно сказать, что аналитическая машина плетет алгебраические узоры подобно тому, как ткацкий станок Жаккара плетет цветы и листья».

Бэббидж, кажется, был первым, кто осознал важность условных переходов в компьютерах. Снова приведем слова Ады Байрон: «Таким образом, цикл операций следует понимать как любой набор операций, выполняемый более одного разаЦикл является циклом вне зависимости от того, повторяется он дважды или неопределенное число раз, поскольку именно факт повторения делает цикл тем, чем он является. Во многих анализируемых случаях существуют рекуррентные группы, состоящие из одного или нескольких циклов, то есть цикл цикла или цикл циклов».

Несмотря на то что разностная машина в конечном итоге была сконструирована Георгом Шютцем и его сыном Эдвардом в 1853 году, машины Бэббиджа оставались забытыми, о них вспомнили только в 1930-х, когда люди начали исследовать основы информатики. К тому времени все, чего достиг Бэббидж, уже было превзойдено более поздними технологиями, и он мало что мог предложить компьютерному инженеру XX века, кроме значительно опережающего свое время предвидения автоматизации.

Еще одним толчком для развития информатики послужила Конституция Соединенных Штатов Америки. Помимо всего прочего, в ней содержится призыв к проведению переписи населения каждые десять лет. При проведении переписи 1880 года собиралась информация о возрасте, поле и национальности. На анализ данных ушло около семи лет.

Опасаясь того, что анализ переписи 1890 года займет больше десятилетия, Бюро переписи населения изучило возможность ее автоматизации и выбрало механизм, придуманный Германом Холлеритом (1860–1929), который работал в качестве статистика в 1880 году.

Холлерит планировал использовать картонные перфокарты размером 168,278 × 82,551 мм. Маловероятно, что Холлерит знал о том, как Чарльз Бэббидж использовал карты для программирования своей аналитической машины, однако он почти наверняка был знаком с использованием карточек в ткацком станке Жаккара. Отверстия в этих карточках были организованы в 24 столбца по 12 позиций, что в общей сложности давало 288 позиций. Эти позиции соответствовали определенным характеристикам человека, участвующего в переписи. Переписчик указывал эти особенности, пробивая прямоугольные отверстия размером в четверть дюйма в соответствующем месте карты.

Читая книгу, вероятно, вы настолько привыкли мыслить в терминах двоичных кодов, что могли предположить, что карта с 288 возможными отверстиями способна хранить 288 бит информации. Однако эти карты использовались не так.

Например, перфокарта, применяемая при переписи в чисто двоичной системе, имела бы одну позицию для пола. Она была бы либо пробита — в случае, если опрашиваемый — мужчина, либо не пробита — в случае, если это женщина (или наоборот). Однако карты Холлерита предусматривали две позиции для пола: одна пробивалась для мужчин, другая — для женщин. Аналогичным образом переписчик указывал возраст субъекта, пробивая два отверстия. Первое обозначало пятилетний диапазон: от 0 до 4, от 5 до 9, от 10 до 14 и т. д. Второе отверстие пробивалось в одной из пяти позиций для обозначения точного возраста в этом диапазоне. Для кодирования возраста требовались в общей сложности 28 позиций на карте. При использовании двоичной системы нужны были бы всего семь позиций для кодирования любого возраста от 0 до 127 лет.

Мы должны простить Холлерита за то, что он не внедрил двоичную систему для записи информации, собранной при переписи населения. Преобразование возраста в двоичные числа было непосильной задачей для тех, кто проводил перепись 1890 года. Кроме того, существует практическая причина, по которой использование перфокарт не может быть полностью основанным на двоичной системе. Двоичная система предполагает вероятность того, что будут пробиты все (или почти все) отверстия, что сделает карту чрезвычайно хрупкой.

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

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

Этот эксперимент по автоматизации переписи 1890 года оказался чрезвычайно успешным. В общей сложности было обработано более 62 миллионов карточек. Они содержали в два раза больше данных по сравнению с тем, что удалось собрать в ходе переписи 1880 года, а обработаны эти сведения были примерно в три раза быстрее. Холлерит и его изобретения стали известны во всем мире. В 1895 году он даже отправился в Москву и успешно продал свое оборудование для первой российской переписи 1897 года.

Герман Холлерит положил начало длинной последовательности событий. В 1896 году он основал компанию Tabulating Machine Company, занимающуюся сдачей в аренду и продажей оборудования для работы с перфокартами. К 1911 году в результате пары слияний она превратилась в Computing-Tabulating-Recording Company, или C-T-R. В 1915 году ее президентом стал Томас Джон Уотсон (1874–1956), который в 1924 году поменял название на International Business Machines Corporation, или IBM.