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
Chân dung Drew Gilpin Faust - Hiệu trưởng Đại học Harvard
Chân dung Drew Gilpin Faust - Hiệu trưởng Đại học Harvard
Đó là những lời khẳng định đanh thép, chắc chắn và đầy quyền lực của người phụ nữ đang gánh trên vai ngôi trường đại học hàng đầu thế giới
Nhân vật Tsuyuri Kanao trong Kimetsu no Yaiba
Nhân vật Tsuyuri Kanao trong Kimetsu no Yaiba
Tsuyuri Kanao「栗花落 カナヲ Tsuyuri Kanao」là một Thợ Săn Quỷ. Cô là em gái nuôi của Kochou Kanae và Kochou Shinobu đồng thời cũng là người kế vị của Trùng Trụ Shinobu
Tổng quan về EP trong Tensei Shitara Slime Datta Ken
Tổng quan về EP trong Tensei Shitara Slime Datta Ken
EP có nghĩa là Giá Trị Tồn Tại (存在値), lưu ý rằng EP không phải là ENERGY POINT như nhiều người lầm tưởng
Những chi tiết ẩn dụ khiến bạn thấy
Những chi tiết ẩn dụ khiến bạn thấy "Thiếu Niên Và Chim Diệc" hay hơn 10 lần
Những bộ phim của Ghibli, hay đặc biệt là “bố già” Miyazaki Hayao, luôn mang vẻ "siêu thực", mộng mơ và ẩn chứa rất nhiều ẩn dụ sâu sắc