Có rất nhiều ngôn ngữ lập trình, và nếu ngồi liệt kê hết thì chắc tới sáng tớ cũng không kết thúc được. Tớ đã từng tiếp xúc với khá nhiều ngôn ngữ: từ PHP, JavaScript đến Perl, từ Pascal, C đến Python, Ruby,… nhưng nếu hỏi đâu là ngôn ngữ tạo ấn tượng mạnh nhất, thì dứt khoát tớ không thể không nhắc đến Brainfuck, Whitespace và Piet.
1. Brainfuck
Theo Wikipedia, ngôn ngữ này ra đời năm 1993, với mục tiêu trở thành ngôn ngữ có compiler mang kích thước khiêm tốn nhất (dưới 200 byte!).
Cả ngôn ngữ chỉ gồm 8 command, mỗi command là 1 ký tự: > < + - . , [ ]
Hoàn toàn không có sự xuất hiện của các ký tự alphabet, hay số má 0 - 9, hay bất cứ gì khác. Thế nên đoạn chương trình in ra dòng chữ “Hello World” của Brainfuck trông thật ấn tượng:
- ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
Tớ từng dành ra không dưới 15 phút đánh vật với đoạn code này để thay chữ “Hello World” bằng tên tớ, và tin tớ đi, đánh vật có nghĩa là đánh vật đấy!
2. Whitespace
Ngôn ngữ thú vị thứ 2 mang tên Whitespace, và chắc bạn có thể đoán được, nó bao gồm các… whitespace. Với chỉ 3 loại ký tự: khoảng trắng, tab và dấu xuống dòng, việc phải “đọc” một đoạn code viết bằng Whitespace biến Brainfuck trở thành ngôn ngữ dễ đọc nhất trên đời.
Bạn có thể nhìn thử đoạn chương trình Hello World viết bằng Whitespace ở đây, nếu muốn thử trình độ đọc hiểu của mình.
3. Piet
Nếu như khi code bằng các ngôn ngữ lập trình khác, bạn “chơi với các ký tự”, thì khi code bằng Piet, bạn sẽ… tập vẽ tranh trừu tượng.
Hãy nói “Hello World” bằng Piet:
Hay giải thử bài toán Tháp Hà Nội với ngôn ngữ này:
Nếu bạn cũng như tớ, không mê xem tranh trừu tượng thì có thể sẽ thích “bức tranh” này:
Bạn nghĩ chương trình này làm được gì? Dĩ nhiên là tính toán số Pi! Và đoán xem làm thế nào để tăng hay giảm độ chính xác của nó? Hãy làm cho hình tròn to lên hoặc bé lại…
Cả 3 ngôn ngữ tớ vừa nêu đều được xếp vào loại esoteric programming language (hay esolang). Danh sách các ngôn ngữ như vậy bạn có thể xem ở esolang wiki, và tớ nghĩ bạn sẽ không ngạc nhiên mấy, khi biết rằng bên cạnh Brainfuck còn có Brainfuck++…
No comments:
Post a Comment