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!
Học IT










Công nghệ
Microsoft Word 2013
Microsoft Word 2007
Microsoft Excel 2019
Microsoft Excel 2016
Microsoft PowerPoint 2019
Google Sheets
Lập trình Scratch
Bootstrap
Hướng dẫn
Ô tô, Xe máy