Hỏi - đáp Nơi cung cấp thông tin nghề nghiệp và giải đáp những thắc mắc thường gặp của bạn

Top 5 ngôn ngữ khó nhằn nhất trên thế giới

Trong khi tất cả mọi người đều đang nói về C, C++, Java, Python, v.v… thì có những ngôn ngữ lập trình không chỉ khó mà còn khiến các lập trình viên không thể lý giải nổi.

Những ngôn ngữ này được gọi là Ngôn ngữ lập trình kỳ bí - esoteric programming language (hay còn được gọi là esolang).

“Một esolang không được thiết kế cho mục đích sử dụng thông thường của các lập trình viên phần mềm. Chúng thường được sử dụng để chứng minh các khái niệm hay thậm chí là một trò đùa”

Sau đây là danh sách 5 esolang khó nhất. Tôi đã cố lập trình “Hello World” bằng từng ngôn ngữ và nó thật sự thú vị.

Malbolge

Malbolge được phát minh vào 1998 bởi Ben Olmstead. Ngôn ngữ này được xem là ngôn ngữ lập trình phúc tạp nhất. Thậm chí chính tác giả của ngôn ngữ này cũng không bao giờ lập trình mà sử dụng Malbolge. Dòng code “Hello World” xuất hiện tận 2 năm sau khi ngôn ngữ này được phát minh.

Đây là code snippet khi print “Hello World!” bằng Malbolge

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

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

Intercal

Jim Lyon và Don Woods phát triển Intercal vào năm 1972 được coi là bản parody của 1 vài ngôn ngữ lập trình trước. Cái tên ban đầu được đặt cho ngôn ngữ này là “‘Compiler Language With No Pronounceable Acronym” (tạm dịch: ‘Ngôn ngữ biên dịch không có từ viết tắt có thể phát âm’)

Intercal có nhiều tính năng khiến các lập trình viên cảm thấy thất vọng. Vd: Ngôn ngữ này sử dụng các modifiers như “PLEASE”, trình biên dịch có thể reject code nếu “PLEASE” không được dùng thường xuyên trong code vì nó xem chương trình này “không đủ lịch sự”. Ngược lại, nếu modifier “PLEASE” được dùng quá nhiều lần thì trình biên dịch cũng reject vì chương trình bắt đầu trở nên “lịch sự quá mức”

Đây là code snippet khi print “Hello World!” bằng Intercal

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

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

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 công cụ giải trí cho các lập trình viên. Chính bản thân cái tên của ngôn ngữ này cũng đã cho thấy độ khó của nó đối với các lập trình viên.

Tổng thể của ngôn ngữ này chỉ bao gôm 8 ký tự riêng biệt để thực thi bất kì dòng code nào. Trình biên dịch gốc do Muller phát triển chỉ sử dụng 296 byte.

Đây là code snippet khi print “Hello World!” bằng Brainfuck

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

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

COW

Cow được phát triển vào 2003 bởi Sean Heber. Một khi bạn thấy dòng code Hello world, bạn sẽ hiểu tại sao ngôn ngữ này được đặt tên là “COW” (con bò)

Cow khó tương tự với Brainfuck. Nó nhiều hơn Brainfuck 4 dòng lệnh, tổng thể 12 dòng lệnh cho toàn bộ ngôn ngữ.

Đây là code snippet khi print “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

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

Whitespace

Whitespace được phát triển tại Đại học Durhamboiwr Chris Morris và Edwin Brady. Ngôn ngữ này được cho ra mắt đúng vào ngày Cá tháng 4 năm 2003

Toàn bộ ngôn ngữ dựa vào space, tab abd linefeed khi viết bất kì chương trình nào. Trình phiên dịch Ngôn ngữ Whitespace bỏ qua các ký tự không khoảng trắng và coi chúng là các code comment

Đây là code snippet khi print “Hello World!” bằng 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à kết quả

Nguồn: https://levelup.gitconnected.com/5-most-difficult-programming-languages-in-the-world-549c3cf91b23