Маргарет Гефілд Гамільтон

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
Маргарет Гефілд Гамільтон

«Програмістка, яка посадила людей на місяць»

Ранні роки

Фотографія Маргарет Гамільтон, зроблена в 1995 році

Маргарет Гефілд народилася в Паолі, штат Індіана, у сім'ї Кеннета і Рут-Естер (уроджена Партінгтон) Гефілдів. Після закінчення середньої школи Генкок в 1954 році, вона почала вивчати математику в університеті штату Мічиган в 1955 році і згодом отримала ступінь бакалавра математики з другою спеціалізацією з філософії в коледжі Ерлгем у 1958 році. Після випуску вона певний час викладала у школі математику і французьку мову, щоб підтримати чоловіка, котрий навчався на бакалавра в Гарварді, з кінцевою метою отримати диплом пізніше. Переїхала до Бостона, штат Массачусетс, з наміром написати диплом з абстрактної математики в університеті Брандейс. Вона згадує жінку-професора математики, яка підтримувала її прагнення вивчати абстрактну математику. Були й інші інші джерела натхнення за межами технологічного світу, в тому числі її батько, філософ і поет, і її дід, директор школи і квакер-священнослужитель. Вона каже, що ці люди надихнули її на вивчення філософії. У 1960 році вона зайняла тимчасову посаду в Массачусетському технологічному інституті з розробки програмного забезпечення для прогнозування погоди на комп'ютерах LGP-30 і PDP-1 (у проект MAC Марвіна Мінскі) для професора Едварда Нортона Лоренца з факультету метеорології. Гамільтон тоді писала, що комп'ютерні науки і програмна інженерія ще не були дисциплінами; натомість програмісти навчалися на роботі з практичним досвідом.

Проект SAGE

Маргарет Гамільтон і її колега перед прототипом комп'ютера

З 1961 по 1963 рік вона працювала над проекті Sage у лабораторії Лінкольна, де вона була одною з програмістів, які писали програмне забезпечення для першого комп'ютера AN/FSQ-7 (а саме XD-1) для пошуку ворожих повітряних суден; вона також писала програмне забезпечення для Дослідних лабораторій повітряних сил США у Кембриджі.
Проект SAGE був продовженням проекту "Whirlwind"[en], розпочатого Массачусетським технологічним інститутом для створення комп'ютерної системи, яка могла б прогнозувати погодні системи та відстежувати їхнє переміщення з допомогою симуляторів. Невдовзі SAGE було розроблено для військового використання у зенітній протиповітряній обороні від можливого радянського нападу під час «холодної війни». Гамільтон сказала:

«Вони звикли так робити з новачками, які приходили в цю організацію: призначали їх на цю програму, яку ніхто ніколи не міг зрозуміти чи запустити. Коли я була новачком, вони так само дали її мені. А суть була в тому, що програма була написана підступно, а людина, яка її написала, отримувала задоволення від того, що всі його коментарі були грецькою і латиною. Отож, мене призначили на цю програму, і я насправді змусила її працювати. Вона навіть видавала відповіді латиною і грецькою. Я була першою, хто змусив її працювати.»

Саме завдяки зусиллям Маргарет які вона доклала до цього проекту, вона стала кандидатом на посаду в NASA в якості провідного розробника програмного забезпечення польотів для «Аполлон».

NASA

Гамільтон потім приєдналася до Лабораторії Чарльза Старка Дрейпера Массачусетського технологічного інституту, яка в той час працювала над космічною місією «Аполлон». Згодом вона керувала командою, якій приписується розробка програмного забезпечення для Аполлона і Скайлеб. Команда Гамільтон відповідала за розробку бортового програмного забезпечення, що включало алгоритми, розроблені різними старшими вченими командного модуля Аполлона, посадкового модуля і далі Скайлеб. Інша частина її команда змоделювала і розробила програмне забезпечення систем, яке включало програмне забезпечення для виявлення помилок і відновлення, таких як перезавантаження і режими показу (також «пріоритетні покази», англ. Priority Displays), що Гамільтон спроектувала і розробила. Вона напрацьовувала практичний досвід у часи, коли курси комп'ютерних наук були рідкістю, а курси програмної інженерії ще не існували.
Її спеціалізацією були проектування систем і розробка програмного забезпечення, моделювання підприємств і процесів, парадигми розробки, формальні мови моделювання систем, системно-орієнтовані об'єкти для моделювання і розробки систем, автоматизовані середовища життєвого циклу, методи максимізації надійності програмного забезпечення і повторного використання, аналіз предметної області, досягнення коректності за допомогою вбудованих властивостей мов, техніки з відкритою архітектурою для надійних систем, повна автоматизація життєвого циклу, забезпечення якості, плавна інтеграція, техніки виявлення помилок і відновлення, людино-машинний інтерфейс, операційні системи, техніки наскрізного тестування та управління життєвим циклом.

Гамільтон у 1969 році, стоячи поряд з навігаційною програмою, що вона і її команда з МІТ створили для проекту «Аполлон»

Аполлон 11

Гамільтон у час її роботи провідним дизайнером програмного забезпечення польотів «Аполлон»

