TL;DR

TeX - phần mềm typesetting huyền thoại của Donald Knuth - đang ở version 3.141592653. Không phải ngẫu nhiên: từ năm 1990, mỗi lần vá lỗi, Knuth thêm đúng một chữ số của π vào số version. Kế hoạch cuối cùng của ông: sau khi qua đời, version sẽ chính thức là π - và mọi bug còn lại sẽ trở thành "feature" vĩnh viễn.

TeX version history approaching pi - Donald Knuth's successive approximation scheme

TeX là gì và tại sao nó quan trọng

Nếu bạn từng đọc một paper khoa học, một giáo trình toán hay một bài báo vật lý, khả năng cao nó được typeset bằng TeX (hoặc LaTeX - wrapper phổ biến nhất của TeX). Donald Knuth bắt đầu viết TeX năm 1977 vì ông không hài lòng với chất lượng in ấn của bộ sách The Art of Computer Programming. Ông muốn kiểm soát từng pixel trên trang in. Kết quả là một hệ thống typesetting đặt ra tiêu chuẩn vàng cho in ấn toán học trong gần 50 năm qua.

TeX là nền tảng của gần như toàn bộ xuất bản học thuật kỹ thuật: từ IEEE, ACM, AMS cho đến arXiv - nơi hàng triệu paper được nộp mỗi năm. Các implementation hiện đại như pdfTeX, XeTeX, LuaTeX đều build trên cùng core engine này. Không có TeX, diện mạo của toán học và khoa học hiện đại sẽ trông khác đi rất nhiều.

Hành trình tiệm cận π - một chữ số mỗi lần

Năm 1990, Knuth phát hành TeX version 3.0 và đóng băng thiết kế: từ đây, không thêm feature mới, chỉ vá bug. Và mỗi lần vá bug, ông thêm đúng một chữ số tiếp theo của π vào số version:

VersionNgày phát hànhGhi chú
3.01990-03-15Bắt đầu π-based versioning, design freeze
3.11991Digit đầu tiên sau dấu phẩy
3.1419923.14 - Pi Day vibes
3.1411993Thêm một digit
3.1415919955 digits
3.14159220026 digits
3.141592620077 digits
3.141592652014-01-128 digits
3.1415926532021-02-059 digits - version hiện tại
π[Posthumous]Final - bug-free by definition

Trong hơn 30 năm, TeX chỉ có 8 lần release. Tổng số bug được ghi nhận từ 1982 đến nay chỉ là 440 entry - một con số cực kỳ nhỏ cho phần mềm có độ phức tạp và tuổi đời như vậy. Version tiếp theo (3.1415926535) dự kiến khoảng năm 2028 - nếu có bug nào được tìm thấy.

Triết học: phần mềm như một điểm cố định

Knuth giải thích quan điểm của mình rất thẳng thắn: "an unchanging system has great value". Ông tin rằng tiếp tục thêm tính năng vào TeX là "unwise" - không khôn ngoan - và rằng mục tiêu thực sự của phần mềm là tạo ra một điểm cố định đáng tin cậy.

Điều đó có nghĩa là: một bài báo compile bằng TeX năm 1995 sẽ cho output pixel-perfect y hệt khi compile năm 2025 hay 2045. Không có breaking change. Không có deprecation. Không có "sorry, API này đã bị remove". Trong thế giới phần mềm thay đổi liên tục, đây là điều gần như không tưởng.

Câu nói về "bugs become features" không phải câu đùa - đó là tuyên ngôn kỹ thuật. Khi version = π, Knuth chấp nhận rằng TeX đã đạt trạng thái hoàn hảo nhất có thể đạt được. Mọi quirk còn lại là một phần của định nghĩa - không thể và không nên thay đổi, vì thay đổi sẽ phá vỡ sự bất biến mà ông đã dành cả đời để xây dựng.

METAFONT và số e - cặp đôi hoàn hảo

TeX không phải ví dụ duy nhất. METAFONT - công cụ thiết kế font đồng hành của Knuth - áp dụng cùng triết lý nhưng với hằng số Euler e thay vì π:

  • Version hiện tại của METAFONT: 2.71828182
  • Version cuối cùng (sau khi Knuth mất): e (chính xác)

π cho typesetting, e cho font design - hai hằng số toán học quan trọng nhất đại diện cho hai công cụ cốt lõi của Knuth. Knuth còn treo thưởng $327.68 (= $215 cents - cách ông đùa với binary) cho bất kỳ ai tìm được bug trong TeX, thể hiện sự tự tin vào độ hoàn thiện của hệ thống.

Bài học từ π - khi nào nên dừng lại

Trong văn hóa phần mềm hiện đại - nơi "move fast and break things" được tôn thờ và mọi app đều update hàng tuần - TeX là một nghịch lý sống: phần mềm quan trọng hơn, được dùng nhiều hơn, và ít thay đổi hơn theo năm tháng.

Cách đánh số version của Knuth không chỉ là một trick thông minh hay một câu đùa của dân toán học. Đó là cam kết công khai về triết học phát triển: giải quyết vấn đề thật sự một lần, giải quyết thật tốt, rồi dừng lại. Không phải mọi phần mềm đều cần approach này - nhưng những gì TeX làm được trong gần 50 năm là bằng chứng rằng đôi khi, phiên bản tốt nhất của một phần mềm chính là phiên bản cuối cùng của nó.

Và khi ngày đó đến, limn→∞ TeX_vn = π.

Nguồn: Wikipedia - TeX, TeX FAQ, Piver - Preetham.