Среди прочего я с большим удовольствием вспоминаю чтение исходной программы - мне она показалась весьма изящной. Мне это запомнилось, потому что эта выдающаяся программа была написана не очень опытным на тот момент программистом - Роем Наттом. Она была прекрасна.
Сейбел:Что делает программу прекрасной?
Аллен:Она должна представлять собой простое прямолинейное решение поставленной задачи; при достаточно сложной структуре эта очевидность не вытекает непосредственно из поставленной задачи. Наверное, именно тогда я приобрела привычку учиться программированию и изучать новый язык посредством чтения и подробного изучения готовых программ,
Сейбел:Как вы читаете код? Предположим, собираясь изучить новый язык, вы находите готовую программу - и что с ней делаете?
Аллен:Ну, например, однажды один из моих сотрудников написал парсер. Это уже было в рамках проекта PTRAN. Мне хотелось понять его методы. Это, пожалуй, лучший парсер в мире (сейчас он есть в открытом доступе), действительно превосходный - он умеет исправлять ошибки на лету.
Мне хотелось понять его, поэтому я взяла и прочитала его. Я знала, что автором программы был прекрасный программист Филипп Чарльз. Для того чтобы понять новый язык или новую реализацию какой-либо весьма сложной задачи, я беру программу, написанную программистом, в чьей компетенции не сомневаюсь, и читаю ее.
Сейбел:Как вы изучаете фрагмент кода подобной программы? По шагам? Или просто читаете от начала и до конца, строя в уме структуру? Достаточно непростая задача.
Аллен:Задача и правда достаточно непроста, но, как правило, я интуитивно понимаю или предварительно узнаю общую структуру решения, поэтому могу просто начать читать с середины - с ядра. И это прекрасный способ изучить не только применяемые алгоритмы, но и то, как изящно можно использовать язык.
Сейбел:Есть ли у вас любимые истории, связанные с устранением неполадок в программах?
Аллен:Было несколько интересных случаев. Один из них произошел во время моей работы над системой MAD. Оператор машины позвонил мне посреди ночи - программу, которая должна была быть запущена на всю ночь, никак не удавалось запустить. У нас был особый способ автоматического подсчета контрольной суммы для проверки корректности данных, ведь сами машины толком не отслеживали и не исправляли ошибки. Говоря по телефону, я не могла сообразить, в чем ошибка. Но чуть позже вдруг поняла: в написанной мною части системы, отвечавшей за подсчет контрольной суммы, не учитывалась одна конкретная ситуация. Даже если программа исполнялась корректно, она не могла преодолеть этот барьер - из-за того способа, которым я осуществляла подсчет контрольной суммы. Я перезвонила оператору, и мы устранили эту неполадку.
Другой случай - его я запомнила, поскольку была очень довольна собой тогда, - был связан с одним моим коллегой, который тоже работал над Stretch, предпочитая делать это по ночам. Однажды он пришел утром, а вида он был внушительного - гигантского роста, очень серьезный. И бросил мне на стол распечатку отладочной информации - дампа программы - огромную, толстую стопку. Указывает мне на один какой-то бит в распечатке и говорит: “Почему этот бит установлен?” Он переживал всю ночь. Как ни странно, я знала ответ на его вопрос. Это не было неполадкой - просто он не знал, что это, и решил, что именно этот бит был причиной ошибки.
Сейбел:Это случилось позже - вы говорили, что был еще один проект между MAD и Stretch.
Аллен:Да. Это был проект для одного ученого, который делал коммутационные схемы для аппаратного оборудования. Среди прочего он размещал схемы на том, что тогда считалось микросхемами. Мы разрабатывали математическое решение - было множество препятствий, конечно же, из-за физических размеров. Я работала над этим проектом в качестве программиста. Нас было двое, может быть, трое - все женщины.
Сейбел:А затем вы приступили к работе над проектом и весьма крупным - Stretch.
Аллен:Благодаря моему опыту работы с Фортраном и хорошему владению данным компилятором меня перевели из исследовательского центра IBM в очередной крупный проект компании - создание компьютера Stretch. Проект начался в 1955 году, а название Stretch появилось где-то в 1956 году; планировалось создать машину, которая работала бы в 100 раз быстрее любой другой машины, существовавшей тогда в мире: мы хотели создать абсолютно фантастический компьютер.
Читать дальше
Конец ознакомительного отрывка
Купить книгу