Grace Hopper và trình biên dịch A-0 là câu chuyện về một nhà toán học Hải quân Mỹ, đầu thập niên 1950, đòi cho máy tính tự ghép ra chương trình thay vì bắt con người chép tay. Bà gặp suốt hai mươi năm những lời từ chối, từ "máy chỉ biết làm toán" đến "đó không phải ngôn ngữ thật". Câu chuyện đáng đọc vì cuộc chiến của bà không xoay quanh việc máy thông minh đến đâu, mà là ai được phép ra lệnh cho máy.

Tóm tắt nhanh

Từ tháng 10/1951, Grace Hopper cùng nhóm làm ra A-0, hệ thống tự tìm các đoạn chương trình trong thư viện và ghép chúng thành chương trình hoàn chỉnh; bà gọi việc này là "biên dịch". Bà bị nghi ngờ khi trình bày, rồi tiếp tục đề xuất lập trình bằng câu tiếng Anh. Ý tưởng ấy dẫn tới FLOW-MATIC và góp phần định hình COBOL, ngôn ngữ chạy được trên hai máy của hai hãng khác nhau vào tháng 12/1960.

Diễn biến chính

Đầu thập niên 1950: nghề "chép" ở xưởng UNIVAC

Thợ mã thời đó giữ sổ tay các đoạn chương trình con, cần gì thì chép. Mỗi đoạn đánh số từ dòng không nên khi ghép phải cộng lại từng địa chỉ bằng tay. Trên UNIVAC, dấu cách (chữ delta) dễ bị đọc thành số 4. Hopper tổng kết rằng lập trình viên là những người cộng dở và chép dở.

Máy thì nhanh lên rất nhiều: cỗ Mark I chỉ làm ba phép cộng mỗi giây, UNIVAC làm ba nghìn, bộ nhớ khoảng một nghìn ô chữ. Từ đó bà đặt câu hỏi: sao không để chính cái máy làm việc chép và cộng?

1906–1949: từ Vassar đến Harvard và Philadelphia

Hopper sinh năm 1906 ở New York, học toán ở Vassar, lấy tiến sĩ ở Yale năm 1934. Cuối năm 1943 bà xin vào lực lượng nữ dự bị Hải quân, và mùa hè 1944 được điều về Harvard làm việc với Howard Aiken trên máy Mark I.

Năm 1949 bà từ chối lời mời của IBM để sang công ty của John Mauchly, người không bao giờ mở lời bằng chữ "không". Ở đó, Betty Holberton đã viết chương trình tự sinh ra chương trình sắp xếp dữ liệu.

1951–1953: A-0 và A-2

Tháng 10/1951, bà được giao gom các đoạn chương trình toán của UNIVAC thành thư viện chuẩn. Mỗi đoạn có một tên gọi; người viết chỉ liệt kê tên, máy tự tìm, chép và cộng địa chỉ. Để xử lý những bước nhảy tới đoạn chưa dịch, bà dành một "góc trung lập" trong bộ nhớ, lấy ý từ luật bóng rổ nữ thời nữ sinh. Nhờ vậy máy chỉ cần đọc một lượt.

A-0 chạy được vào tháng 5/1952. Bà viết tài liệu rất kỹ vì biết "chẳng ai chịu tin là nó chạy". Phiên bản A-2 được dùng dựng chương trình tính đạo hàm năm 1953, bác bỏ lời nói rằng máy không làm nổi giải tích. DuPont là khách đầu tiên thử A-2.

1953–1955: đề xuất lập trình bằng tiếng Anh

Nhóm rút ra khoảng ba mươi động từ dùng chung từ hơn năm trăm chương trình. Tháng 12/1953, Hopper đề nghị viết chương trình kinh doanh bằng câu tiếng Anh. Lời đáp là máy không hiểu tiếng Anh; bà đáp rằng bà đâu đòi nó hiểu, mỗi chữ với máy chỉ là một dãy bit.

Bản đề xuất chính thức đề ngày 31/1/1955. Để chứng minh chữ chỉ là bit, nhóm viết thêm bản demo bằng tiếng Pháp và tiếng Đức, và theo lời Hopper, điều đó khiến ban lãnh đạo, nhất là bộ phận tiếp thị, hoảng sợ; bà mất khoảng bốn tháng để trấn an rằng họ chỉ dùng tiếng Anh.

1957–1960: FLOW-MATIC dẫn tới COBOL

