Tuy nhiên một số nhà thiết kế ngôn ngữ lập trình lại đi ngược những nguyên tắc trên để sáng tạo ra những ngôn ngữ giải trí hoặc đánh đố lập trình viên...
Dưới đây là 10 ngôn ngữ lập trình kỳ quái nhất từng được tạo ra, hãy chọn ngôn ngữ phù hợp nhất với bạn nào :))
1) LOLCODE
Được tạo ra bởi Adam Lindsay, nghiên cứu viên tại đại học Lancaster University. Tất cả các từ khóa và biến trong ngôn ngữ đều được viết hoa & cách diễn đạt ngôn ngữ cũng rất chi là bựa :))
HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
UP VAR!!1
VISIBLE VAR
IZ VAR BIGGER THAN 10? KTHX
IM OUTTA YR LOOP
KTHXBYE
Không có bất kỳ một thư viện hỗ trợ nào nên LOLCODE chỉ có thể sử dụng để đọc một tập tin văn bản hoặc viết một đoạn văn bản lên màn hình console. Nếu bạn cần một phiên bản mạnh hơn, có thể xử lý nhiều công việc hơn thì có thể tìm hiểu LOLPython, được lấy cảm hứng từ LOLCODE và cung cấp cho bạn khả năg truy cập vào bộ thư viện mạnh mẽ của Python.
Xem thêm code mẫu và thông tin về ngôn ngữ tại Wikipedia
2) Glass
Glass là ngôn ngữ tạo ra bởi Gregor Richards in 2005. Ngôn ngữ xây dựng theo cấu trúc hướng đối tượng kết hợp với một loạt các tiền tố & hậu tố "hầm bà lằng". Theo tác giả thì ngôn ngữ này là "độc nhất" vì không có ngôn ngữ nào có thể bựa hơn được nữa :))
Đây là mã nguồn in ra một chuỗi Fibonacci :
{F[f(_a)A!(_o)O!(_t)$(_n)1=,(_isle)(_n)*(_a)(le).?=/(_isle)^\(_n)*(_a)
s.?(_t)f.?(_n)*(_a)s.?(_t)f.?(_a)a.?]}{M[m(_a)A!(_f)F!(_o)O!(_n)=(_nlm)
=/(_nlm)(_n)*(_f)f.?(_o)(on).?" "(_o)o.?(_n)(_n)*(_a)a.?=(_nlm)(_n)*
(_a)(le).?=\]}
Thêm thêm ví dụ mẫu tại esolang wiki page.
3) Brainfuck
Brainfuck là siêu sao trong top các ngôn ngữ tối nghĩa nhất. Ngôn ngữ chỉ có 8 lệnh đơn giản với con trỏ chỉ dẫn. Ngôn ngữ được thiết kế để giải trí và thách thức các lập trình viên chứ không được sử dụng trong thực tiễn :)). Ngôn ngữ được tạo ra bởi Urban Müller vào năm 1993. Đây là mã nguồn chương trình "Hello World!" :
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.
<<+++++++++++++++.>.+++.------.--------.>+.>.
Đọc thêm tại đây.
4) Chicken
Chicken không chỉ là tên của ngôn ngữ này mà còn là từ khóa duy nhất. Số lần lặp lại của từ khóa xác định một opcode được thực thi. Ngôn ngữ có tên là Chicken nhưng có lẽ các lập trình viên lập trình nó không "Chicken" một chút nào :))
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken
Đọc thêm tại đây.
5) Whitespace
Whitespace là một ngôn ngữ đánh dấu. Đúng như tên gọi, ngôn ngữ chỉ hiểu được các khoảng trắng, tab và các break line, đây là ví dụ in ra một chuỗi "Hello World!" :))
S S S T S S T S S S
T
S S S S S T T S S T S T
T
S S S S S T T S T T S S
T
S S S S S T T S T T S S
T
S S S S S T T S T T T T
T
S S S S S T S T T S S
T
S S S S S T S S S S S
T
S S S S S T T T S T T T
T
S S S S S T T S T T T T
T
S S S S S T T T S S T S
T
S S S S S T T S T T S S
T
S S S S S T T S S T S S
T
S S S S S T S S S S T
T
S S
Đọc thêm tại đây.
6) ///
/// là một ngôn ngữ tối giản chỉ có duy nhất một toán tử - thay thế chuỗi trong
Chương trình "Hello, world!" đơn giản:/source/replacement/
/ world! world!/Hello,/ world! world! world!
Đọc thêm tại đây.
7) Befunge
Befunge là ngôn ngữ lập trình hai chiều. Mã nguồn được đặt trên các trường với kích thước cố định. Mỗi hàng có thể lưu trữ mã nguồn hoặc dữ liệu và chương trình của bạn có thể thay đổi bất kỳ hàng nào với dữ liệu khác. Trình thông dịch bắt đầu từ hàng bên trái cùng sang phải, bạn có thể điều hướng trình thông dịch với cấu trúc điều hướng đặc biệt, đây là code mẫu với vòng lặp vô hạn :))
>v
^<
Và đây là “Hello, world!”:
0"!dlroW ,olleH">:#,_@
Xem thêm tại đây.
8) Piet
Piet là một ngôn ngữ lập trình bao gồm các khối hình ảnh trông giống như một bức tranh trừu tượng :)). Ngôn ngữ hỗ trợ 20 khối màu khác nhau và quá trình biên dịch được chỉ dẫn bởi một "con trỏ" di chuyển xung quanh các khối màu và tiếp tục với các khối màu lân cận, đây là chương trình “Hello world!” :))
9) Malbolge
Malbolge là ngôn ngữ được phát minh bởi Ben Olmstead vào năm 1998, được đặt tên theo vòng tròn thứ tám của địa ngục trong Inferno của Dante (nhớ không nhầm là tựa series "Devil May Cry" :)). Đúng theo tên gọi của nó, ngôn ngữ lập trình này giống như một mật mã đánh đố và để lập trình được nó thì đúng là "địa ngục" :)). Đây là chương trình ‘Hello World!” đơn giản :))
('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>
Đọc thêm tại đây.
10) ~English
~English là một ngôn ngữ thể hiện gần nhất với ngôn ngữ giao tiếp, với cú pháp lỏng lẽo, với sự tự do trong các biểu thức và "thỏa sức sáng tạo" :)). Không thể định nghĩa hàm mà chỉ có thể sử dụng các hàm dựng sẵn. Đây là mã nguồn mẫu:
Display "Hello world!" and a newline.
Stop the program.
Đọc thêm về ngôn ngữ này tại đây. Bạn cũng có thể quan tâm đến Shakespeare.
Kết luận
Những ngôn ngữ được đề cập ở đây thường không được sử dụng trong thực tiễn mà chỉ mang tính chất giải trí, trên đây mình chỉ mới liệt kê 10 ngôn ngữ "kỳ quái" tiêu biểu, vẫn còn hàng trăm ngôn ngữ "quái dị" khác ngoài kia vẫn đang chờ đợi các bạn tìm hiểu và khám phá đấy :))