VietTechiesHIỂU CÔNG NGHỆ. MỞ GÓC NHÌN.
☰ Chuyên mục

Donald Knuth dự tính TeX sẽ mất một năm. Cuốn sách mà ông làm TeX để in vẫn khiến ông thất vọng.

13/10/2026 · VietTechies · Biên tập

Donald Knuth đeo kính, mặc áo len xám, trong một bức ảnh chụp năm 2011, bên cạnh tên ông và chữ T vẽ bằng các điểm ở ba độ phân giải.


Đầu năm 1977, Donald Knuth quyết định tự viết một chương trình sắp chữ, hệ thống về sau trở thành TeX, vì ấn bản mới cuốn The Art of Computer Programming của ông trông xấu đến mức ông không chịu nổi. Ông dự tính việc rẽ ngang này sẽ mất một năm. Phải đến năm 1986, ông mới có được những phông chữ khiến mình hài lòng.

Rắc rối bắt đầu từ bản in thử (những trang in ra để tác giả soát lại trước khi in chính thức) cho ấn bản thứ hai của Tập 2. Trong một cuộc phỏng vấn lịch sử truyền khẩu năm 2007 cho Bảo tàng Lịch sử Máy tính (Computer History Museum), Knuth nhớ lại rằng nghề in “những năm 60 làm bằng chữ chì đúc nóng, nhưng đến những năm 70 thì người ta chuyển sang dùng phim”. Toàn bộ cuốn sách của ông đã được sắp chữ lại bằng công nghệ mới. “Phông chữ mới trông thật kinh khủng!” Các chỉ số dưới mang một kiểu chữ khác với những ký tự cỡ lớn, còn khoảng cách giữa các chữ thì “rất tệ”.

“Tôi không chịu nổi khi thấy sách của mình xấu đến thế”, ông nói. “Tôi đã dồn bao nhiêu thời gian vào đó, mà chẳng ai có thể tự hào về một thứ trông thảm hại như vậy.”

Nhà xuất bản thử lại, lần này dùng những phông chữ làm ở Ba Lan nhằm mô phỏng bộ chữ thời in chữ chì. Phiên bản ấy được gửi về cho Knuth “vào đầu năm 77”, và theo lời ông thì “tệ hết thuốc chữa”.

Tháng 2 năm đó, khi đang là thành viên hội đồng kỳ thi tổng hợp của Stanford, ông được xem bản in thử cuốn sách mới về trí tuệ nhân tạo của Patrick Winston. Bản in thử ấy được làm tại công ty Information International, Inc. (III) bằng một quy trình mới mà theo lời Knuth là “hoàn toàn kỹ thuật số, toàn là điểm mực”. Thay vì ảnh chụp và thấu kính, III dùng thuật toán và bit.

“Tôi biết đó chỉ là các bit, nhưng trông chúng tuyệt đẹp”, Knuth nói.

Vì sao mật độ điểm đủ cao khiến Knuth đổi ý

Knuth lớn lên ở Wisconsin, nơi mà theo lời ông, “chúng tôi không bao giờ ăn bơ thực vật”. Ông từng cho rằng sắp chữ kỹ thuật số “hẳn phải giống như bơ thực vật. Không thể là hàng thật được”. Ở Phòng thí nghiệm Trí tuệ Nhân tạo (AI) của Stanford, nơi ông làm việc, chiếc máy in Xerox Graphics Printer cho ra những điểm thô hơn nhiều, và bản in từ máy này “có tưởng tượng thế nào cũng chẳng thể gọi là đẹp”. Còn ở III, theo trí nhớ của ông, bản in đạt khoảng 1.000 điểm trên mỗi inch (dpi), và “không ai phân biệt nổi”.

Knuth rút ra kết luận: ở độ phân giải đủ cao, một trang in là một lưới điểm, mà lưới điểm là thứ một chương trình có thể tính ra. Một tuần sau, ông bay xuống Nam California để tìm hiểu xem ở III người ta đang làm gì.

Ông vốn định dành kỳ nghỉ phép học thuật (sabbatical) năm 1977–78 ở Chile để viết Tập 4. Ông hủy kế hoạch đi Chile, và theo lời ông kể, ông đã viết thư báo với phía chủ nhà bên đó rằng mình sẽ chuyển sang làm về nghệ thuật sắp chữ. Theo ông nhớ lại, lập luận của ông khi ấy là: “Chỉ toàn số 0 với số 1 thôi. Tôi có thể đưa những điểm ấy lên trang giấy, và tôi phải viết chương trình này.”

“Có điều, theo chỗ tôi biết thì việc này sẽ mất của tôi một năm”, ông nói. Chương trình này vốn dành cho hai người dùng: chính ông và thư ký Phyllis của ông.

TeX không còn chỉ dành cho hai người

Bản ghi nhớ thiết kế đầu tiên của Knuth về TeX đề ngày 13 tháng 5 năm 1977, và ví dụ đầu tiên trong đó là một đoạn văn bản lấy từ Tập 2. “Tôi đâu chỉ có hai người dùng”, Knuth kể. “Lúc đầu là 10 người, rồi 100, rồi 1.000. Cứ mỗi lần con số ấy tăng gấp mười, tôi lại phải thay đổi hệ thống.” Theo lời Knuth, đến năm 1981, phiên bản đầu tiên (về sau được gọi là TeX78) đã được chuyển sang chạy trên 200 môi trường khác nhau.

Cuốn sách mà ông làm TeX để in vẫn khiến ông thất vọng

