5 ngôn ngữ lập trình kỳ dị nhưng cực kỳ thông minh mà bạn nên biết

Thế giới lập trình có vô số ngôn ngữ khác nhau – con số chính xác đến mức khó tin. Một số danh sách liệt kê hàng trăm, còn “Bách khoa toàn thư Lịch sử Ngôn ngữ Lập trình” ghi nhận gần 9.000 ngôn ngữ. Phần lớn lập trình viên chỉ thực sự dùng vài ngôn ngữ quen thuộc, và khi nhìn vào số còn lại, bạn sẽ thấy không ít cái tên kỳ lạ, cổ xưa – thậm chí là… quái đản.

Nhưng giữa muôn vàn “dị nhân” đó, có những ngôn ngữ tưởng như chỉ để đùa, nhưng lại mang trong mình những ý tưởng cực kỳ thông minh và sáng tạo. Cùng xem ngôn ngữ lập trình có thể “kỳ lạ” đến mức nào nhé – từ những ngôn ngữ đầy ngoặc tròn, cho đến loại chỉ hiểu màu sắc, hay thậm chí là… code vô hình!

Lisp – Khi mọi thứ đều là danh sách

Ra đời từ năm 1960, Lisp được xem là ngôn ngữ lập trình lâu đời thứ hai còn được sử dụng đến ngày nay. Tên gọi “Lisp” viết tắt của List Processing (xử lý danh sách), nhưng dân lập trình vẫn hay đùa rằng nó là Lots of Irritating Superfluous Parentheses – “rất nhiều ngoặc tròn thừa thãi”.

Nhìn đoạn code sau là bạn hiểu ngay:

(defun factorial (n)
    (if (zerop n) 1
        (* n (factorial (1-n)))))

Đây là hàm tính giai thừa bằng đệ quy, một khái niệm cốt lõi trong Lisp. Bên cạnh đó, Lisp còn có những đặc điểm tiên tiến như dynamic typing (kiểu dữ liệu động) và hàm bậc cao.

Điều đặc biệt nhất của Lisp là không phân biệt giữa “code” và “dữ liệu” – mọi thứ đều là biểu thức S (s-expression). Nhờ vậy, cú pháp của Lisp cực kỳ tinh gọn, và với những ai hiểu sâu về nó, đây được xem là ngôn ngữ “đẹp nhất” từng tồn tại.

Từ khi ra đời, Lisp đã tạo cảm hứng cho nhiều biến thể khác. Nổi bật nhất là Emacs Lisp, linh hồn của trình soạn thảo Emacs trên Linux, và Arc, dialect được dùng để vận hành trang Hacker News.

Prolog – Người tiên phong trong lập trình trí tuệ nhân tạo

Prolog (viết tắt của Programming in Logic) là ngôn ngữ đặc biệt vì sử dụng phong cách lập trình khai báo. Thay vì viết cách làm, bạn chỉ cần mô tả các quy tắc và mối quan hệ logic, và Prolog sẽ tự “suy luận” phần còn lại.

Ví dụ đơn giản:

child(john,sue).
parent(Y,X) :- child(X,Y).
?- parent(sue,john).

Câu truy vấn trên trả về true, nghĩa là “Sue là mẹ của John”. Dù ví dụ nhỏ này khá đơn giản, nhưng với hàng ngàn quy tắc, Prolog có thể xử lý những bài toán logic cực kỳ phức tạp, từ tháp Hà Nội đến bài toán qua sông nổi tiếng (sói, dê và bắp cải).

Prolog là minh chứng rằng: ngôn ngữ càng khác biệt, càng có thể mở ra những cách tư duy mới trong AI và xử lý ngôn ngữ tự nhiên.

Befunge – Khi mã nguồn trở thành… mê cung hai chiều

Befunge là biểu tượng của “ngôn ngữ lập trình nghệ thuật” – nơi tính sáng tạo được đặt lên trên tính thực dụng. Trong khi hầu hết ngôn ngữ lập trình đọc từ trái sang phải, từ trên xuống dưới, thì Befunge… cho phép code di chuyển theo mọi hướng.

Ví dụ chương trình “Hello, World!” kinh điển trong Befunge:

0"!dlroW ,olleH"v
                > , v
                | : <
                @

Ký tự @ đánh dấu điểm kết thúc chương trình. Befunge có 26 lệnh, sử dụng ngăn xếp (stack) để xử lý dữ liệu, và mũi tên để điều khiển luồng chương trình.

Một ví dụ khác – vòng lặp vô tận:

>v
^<

Đây chính là ngôn ngữ dành cho những ai thích lập trình “ngược đời” – nhưng lại giúp mở ra những ý tưởng độc đáo cho các ngôn ngữ trực quan sau này, như Scratch.

Piet – Khi code trở thành tranh trừu tượng

Lấy cảm hứng từ họa sĩ Piet Mondrian, ngôn ngữ Piet biến chương trình thành một bức tranh nhiều khối màu.

Trong Piet, mỗi khối màu đại diện cho một lệnh, còn chuyển đổi giữa các màu thể hiện hành động cụ thể. Code của Piet nhìn chẳng khác gì một bức tranh trừu tượng – đẹp, nhưng đầy bí ẩn.

Dĩ nhiên, lập trình bằng màu sắc không hề dễ, nhưng đó cũng là lý do khiến Piet được xem là ngôn ngữ “nghệ thuật” đúng nghĩa, nơi mỗi dòng code đều là một tác phẩm.

Whitespace – Ngôn ngữ của điệp viên

Bạn có đoán được đoạn code này làm gì không? Không à? Đó là vì toàn bộ chương trình chỉ gồm khoảng trắng, tab và dòng trống! Đúng vậy, Whitespace là ngôn ngữ mà mắt thường không thể nhìn thấy code.

Muốn chỉnh sửa, bạn phải bật hiển thị ký tự ẩn trong trình soạn thảo (ví dụ :set list trong Vim). Ngoài ra, bạn cần tắt tính năng “xóa khoảng trắng cuối dòng”, nếu không chương trình sẽ hỏng ngay.

Whitespace chỉ nhận biết khoảng trắng, tab và xuống dòng – còn lại tất cả các ký tự khác đều bị bỏ qua. Thậm chí, bạn có thể nhúng một chương trình Whitespace vào trong source code của ngôn ngữ khác, và nó vẫn chạy!

Thứ Sáu, 14/11/2025 12:05
31 👨
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo
    ❖ Chuyện công nghệ