Manchester Baby và EDSAC là hai cỗ máy tính lưu chương trình ra đời ở nước Anh gần như cùng lúc, chỉ cách nhau khoảng mười một tháng. Bài này kể lại cuộc chạy đua giữa Manchester (tháng 6/1948) và Cambridge (tháng 5/1949), và vì sao câu hỏi «ai thắng» khó có một đáp án duy nhất. Câu chuyện đáng đọc vì từ đó nghề lập trình, hàng đợi và việc gỡ lỗi bắt đầu thành hình.
Tóm tắt nhanh
Manchester thắng ở phép thử cỗ máy: ngày 21/6/1948, Baby là máy đầu tiên chạy một chương trình lưu trong bộ nhớ điện tử đọc ghi được. Cambridge thắng ở phép thử hữu dụng: EDSAC, chạy từ 6/5/1949, có người dùng xếp hàng, có thư viện chương trình con và có cuốn sách lập trình đầu tiên. Một bên chứng minh cỗ máy có thể nhớ, bên kia cho thấy con người có thể sống cùng cỗ máy, kể cả những lỗi của nó.
Diễn biến chính
1945–1946: Bản nháp của von Neumann và câu hỏi «nhớ ở đâu?»
Tháng 6/1945, John von Neumann soạn bản thảo «First Draft of a Report on the EDVAC»: lệnh và dữ liệu nên nằm chung một bộ nhớ. Theo hồi ký của Maurice Wilkes, tháng 5/1946 Leslie Comrie mang một bản về Cambridge và cho ông mượn đúng một đêm, vì thời đó chưa có máy photocopy. Wilkes đọc gần thâu đêm và nhận ra đây là «thứ thật».
Wilkes đến lớp học hè ở trường Moore (Philadelphia) khá muộn nên chỉ dự khoảng hai tuần cuối. Theo lời kể, trên tàu Queen Mary trở về ông đã phác cấu trúc của EDSAC. Khi ấy mọi nhóm làm máy đều vấp một bức tường: chưa có bộ nhớ nhanh và đáng tin. Hai lối đi là đường dây trễ thuỷ ngân (Cambridge) và ống tia âm cực tích điện (Manchester).
1946–1947: Williams, Kilburn và chiếc ống nhớ
Freddie Williams là kỹ sư radar. Người ta kể ý tưởng đến trong một chuyến thăm phòng thí nghiệm Bell: nếu màn hình giữ được vệt sáng thì cũng giữ được một con số. Đầu tháng 10/1946, ống của ông nhớ được một bit. Điện tích rò đi nhanh nên máy phải liên tục đọc rồi viết đè lại, nguyên lý mà bộ nhớ DRAM sau này vẫn dùng.
Williams chuyển về Đại học Manchester cùng Tom Kilburn. Williams kể rằng khi đó cả hai chưa biết gì về máy tính. Đến cuối năm 1947, một ống sáu inch giữ được 2.048 bit trong bốn giờ.
Tháng 6/1948: Baby chạy
Từ tháng 12/1947, nhóm của Williams, Kilburn và Geoff Tootill dựng máy bằng đồ thừa thời chiến, dưới sự bảo trợ của Max Newman. Baby được làm nhỏ hết mức: 32 ô nhớ, khoảng 550 bóng đèn, chỉ có phép trừ. Mục đích của nó là thử ống nhớ chứ không phục vụ ai.
Ngày 21/6/1948, chương trình 17 lệnh được nạp bằng công tắc, từng bit. Theo hồi ức của Williams, các chấm sáng nhảy loạn, rồi «một ngày» chúng dừng lại và đáp số mong đợi hiện ra: 131.072, ước số lớn nhất của 2 mũ 18. Tháng 7, Tootill sửa chương trình và Alan Turing gửi một chương trình chia dài.
1946–1949: Cambridge dựng một dịch vụ
Wilkes chọn thuỷ ngân vì công nghệ này đã chạy trong radar suốt chiến tranh. EDSAC có các bể thuỷ ngân, đầu vào là băng giấy, đầu ra là máy điện báo. Năm 1947, hãng Lyons gửi ba nghìn bảng để hỗ trợ. Khác Manchester, Wilkes muốn một cỗ máy đáng tin cho các nhà khoa học khắp trường. Sau này Lyons chép thiết kế để dựng máy LEO tính lương và hàng tồn kho.
Tháng 5–6/1949: Cuốn sổ EDSAC và chữ «sai» đầu tiên
Ngày 6/5/1949, sổ vận hành ghi máy chạy lần đầu: bảng bình phương in ra sau 2 phút 35 giây. Ngày 7/5, sổ ghi chương trình bảng số nguyên tố bị sai. Ngày 9/5, bản sửa chạy được, tìm đến số nguyên tố 4.759 trong 40 phút. Máy sau đó hỏng từ 28/5 đến 19/6. Ngày 23/6/1949, sổ ghi dòng có dấu chấm than: «hội nghị máy tính đầu tiên của châu Âu».
Theo lời kể, trong tháng 6/1949 Wilkes sửa chương trình 126 dòng trên cầu thang và nhận ra phần lớn quãng đời còn lại của ông sẽ dành để tìm lỗi. David Wheeler đưa ra cú nhảy Wheeler, tức chương trình con, cùng bộ nạp nhỏ cho phép viết bằng ký hiệu dễ đọc. Đến 1951 thư viện có 87 chương trình con, và Wilkes, Wheeler, Gill in cuốn sách lập trình đầu tiên.
Sau 1948: hai di sản khác nhau
Manchester đi tiếp: bắt tay dựng Mark 1 từ tháng 8/1948, rồi hãng Ferranti biến hậu duệ của Baby thành máy điện tử đầu tiên được làm ra để bán cho khách. Nhưng ống Williams chỉ đạt đỉnh trong vài năm rồi nhường chỗ cho bộ nhớ lõi từ. Còn ở Cambridge, trong phòng máy có sợi dây treo băng giấy chờ nạp, tức hàng đợi, chiếc loa giúp người ta nghe lỗi, và những người dùng như Fisher, Kendrew, Perutz, Huxley, Ryle (bốn người sau cùng đoạt Nobel). EDSAC tắt máy ngày 11/7/1958.
Điều còn tranh cãi hoặc cần thận trọng
- Con số 52 phút có thể gộp hai sự kiện: trang của Đại học Manchester kể lần chạy đầu dùng số nhỏ hơn, vài ngày sau mới đến bài toán lớn.
- Chuyện linh kiện từ Bletchley được tìm về Manchester chỉ là lời kể; chưa ai chỉ ra được từng bộ phận. Ảnh hưởng của Turing và Newman lên thiết kế Baby vẫn được giới sử học tranh luận, còn người Manchester nhấn mạnh công của Williams và Kilburn.
- Ai viết chương trình bình phương đầu tiên của EDSAC chưa thống nhất: có nguồn ghi Wilkes, có nguồn ghi Beatrice Worsley.
- Câu nói trên cầu thang thường bị trích thành «phần lớn đời tôi», trong khi Wilkes viết «phần lớn quãng đời còn lại».
- Cảnh Wilkes đọc bản nháp trong một đêm và chuyện ông chuyển ngân sách phòng cho dự án là hồi ức hoặc lời kể, không phải hồ sơ.
Vì sao câu chuyện này đáng nhớ?
Câu hỏi «ai thắng» chỉ có nghĩa khi nói rõ mình đo cái gì. Đo cỗ máy, Manchester thắng gọn gàng và xứng đáng. Nhưng một cỗ máy chạy đúng một lần chỉ chứng minh rằng điều đó làm được.
Nghề lập trình cần thứ khác: lỗi được ghi xuống, đoạn mã được chia sẻ, người lạ xếp hàng chờ máy. Cambridge có những thứ đó trước. Thành tựu của một công nghệ có thể có hạn dùng, như ống Williams, còn thói quen của con người thì ở lại lâu hơn. Và ngay cả chương trình của người đầu tiên biết mình sẽ dành đời để tìm lỗi, về sau vẫn bị một người dùng tìm ra thêm một lỗi sau bốn mươi mốt năm (nhà sử học Martin Campbell-Kelly, 1992).
Câu hỏi thường gặp
Manchester Baby là gì?
Baby (Small-Scale Experimental Machine) là cỗ máy thử nghiệm ở Đại học Manchester, nặng gần một tấn, có 32 ô nhớ mỗi ô 32 bit và chỉ làm phần cứng phép trừ. Nó được dựng để thử ống nhớ của Williams.
Baby chạy chương trình đầu tiên khi nào?
Ngày 21/6/1948, với chương trình 17 lệnh tìm ước số lớn nhất do Kilburn viết. Con số 52 phút thường gắn với ngày này, nhưng trang lịch sử của Đại học Manchester cho rằng lần chạy đầu dùng số nhỏ hơn, vài ngày sau mới đến bài toán lớn.
EDSAC chạy lần đầu khi nào?
Ngày 6/5/1949, theo sổ vận hành EDSAC: máy in bảng bình phương các số từ 0 đến 99 trong 2 phút 35 giây. Ngày hôm sau, sổ ghi chương trình bảng số nguyên tố bị sai.
Vậy Manchester hay Cambridge thắng?
Tuỳ cách đo. Đo cỗ máy chạy chương trình lưu trong bộ nhớ điện tử thì Manchester về đích trước; đo cộng đồng người dùng, thư viện mã và nghề lập trình thì Cambridge đi trước.
Vì sao Baby không được coi là máy tính đầu tiên?
Bảng ghi công của IEEE chọn chữ rất kỹ: máy đầu tiên chạy chương trình lưu trong bộ nhớ điện tử đọc ghi được. Họ không viết rằng đó là máy tính đầu tiên.
Nguồn tham khảo
- IEEE Milestone về Manchester Baby (ETHW)
- Computer50, Đại học Manchester: Mark 1 Story, The Baby
- Digital60: «The Baby»
- IEEE Spectrum: «The Birth of RAM»
- Sổ vận hành EDSAC (Computer Laboratory, Cambridge)
- EDSAC99, Computer Laboratory, Cambridge
- IEEE Computer Society: Computer Pioneers, Maurice Wilkes
- Wikipedia: Manchester Baby, EDSAC, Maurice Wilkes
- Russ Cox: bài viết về lỗi trong chương trình EDSAC
Bài viết tóm tắt từ video của kênh; nội dung mang tính giới thiệu.