Theo trí nhớ của Knuth, ấn bản mới của Tập 2 ra mắt năm 1981, được sắp chữ bằng những phông chữ do chính ông thiết kế. Ông có trong tay thứ mà ông gọi là “thiết bị sắp chữ tốt nhất”, một cỗ máy đạt khoảng 5.000 điểm trên mỗi inch, và ông đã viết một chương trình cho bộ vi xử lý 8 bit bên trong máy. Mọi bản in thử từ cỗ máy này đều trông đẹp.

Rồi cuốn sách in xong được gửi qua bưu điện đến tay ông. Knuth gọi ngày hôm đó là “một trong những nỗi thất vọng lớn nhất trong cả cuộc đời tôi”. Lẽ ra cuốn sách ấy phải đánh dấu “khoảnh khắc đỉnh cao của đời tôi”, minh chứng rằng dự án TeX đã thành công.

“Cuốn này trông không giống những cuốn sách khác của tôi”, ông nói. Ấn bản thứ nhất và ấn bản thứ hai của Tập 2 đáng lẽ phải trông giống nhau, và mọi số đo dường như đều khớp. “Nhưng biến dạng xảy ra nhiều lắm, mà thần kinh thị giác của chúng ta lại không tuyến tính.” Ông nói thêm rằng có người chẳng thấy khác biệt gì cả. Tệ nhất là các chữ số: ông đã không nhận ra rằng số trang là một trong những thứ mắt người đọc tập trung vào nhiều nhất, và chữ số 2 của ông thì “xấu thật sự”.

“Làm phông chữ hóa ra khó hơn tôi tưởng rất nhiều”, Knuth nói. Ở phòng thí nghiệm AI, ông phải đo các con chữ bằng một chiếc camera truyền hình có “độ méo rất lớn”: chỉ cần vặn đèn sáng lên một chút, “bề rộng của các chữ trên màn hình sẽ tăng thêm 25%”. Ông mời nhà thiết kế kiểu chữ Matthew Carter đến làm việc trong một học kỳ.

“Cuối cùng, đến năm 1986 thì tôi đã sẵn sàng”, Knuth nói. “Tôi đã có bộ chữ khiến mình hài lòng.” Những người trong ngành chữ in bảo ông rằng như vậy là “năm năm học việc bình thường của một nhà thiết kế kiểu chữ”.

TeX mất bao lâu? Còn tùy bạn dừng đồng hồ ở mốc nào

Các bản kể lại câu chuyện không khớp nhau về thời gian. Jargon File, một cuốn từ điển lâu đời của giới hacker, viết rằng Knuth “tưởng sẽ làm xong TeX trong kỳ nghỉ phép học thuật năm 1978; ông chỉ sai có khoảng 8 năm”. Còn trong cuộc phỏng vấn lịch sử truyền khẩu năm 2007, Ed Feigenbaum, người phỏng vấn, tính ra là “mười năm, chứ không phải một năm”.

Chính những cột mốc do Knuth kể lại cho thấy vì sao. TeX82 là “bản viết lại hoàn toàn, phá vỡ tương thích với TeX ’78”. Để TeX82 dễ chuyển sang chạy trên các hệ thống khác, Knuth tự bảo trì bộ file gốc mà không ai khác được phép động vào, còn mỗi hệ thống thì điều chỉnh bộ gốc ấy qua một file thay đổi riêng. Ông gọi công việc này là “khởi nguồn của literate programming”, tức phương pháp của ông: viết chương trình và lời giải thích cho chương trình ấy trong cùng một tài liệu.

Đến năm 1986, cả năm tập của bộ Computers & Typesetting đều đã ra mắt: “lẽ ra mọi chuyện đã kết thúc ở đó”, ông nói. Nếu dừng đồng hồ ở mốc này, công việc dự tính một năm đã kéo dài khoảng một thập kỷ. Sau đó còn có một đợt sửa đổi lớn trong hai năm 1989 và 1990, “chuyển mọi thứ từ 7 bit sang 8 bit”. Năm 1990, ông viết rằng công việc của ông với TeX đã “đi đến hồi kết”, và ông sẽ không thay đổi gì thêm “ngoại trừ việc sửa những bug cực kỳ nghiêm trọng”. Các bản sửa lỗi, nếu có, sẽ được đánh số 3.14, 3.141, 3.1415 và cứ thế tiến dần tới số pi. Phiên bản hiện nay là 3.141592653.

Knuth ước tính cho chương trình, chứ không phải cho nghề làm chữ

Con số “một năm” của Knuth là ước tính cho việc viết một chương trình dành cho chính ông và thư ký. Còn việc ông thực sự nhận về mình là làm cho cuốn sách trông đẹp như thời còn in bằng chữ chì. Muốn vậy, con chữ kỹ thuật số phải trông đúng trong mắt người đọc khi đã in thành sách, chứ không chỉ trên bản in thử ra từ máy sắp chữ của ông. Knuth từng nghĩ chuyện phông chữ “sẽ chỉ là đo vài số đo, lấy vài con số”. Rốt cuộc, để làm xong phông chữ, ông đã phải trải qua cả một quãng học việc như một nhà thiết kế kiểu chữ.

Khi bạn quyết định tự làm công cụ thay vì cắn răng chấp nhận những gì công cụ sẵn có làm ra, hãy hỏi xem công cụ mới phải chứa đựng hiểu biết của nghề nào, rồi dự trù cho việc học nghề ấy, chứ không chỉ cho việc viết code.

Bài liên quan

Đọc bằng ngôn ngữ khác: English

Nguồn