Это фотография Маргарет Гамильтон, стоящей рядом с написанным ею кодом проекта «Аполлон»?

Изображение ниже широко распространено на Facebook :

введите описание изображения здесь

Надпись гласит:

Маргарет Гамильтон, ведущий инженер-программист проекта «Аполлон», стоит рядом с написанным ею от руки кодом, с помощью которого человечество отправилось на Луну. [1969]

Это правда, что:

  1. На фото Маргарет Гамильтон.
  2. Маргарет Гамильтон была ведущим инженером-программистом проекта «Аполлон».
  3. Изображена распечатка кода проекта «Аполлон».
  4. Маргарет Гамильтон написала изображенный код вручную
  5. Маргарет Гамильтон в одиночку написала код
@Sklivvz Связано, но закрыто ... поскольку я не смог убедить людей открыть его снова, я разместил вопрос на Quora: quora.com/…
Не знаю насчет НАСА, но когда я работал на авиабазе Райт-Паттерсон примерно в 1970 году, мы писали код на формах кодирования, и операторы с перфоратором превращали его в перфокарты. Или мы нажали его сами.
Код теперь находится на GitHub, https://github.com/chrislgarry/Apollo-11 . Файл уценки, показанный на первой странице, включает в себя: Представлено: Маргарет Х. Гамильтон. Роль: руководитель программирования Colossus, Apollo Guidance and Navigation. Дата: 28 марта 69 г.

Ответы (3)

На фото Маргарет Гамильтон.

Да, это официальная фотография НАСА:

Гамильтон

Маргарет Гамильтон была ведущим инженером-программистом проекта «Аполлон».

Действительно, из того же источника :

Маргарет Гамильтон, руководитель группы, разработавшей программное обеспечение для полетов агентства [...]

Изображена распечатка кода проекта «Аполлон».

Да, она сама так говорит в интервью Vox :

«На этом снимке я стою рядом со списками фактического исходного кода Apollo Guidance Computer (AGC)», — говорит Гамильтон в электронном письме. «Чтобы уточнить, на картинке нет других видов распечаток, таких как отладочные распечатки, или журналы, или что у вас есть».

Исходный код находится здесь (сканы в формате PDF), и там около 11 000 страниц, что не противоречит тому, что мы видим на картинке: бумага, вероятно, сплошная канцелярская бумага, и 11 000 страниц из них имеют высоту 165 см, поскольку коробка из 2000 около 30 см ( ссылка ).

Маргарет Гамильтон написала изображенный код вручную

Непонятно, что это значит:

  1. Код в куче написан от руки? Нет, это напечатано на пишущей машинке или на ромашковом принтере — смотрите сканы .

  2. Было ли это написано ею в памяти ядра веревки? Нет, это было записано в памяти основной веревки вручную командой, согласно ее интервью на Vox :

    Процесс собственно кодирования в программах тоже был трудоемким. Компьютер наведения использовал нечто, известное как «память основных веревок»: провода особым образом протягивались через металлические сердечники для хранения кода в двоичном формате. «Если провод проходит через сердечник, он представляет собой единицу», — объяснил Гамильтон в документальном фильме «Лунные машины». «А вокруг ядра он представляет собой ноль». Программы были сотканы вручную на фабриках. И поскольку заводские рабочие были в основном женщинами, память с сердечником стала известна инженерам как «память LOL», что означает «маленькая старушка».

Маргарет Гамильтон в одиночку написала код

Нет . Vox так говорит, но не указывает источник:

Это только она и ее код.

НАСА опровергает это, говоря, что она возглавляла целую команду, что кажется более вероятным:

Программное обеспечение для полетов Apollo, разработанное г-жой Гамильтон и ее командой, было поистине новаторским.

