Brainfuck programlama dili

Brainfuck dili, Turing makinesinin işlevselliğini göstermek için tasarlanmıştır. Bu yüzden pratik bir amaç için kullanılmaz. Ancak bu dilin öğrenilmesi programlama mantığını geliştirmeye yardımcı olabilir. Ayrıca bu dilde yazılmış programları okumak ve anlamak eğlenceli bir zihin egzersizi olabilir.

Brainfuck programlama dili

Brainfuck, sadece sekiz karakterden oluşan ve çok basit bir mantığa sahip olan bir esoterik programlama dili. Bu dilde herhangi bir değişken veya fonksiyon yoktur, sadece bir bellek dizisi ve bir işaretçi vardır. Bellek dizisi 30000 hücreden oluşur ve her hücre bir bayt değerini tutar. İşaretçi ise bu dizinin üzerinde hareket eder ve işlemleri gerçekleştirir.

Brainfuck dilinin tarihi 1993 yılına dayanır. Bu dili ilk olarak Urban Müller adlı bir İsviçreli bilgisayar mühendisi tasarlamıştır. Müller, Amiga bilgisayarları için 240 baytlık bir derleyici yazmış ve bunu bir dergide yayınlamıştır. Daha sonra bu dil internet üzerinden yayılmış ve birçok programcının ilgisini çekmiştir. Brainfuck dilinin birçok varyasyonu ve türevi de ortaya çıkmıştır.

Brainfuck dilinde kullanılan sekiz karakter şunlardır:

+ : İşaretçinin gösterdiği hücrenin değerini bir arttırır.
- : İşaretçinin gösterdiği hücrenin değerini bir azaltır.
> : İşaretçiyi bir hücre sağa kaydırır.
< : İşaretçiyi bir hücre sola kaydırır.
. : İşaretçinin gösterdiği hücrenin değerini ASCII kodu olarak ekrana yazdırır.
, : Klavyeden girilen bir karakterin ASCII kodunu işaretçinin gösterdiği hücreye yazar.
[ : İşaretçinin gösterdiği hücrenin değeri sıfırsa, eşleşen ] karakterine atlar.
] : İşaretçinin gösterdiği hücrenin değeri sıfır değilse, eşleşen [ karakterine geri döner.

Bu sekiz karakter ile istediğiniz her şeyi yapabilirsiniz. Tabii ki çok zor ve karmaşık olacaktır ama bu da brainfuck'ın güzelliği. Bu dilde yazmak bir sanat gibidir. Hem zihninizi hem de parmaklarınızı zorlar. Ayrıca bu dilde yazdığınız kodları başkalarına göstermek de çok eğlencelidir. Çünkü kimse ne yaptığınızı anlamayacaktır.

Örneğin, aşağıdaki kod "Merhaba Dünya!" yazdırmaktadır:

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

Bu kodu nasıl yazdığımı merak ediyor musunuz? Aslında çok basit. Sadece her harfin ASCII kodunu hesaplayıp, o kadar + veya - işareti koyuyorum. Sonra da . ile ekrana yazdırıyorum. Tabii ki arada > ve < ile işaretçiyi kaydırmayı da unutmuyorum. [ ve ] ise döngü oluşturmak için kullanılıyor.

+++++ +++++             10 tane arttır
[                       döngü başlangıcı
    > +++++ ++          7 tane arttır
    > +++++ +++++       10 tane arttır
    > +++               3 tane arttır
    > +                 1 tane arttır
    <<<< -              4 tane sola kaydır ve 1 tane azalt
]                       döngü sonu
> ++ .                  2 tane arttır ve çıktı ver (M)
> + .                   1 tane arttır ve çıktı ver (e)
+++++ ++ .              7 tane arttır ve çıktı ver (r)
.                       çıktı ver (h)
+++ .                   3 tane arttır ve çıktı ver (a)
> ++ .                  1 tane sağa kaydır ve 2 tane arttır ve çıktı ver (b)
<< +++++ +++++ +++++ .  2 tane sola kaydır ve 15 tane arttır ve çıktı ver (a)
> .                     1 tane sağa kaydır ve çıktı ver ( )
++ .                    2 tane arttır ve çıktı ver (d)
> +++ .                 1 tane sağa kaydır ve 3 tane arttır ve çıktı ver (ü)
+++++ +++++ .           10 tane arttır ve çıktı ver (n)
.                       çıktı ver (y)
----- - .               6 tane azalt ve çıktı ver (a)
----- --- .             8 tane azalt ve çıktı ver (!)

Gördüğünüz gibi, bu dilde basit bir şey yapmak bile çok zor. Peki neden böyle bir dil var? Bu dilin yaratıcısı Urban Müller, bu dili sadece eğlence için tasarladığını söylüyor. Ayrıca, bu dilin küçük boyutu sayesinde, çok az yer kaplayan yorumlayıcılar yazmak mümkün. Örneğin, brainfuck yorumlayıcısı olan bf.c adlı programın boyutu sadece 240 byte!

Brainfuck dilini öğrenmek ve kullanmak isteyenler için birçok kaynak bulunmaktadır. Örneğin, Wikipedia'da bu dilin sözdizimi ve örnek programları anlatılmaktadır. Ayrıca, internet üzerinde çeşitli brainfuck yorumlayıcıları ve derleyicileri de mevcuttur. Bu araçlar sayesinde brainfuck dilinde yazılmış programları çalıştırabilir veya başka dillere çevirebilirsiniz.

Brainfuck dilinin avantajları ve dezavantajları nelerdir? Bu sorunun cevabı kişiden kişiye değişebilir. Bazıları bu dili eğlenceli ve zorlayıcı bulabilirken, bazıları ise gereksiz ve saçma bulabilir. Ancak şunu söyleyebiliriz ki, brainfuck dilini öğrenmek ve kullanmak, programlama becerilerinizi geliştirmenize yardımcı olabilir. Çünkü bu dil, size bellek yönetimi, algoritma tasarımı ve optimizasyon gibi konularda pratik yapma imkanı sunar. Ayrıca, bu dilin küçük ve basit yapısı sayesinde, derleyici yazma gibi ileri seviye konulara da giriş yapabilirsiniz.

Brainfuck ile ilgilenenler için daha fazla kaynak şunlardır:

- https://esolangs.org/wiki/Brainfuck
- https://copy.sh/brainfuck/
- https://github.com/pablojorge/brainfuck

Bu dilde daha fazla şey yapmak isterseniz, internette başka birçok kaynak bulabilirsiniz. Benim tavsiyem ise kendinizi denemeniz ve eğlenmenizdir.

Sonuç olarak, brainfuck dilini tanımak ve denemek isteyenler için faydalı bir deneyim olabilir. Ancak bu dili profesyonel veya günlük amaçlarla kullanmak pek mantıklı değildir. Çünkü bu dilin okunabilirliği, bakımı ve genişletilebilirliği çok düşüktür. Bu yüzden brainfuck dilini sadece eğlence veya öğrenme amaçlı olarak ele almak daha doğru olacaktır.

Brainfuck ile yazdığınız kodları yorumlarda paylaşırsanız çok sevinirim.