ngôn ngữ lập trình khó nhấ thế giới

Chúng ta hay nói về C, C++, Java, Python, v.v., là những ngôn ngữ khá thông dụng và phổ biến ngày nay. Tuy nhiên, có một số ngôn ngữ không chỉ khó mà còn hầu như không thể hiểu được đối với hầu hết các lập trình viên. Các ngôn ngữ lập trình này là những ngôn ngữ lập trình đặc biệt hay ký bí (esoteric programming language hay esolang)

Một esolang không được thiết kế cho các mục đích phát triển phần mềm thông thường. Chúng được dùng chứng minh các khái niệm, thậm chí như một trò đùa.

Dưới đây là danh sách năm ngôn ngữ lập trình eslang khó nhất. Chúng được trình bày qua chương trình ‘Hello World!’ Hãy xem trong các đoạn code thú vị thế nào

1/ Malbolge

Malbolge được cho ra đời vào năm 1998 bởi Ben Olmstead. Esolang này được coi là ngôn ngữ lập trình phức tạp nhất. Người ta nói rằng tác giả của ngôn ngữ lập trình Malbolge chưa bao giờ viết bất kỳ chương trình nào sử dụng ngôn ngữ này. Đoãn code hello world trong Malbolge xuất hiện gần hai năm sau khi Olmstead cho ra ngôn ngữ lập trình này. Đây là đoạn mã để in ‘Hello World!’ Trong Malbolge.

(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc

Và đây là kết quả:

Ngôn ngữ lập trình khó nhất malbolge

2/ INTERCAL

Jim Lyon và Don Woods đã phát triển INTERCAL vào năm 1972 như một sự bắt chước của các ngôn ngữ lập trình khác nhau. Tên ban đầu được đặt cho nó là: “Ngôn ngữ biên dịch không có từ viết tắt có thể phát âm (Compiler Language With No Pronounceable Acronym) . INTERCAL có nhiều tính năng được thiết kế để gây khó chịu cho lập trình viên. Ví dụ: Nó sử dụng các bổ ngữ như “PLEASE”. Trình biên dịch có thể từ chối mã nếu “PLEASE” không được sử dụng thường xuyên trong mã. Nó coi chương trình là “không đủ lịch sự”. Nếu công cụ sửa đổi ‘PLEASE’ được sử dụng quá nhiều lần thì trình biên dịch sẽ từ chối mã nói rằng nó là ‘quá lịch sự’.

Đây là đoạn mã để in “Hello, World!” Bằng INTERC

DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READ OUT ,1
PLEASE GIVE UP

3/ Brainfuck

Brainfuck được phát triển bởi Urban Muller vào năm 1993. Ngôn ngữ này được phát minh như một trò giải trí cho các lập trình viên. Bản thân cái tên đã gợi ý rằng ngôn ngữ được cho là cực kỳ khó hiểu đối với bất kỳ lập trình viên nào. Toàn bộ ngôn ngữ chỉ bao gồm tám ký tự riêng biệt để thực hiện bất kỳ mã nào. Trình biên dịch gốc do Muller phát triển chỉ sử dụng 296 byte.

Đây là đoạn mã để in ‘Hello World!’ Trong Brainfuck:

++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
 ..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Đây là output:

4/ COW

COW được phát triển vào năm 2003 bởi Sean Heber. Khi bạn nhìn thấy mã hello world, bạn sẽ nhận ra tại sao ngôn ngữ này lại được đặt tên là ‘COW’. COW tương tự như Brainfuck ở mức độ khó. Nó có thêm 4 lệnh so với Brainfuck, tức là 12 lệnh trong toàn bộ ngôn ngữ.

Đây là đoạn mã để in ‘Hello, World!’ Bằng COW:

MoO MoO MoO MoO MoO MoO MoO MoO MOO moO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO moO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO
 MoO MoO moO MoO MoO MoO MoO mOo mOo mOo mOo mOo MOo moo moO moO moO moO Moo moO MOO mOo MoO moO MOo moo mOo MOo MOo MOo Moo MoO MoO 
 MoO MoO MoO MoO MoO Moo Moo MoO MoO MoO Moo MMM mOo mOo mOo MoO MoO MoO MoO Moo moO Moo MOO moO moO MOo mOo mOo MOo moo moO moO MoO 
 MoO MoO MoO MoO MoO MoO MoO Moo MMM MMM Moo MoO MoO MoO Moo MMM MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo mOo MoO Moo

Đây là output:

5/ Whitespace

Whitespace được phát triển tại Đại học Durham bởi Chris Morris và Edwin Brady. Ngôn ngữ này được phát hành vào ngày cá tháng tư năm 2003. Toàn bộ ngôn ngữ phụ thuộc vào space, tab và linefeed để viết bất kỳ chương trình nào. Trình thông dịch Whitespace bỏ qua các ký tự Non-Whitespace và coi chúng như các chú thích mã.

Đây là đoạn mã để in ‘Hello World!’ trong Whitespace. Trong đoạn mã dưới đây, mỗi ký tự Space, Tab hoặc Linefeed được đặt trước một chú thích tương ứng là ‘S’, ‘T’ hoặc ‘L’.

S S S T	S S T	S S S L
T	L
S S S S S T	T	S S T	S T	L
T	L
S S S S S T	T	S T	T	S S L
T	L
S S S S S T	T	S T	T	S S L
T	L
S S S S S T	T	S T	T	T	T	L
T	L
S S S S S T	S T	T	S S L
T	L
S S S S S T	S S S S S L
T	L
S S S S S T	T	T	S T	T	T	L
T	L
S S S S S T	T	S T	T	T	T	L
T	L
S S S S S T	T	T	S S T	S L
T	L
S S S S S T	T	S T	T	S S L
T	L
S S S S S T	T	S S T	S S L
T	L
S S S S S T	S S S S T	L
T	L
S S L
L
L

Và đây là output

Kết

Có nhiều ngôn ngữ bí truyền tương tự khác. Bạn có thể truy cập tại link này. Ngoài ra còn có thể truy cập trang Try It Online, nơi cung cấp trình biên dịch và thông dịch viên cho hầu hết các ngôn ngữ.

Theo Levelup

Đánh giá bài viết

Average rating 4.7 / 5. Vote count: 6

No votes so far! Be the first to rate this post.

Comments are closed.