Thư của Dijkstra về ngôn ngữ lập trình APL: Một cái nhìn lịch sử
Bài viết chia sẻ nội dung bức thư của nhà khoa học máy tính Edsger W. Dijkstra chỉ trích ngôn ngữ APL, cùng với phản biện của Roger Hui về khả năng giao tiếp toán học và tính chính xác trong chứng minh của ngôn ngữ này.
Gần đây, Roger K.W. Hui đã chia sẻ một bức thư thú vị từ Edsger W. Dijkstra, một trong những nhân vật vĩ đại nhất của khoa học máy tính, gửi cho Tiến sĩ A. Caplin vào năm 1981. Bức thư này tập trung vào ngôn ngữ lập trình APL (A Programming Language) và đưa ra những nhận định khá gay gắt về cộng đồng người sử dụng nó.
Trong thư, Dijkstra mô tả APL giống như một "giáo phái" (cult), nơi mọi người hoặc yêu thích nó cuồng nhiệt, hoặc ghét bỏ nó, và rất ít người đứng ở giữa. Ông đưa ra một lý giải cho hiện tượng này: công cụ chúng ta sử dụng sẽ định hình chính chúng ta, giống như ngôn ngữ định hình suy nghĩ và nhạc cụ định hình nghệ sĩ violin.
Dijkstra chỉ trích việc những người hâm mộ APL quá phụ thuộc vào việc triển khai thực tế (implementation) và các thiết bị đầu cuối (terminals). Ông kể về một giáo sư thăm giảng phàn nàn vì không có terminal APL để dạy, và nhắc đến việc người ta muốn "demonstrate" (trình diễn) APL cho ông thay vì thảo luận về nó. Theo Dijkstra, một ngôn ngữ lập trình tốt nên có thể được dạy, thảo luận và chứng minh bằng giấy bút, giống như toán học.
Tuy nhiên, Roger Hui cho rằng những nhận định này của Dijkstra đầy tính mỉa mai. Huy nhắc lại rằng Ken Iverson, cha đẻ của APL, ban đầu phát minh ký hiệu này như một công cụ để giao tiếp giữa người với người, chứ không phải để chạy trên máy tính. Mãi về sau ký hiệu này mới được triển khai thành ngôn ngữ lập trình APL. Thực tế, Dijkstra đã từng tiếp xúc với "ký hiệu Iverson" từ năm 1963, trước khi nó trở thành một ngôn ngữ máy tính.
Hui lập luận rằng APL thực sự rất phù hợp với triết lý của Dijkstra về những "chương trình có thể chứng minh tính đúng đắn" (provably correct programs). Việc có thể thực thi chương trình giúp giữ cho các bước chứng minh sự trung thực, đóng vai trò như một người phục vụ trung thành để kiểm tra các bước suy luận.
Để minh họa, bài viết đưa ra các ví dụ về việc sử dụng APL trong các phép biến đổi hình thức, bao gồm việc chứng minh hàm Ackermann và các thao tác trên bảng dữ liệu (tables). Hui chỉ ra rằng các dẫn giải trong APL cực kỳ ngắn gọn và súc tích, điều mà các ngôn ngữ khác khó có thể đạt được. Điều này khẳng định giá trị của APL không chỉ là một công cụ lập trình mà còn là một phương tiện toán học mạnh mẽ.
Bài viết là một cái nhìn thú vị, gợi nhớ về những cuộc tranh luận trong quá khứ về triết lý ngôn ngữ lập trình và cách chúng ảnh hưởng đến tư duy của các lập trình viên.


