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

+++++++++++++[>+++++<-]>++++++++.+++++++++++.-.
<+++++[>----------<-]>-.[>++<-]>+++.<+++++++[>+
+<-]>--..---.[>+<--]>-----... :))) 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 ! :)

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

jebacz musku ... banalny pomysl - brainfuck r0x

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

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

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;]

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])