Khoảng năm 1957, FLOW-MATIC chạy trên UNIVAC; bộ phận bán hàng đặt tên các sản phẩm theo đuôi "-MATIC". Khách hàng lớn như US Steel đứng ra ủng hộ. Mùa xuân 1959, các cuộc họp về một ngôn ngữ chung cho doanh nghiệp dẫn tới cuộc họp 41 người ở Lầu Năm Góc cuối tháng Năm. Hopper chỉ là cố vấn kỹ thuật, và sau đó tự rút khỏi ủy ban vì thấy mình đang chiến đấu cho ý tưởng riêng.

Ngày 6–7/12/1960, cùng một chương trình COBOL, chỉ sửa vài chỗ nhỏ, chạy được trên máy RCA và máy UNIVAC.

1967–1986: những năm về sau

Năm 1975, Edsger Dijkstra viết rằng COBOL làm què trí óc. Năm 1967 Hải quân gọi Hopper trở lại, sáu tháng kéo dài thành gần hai thập kỷ, phần lớn để xây bộ chương trình kiểm tra các trình biên dịch COBOL. Năm 1986, ở tuổi 79, bà rời Hải quân trong buổi lễ trên tàu USS Constitution.

Điều còn tranh cãi hoặc cần thận trọng

  • "Không ai chịu đụng vào": phần lớn là lời Hopper kể lại sau nhiều chục năm, và các nguồn có dị bản. Theo kịch bản, chỉ hơn một năm sau chuyến bay đi Pittsburgh, DuPont và nhiều cơ quan đã dùng thử A-2.
  • "Trình biên dịch đầu tiên": chính Hopper nói A-0 không phải thứ ta gọi là trình biên dịch ngày nay, và trước hoặc cùng thời đã có chương trình tương tự ở Philadelphia và Manchester (Anh).
  • "Mẹ đẻ của COBOL": COBOL do cả một ủy ban làm ra. Câu "95% là FLOW-MATIC" là lời của chính Hopper nên khó tránh thiên vị.
  • Giai thoại: chuyện tấm bia mộ COBOL giá 15 đô la, chiếc đồng hồ chạy ngược trong phòng làm việc đều là chuyện "người ta kể". Con bướm đêm năm 1947 gắn với tên bà cũng không phải do bà tìm ra.

Vì sao câu chuyện này đáng nhớ?

Thứ cản đường trình biên dịch đầu tiên không nằm trong máy mà nằm trong đầu những người quyết định ai được ra lệnh cho máy. Mỗi lời từ chối, từ "máy chỉ làm số học" đến "máy không hiểu tiếng Anh", về sau đều trở thành chuyện cười.

Hopper không thắng bằng thuật toán mà bằng những lá thư mời sếp xuống phòng máy, bằng khách hàng đứng ra nói giùm, bằng việc sẵn lòng nhường công.

Câu hỏi thường gặp

A-0 là gì?

A-0 là hệ thống Hopper và nhóm làm ra, bắt đầu từ tháng 10/1951 và chạy được vào tháng 5/1952. Nó tự tìm các đoạn chương trình theo tên gọi, chép ra và cộng lại địa chỉ để tạo chương trình hoàn chỉnh.

A-0 có thật sự là trình biên dịch đầu tiên không?

Không chắc. Chính Hopper nói A-0 không phải thứ gọi là trình biên dịch hôm nay, và đã có những chương trình tương tự ở Philadelphia và Manchester.

Grace Hopper có phải mẹ đẻ của COBOL không?

Bà là cố vấn kỹ thuật, và COBOL mang dấu ấn của FLOW-MATIC, nhưng ngôn ngữ do một ủy ban làm ra. Sammet cho rằng bà không phải mẹ đẻ của COBOL.

COBOL chạy được trên hai máy khác nhau khi nào?

Ngày 6–7/12/1960, một chương trình COBOL chạy được trên máy RCA và máy UNIVAC, chỉ sửa vài chỗ nhỏ.

Nguồn tham khảo

  • G. M. Hopper, Keynote Address, ACM SIGPLAN History of Programming Languages Conference (6/1978)
  • Computer History Museum, Oral History of Captain Grace Hopper (phỏng vấn 12/1980)
  • ETHW, Milestones: A-0 Compiler and Initial Development of Automatic Programming, 1951–1952
  • MacTutor (St Andrews), Grace Hopper meets Howard Aiken
  • G. M. Hopper, The Education of a Computer (ACM, Pittsburgh, 5/1952)
  • E. W. Dijkstra, EWD498: How do we tell truths that might hurt? (1975)

Bài viết tóm tắt từ video của kênh; nội dung mang tính giới thiệu.