Глупый мотылёк догорал на свечке: как американцы собрали первый компьютер и придумали баги
США умудрились изобрести компьютер на два года позже Германии, но зато нашли первый баг и поссорили Гарвард с IBM.
tesla / youtube
Первым американским программируемым компьютером считают Mark I, созданный в 1944 году. Его архитектуру придумал гарвардский физик Говард Эйкен, а само устройство спроектировала и собрала IBM.
Иногда Mark I называют первым действующим компьютером в мире, но это не так — немец Конрад Цузе собрал свой Z3 на два года раньше.
Как Mark I поссорил IBM с Гарвардом
Идея создать мощное вычислительное устройство появилась у Эйкена ещё до войны, когда он писал диссертацию о проводимости зарядов в радиолампах. Для неё ему приходилось долго и утомительно решать нелинейные дифференциальные уравнения на логарифмической линейке и арифмометрах.
Про похожее устройство он читал в работах Чарльза Бэббиджа — в XIX веке этот учёный уже изобрёл машину для автоматических вычислений. Эйкен решил усовершенствовать машину Бэббиджа и делать расчёты на ней.
Сначала Эйкен попробовал заинтересовать Гарвардский университет. Идею одобрили, но денег не дали. Производители калькуляторов тоже не захотели вкладываться — не верили, что такую машину кто-то купит.
В итоге через друзей Эйкен познакомился с Томасом Уотсоном — гендиректором IBM, чья компания тогда выпускала электромеханические табуляторы. Он заинтересовался проектом и согласился частично его финансировать. Вторым спонсором стали ВМС США — адмиралов убедили, что в случае войны машина пригодится, чтобы составлять баллистические таблицы для артиллерии.
Конструировать машину Уотсон поручил самым талантливым инженерам IBM. Эйкена назначили руководителем проекта — он разрабатывал архитектуру компьютера.
В IBM умели делать ручные счётные машины, поэтому у них получился скорее большой арифмометр, а не компьютер в современном понимании. В устройстве было 800 километров проводов и 800 тысяч деталей: переключателей, реле и муфт. По всей длине проходил вал, который крутил шестерни.
Компьютер назвали Automatic Sequence Controlled Calculator — «автоматический вычислитель, управляемый последовательностями», сокращённо ASCC.
Он работал с десятичными числами и выполнял по 3 операции сложения и вычитания в секунду — в то время это был хороший результат. Умножение занимало 6 секунд, деление — 15.
Устройство не хранило программы в памяти, а считывало их с перфоленты. Для работы с данными использовали регистры. Делать условные переходы компьютер не умел, поэтому сложные программы были длинными и на каждую уходили рулоны перфолент. Чтобы выполнить цикл, начало и конец ленты соединяли между собой.
Пока машину разрабатывали, Эйкен начал спорить с гендиректором IBM — не могли договориться о габаритах. У них получилась 17-метровая машина высотой больше человеческого роста, а Эйкен считал, что это слишком.
Другой проблемой стал корпус. Учёный хотел оставить его открытым, чтобы легко обслуживать компьютер, но для IBM важнее был товарный вид. Победил бизнес, и промышленный дизайнер Бел Геддес разработал корпус из стекла и нержавеющей стали.
Но Эйкен отыгрался на презентации машины в августе 1944 года. В речи перед журналистами он едва упомянул роль IBM в проекте. Гендиректор взбесился и отказался работать с Эйкеном дальше. Изобретатель сменил имя компьютера с ASCC на Mark I.
Машину передали Гарварду, а потом она попала на флот, где заменяла 20 расчётчиков баллистических таблиц. Военные удивились, что Mark I работает так быстро, и дальше идеи Эйкена финансировало Министерство обороны США.
Компьютер обслуживали морские офицеры, которые всегда поддерживали флотский порядок — подвижные детали смазывали, а корпус начищали до блеска.
Работала с машиной гарвардский профессор математики лейтенант Грейс Хоппер, а также выпускники Гарварда прапорщики Роберт Кэмпбелл и Ричард Блох. Потом они стали выдающимися учёными-программистами, а Грейс Хоппер — ещё и адмиралом ВМФ.
В военное время Mark I использовали артиллеристы, а Джон фон Нейман делал расчёты, связанные с созданием и применением ядерного оружия. После войны Эйкен рассчитывал на компьютере нелинейные дифференциальные уравнения.
Коллеги Эйкена удивлялись, почему в Mark I он не использовал радиолампы. Они считали, что Mark I устарел ещё до своего создания. Но учёный знал, что с радиолампами компьютер работал бы намного быстрее, но он не хотел рисковать из-за недостаточно испытанных компонентов.
К 1958 году Mark I окончательно устарел, и его демонтировали. Интересный факт — в 2014-м компьютер восстановили и запустили, и он оказался работоспособным.
Mark II — компьютер с первым багом
В 1945 году Эйкен начал строить для военных более совершенный компьютер — Mark II. Вместо медленных электромеханических счётчиков в нём использовали быстрые электромагнитные реле.
Вместе с Эйкеном над Mark II работала и Грейс Хоппер, будущий адмирал ВМФ. Спустя два года машина была готова.
9 сентября 1947 года Хоппер нашла в компьютере первый «баг» — мотылька, который запутался в проводах и остановил машину.
«В один из летних дней 1945 года в лаборатории было невыносимо жарко. Компьютер вдруг остановился. Когда мы стали разбираться, выяснилось, что сбой вызвал мотылёк — он замкнул контакты одного из тысяч реле. Как раз в этот момент к нам зашёл офицер и спросил, чем мы занимаемся. Мы ответили, что чистим компьютер от насекомых».
Грейс Хоппер
Так появилось слово debugging — отладка, устранение дефектов. После этого программисты стали называть ошибки «багами».
Mark II стал последним американским электромеханическим компьютером. Позже Эйкен построил Mark III и Mark IV, но в них уже использовали радиолампы. А осенью 1945 года появился ENIAC — с него началась эпоха электронных вычислительных машин.