Маргарет Гефілд Гамільтон
Ранні роки
Маргарет Гефілд народилася в Паолі, штат Індіана, у сім'ї Кеннета і Рут-Естер (уроджена Партінгтон) Гефілдів. Після закінчення середньої школи Генкок в 1954 році, вона почала вивчати математику в університеті штату Мічиган в 1955 році і згодом отримала ступінь бакалавра математики з другою спеціалізацією з філософії в коледжі Ерлгем у 1958 році. Після випуску вона певний час викладала у школі математику і французьку мову, щоб підтримати чоловіка, котрий навчався на бакалавра в Гарварді, з кінцевою метою отримати диплом пізніше. Переїхала до Бостона, штат Массачусетс, з наміром написати диплом з абстрактної математики в університеті Брандейс. Вона згадує жінку-професора математики, яка підтримувала її прагнення вивчати абстрактну математику. Були й інші інші джерела натхнення за межами технологічного світу, в тому числі її батько, філософ і поет, і її дід, директор школи і квакер-священнослужитель. Вона каже, що ці люди надихнули її на вивчення філософії. У 1960 році вона зайняла тимчасову посаду в Массачусетському технологічному інституті з розробки програмного забезпечення для прогнозування погоди на комп'ютерах LGP-30 і PDP-1 (у проект MAC Марвіна Мінскі) для професора Едварда Нортона Лоренца з факультету метеорології. Гамільтон тоді писала, що комп'ютерні науки і програмна інженерія ще не були дисциплінами; натомість програмісти навчалися на роботі з практичним досвідом.
Проект SAGE
З 1961 по 1963 рік вона працювала над проекті Sage у лабораторії Лінкольна, де вона була одною з програмістів, які писали програмне забезпечення для першого комп'ютера AN/FSQ-7 (а саме XD-1) для пошуку ворожих повітряних суден; вона також писала програмне забезпечення для Дослідних лабораторій повітряних сил США у Кембриджі.
Проект SAGE був продовженням проекту "Whirlwind"[en], розпочатого Массачусетським технологічним інститутом для створення комп'ютерної системи, яка могла б прогнозувати погодні системи та відстежувати їхнє переміщення з допомогою симуляторів. Невдовзі SAGE було розроблено для військового використання у зенітній протиповітряній обороні від можливого радянського нападу під час «холодної війни». Гамільтон сказала:
«Вони звикли так робити з новачками, які приходили в цю організацію: призначали їх на цю програму, яку ніхто ніколи не міг зрозуміти чи запустити. Коли я була новачком, вони так само дали її мені. А суть була в тому, що програма була написана підступно, а людина, яка її написала, отримувала задоволення від того, що всі його коментарі були грецькою і латиною. Отож, мене призначили на цю програму, і я насправді змусила її працювати. Вона навіть видавала відповіді латиною і грецькою. Я була першою, хто змусив її працювати.»
Саме завдяки зусиллям Маргарет які вона доклала до цього проекту, вона стала кандидатом на посаду в NASA в якості провідного розробника програмного забезпечення польотів для «Аполлон».
NASA
Гамільтон потім приєдналася до Лабораторії Чарльза Старка Дрейпера Массачусетського технологічного інституту, яка в той час працювала над космічною місією «Аполлон». Згодом вона керувала командою, якій приписується розробка програмного забезпечення для Аполлона і Skylab. Команда Гамільтон відповідала за розробку бортового програмного забезпечення, що включало алгоритми, розроблені різними старшими вченими командного модуля Аполлона, посадкового модуля і далі Skylab. Інша частина її команда змоделювала і розробила програмне забезпечення систем, яке включало програмне забезпечення для виявлення помилок і відновлення, таких як перезавантаження і режими показу (також «пріоритетні покази», англ. Priority Displays), що Гамільтон спроектувала і розробила. Вона напрацьовувала практичний досвід у часи, коли курси комп'ютерних наук були рідкістю, а курси програмної інженерії ще не існували.
Її спеціалізацією були проектування систем і розробка програмного забезпечення, моделювання підприємств і процесів, парадигми розробки, формальні мови моделювання систем, системно-орієнтовані об'єкти для моделювання і розробки систем, автоматизовані середовища життєвого циклу, методи максимізації надійності програмного забезпечення і повторного використання, аналіз предметної області, досягнення коректності за допомогою вбудованих властивостей мов, техніки з відкритою архітектурою для надійних систем, повна автоматизація життєвого циклу, забезпечення якості, плавна інтеграція, техніки виявлення помилок і відновлення, людино-машинний інтерфейс, операційні системи, техніки наскрізного тестування та управління життєвим циклом.
Аполлон 11
B решті решт, Маргарет Гамільтон стала директором і науковим керівником розробки програмного забезпечення для космічної програми "Аполлон".
Команда Гамільтон відповідала за розробку бортового програмного забезпечення, що включало алгоритми, розроблені різними старшими вченими командного модуля Аполлона, посадкового модуля і далі Skylab.
Це було дуже важке завдання: програмісти працювали цілодобово. Тоді не було курсів з програмування, все доводилося пізнавати досвідченим шляхом. Часто вечорами та у вихідні дні Маргарет брала на роботу свою дочку Лорен, яка спостерігала за тим, як мама використовує блок дисплея та клавіатури симулятора (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 успішних місій на навколоземній орбіті, та перших цифрових електродистанційних систем управління у літальних апаратах.
Бізнес
З 1976 по 1984 рік, Гамільтон була директором компанії, яку вона співзаснувала, під назвою Higher Order Software (HOS), для подальшого розвитку ідей попередження помилок і відмовостійкості, що базувались на її досвіді в MIT. Вони створили продукт під назвою USE.IT, на основі методики HOS, розробленої в MIT. Він успішно використовувався у багатьох урядових проектах. Одним з важливих проектів було формалізувати і реалізувати перший обчислюваний IDEF, C-IDEF для повітряних сил, що ґрунтувався на HOS.
Одна критична оцінка стверджувала, що крім декількох незалежних відгуків, методика HOS отримала невеликий аналіз, якщо не рахувати консультантів, які співпрацюють з компанією. Ця оцінка, проведена консультантом ВМС США, стверджувала, що «література HOS, як правило, рекламує їхні ідеї і продукти більше, ніж робить внесок по суті у галузь комп'ютерних наук.» Едсгер Дейкстра описав програмне забезпечення USE.IT, як «механізований допоміжний засіб для застосування застарілих технологій». Детальний аналіз теорії HOS і мови AXES використав Гарел для розробки похідної мови для більш сучасної форми структурованого програмування, похідної від HOS, під назвою мова програмування And/Or. Посилаючись на класичну працю Дейкстри про структурне програмування, Девід Гарел[en] зазначає: «Як стане ясно, „шари“, в які організована програма, а це лежить в основі ідеї структурного програмування, відповідають рівням дерева». Далі Гарел показує, як HOS і похідна від нього мова програмування And/Or пов'язані з математичною логікою, теорією ігор і штучного інтелекту. Інші використовували HOS для формалізації семантики лінгвістичних квантифікаторів[41] та формалізації дизайну надійних вбудованих систем реального часу.
Гамільтон покинула компанію HOS в 1985 році. У березні 1986 року вона стала засновницею і генеральним директором Hamilton Technologies, Inc. в Кембриджі, штат Массачусетс. Діяльність компанії зосереджувалася навколо мови Universal Systems Language (USL) і пов'язаного з нею автоматизованого середовища, та 001 Tool Suite, заснованого на парадигмі «розробки перед фактом» (DBTF) для проектування систем і розробки програмного забезпечення.
Спадщина
Гамільтон придумала термін «програмна інженерія» у часи космічної місії Аполлон. Маргарет докладно описує, як вона прийшла до терміну «програмна інженерія»:
«Коли я вперше придумала цей термін, ще ніхто не чув про це раніше, принаймні в нашому світі. Це було постійним жартом упродовж тривалого часу. Вони любили підсміюватися з мене за мої радикальні ідеї. Це був незабутній день, коли один з найбільш шанованих гуру апаратного забезпечення пояснив усім на зборах, що він згоден зі мною, що процес створення програмного забезпечення має також розглядатися як інженерна дисципліна, нарівні з апаратною інженерією. Не тому, що він приймає новий "термін" як такий, а тому, що ми заслужили його і прийняття від інших у кімнаті цю присутність в інженерній галузі в своєму власному праві.»
З плином часу, термін «програмна інженерія» отримав таку ж повагу, як і будь-яка інша дисципліна. «В MIT Гамільтон допомагала зі створенням основоположних принципів комп'ютерного програмування, оскільки працювала зі своїми колегами над написанням коду для першого в світі портативного комп'ютера». Інновації Маргарет виходять далеко за відігравання важливої ролі в доставці людей на Місяць. Гамільтон, як і багато інших жінок-інженерів, кинула виклик чоловічому домінуванню у галузі STEM того часу, щоб дозволити входженню жінок у ці галузі в прийдешні роки.
Автори книжки про Site Reliability Engineering вважають що вона була першим Site Reliability інженером.