Читаем Кодеры за работой. Размышления о ремесле программиста полностью

Аллен: Было несколько интересных случаев. Один из них произошел во время моей работы над системой MAD. Оператор машины позвонил мне посреди ночи — программу, которая должна была быть запущена на всю ночь, никак не удавалось запустить. У нас был особый способ автоматического подсчета контрольной суммы для проверки корректности данных, ведь сами машины толком не отслеживали и не исправляли ошибки. Говоря по телефону, я не могла сообразить, в чем ошибка. Но чуть позже вдруг поняла: в написанной мною части системы, отвечавшей за подсчет контрольной суммы, не учитывалась одна конкретная ситуация. Даже если программа исполнялась корректно, она не могла преодолеть этот барьер — из-за того способа, которым я осуществляла подсчет контрольной суммы. Я перезвонила оператору, и мы устранили эту неполадку.

Другой случай — его я запомнила, поскольку была очень довольна собой тогда, — был связан с одним моим коллегой, который тоже работал над Stretch, предпочитая делать это по ночам. Однажды он пришел утром, а вида он был внушительного — гигантского роста, очень серьезный. И бросил мне на стол распечатку отладочной информации — дампа программы — огромную, толстую стопку. Указывает мне на один какой-то бит в распечатке и говорит: «Почему этот бит установлен?» Он переживал всю ночь. Как ни странно, я знала ответ на его вопрос. Это не было неполадкой — просто он не знал, что это, и решил, что именно этот бит был причиной ошибки.

Сейбел: Это случилось позже — вы говорили, что был еще один проект между MAD и Stretch.

Аллен: Да. Это был проект для одного ученого, который делал коммутационные схемы для аппаратного оборудования. Среди прочего он размещал схемы на том, что тогда считалось микросхемами. Мы разрабатывали математическое решение — было множество препятствий, конечно же, из-за физических размеров. Я работала над этим проектом в качестве программиста. Нас было двое, может быть, трое — все женщины.

Сейбел: А затем вы приступили к работе над проектом и весьма крупным — Stretch.

Аллен: Благодаря моему опыту работы с Фортраном и хорошему владению данным компилятором меня перевели из исследовательского центра IBM в очередной крупный проект компании — создание компьютера Stretch. Проект начался в 1955 году, а название Stretch появилось где-то в 1956 году; планировалось создать машину, которая работала бы в 100 раз быстрее любой другой машины, существовавшей тогда в мире: мы хотели создать абсолютно фантастический компьютер.

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

Сейбел: Из-за того, что работа с латентностью памяти стала бы слишком неподъемной задачей для программистов, писавших на ассемблере?

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

Это была чрезвычайно сложная машина — и программировать ее было сплошным удовольствием. Компилятор представлял собой очень трудную задачу. Весь проект был восхитительно сложным.

Поэтому меня и еще нескольких сотрудников перевели из исследовательского центра IBM в этот проект для разработки компилятора и непосредственно операционной системы. Компилятор по размаху соответствовал самой машине. Из-за того что ранее мне приходилось работать с оптимизатором Фортрана, здесь я работала над оптимизатором для Stretch, который позже назовут Stretch Harvest. Общий план компилятора был утвержден другим комитетом, но мы вчетвером отвечали за детали, включая интерфейсы компилятора, их спецификации и прочие его компоненты. У меня был оптимизатор, у кого-то парсер, распределитель регистров и интерфейс с программой ассемблера.

Сейбел: Как проект был организован с точки зрения функций, отведенных разным работникам?

Аллен: Три человека разрабатывали общий план компилятора — у нас будет парсер, у нас будет то, у нас будет это, а это мы поставим сюда. И были люди, отвечавшие за продукт целиком, то есть было несколько уровней, на которых осуществлялось принятие решений и руководство проектом.

Затем им понадобилось назначить ответственных за каждый из крупных компонентов. Поэтому они попросили нас четверых, причем трое были женщины, заняться этим и совместно начать разработку интерфейсов.

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

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

Адмирал Советского Союза
Адмирал Советского Союза

Николай Герасимович Кузнецов – адмирал Флота Советского Союза, один из тех, кому мы обязаны победой в Великой Отечественной войне. В 1939 г., по личному указанию Сталина, 34-летний Кузнецов был назначен народным комиссаром ВМФ СССР. Во время войны он входил в Ставку Верховного Главнокомандования, оперативно и энергично руководил флотом. За свои выдающиеся заслуги Н.Г. Кузнецов получил высшее воинское звание на флоте и стал Героем Советского Союза.В своей книге Н.Г. Кузнецов рассказывает о своем боевом пути начиная от Гражданской войны в Испании до окончательного разгрома гитлеровской Германии и поражения милитаристской Японии. Оборона Ханко, Либавы, Таллина, Одессы, Севастополя, Москвы, Ленинграда, Сталинграда, крупнейшие операции флотов на Севере, Балтике и Черном море – все это есть в книге легендарного советского адмирала. Кроме того, он вспоминает о своих встречах с высшими государственными, партийными и военными руководителями СССР, рассказывает о методах и стиле работы И.В. Сталина, Г.К. Жукова и многих других известных деятелей своего времени.Воспоминания впервые выходят в полном виде, ранее они никогда не издавались под одной обложкой.

Николай Герасимович Кузнецов

Биографии и Мемуары
100 великих гениев
100 великих гениев

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

Рудольф Константинович Баландин

Биографии и Мемуары
100 великих интриг
100 великих интриг

Нередко политические интриги становятся главными двигателями истории. Заговоры, покушения, провокации, аресты, казни, бунты и военные перевороты – все эти события могут составлять только часть одной, хитро спланированной, интриги, начинавшейся с короткой записки, вовремя произнесенной фразы или многозначительного молчания во время важной беседы царствующих особ и закончившейся грандиозным сломом целой эпохи.Суд над Сократом, заговор Катилины, Цезарь и Клеопатра, интриги Мессалины, мрачная слава Старца Горы, заговор Пацци, Варфоломеевская ночь, убийство Валленштейна, таинственная смерть Людвига Баварского, загадки Нюрнбергского процесса… Об этом и многом другом рассказывает очередная книга серии.

Виктор Николаевич Еремин

Биографии и Мемуары / История / Энциклопедии / Образование и наука / Словари и Энциклопедии