B решті решт, Маргарет Гамільтон стала директором і науковим керівником розробки програмного забезпечення для космічної програми "Аполлон".
Команда Гамільтон відповідала за розробку бортового програмного забезпечення, що включало алгоритми, розроблені різними старшими вченими командного модуля Аполлона, посадкового модуля і далі Скайлеб.
Це було дуже важке завдання: програмісти працювали цілодобово. Тоді не було курсів з програмування, все доводилося пізнавати досвідченим шляхом. Часто вечорами та у вихідні дні Маргарет брала на роботу свою дочку Лорен, яка спостерігала за тим, як мама використовує блок дисплея та клавіатури симулятора (DSKY) для тестування програмного забезпечення. Якось дівчинка вирішила пограти в астронавта і випадково зламала симулятор. Маргарет зауважила, що дитина вибрала передзапускну програму P01 під час «польоту». Це злякало її: адже те саме міг випадково зробити астронавт під час реальної місії.
Гамільтон стала переконувати співробітників MIT у необхідності зміни коду, щоб програма могла перевіряти помилки користувачів. Спочатку багато хто був впевнений у хорошій підготовці астронавтів і не бачили сенсу у зміні програми. Але астронавти вже робили подібні помилки. Під час польоту «Аполлона-8 » астронавт Джим Ловелл випадково вибрав P01 та знищив усі навігаційні дані. На щастя, їх вдалося відновити лише через дев'ять годин, і астронавти повернулися додому. Цей неприємний досвід переконав керівництво NASA прислухатися до Гамільтон. Код був переписаний, а сама Гамільтон навіть додала програмну замітку з написом "Не вибирайте P01 під час польоту".
20 липня 1969 року, коли місячний модуль Eagle (Орел) стрімко наближався до поверхні Місяця, астронавти Аполлона-11 Базз Олдрін і Ніл Армстронг не відводили очей від бортових комп'ютерів. Їм залишалося подолати лише 9 км до місця посадки. На Землі диспетчери слухали повідомлення астронавтів і пильно стежили за числами, що заповнюють екрани, у пошуках будь-якої маленької аномалії, яка б викликала переривання посадки. Раптом пролунав голос Армстронга: «Це 1202... Що це? Дайте розшифровку програмного сигналу 1202…»
Щоб зрозуміти, що означало повідомлення про помилку 1202, потрібно знати, як працювали бортові комп'ютери того часу. Вся місія «Аполлон-11 » містилася на кількох магнітних осердях, які з середини 1950-х і до середини 1970-х років становили основу комп'ютерної пам'яті. Щоб успішно посадити корабель на поверхню, бортовий комп'ютер Apollo Guidance Computer повинен був щомиті обробляти величезну кількість даних. Він повинен був знати, де знаходиться місячний модуль, куди він рухається, на якій висоті, з якою швидкістю і якою є продуктивність двигуна, і підтримувати правильну орієнтацію корабля на основі цих даних. Також необхідно було постійно коригувати траєкторію переривання, через яку екіпаж міг повернутися на орбіту у разі позаштатної ситуації.
Щоб спростити завдання астронавтам та комп'ютеру, кожна подія місії (посадка, стикування тощо) була розбита на частини. Ці керовані модулі можна було запускати індивідуально, роблячи всю систему надійнішою. Програми не могли запускатися одночасно, оскільки Apollo Guidance Computer був однопроцесорним: вони були заплановані та виконувались на основі пріоритету. Якщо потрібно було запустити якийсь життєво важливий процес, комп'ютер міг у будь-який момент перервати менш важливу програму, що працює.
Команда MIT розробила комп'ютер таким чином, щоб пам'ять його ніколи не заповнювалася. У будь-який момент місії мало залишатися вільним місцем для наступної програми, також можна було перервати малозначущу програму, якщо необхідно негайно запустити щось дуже важливе або швидко запланувати іншу. Але коли місячний модуль "Аполлона-11 "спускався до поверхні Місяця, сталася непередбачена ситуація: пам'ять комп'ютера переповнилася. На дисплеях спалахнули аварійні сигнали помилок 1201 і 1202, що попереджають про те, що комп'ютер не може виконати всі команди. Згодом виявилося, що це сталося через неправильне положення перемикача радара, який відстежував положення командного модуля на орбіті, щоб у разі аварійної ситуації відправити місячний модуль назад. У фоновому режимі він відправляв на комп'ютер блоки даних, які забивали пам'ять.
Екіпаж «Аполлона-11 » , який не стикався з подібною ситуацією на тренуваннях, і Центр управління польотами постали перед вибором: продовжити чи перервати посадку. Але завдяки коду Маргарет Гамільтон обчислювальна система місячного модуля просто скидала завдання з низьким пріоритетом та виконувала важливі. З Землі було надіслано рішення про приземлення, і за кілька хвилин Ніл Армстронг сказав: «Х'юстон, База Спокою тут. "Орел" приземлився » .
Код для Apollo Guidance Computer (AGC), який написала Маргарет Гамільтон та її команда, знаходитьсяу відкритому доступі . На його основі було створено програмне забезпечення для першої космічної станції США Skylab, шатлів, які виконали понад 100 успішних місій на навколоземній орбіті, та перших цифрових електродистанційних систем управління у літальних апаратах.

NASA