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

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

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

Ранні роки

Фотографія Маргарет Гамільтон, зроблена в 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), що Гамільтон спроектувала і розробила. Вона напрацьовувала практичний досвід у часи, коли курси комп'ютерних наук були рідкістю, а курси програмної інженерії ще не існували.
Її спеціалізацією були проектування систем і розробка програмного забезпечення, моделювання підприємств і процесів, парадигми розробки, формальні мови моделювання систем, системно-орієнтовані об'єкти для моделювання і розробки систем, автоматизовані середовища життєвого циклу, методи максимізації надійності програмного забезпечення і повторного використання, аналіз предметної області, досягнення коректності за допомогою вбудованих властивостей мов, техніки з відкритою архітектурою для надійних систем, повна автоматизація життєвого циклу, забезпечення якості, плавна інтеграція, техніки виявлення помилок і відновлення, людино-машинний інтерфейс, операційні системи, техніки наскрізного тестування та управління життєвим циклом.