
Diengcyber.com – Dalam dunia pemrograman pastinya ada bahasa yang sulit dipelajari dan dimengerti oleh manusia.
Bisa saja karena memang tujuan dari bahasa tersebut bukan dibuat untuk dipelajari dan dipahami oleh manusia, tapi ditujukan untuk mesin.
Alasan lain mungkin karena sintaks bahasa tersebut terlihat hanya berisi simbol atau angka-angka random yang tidak jelas.
Atau bahkan bisajadi bahasa tersebut dibuat hanya untuk bercandaan dan hiburan, ataupun tantangan bagi orang-orang.
Contoh bahasa tersebut adalah brainfuck. Brainfuck adalah bahasa pemrograman esoterik yang dibuat pada tahun 1993 oleh Urban Müller, dan terkenal karena minimalitasnya yang ekstrem.
Nama bahasa itu mengacu pada istilah slang brainfuck, yang mengacu pada hal-hal yang begitu rumit atau tidak biasa sehingga melampaui batas pemahaman seseorang.
Overview Bahasa
Brainfuck beroperasi pada larik sel memori, masing-masing awalnya diatur ke nol. (Dalam implementasi aslinya, panjang array adalah 30.000 sel, tetapi ini mungkin bukan bagian dari spesifikasi bahasa; ukuran yang berbeda untuk panjang array dan ukuran sel memberikan varian bahasa yang berbeda). Ada pointer, awalnya menunjuk ke sel memori pertama. Perintahnya adalah:


Contoh Program Menggunakan Brainfuck
Program ini menampilan kata Hello World! :
1 +++++ +++ Set Cell #0 to 8
2 [
3 >++++ Add 4 to
Cell #1; this will always set Cell #1
to 4
4 [ as the cell
will be cleared by the loop
5 >++ Add 4*2 to
Cell #2
6 >+++ Add 4*3 to
Cell #3
7 >+++ Add 4*3 to
Cell #4
8 >+ Add 4 to
Cell #5
9 <<<<- Decrement the loop counter in Cell #1
10 ] Loop till
Cell #1 is zero
11 >+ Add 1 to
Cell #2
12 >+ Add 1 to
Cell #3
13 >- Subtract 1 from
Cell #4
14 >>+ Add 1 to
Cell #6
15 [<] Move back to the first zero cell you find; this will
16 be Cell #1
which was cleared by the previous loop
17 <- Decrement the loop Counter in Cell #0
18 ] Loop till Cell #0 is zero
19
20 The result of this is:
21 Cell No : 0 1 2 3 4 5 6
22 Contents: 0 0 72 104 88 32 8
23 Pointer : ^
24
25 >>. Cell #2 has value 72 which is ‘H’
26 >—. Subtract 3 from Cell #3 to get 101 which is ‘e’
27 +++++ ++..+++. Likewise for ‘llo’ from Cell #3
28 >>. Cell #5 is 32 for the space
29 <-. Subtract 1 from Cell #4 for 87 to give a ‘W’
30 <. Cell #3 was set to ‘o’ from the end of ‘Hello’
31 +++.—– -.—– —. Cell #3 for ‘rl’ and ‘d’
32 >>+. Add 1 to Cell #5 gives us an exclamation point
33 >++. And finally a newline from Cell #6
Program yang sama ketika diperkecil menjadi :
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>
editor : kanh_cilor