Top 10 ngôn ngữ lập trình kỳ quái nhất

 

Ngôn ngữ lập trình được xây dựng với mục đích đơn giản hóa thủ tục lập trình. Những cấu trúc được xây dựng sẵn với cú pháp rõ ràng dễ hiểu trong ngôn ngữ lập trình giúp bạn có thể giải quyết mọi vấn đề một cách đơn giản.

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
Lolcode

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.
Glass

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.
Brainfuck

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.
Chicken

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.
Whitepsace

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  /source/replacement/

Chương trình “Hello, world!” đơn giản:

/ 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.
Befunge

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!” :))


Hello World in Piet

Tìm hiểu thêm về ngôn ngữ này tại trang chủ.

Piet

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.
Malbolge

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.
English

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 :))
Advertisements

Posted on November 17, 2014, in Tin học. Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: