Braifuck 4 fun
Dodane przez kodo dnia 01/27/2011 02:37
Brainfuck for fun.

-Słowem wstępu
W artykule tym chciałem wam przybliżyć język programowania jakim jest brainfuck stworzony przez Urbana Müllera około roku 1993.
Jest to język Ezoteryczny, programuje się od góry do dołu za pomocą małego zestawu instrukcji (o tym za chwilkę) a napisanie prostych nawet programików urasta do rangi całkiem dobrej łamigłówki, operuje się głównie na komórkach które przechowują wartość 0-255.
Zaletą jest stosunkowo prosty i mało ważący kompilator.
Pewnie spytacie po co więc uczyć się tego skoro to trudne i stworzenie operacji mnożenia wymaga nadmiernego kombinowania ?
Odpowiedź jest prosta jest to język do zabawy i rozruszania mózgownicy.

-Komedy
> zwiększenie licznika komórki
< zmniejszenie licznika komórki
+ zwieszenie wartości komórki o 1
- zmniejszenie wartości komórki o 1
. wyświetlenie bieżącej komórki jako znaku ASCII
, pobranie wartości w postaci znaku ASCII z klawiatury i wstawienie do bieżącej komórki
[ skacze bezpośrednio za odpowiadający mu ], jeśli w bieżącej komórce znajduje się 0
] skacze do odpowiadającego mu [

Ostatnie 2 komendy są troszkę dziwne ale służą do tworzenia pętli co do pozostałych wydają się raczej zrozumiałe.


-Przygotowania
Pobieramy Brainfuck Machine np. z tej strony http://www.idg.pl/ftp/pc_11015/Brainfuck.machine.html
BM jest dość dobry z tej racji że jest to zarówno kompilator jak i interpreter języka. Posiada także wbudowany debugger.
Ponadto jest szybki i posiada konwersje na kilka innych prostych języków jak np. C
Po wypakowaniu jest gotowy do akcji.
Programy testujemy za pomocą opcji Debug która wykonuje komenda po komendzie program a efekty można zobaczyć z prawej strony w postaci listy komórek wraz z wartościami i pod spodem jako efekt działania na konsoli. Można też użyć opcji Run która odpali cały program od razu i na dole wyświetli to co wyświetliła by konsola. Warto też pamiętać że kompilator ignoruje wszystkie inne znaki oprócz znaków komend dlatego pisanie swoich komentarzy jest proste i łatwe.


-Kilka programów
Poniżej kilka prostych programów wraz z komentarzem

!start
+>++>+++

Program jest trywialnie prosty, wykorzystuje 3 komórki działa następująco
+ dodaje do komórki k(0) 1, następnie > zmienna komórkę na komórkę k(1) a ++dodaje do niej 2, i analogicznie > zmienia k(1) na k(2) i za pomocą +++ dodaje do niej 3.

!mnożenie, czyli korzystanie z pętli
++[>+++<-]

powyższa pętelka mnoży 2(++) razy 3(+++), w taki sposób że jeśli w komórce ustawionej przed znakiem [ jest coś innego niż 0 to wykona się kod wewnątrz nawiasów czyli do komórki następnej dodane zostanie 3 a od komórki początkowej odjęte zostanie 1.

!Czytanie i pisanie po ekranie
,[.,]

Kod ten wczytuje i wypisuje na ekran tekst z klawiatury, właściwie to łapie znaki i wysyła je od razu do wypisania
Działa on następująco , wczytuje wartość z klawiatury do k(0) dzięki temu może wystartować pętla która będzie się kręcić aż do podania wartości 0 ().
W samej pętli wypisujemy wpisany znak i pobieramy następny.

!Brain**** czyli dokończ zdanie
++++++++++[>++++++++++<-]>++.<+++[>+++++<-]>.<++[>---------<-]>.<++[>++++<-]>.,

Poniższy kod wypisuje na ekran brakujące słowo z nazwy czyli fuck. warto zwrócić uwagę na , na końcu programu. Dodano go aby po ewentualnym skompilowaniu program czekał na naciśnięcie przycisku a nie mrugną na ekranie jak błyskawica.

Te proste przykłady obrazują działanie komend, reszta zależy już tylko od ciebie i twojej inwencji. Do dzieła!

Author: kodo(Piotr Pięda)