Brainfuck by Faszczu PL

Faszczu
<brainfuck by="by" faszczu="Faszczu" pl="PL">

[Wstep]
Brainfuck jest to stworzony okolo 1993 roku jezyk programowania o prostej
skladni. Jego ojcem jest Urban Müller ktorego celem bylo stworzenie dla zabawy
jezyka o mozliwie malym kompilatorze zdolnego obsluzyc maszyne Turinga.
Podczas swojej pracy inspirowal sie jezykiem False. Pierwszy kompilator
Brainfucka napisany zostal na Amige i zajmowal jedynie 240bajtow.
Nazwa tego jezyka wziela sie ze stopnia trudnosci programowania w nim.
Do napisania nawet prostej aplikacji trzeba sie czasem niezle naglowic o czym
sie wkrotce przekonasz.

[Srodowisko]
Miejscem naszej pracy jest jednowymiarowa tablica majaca dlogosc 30 000
komorek. Kazda z tych komorek posiada rozmiar byte, czyli mozna ja wypelnic
liczba z zakresu od 0 do 255. W przypadku przekroczenia ktorejs z tych wartosci
poprostu wracamy na przeciwna strone. Czyli dodajac jeden do 255 otrzymujemy 0,
lub odejmujac od 0 jeden uzyskujemy 255, to samo dzieje sie z numerami komorek.

[Skladnia]
W Brainfucku do dyspozycji mamy tylko 8 instrukcji. Kazda z nich
reprezentowana jest przez jeden znak.

Sa to:

  • zwiekszenie wartosci komorki o 1
  • zmniejszenie wartosci komorki o 1

przejscie do nastepnej komorki
< przejscie do wczesniejszej komorki
. wyswietlenie znaku
, pobranie znaku
[ rozpoczecie petli
] zamkniecie petli

Sadze, ze pierwszych 4 instrukcji tlumaczyc nie trzeba.
'.' powoduje wyswietlenie na ekranie znaku zgodnie z tablica ASCII. Wartosc
komorki w ktorej sie znajdujemy okresla numer wyswietlonego znaku.
',' powoduje pobranie od uzytkownika wartosci w zaleznosci od wcisnietego
klawisza i umieszczenie jej w komorce w ktorej sie obecnie znajdujemy.
'[]' tworzy pelte. Instrukcje znajdujace sie pomiedzy nawiasami beda wykonywane
do momentu w ktorym wartosc komorki w ktorej sie znajdujemy nie wyniesie 0.

[Przyklady]
Teraz czas na przeanalizowanie kilku prostych przykladow ktore pomoga ci lepiej
zrozumiec opisane wczesniej rzeczy.

'+[,.]' - ten krotki program bedzie wypisywal wcisniete przez ciebie znaki.

  • zwieksza wartosc komorki o 1 by mogla sie rozpoczac petla, w petli natomiast
    pobieramy z klawiatury znak ',' i wyswietlamy go '.'. Petla ta bedzie sie
    wykonywac w nieskonczonosc poniewaz nie jestesmy w stanie wcisnac znaku o
    numerze 0 by zakonczyc petle.

',>,<[>+<-]>.' - ten kod natomiast zsumuje dwie podane przez ciebie wartosci.
',>,<' pobiera od ciebie dwie wartosci umieszczjac je w sasiadujacych komorkach
i wraca do komorki poczatkowej.
'[>+<-]' przejdzie do drugiej komorki, doda do niej jeden, cofnie sie do
poczatkowej i odejmie z niej jeden. Bedzie sie wykonywac dopuki wszystkie
wartosci z komorki pierwszej nie znajda sie w komorce drugiej.
'>.' przejdzie do komorki w ktorej znajduje sie nasza suma i wyswietli ja.

'++++++[>++++++++++++<-]>.<++++++[>+++++<-]>-.+++++++..+++.' to ostatni
przyklad ktory wypisze na ekranie 'Hello'.
'++++++[>++++++++++++<-]' jest prostym mnozeniem w petli, do drugiej komorki
dodana zostanie 6 razy wartosc 12. Spowoduje to ustawienie w drugiej komorce
wartosci 72 co odpowiada znakowi 'H'.
Po wyswietleniu go '>.<' wroci do pierwszej komorki by '++++++[>+++++<-]'
wykonal kolejne mnozenie. Jako ze nie da sie nim dojsc do pozadanej wartosci
musimy przed wyswietleniem odjac jeden '>-.'. W ten sposob uzyskujemy litere
'e'. Ten kod natomiast '+++++++..+++.' zwieksza wartosc komorki do litery 'l',
wyswietla ja dwa razy oraz przechodzi do 'o' rowniez je wyswietlajac.

[Zakonczenie]
To by bylo na tyle. Mam nadzieje, ze moj artykul pomogl ci pojac zasady
rzadzace Brainfuckiem. Zycze milej zabawy w programowaniu.

20 komentarzy

bfmachine ide

o brainfucku już dawno temu słyszałem, ale ten tekst jest dobry
brain fuck polecam

Może ktoś da kurs jak pisać w fuckfuck? To w sumie podobne, ale zamiast symboli są angielskie bluzgi... lol...

Jak lubicie takie twory to polecam malbolge http://pl.wikipedia.org/wiki/Malbolge buhahahaha :D

+++++++++++++[>+++++<-]>++++++++.+++++++++++.-.
<+++++[>----------<-]>-.[>++<-]>+++.<+++++++[>+
+<-]>--..---.[>+<--]>-----... :))) W sumie nic sie tym nie da zrobic =( zeby mozna bylo uzyc troszq wiecej znaczkow =], moze jakies read/write file =}, wirusy w brainfucq by powstaly LOL ! :)

jak napisze swój system to zamiast *.bat będzie *.brf :P buahahahaha

Ta... Whitespace jest lepsze... 8 znaków to przecież 3 bity, w Whitespace korzystamy z 3 znaków - to 2 bity :)

Nie wystarcza ci to co ja napisalem? Jest tu chyba wszystko.

zajebist* jezyk -juz sie ucze!!
ma ktos jakies kursy??

fajne, fajne...

no nie powiem :P
jezyk niczego sobie, tylko nieco trudny :D

wiecej opisow;]

jebacz musku ... banalny pomysl - brainfuck r0x

ten jezyk zostal chyba stworzony aby pokazac ze programowanie moze byc trudne :P

Nawet fajny ten jeb*** mozgu:)

Prosze cie bardzo: http://esoteric.sange.fi/brainfuck/
Do wyboru do koloru :-P

łaa!! spodobał mi sie ten język %) Do tego ta podkreślająca nastrój nazwa ;d ymm.. Faszczuu! Gdzie moge zessać kompilator? :)

Hehe :P, jaka beka :P podoba mi się to, bardzo fajny miał ktoś pomysł :P

  1. Faszczu - jesteś tu tak długo i nadal nie wiesz, że w artykułach przestrzegamy pisania z polskimi znakami :)
  2. art dobry, czytelny i ciekawy
  3. ciekawe, kto pokusi się o podobny w Whitespace (i jak wyświetli kody źródłowe [green])