Комментаторам толщины бумаги: перейти в чат скептиков :-)
комментарий был: «Я думаю, что часть «вручную» связана с написанием кода, который позже был передан Аполлону. Поэтому вопрос в том, использовала ли Маргарет компьютер для написания кода или машинку с ручкой и бумагой?» и отвечает, глядя на сканы, которые связаны. Они написаны ромашковым принтером.
@Sklivvz: Vox также разъясняет последний вопрос на странице, которую вы упомянули: «Вот ее потрясающая фотография рядом с кодом, который она и ее коллеги написали для ..."
Вау, этот ответ был великолепен вплоть до чепухи с основной веревочной памятью. Код был отправлен в память веревки, но он точно не был написан таким образом.
@RussellBorogove посмотри, стало ли лучше сейчас
@user568458 смотрите отредактированную версию
Не лучше. Никто просто не «кодирует» или «не записывает» сердечник веревки. Журналист в замешательстве.
@RussellBorogove Я не уверен, на что ты жалуешься. Кажется, есть две возможные интерпретации слова «написано», обе из которых должны были произойти в какой-то момент (написание логики кода, а затем физическое кодирование ее в основной памяти веревки), и обе из которых (сейчас) явно рассматриваются в этом отвечать. Конечно, маловероятно, что интерпретация «кодирования основной веревки» — это то, что пытался сказать исходный пост, но в любом случае это утверждение явно неверно.
«тканый» может быть лучшим выбором слова, чем «написанный» (это также то, что используется в цитате)
Ответ в том виде, в котором он написан, плохо объединяет состав программы («кодирование» или «написание»), который был выполнен командой программистов во главе с Гамильтоном, с конструкцией физических жестко запрограммированных запоминающих устройств, которые были выполнены отдельная команда "старичков". Это как сказать, что роман был написан типографией.
@RussellBorogove На самом деле это было бы похоже на составление рукописи и копирование ее в рукописный кодекс, как это делали монахи в средние века. Оба квалифицируются как «письмо», но в разных смыслах.
Я не могу выразить, насколько сильно я не согласен с этой интерпретацией.
«Вручную» подразумевает физическую распечатку кода, не так ли?
«НАСА опровергает это, говоря, что это была целая команда, возглавляемая ею, что кажется более вероятным: «Кто-нибудь знает, какой процент этого кода в куче был на самом деле сделан ее собственной рукой, и как это соотносится с другим членам команды?
Первые компьютеры, на которых я работал, имели основную память. Я не помню, чтобы кто-нибудь называл их «памятью основной веревки» или «памятью LOL», хотя нам сказали, что только женщинам доверяют продевать провода через магнитные кольца, поскольку считалось, что это требует тех же навыков, что и вязание. Положение проводов ничего не представляло. Прохождение тока по проводам устанавливает кольца в одно из двух магнитных состояний, одно из которых соответствует нулю, а другое — единице.
@TonyDallimore Использование ядра для ОЗУ было обычной практикой, но жесткое кодирование «ядерной памяти» в качестве ПЗУ, по-видимому, было вещью. Просто погуглите.
Касаемо "написанной от руки" части. Похоже, что команда программистов AGC на самом деле использовала перо (вместо клавиатуры) для написания кода на специальных бланках, которые затем передавались машинисткам (которые печатали, но заметьте, программисты не печатали — они писали от руки). .
На самом деле, в ту эпоху вполне вероятно, что она ДЕЙСТВИТЕЛЬНО записала его «от руки», а затем преобразовала его в карточки оператором клавиатуры.
«пишущая машинка или ромашковый принтер» Маловероятно: в те дни, вероятно, это был линейный принтер. (Принтер Daisy изобрели в 1970 году, Apollo отправился на Луну в 1969 году).
Код почти наверняка был напечатан на линейном принтере. В то время использовались электрические «шариковые» принтеры, как и принтеры Teletype, но оба они были слишком медленными, к тому же они плохо работали с широкими формами.

Я знаю Маргарет уже 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 строками (максимум) на странице. Вот современный аналог:

Бумага для непрерывной формы Enterprise Group 14 78 x 11 18 фунтов 12 зеленых полос Белая упаковка из 3000 листов от Office Depot & OfficeMax

10 305 страниц этого материала будут около 37 дюймов в высоту, только что из коробки. Он может немного расширяться при использовании, аннотации, постоянном сгибании и т. д., а переплеты также относительно тяжелые. Таким образом, легко учесть, может быть, 42 дюйма стека. Остальную высоту могут составить старые или альтернативные версии некоторых списков.

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

В качестве грубого эталона Пол Лотон написал 120-страничную DOS для Apple II на ассемблере за 7 недель. Исходный код Apple II для DOS . При увеличении масштаба команда из 12 человек могла создать более 10 305 страниц высококачественного кода за год.

Глядя на список линейных принтеров Пола (на связанном сайте есть PDF-файл), вы можете получить хорошее представление о том, насколько плотна информация в таком коде. Там много пробелов: старые программисты на ассемблере, включая меня, использовали разбиение на страницы, чтобы изолировать несвязанные участки кода, поскольку мы часто читали эти распечатки, а не исходный код во время ручной оптимизации.

У нас есть фактические сканы страниц, счет отклоняется примерно на 10%.
Кроме того, ответ Quora - не лучший способ сослаться на ответ...
Да, но сам ответ содержит ссылки.
Касательно «...часто читаю эти распечатки, а не исходный код...»: я не знаю о НАСА, но в те дни (и примерно десять лет спустя) ЭЛТ/клавиатурные дисплеи не были обычным явлением. Было принято вводить код на перфокартах и ​​читать распечатки.
-1: если бы этот ответ Quora был опубликован здесь, он был бы удален для первоначального исследования; у нас нет оснований доверять опыту или предположениям Кристофера Берка в его расчетах, например, его решение рассматривать только файлы .agc и, следовательно, комментарии, начинающиеся с «#», явно неверны на первой странице сканирования .
@Oddthinking Я думаю, что это приличное приближение, и объяснение лучше, чем ссылка (не нужно доверять, только думать/проверять). Что касается #, большинство комментариев начинаются с '#', и в любом случае мы в основном ищем верхнюю границу SLOC.
Вы, кажется, апеллируете к заблуждению здравого смысла, утверждая, что ссылка не нужна. Вы делаете ошибку «задаете вопрос», говоря, что это приличное приближение.
@Oddthinking Не нужен здравый смысл, просто умение считать.