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

John Backus từng giải thích một trong những phát minh quan trọng nhất lịch sử lập trình bằng một động cơ nghe khá bất ngờ:
“Phần lớn công việc của tôi xuất phát từ sự lười biếng. Tôi không thích viết chương trình, nên tôi bắt đầu làm một hệ thống để khiến chúng dễ viết hơn.”
Hệ thống đó trở thành FORTRAN.
Trước FORTRAN, lập trình máy tính khoa học có thể giống như đánh giáp lá cà với cỗ máy.
Lập trình viên viết những chuỗi lệnh cấp thấp, quản lý chi tiết phần cứng bằng tay và dành rất nhiều thời gian debug code chỉ chạy trên một loại máy cụ thể.
Backus nhìn toàn bộ công việc đó và đặt một câu hỏi nguy hiểm.
Tại sao con người phải tiếp tục làm những việc mà máy tính có thể làm thay?
Ông vào IBM gần như tình cờ
Backus không đi theo một con đường hoàn hảo tới ngành khoa học máy tính.
Ông rời một trường đại học vì thường xuyên vắng học. Sau đó thử học y rồi bỏ giữa chừng. Cuối cùng ông lấy bằng thạc sĩ toán tại Columbia.
Năm 1950, ông ghé trụ sở IBM tại New York, nơi chiếc Selective Sequence Electronic Calculator lớn bằng cả căn phòng đang được trưng bày.
Backus nói mình quan tâm tới toán.
Một nhân viên IBM đưa cho ông vài bài toán.
Ông giải được.
IBM tuyển ông làm lập trình viên, dù theo lời kể sau này, khi ấy ông còn chưa hiểu rõ lập trình là gì.
Lập trình đắt vì con người đang làm công việc của máy
Lập trình thời kỳ đầu buộc con người phải liên tục nghĩ theo hardware.
Lệnh ở cấp độ cực thấp.
Chương trình phải được viết riêng cho từng máy.
Lập trình viên mất rất nhiều thời gian biến ý định toán học thành những thao tác nhỏ mà bộ xử lý hiểu.
IBM sau này mô tả một bài toán có thể cần tới một nghìn lệnh viết tay nhưng chỉ cần 47 câu lệnh FORTRAN.
Khác biệt không nằm ở việc FORTRAN làm toán dễ hơn.
Nó cho lập trình viên diễn đạt trực tiếp hơn phép toán mình muốn thực hiện.
Compiler xử lý phần lớn việc dịch tẻ nhạt ở giữa.
Phản đối hiển nhiên lúc đó là: code do compiler tạo ra sẽ chậm
Đó là phản đối rất nghiêm túc.
Trong thập niên 1950, thời gian sử dụng máy tính cực kỳ đắt.
Lập trình viên giỏi tự hào về khả năng tối ưu mã máy bằng tay.
Nhiều người tin compiler không thể tạo code đủ tốt để sự tiện lợi của ngôn ngữ bậc cao trở nên đáng giá.
Vì vậy, nhóm FORTRAN không chỉ cần làm lập trình dễ hơn.
Họ phải khiến chương trình tạo ra chạy nhanh.
Đó là lý do compiler trở thành phần đáng kinh ngạc của dự án.
Nhóm Backus xây kỹ thuật tối ưu hóa để sinh mã máy có thể cạnh tranh với chương trình viết tay cẩn thận.
Ngôn ngữ thành công vì sự tiện lợi không buộc phải đánh đổi hiệu năng.
Năng suất bùng nổ khi lớp trừu tượng trở nên đáng tin
Khi lập trình viên tin compiler, bài toán chi phí thay đổi.
Nhà khoa học và kỹ sư có thể viết công thức gần với ký hiệu toán học quen thuộc.
Chương trình cần ít thời gian hơn để viết.
Việc debug bớt bị chi phối bởi lỗi theo dõi và quản lý chi tiết ở cấp lệnh thấp.
Code có thể chuyển sang các máy có compiler FORTRAN tương thích.
Lập trình không còn chỉ thuộc về một nhóm nhỏ “thông thạo bí truyền” về từng chiếc máy cụ thể.
Nhiều chuyên gia lĩnh vực có thể tự lập trình.
Đó là điều abstraction mạnh thực sự làm.
Nó không chỉ tiết kiệm thao tác gõ phím.
Nó thay đổi những ai có thể tham gia.
“Lười” trong engineering có thể là một dạng tham vọng
Câu nói của Backus buồn cười vì lười biếng nghe như đối lập với thành tựu.
Nhưng có hai kiểu lười.
Một kiểu né công việc cần thiết.
Kiểu còn lại từ chối công việc không cần thiết.
Kiểu thứ hai có thể tạo năng suất phi thường.
Tại sao gõ lại cùng boilerplate?
Tại sao đối soát data bằng tay nếu system có thể làm?
Tại sao ghi nhớ một chuỗi thao tác vận hành có thể viết thành chương trình?
Tại sao để mỗi kỹ sư mới tự khám phá lại cùng quy tắc ngầm?
Tại sao bắt con người dịch ý định thành chi tiết máy móc khi công cụ có thể giữ nguyên ý định ở mức cao hơn?
Automation thường bắt đầu từ sự khó chịu.
Công cụ tốt nhất loại bỏ cả một nhóm việc phải nghĩ tới
Công cụ trung bình giúp tác vụ cũ nhanh hơn một chút.
Công cụ tạo ra chuyển biến lớn khiến một phần tác vụ cũ không còn cần thiết.
FORTRAN không chỉ cung cấp cú pháp đẹp hơn cho mã máy.
Nó chuyển trách nhiệm từ programmer sang compiler.
Programmer có thể nghĩ nhiều hơn về bài toán.
Compiler có thể xử lý nhiều hơn các chi tiết của máy.
Sự phân công này xuất hiện khắp ngành điện toán hiện đại.
Garbage collector quản lý bộ nhớ mà con người từng phải làm bằng tay.
Bộ máy cơ sở dữ liệu chọn kế hoạch thực thi truy vấn.
Nền tảng cloud phân bổ máy tính.
Compiler hiện đại sắp xếp lại lệnh.
Công cụ AI đang tạo code và thực hiện các phép biến đổi từng đòi hỏi thao tác thủ công lặp lại.
Mỗi lớp đều hỏi lại câu hỏi của Backus:
Chi tiết nào vẫn cần con người chú ý, và chi tiết nào ta giữ lại chỉ vì công cụ cũ bắt phải làm?
Backus không ngừng thách thức abstraction
Ngay cả khi FORTRAN thành một trong những ngôn ngữ lập trình có ảnh hưởng nhất lịch sử, Backus không coi nó là câu trả lời cuối cùng.
Ông sau đó phê bình giới hạn của phong cách lập trình truyền thống và khám phá functional programming — thêm một nỗ lực để lập trình viên mô tả bài toán ở mức cao hơn thay vì chỉ định mọi bước cấp thấp.
Ông cũng góp phần phát triển hệ ký hiệu Backus–Naur Form để mô tả ngữ pháp ngôn ngữ lập trình.
Pattern vẫn vậy.
Để máy xử lý nhiều hơn những chi tiết máy móc.
Để con người suy nghĩ ở mức hữu ích hơn.
Câu hỏi năng suất thực sự không phải “làm sao để chăm hơn?”
Các nhóm thường phản ứng với quá tải bằng cách tăng nỗ lực.
Nhiều giờ hơn.
Nhiều người hơn.
Nhiều checklist hơn.
Nhiều quy trình hơn.
Đôi khi câu hỏi tốt hơn là liệu công việc đó có nên tồn tại hay không.
Backus không thích viết chương trình theo hình thức máy tính đòi hỏi.
Ông không cố trở nên kỷ luật hơn với lập trình cấp thấp.
Ông góp phần thay đổi cấp độ trừu tượng mà việc lập trình diễn ra.
Bạn đang cố làm nhanh hơn công việc nào mà giá trị hơn cả là loại bỏ hoàn toàn nó?
Đọc bằng ngôn ngữ khác: English · Español · Deutsch · Français · Português (Brasil) · Tiếng Việt
Nguồn
- IBM History — John Backus
- IBM History — Fortran
- IBM Research — The History of FORTRAN I, II, and III
- Computer History Museum — John Backus
- ACM — bản chép lời phỏng vấn Turing Award của John Backus
- Ảnh đại diện — John Backus, ảnh PIerre.Lescanne, CC BY-SA 4.0 qua Wikimedia Commons. Ảnh được đặt trên khung 16:9; bản phái sinh tiếp tục theo CC BY-SA 4.0.
