Trong giới phát triển phần mềm, luôn tồn tại cuộc tranh luận giữa sự thuần khiết toán học của ngôn ngữ lập trình và nhu cầu hoàn thành công việc nhanh chóng. Một lập trình viên kỳ cựu vừa chia sẻ hành trình cá nhân: dù yêu thích Haskell với hệ thống kiểu phức tạp và khả năng suy luận tuyệt vời, anh vẫn thường xuyên quay lại với Scheme và Lisp để xây dựng ứng dụng thực tế.

Haskell quá đẹp nhưng kém thực tiễn

Haskell nổi tiếng với kiến trúc toán học chặt chẽ: algebraic data types, pattern matching, monads, functors, monoids... Những khái niệm này giúp viết mã an toàn và dễ suy luận. Nhưng thực tế cho thấy, khi cần nhanh chóng tạo prototype hay hack một công cụ nhỏ, Haskell lại trở nên cứng nhắc. Người mới học lập trình hàm thường bối rối với những khái niệm như monad, câu nói kinh điển 'Một monad chỉ là monoid trong phạm trù các endofunctor' trở thành nỗi ám ảnh.

Scheme: ngôn ngữ dành cho con người

Trái lại, Scheme và Lisp dù thiếu đi những đổi mới và sự thuần khiết của Haskell nhưng lại mang đến sự linh hoạt tối đa. Tác giả kể lại việc xây dựng một công cụ quản lý bookmark: ban đầu anh chọn Haskell vì nghĩ rằng mô hình hóa dữ liệu và suy luận thuần túy không tác dụng phụ sẽ phù hợp, nhưng cuối cùng vẫn phải dùng Scheme để hoàn thành nhanh chóng. Scheme cho phép biểu diễn hệ thống phức tạp bằng cú pháp tối giản, giúp lập trình viên tập trung vào logic thay vì loay hoay với kiểu dữ liệu. Đối với đa số dự án thực tế, sự nhanh gọn và linh hoạt mới là yếu tố quyết định, chứ không phải độ thuần khiết toán học.