Brainfuck


Brainfuck là một ngôn ngữ lập trình được rất ít người biết đến. Nó được thiết kế để thử thách cũng như làm trò giải trí cho các lập trình viên và không thích hợp cho người mới tập. Trong một số tài liệu, tên của ngôn ngữ này được viết là brainf*ck hay brainfsck, không được viết hoa dù brainfuck là một danh từ riêng.[1]

Thiết kế ngôn ngữ

[sửa | sửa mã nguồn]

Urban Muller thiết kế brainfuck vào năm 1993 với mục đích tạo ra ngôn ngữ lập trình sử dụng công cụ biên dịch nhỏ nhất có thể, công cụ biên dịch 1024 byte theo ngôn ngữ lập trình FALSE hoặc một số dạng khác dưới 200 byte. Phiên bản Muller 2.0 chứa công cụ biên dịch Amiga.

Mã lệnh

[sửa | sửa mã nguồn]

Bao gồm 8 ký tự:

>:Đẩy con trỏ qua ô nhớ tiếp theo (ô nhớ bên phải).
<:Đẩy con trỏ về ô nhớ trước (ô nhớ bên trái).
+:Tăng giá trị của ô nhớ hiện tại 1 đơn vị.
-:Trừ giá trị của ô nhớ hiện tại 1 đơn vị.
.:Trả về giá trị của ô nhớ hiện tại theo mã ASCII.
,:Đọc giá trị input và lưu vào ô nhớ hiện tại.
[:Nhảy đến mã lệnh sau ký tự ] nếu ô nhớ hiện tại bằng 0.
]:Nhảy về ký tự [ nếu ô nhớ hiện tại khác không.
(Cặp ký tự [ ] thực hiện cấu trúc lặp.)

Như tên gọi, brainfuck gây khó khăn cho trong việc đọc hiểu code. Một mặt là vì mã liệu là một chuỗi ký tự dài phức tạp, mặt khác là do chương trình không biểu hiện rõ các phần đọc, xử lý dữ liệu và ghi.

Sau đây là các ví dụ về chương trình viết bằng ngôn ngữ brainfuck:

Đoạn mã ví dụ: Đọc vào một số chữ cái latin viết thường và in ra chữ cái đó dạng viết hoa. Dữ liệu vào kết thúc bằng ký tự có mã ASCII bằng -1. ,+[---------------------------------.,+] Đầu tiên, con trỏ đang ở ô nhớ số 0. Đọc vào ký tự đầu, cộng mã ASCII 1 đơn vị. Nếu ký tự đó là -1 thì a[0]=0, chương trình kết thúc, ngược lại thực hiện vòng lặp. Trừ đi 1 đơn vị, và trừ 32 đơn vị để giá trị được mã ASCII của ký tự in hoa.(Mã ASCII của 'A' là 65, của 'a' là 97). Mã lệnh '.' thực hiện xuất kết quả được lưu ở ô nhớ hiện tại tức ô nhớ 0. Tiếp tục đọc ký tự tiếp theo tăng 1 đơn vị. Nếu ký tự tiếp theo là -1 thì a[0]=0 vòng lặp kết thúc.

Chương trình sau sẽ viết ra chữ 'd':

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

Tham khảo

[sửa | sửa mã nguồn]

Liên kết ngoài

[sửa | sửa mã nguồn]
Chúng tôi bán
Bài viết liên quan
Raiders of the Jade Empire 2018 Vietsub
Raiders of the Jade Empire 2018 Vietsub
Raiders of Jade Empire China, như chúng ta biết ngày nay, sẽ không tồn tại nếu không có nhà Hán
Review Smile - Kinh dị tốt, ý tưởng hay nhưng chưa thoát khỏi lối mòn
Review Smile - Kinh dị tốt, ý tưởng hay nhưng chưa thoát khỏi lối mòn
Smile là một bộ phim kinh dị tâm lý Mỹ năm 2022 do Parker Finn viết kịch bản và đạo diễn, dựa trên bộ phim ngắn năm 2020 Laura Has’t Slept của anh ấy
Ước mơ gấu dâu và phiên bản mini vô cùng đáng yêu
Ước mơ gấu dâu và phiên bản mini vô cùng đáng yêu
Mong ước nho nhỏ về vợ và con gái, một phiên bản vô cùng đáng yêu
Sách Ổn định hay tự do
Sách Ổn định hay tự do
Ổn định hay tự do - Cuốn sách khích lệ, tiếp thêm cho bạn dũng khí chinh phục ước mơ, sống cuộc đời như mong muốn.