Dưới đây là một ví dụ về một chương trình 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).?=\]}
Bạn có thể xem thêm một số ví dụ và lưu ý tại đây: esolang wiki page.
3) Brainfuck
Brainfuck được tạo ra năm 2003 bởi Urban Mülle, nó là ngôn ngữ lập trình "đỉnh" của khó hiểu. Rất khó để lập trình với Brainfuck, chỉ có 8 lệnh đơn giản và một con trỏ. Brainfuck được
thiết kế để thách thức lập trình viên.
Dưới đây là một chương trình "Hello world!":
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.
<<+++++++++++++++.>.+++.------.--------.>+.>.
Xem thêm Tại đây.
4) Whitespace.
Whitespace là một ngôn ngữ lập trình đáng chú ý. Nó chỉ có hiểu khoảng trắng, các tab và các dòng mới, và bỏ qua tất cả mọi thứ khác. Đây là một ví dụ in ra "Hello, world" (khoảng trắng được đánh dấu bằng S và tab đáng dấu bằng T):
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
Xem thêm tại đây.
5) ///
/// Là một ngôn ngữ tối giản, chỉ bao gồm một việc đó là thay thế chuỗi trong form /source/replacement/
. Nó được phát minh bởi Tanner Swett vào năm 2006. Ngôn ngữ này rất hạn chế, nhưng một số lập trình thông minh có thể biến các hoạt động thay thế chuỗi thành một chương trình làm việc đầy đủ bao gồm cả vòng lặp và dữ liệu đầu ra.
Đây là một chương trình "Hello, world!" đơn giản:
/ world! world!/Hello,/ world! world! world!
Xêm thêm tại đây.
6) Befunge
Được phát minh vào năm 1993 bởi Chris Pressey với mục tiêu là càng gây khó khăn cho việc biên dịch càng tốt. Befunge là một ngôn ngữ lập trình hai chiều. Mã của bạn được đặt trên play field (giống như 1 bảng) với một kích thước cố định. Mỗi cell (ô) của play field có thể chứa mã hoặc dữ liệu, và chương trình của bạn có thể thay thế bất kỳ cell nào nó muốn với mã hoặc dữ liệu. Việc thông dịch bắt đầu từ các cell trên cùng bên trái và tiếp tục bên phải. Bạn có thể điều khiển hướng đi của việc thông dịch theo một hướng đặc biệt.
Ví dụ này là một vòng lặp vô hạn:
>v
^<
Còn đây là chương trình "Hello world!":
0"!dlroW ,olleH">:#,_@
Xem chi tiết tại đây.
7) Piet
Piet là một ngôn ngữ lập trình trong các chương trình là bitmap trông giống như bức tranh trừu tượng. Các khối cơ bản tạo nên chương trình Piet là các khối màu. Nó hỗ trợ 20 màu sắc khác nhau, với một số khai triển. Biên soạn được dẫn dắt bởi một "con trỏ" di chuyển xung quanh hình ảnh, từ một khu vực màu liên tục kế tiếp.
Đây là một chương trình "Hello world!":
Xem chi tiết tại Trang chủ của Piet.
8) Malbolge
Malbolge là một ngôn ngữ lập trình đượ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 Dante’s Inferno. Ngôn ngữ được thiết kế đặc biệt để có thể viết chương trình hữu ích. Mặc dù vậy, bạn vẫn phải là một người thông thạo về khoa học mật mã để có thể viết được chương trình bằng ngôn ngữ này.
Đây là chương trình "Hello World" trong Malbolge:
('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>
Xem thêm tại đây.
9) ~English
~English là một ngôn ngữ lập trình cố gắng bắt chước ngôn ngữ tự nhiên. Cú pháp của nó rất lỏng lẻo để giúp cho lập trình viên tự do hơn trong việc sử dụng biểu thức. Lập trình viên không thể tự viết hàm riêng mà chỉ có thể sử dụng hàm được tích hợp sẵn.
Dưới đây là một chương trình ví dụ:
Display "Hello world!" and a newline.
Stop the program.
Xem thêm về ngôn ngữ này Tại đây. Ngoài ra, bạn cũng có thể thú vị với ngôn ngữ Shakespeare.
10) JavaScript
Có thể bạn sẽ ngạc nhiên tại sao JavaScript lại nằm trong danh sách này, Nó là ngôn ngữ lập trình phổ biến nhất hiện nay nhưng tuỳ vào phong cách viết của mỗi người mà tạo nên sự đặc biệt, và đây là một điều kỳ lạ của JavaScript:
// Đoạn code sau in ra giá trị là 10:
alert(++[[]][+[]]+[+[]]);
// Và đoạn code sau đưa ra giá trị "fail":
alert((![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]);
Bạn có thể xem giải thích tại sao lại ra kết quả như vậy trên StackOverflow: 1, 2.
Một số ví dụ tại sao JavaScript lại kỳ lạ : no alnum cheat sheets
Tổng hợp bởi: Martin Angelov.
Người dịch: Nguyễn Văn Toản.
0 nhận xét:
Đăng nhận xét