Маргарет Гефілд Гамільтон
Ранні роки
Маргарет Гефілд народилася в Паолі, штат Індіана, у сім'ї Кеннета і Рут-Естер (уроджена Партінгтон) Гефілдів. Після закінчення середньої школи Генкок в 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), що Гамільтон спроектувала і розробила. Вона напрацьовувала практичний досвід у часи, коли курси комп'ютерних наук були рідкістю, а курси програмної інженерії ще не існували.
Її спеціалізацією були проектування систем і розробка програмного забезпечення, моделювання підприємств і процесів, парадигми розробки, формальні мови моделювання систем, системно-орієнтовані об'єкти для моделювання і розробки систем, автоматизовані середовища життєвого циклу, методи максимізації надійності програмного забезпечення і повторного використання, аналіз предметної області, досягнення коректності за допомогою вбудованих властивостей мов, техніки з відкритою архітектурою для надійних систем, повна автоматизація життєвого циклу, забезпечення якості, плавна інтеграція, техніки виявлення помилок і відновлення, людино-машинний інтерфейс, операційні системи, техніки наскрізного тестування та управління життєвим циклом.
Аполлон 11
Аполлон 11
В один із критичних моментів місії Аполлон 11 бортовий комп'ютер Аполлона разом з бортовим програмного забезпеченням польоту попередив аварійне завершення роботи програми висадки на Місяць. За три хвилини до того, як Місячний модуль досяг поверхні Місяця, спрацювало кілька комп'ютерних сигналізацій. Комп'ютер був перевантажений перериваннями, викликаними неправильними фазами електропостачання до радара модуля.[22][23][7] Програмні сигнали сповістили про «виконавче перевантаження», що означало, що бортовий комп'ютер не зміг завершити всі свої завдання в режимі реального часу і довелося відкласти деякі з них.[24] Асинхронне виконання, яке розробив Дж. Голком-Ланінг[en],[22][25] команда Гамільтон використала для розробки асинхронного бортового програмного забезпечення: