Margaret Hamilton (nhà khoa học)

"Đừng nhầm lẫn với diễn viên Margaret Brainard Hamilton."Margaret Heafield Hamilton (sinh ngày 17 tháng 8 năm 1936) là một nhà khoa học máy tính, kỹ sư hệ thống, và là chủ doanh nghiệp. Bà là Giám đốc Bộ phận Công nghệ Phần mềm của phòng thí nghiệm khoa học ứng dụng MIT, nơi đã phát triển phần mềm điều khiển bay cho chương trình Apollo. Một trong những khoảnh khắc quan trọng của sứ mệnh Apollo 11, nhóm của Hamilton đã cứu nguy trong quá trình đáp xuống mặt trăng. Năm 1986, bà trở thành chủ tịch và tổng giám đốc điều hành của công ty Hamilton Technologies, Inc. ở Cambridge, Massachusetts. Công ty đã phát triển ngôn ngữ lập trình Universal Systems Language dựa trên biến hệ của Development Before the Fact (DBTF) dành cho thiết kế hệ thống và phần mềm của bà.

Hamilton đã xuất bản hơn 130 bài báo, biên bản, và báo cáo liên quan đến 60 dự án và 6 dự án lớn mà bà đã từng tham gia.

==Giai đoạn đầu đời==
Margaret Heafield là con của Kenneth Heafield và Ruth Esther Heafield (nhũ danh Partington). Bà tốt nghiệp tại trường trung học Hancock năm 1954, và đậu bằng cử nhân (B.A.) chuyên ngành toán học với một ngành phụ triết học tại Earlham College năm 1958. Sau khi tốt nghiệp, Margaret có thời gian ngắn dạy toán và tiếng Pháp trong trường trung học khi chồng bà đang chuẩn bị cho việc tốt nghiệp đại học. Bà chuyển đến Boston, Massachusetts để nghiên cứu sau đại học chuyên ngành toán học trừu tượng tại đại học Brandeis.

Năm 1960 bà vào một vị trí tạm thời tại MIT để phát triển phần mềm cho dự báo thời tiết trên các máy tính LGP-30 và PDP-1 (trong dự án MAC của Marvin Minsky) cho giáo sư Edward Norton Lorenz ở khoa khí tượng học. Vào thời đó, khoa học máy tính và kỹ thuật phần mềm vẫn chưa được giảng dạy; thay vào đó, các lập trình viên học khi làm việc bằng kinh nghiệm thực tiễn.

Từ năm 1961 đến 1963, bà làm việc cho dự án SAGE tại phòng thí nghiệm Lincoln. Tại đây, bà là một trong những lập trình viên đã viết phần mềm cho máy tính AN/FSQ-7 (XD-1) đầu tiên, để tìm kiếm máy bay "địch"; bà cũng viết phần mềm cho Phòng thí nghiệm nghiên cứu không quân Cambridge.

Vài năm sau, bà gửi đơn xin tham gia một dự án mới: viết Mã nguồn cho hệ thống máy tính của Tàu vũ trụ đưa con người lên Mặt trăng. Năm 1965, Hamilton trở thành người đứng đầu nhóm lập trình tại Phòng Thí nghiệm Draper của MIT.

== Tham gia Chương trình Apollo==
Hamilton sau đó đã tham gia vào Charles Stark Draper Laboratory tại MIT, vào lúc đó nơi này đang làm việc cho sứ mệnh không gian Apollo. Cuối cùng bà trở thành giám đốc và giám sát viên lập trình phần mềm cho Apollo 11 và Skylab.

Tại NASA, đội của Hamilton chịu trách nhiệm về phần mềm hướng dẫn trên tàu Apollo, cần thiết cho việc điều hướng và hạ cánh trên mặt trăng, và các biến thể của nó được sử dụng trong nhiều nhiệm vụ (bao gồm cả nhiệm vụ Skylab sau đó).

Ban đầu NASA không thực sự cho rằng phần mềm đóng vai trò quan trọng trong Chương trình Apollo. Tuy nhiên, NASA sớm nhận ra rằng các nhiệm vụ sẽ thất bại nếu không có phần mềm phù hợp. Vào năm 1968, khoảng 400 Lập trình viên bắt đầu làm việc trong nhóm phần mềm của Margaret Hamilton. Họ viết và thử nghiệm phần mềm cho 2 máy tính hướng dẫn Apollo, được đặt tại module chỉ huy và module Mặt trăng, hay còn gọi là Eagle (Đại bàng) để đưa các phi hành gia tới Mặt trăng và trở về Trái Đất.

Module chỉ huy được gắn vào phần đầu của module phục vụ - nơi lưu trữ vật tư, nhiên liệu và một động cơ tên lửa cỡ lớn. NASA gọi toàn bộ cấu trúc này là module chỉ huy - phục vụ (Command service module - CSM). Khi rời khỏi Trái Đất, CSM mang theo module Mặt trăng. Khi nhiệm vụ hoàn thành, module mặt trăng được đưa lên quỹ đạo Mặt trăng còn CSM sử dụng động cơ tên lửa mang theo đưa các phi hành gia quay về Trái Đất trong 3 ngày.

Việc vận hành một máy bay bắt buộc phải cần đến một hệ thống ứng dụng vô cùng phức tạp với độ chính xác cực cao. Với các Thiết bị vũ trụ thì sự phức tạp đó lại càng được đẩy lên cao gấp bội. Sai sót nào trong hệ thống phần mềm là điều tuyệt đối không thể xảy ra, bởi mọi trục trặc kỹ thuật, dù là nhỏ nhất, đều có thể khiến công sức của cả một tập thể hàng nghìn cá nhân trong nhiều năm ròng đổ bể, và quan trọng hơn là tính mạng của các Nhà du hành vũ trụ. Việc lập trình phần mềm cho sứ mệnh không gian vốn đã không đơn giản, và nó càng khó khăn hơn ở thời điểm những năm 1960. Hamilton và đội ngũ của mình đã phải viết tay những đoạn ngôn ngữ máy trên giấy, dùng máy bấm lỗ để dập các lỗ trên giấy bìa và đưa vào máy tính để chúng đọc và làm theo chỉ dẫn.

Máy tính hướng dẫn Apollo, được đặt ở cả module chỉ huy và module Mặt trăng có nhiệm vụ hỗ trợ điều hướng và kiểm soát tàu vũ trụ, sử dụng công nghệ "bộ nhớ lõi", với các dây được luồn qua lõi kim loại theo cách đặc biệt để lưu mã ở Hệ nhị phân. Bộ nhớ lõi từ có cấu tạo gồm những vòng đệm nhỏ làm bằng vật liệu Ferrit (sắt), được xâu thành chuỗi trên dây điện. Mỗi chiếc vòng có thể lưu trữ một Bit, và giá trị của bit theo Hệ nhị phân được xác định bởi hướng từ thông của chúng. Các dây điện được xỏ qua lỗ trên vòng có thể vừa nhận biết (đọc) vừa thay đổi (ghi) độ từ hóa của lõi. Các lõi cực kỳ nhỏ và cần được xâu dây qua bằng những bàn tay khéo léo, với sự trợ giúp của Kính lúp.

Trong những sứ mệnh vũ trụ đầu tiên của Chương trình Apollo, phần mềm trên máy tính hướng dẫn được cài thủ công lên một bộ lưu trữ mật độ cao có tên "core rope memory" (bộ nhớ xâu lõi), tương tự như bộ nhớ lõi từ. Để chế tạo bộ nhớ, NASA đã thuê nhiều phụ nữ lành nghề trong lĩnh vực dệt may, cũng như từ Waltham Watch Company (chuyên chế tạo Đồng hồ), bởi công việc này đòi hỏi sự chính xác cực cao khi thao tác với các lõi từ. Các công nhân được bố trí ngồi đối diện nhau trên những chiếc bàn dài, xỏ dây điện qua lại theo một ma trận bao gồm các lỗ xâu vô cùng nhỏ bé, mỗi lỗ như vậy sẽ chứa một hạt lõi từ tính. Một lõi có dây xâu qua sẽ biểu diễn cho giá trị "1", ngược lại là "0".

Bộ nhớ xâu lõi còn có tên gọi khác là "LOL memory", trong đó LOL là từ viết tắt của "Little Old Ladies" (những quý bà bé nhỏ), chỉ những người đã lắp ráp nên nó. Lý do là giống như nghề dệt may và phần lớn các hoạt động thủ công khác có lịch sử gắn với người phụ nữ, công việc xâu bộ nhớ lõi cũng được giao cho họ. Hoạt động giám sát sản xuất được thực hiện bởi các "rope mother" (dù "mother" là từ chỉ mẹ), thường là đàn ông. Tuy nhiên, sếp của "rope mother" lại là một phụ nữ, và đó là Margaret Hamilton.

==Công việc kinh doanh==
Từ 1976 đến 1984, Hamilton là tổng giám đốc điều hành của một công ty tên Higher Order Software (HOS) mà bà là đồng sáng lập. Công ty này tạo ra một sản phẩm gọi là USE.IT, dựa trên phương pháp học HOS.

Năm 1986, bà trở thành chủ tịch kiêm tổng giám đốc điều hành của Hamilton Technologies, Inc. tại Cambridge, Massachusetts. Công ty đã phát triển ngôn ngữ lập trình Universal Systems Language (USL) và môi trường liên kết tự động của nó, 001 Tool Suite, dựa trên mô hình của Development Before The Fact (DBTF) dành cho thiết kế hệ thống và phát triển phần mềm của bà.

==Thành tựu==
Bên cạnh những đóng góp tại NASA, bà còn là người rất có uy tín trong cộng đồng Lập trình máy tính, đặc biệt là với việc đề ra một loạt thuật ngữ kỹ thuật phần mềm trực tuyến vào những năm 1960. Hamilton được ghi nhận là người đã đặt ra thuật ngữ "software engineering" (công nghệ phần mềm). Trong lĩnh vực này bà là một trong những người đã phát triển các khái niệm về phần mềm không đồng bộ, giải thuật định thời ưu tiên, kiểm thử end-to-end, và mô hình human-in-the-loop.

===Giải thưởng===
- Năm 1986, Giải Augusta Ada Lovelace.
- Năm 2003, Giải thưởng hoạt động không gian đặc biệt của NASA dành cho những đóng góp về khoa học và kỹ thuật. Giá trị giải thưởng lên đến $37.200, là khoản tiền thưởng từng trao cho cá nhân lớn nhất trong lịch sử NASA.
- Năm 2009, Outstanding Alumni Award, Earlham College.
- Năm 2016, Tổng thống Hoa Kỳ Barack Obama đã trao tặng bà Huân chương Tự do Tổng thống với phát biểu đáng nhớ: ""Các phi hành gia không có nhiều thời gian, nhưng may thay họ đã có Margaret Hamilton"".

==Đời sống cá nhân==
Bà gặp người chồng là James Cox Hamilton khi còn học ở đại học Earlham. Họ kết hôn vào cuối thập niên 1950 sau khi Margaret có được tấm bằng cử nhân. Họ có một con gái tên là Lauren. Cặp đôi cuối cùng đã li dị.

== Ấn phẩm ==
- M. Hamilton (1994), "Inside Development Before the Fact," câu chuyện trang bìa, Special Editorial Supplement, 8ES-24ES. "Electronic Design", Apr. 1994.
- M. Hamilton (1994), "001: A Full Life Cycle Systems Engineering and Software Development Environment," câu chuyện trang bìa, Special Editorial Supplement, 22ES-30ES. "Electronic Design", Jun. 1994.
- M. Hamilton, Hackler, W. R.. (2004), Deeply Integrated Guidance Navigation Unit (DI-GNU) Common Software Architecture Principles (đã chỉnh sửa 29/12/2004), DAAAE30-02-D-1020 và DAAB07-98-D-H502/0180, Picatinny Arsenal, NJ, 2003-2004.
- M. Hamilton and W. R. Hackler (2007), "Universal Systems Language for Preventative Systems Engineering," "Proc. 5th Ann. Conf. Systems Eng. Res." (CSER), Stevens Institute of Technology, Mar. 2007, bài #36.
- M. Hamilton and W. R. Hackler (2007), "A Formal Universal Systems Semantics for SysML", 17th Annual International Symposium, INCOSE 2007, San Diego, CA, Jun. 2007.
- M. Hamilton and W. R. Hackler (2008), "Universal Systems Language: Lessons Learned from Apollo", IEEE Computer, Dec. 2008.