April 27, 2020

Dünyanın En Küçük Boyutlu Derleyicili Yazılım Dili:Brainf*ck

Brainf*ck (İngilizce beyin beceren), 1993 yılında programcı Urban Müller tarafından yaratılmış bir programlama dilidir. Yaratılma amacı mümkün olan en küçük boyutlu derleyici üretmektir. Bilinen bazı derleyicileri 200 bayttan küçüktür. Sadece sekiz komutu bulunmakla birlikte Turing-bütün bir dil olduğundan teorik olarak herhangi bir algoritma bu dilde yazılıp işletilebilir.

Brainf*ck dili çok basit bir makine modeli ile çalışır, bu modelde her birinin başlangıçtaki değeri 0 olan 30000 hücre ve bu hücreler arasında hareket edebilen bir işaretçi bulunur. (İşaretçi, başlangıçta ilk hücrededir).

Bu programlama dilinin amacı, genel bir dil olmaktan çok programcıları zorlamak ve eğlendirmektir.

Komutlar

Her biri sadece tek karakterden oluşan komutları şunlardır;

ayrıca bu komutların C programlama dilindeki karşılıkları şöyle gösterilebilir;

Örnek

Hello World!

Aşağıdaki program ekrana "Hello World!" ve bir yeni satır yazmaktadır:

Bu kod parçası, okunabilirliği sağlamak için satırlara bölünmüş, boşluklar ve yorumlar eklenmiştir. Brainfuck, sekiz komut karakteri +-<>[],. haricindeki tüm karakterleri yok sayar. Bu nedenle (eklenecek yorum, komut karakterleri içermediği sürece) koda yorum eklemek için özel bir söz dizimine ihtiyaç yoktur. Yukarıdaki kodun fazladan karakterlerden arındırılmış hâli aşağıdaki gibi görünecektir:

İlk satır a[0] = 10, dizinin ilk elemanına 0'dan başlayıp 10 kez artırarak ilk değerini atamaktadır. İkinci satırdan başlayan döngü, dizinin diğer elemanlarına değerler atamaktadır: a[1] = 70 ('H' harfinin ASCII kod değeri olan 72'ye yakın bir değer), a[2] = 100 ('e' harfinin ASCII değeri 101'e yakın), a[3] = 30 (boşluk karakterinin ASCII değeri 32'ye yakın) ve a[4] = 10 (yeni satır karakteri). Döngü, işaretçiyi dizi elemanları üzerinde kaydırarak a[0]'ın değeri 10'u sırasıyla 7,10,3 ve 1'le çarpmaktadır. Döngü bittikten sonra a[0], 0'a eşit olur.

Döngüden sonraki ilk satırda > karakteri işaretçiyi dizide bir eleman ilerletmekte, ++ dizi elemanının 70 olan değerini iki artırarak 72 yapmakta ve . karakteri de sonucu ekrana basmaktadır.