Brainfuck ialah sebuah bahasa pengaturcaraan esoterik yang terkenal kerana sifatnya yang mininum. Ia direka semata-mata sebagai cabaran dan hiburan untuk pengaturcara, dan tidak sesuai bagi kegunaan praktikal. Biasanya nama bahasa ini ditapis dalam penulisan, menjadi brainf*ck atau brainfsck, kerana mengandungi perkataan lucah fuck. Nama bahasa ini biasanya tidak menggunakan huruf besar, sungguhpun ia merupakan kata nama khas.

Perintah sunting

Lapan perintah bahasa, setiap satu terdiri dari satu aksara, adalah seperti berikut:

Aksara Erti
> menganjak penunjuk ke kanan.
< menganjak penunjuk ke kiri.
+ menokok bait di penunjuk.
- menyusut bait di penunjuk.
. mengoutput nilai bait di penunjuk.
, menerima input sebanyak satu bait dan menyimpannya di penunjuk.
[ Cabang kehadapan kepada perintah selepas ] yang sama sekiranya bait di penunjuk adalah sifar.
] Lompat kembali kepada perintah selepas [ yang sama jika bait di penunjuk adalah bukan sifar.

(Juga, perintah ] boleh diterjemah sebagai lompat tanpa syaratkepada perintah [ yang sama, atau sebaliknya; perisian akan bertindak sama tetapi lebih perlahan.)

Atur cara hello world sunting

Atur cara berikut mencetak Hello World! dan baris baru pada skrin:

++++++++++
[>+++++++>++++++++++>+++>+<<<<-] Kitaran awal bagi memeta nilai berguna pada jujukan
>++.                             Mencetak 'H'
>+.                              Mencetak 'e'
+++++++.                         Mencetak 'l'
.                                Mencetak 'l'
+++.                             Mencetak 'o'
>++.                             Mencetak ' '
<<+++++++++++++++.               Mencetak 'W'
>.                               Mencetak 'o'
+++.                             Mencetak 'r'
------.                          Mencetak 'l'
--------.                        Mencetak 'd'
>+.                              Mencetak '!'
>.                               Mencetak aksara baris baru

Untuk mudah difahami, kod ini telah dibahagi kepada banyak baris dan ditambah ulasan. Brainfuck mengabaikan semua aksara kecuali +-<>[],. dengan itu tiada sintaks khas bagi ulasan diperlukan. Kod ini boleh juga ditulis sebagai:

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

Pautan luar sunting