Изображение ниже широко распространено на Facebook :
Надпись гласит:
Маргарет Гамильтон, ведущий инженер-программист проекта «Аполлон», стоит рядом с написанным ею от руки кодом, с помощью которого человечество отправилось на Луну. [1969]
Это правда, что:
Да, это официальная фотография НАСА:
Действительно, из того же источника :
Маргарет Гамильтон, руководитель группы, разработавшей программное обеспечение для полетов агентства [...]
Да, она сама так говорит в интервью Vox :
«На этом снимке я стою рядом со списками фактического исходного кода Apollo Guidance Computer (AGC)», — говорит Гамильтон в электронном письме. «Чтобы уточнить, на картинке нет других видов распечаток, таких как отладочные распечатки, или журналы, или что у вас есть».
Исходный код находится здесь (сканы в формате PDF), и там около 11 000 страниц, что не противоречит тому, что мы видим на картинке: бумага, вероятно, сплошная канцелярская бумага, и 11 000 страниц из них имеют высоту 165 см, поскольку коробка из 2000 около 30 см ( ссылка ).
Непонятно, что это значит:
Код в куче написан от руки? Нет, это напечатано на пишущей машинке или на ромашковом принтере — смотрите сканы .
Было ли это написано ею в памяти ядра веревки? Нет, это было записано в памяти основной веревки вручную командой, согласно ее интервью на Vox :
Процесс собственно кодирования в программах тоже был трудоемким. Компьютер наведения использовал нечто, известное как «память основных веревок»: провода особым образом протягивались через металлические сердечники для хранения кода в двоичном формате. «Если провод проходит через сердечник, он представляет собой единицу», — объяснил Гамильтон в документальном фильме «Лунные машины». «А вокруг ядра он представляет собой ноль». Программы были сотканы вручную на фабриках. И поскольку заводские рабочие были в основном женщинами, память с сердечником стала известна инженерам как «память LOL», что означает «маленькая старушка».
Нет . Vox так говорит, но не указывает источник:
Это только она и ее код.
НАСА опровергает это, говоря, что она возглавляла целую команду, что кажется более вероятным:
Программное обеспечение для полетов Apollo, разработанное г-жой Гамильтон и ее командой, было поистине новаторским.
Я знаю Маргарет уже 20 лет, и когда мой сын задал мне этот вопрос, я написал ей и Рону Хаклеру (которого я также знаю 20 лет), чтобы уточнить некоторые из них. Они ответили следующее:
«Для уточнения, Маргарет была директором бортового программного обеспечения для полетов «Аполлона» (программное обеспечение «Компьютер управления Аполлоном» (AGC) ) . , она была «ответственной» за бортовое программное обеспечение для полетов Apollo и программистов AGC («инженеры-программисты»), которые спроектировали и разработали бортовое программное обеспечение для полетов Apollo. Она также разработала и написала большую часть программного обеспечения Apollo бортовое программное обеспечение для полетов, сама; особенно в области проектирования/создания программного обеспечения для систем AGC, где ее фаворитами были области операционной системы, человеко-машинного интерфейса, надежности, обнаружения и устранения ошибок.
Маргарет и ее команда в Массачусетском технологическом институте кодировали весь код вручную: то есть они писали весь исходный код AGC на бумаге для кодирования исходного кода AGC, а затем отдавали его «перфораторам» (специалистам по набивке клавиш) для копирования (пробивания). ) код с кодовой бумаги на карточки, с которых можно было делать списки (книги/распечатки) кода.
Да, это весь код, рядом с которым стоит Маргарет на ее фото!!! Это код AGC (и НИЧЕГО больше)!"
Они указали, что здесь есть фотографии некоторых страниц копии кода AGC, принадлежащей Маргарет: http://imgur.com/a/Dp23C , а также другая вспомогательная информация, предоставленная Маргарет и Роном. Кроме того, весь этот код представляет собой написанный от руки ассемблерный код для AGC без участия компиляторов.
Я бы добавил, что Маргарет и Рон — два самых блестящих человека, которых я имел честь знать в своей жизни.
Этот вопрос был задан на Quora — вот ответ Кристофера Берка :
Сегодня днем я загрузил исходный код и провел по нему несколько простых измерений, просматривая только файлы «.agc», которые являются исходным кодом на языке ассемблера.
- 420 837 строк исходного текста
- Из них 102 958 строк комментариев ("#" в столбце 1) и 38 626 пустых строк.
- 10 305 экземпляров « Страница », что примерно указывает на количество страниц в исходных списках.
Эти старые списки были напечатаны на бумаге сплошной формы с «зеленой полосой» толщиной около 3,6 мил, вероятно, с 66 строками (максимум) на странице. Вот современный аналог:
10 305 страниц этого материала будут около 37 дюймов в высоту, только что из коробки. Он может немного расширяться при использовании, аннотации, постоянном сгибании и т. д., а переплеты также относительно тяжелые. Таким образом, легко учесть, может быть, 42 дюйма стека. Остальную высоту могут составить старые или альтернативные версии некоторых списков.
Одна команда, безусловно, могла бы написать столько кода на ассемблере. Код, вероятно, будет чрезвычайно эффективным, поскольку система имеет очень жесткие ограничения памяти.
В качестве грубого эталона Пол Лотон написал 120-страничную DOS для Apple II на ассемблере за 7 недель. Исходный код Apple II для DOS . При увеличении масштаба команда из 12 человек могла создать более 10 305 страниц высококачественного кода за год.
Глядя на список линейных принтеров Пола (на связанном сайте есть PDF-файл), вы можете получить хорошее представление о том, насколько плотна информация в таком коде. Там много пробелов: старые программисты на ассемблере, включая меня, использовали разбиение на страницы, чтобы изолировать несвязанные участки кода, поскольку мы часто читали эти распечатки, а не исходный код во время ручной оптимизации.
Скливвз
Франк Дернонкур
Дэниел Р. Хикс
Джеппе Стиг Нильсен