Brainfuck
Brainfuck on Urban Müllerin noin vuonna 1993 kehittämä esoteerinen ohjelmointikieli, joka tunnetaan äärimmäisestä minimalismistaan. Müllerin tarkoituksena oli saada aikaan mahdollisimman pienikokoinen kääntäjä. Kieli tarjoaa ohjelmoijille älyllistä haastetta ja hupia, mutta käytännöllisiin tarkoituksiin se ei sovellu. YleistäBrainfuck on yksi tunnetuimmista "esoteerisistä ohjelmointikielistä". Kieli on Turing-täydellinen, eli kaikki mahdolliset algoritmit on periaatteessa mahdollista ohjelmoida sillä. Esteenä on ennen kaikkea ohjelmoijan kyky kirjoittaa nämä ohjelmat. Brainfuck-ohjelmien tiedostopäätteenä käytetään useimmiten .b. Ohjelmaa suoritettaessa tulkin tulisi ottaa vain ja ainoastaan huomioon brainfuckin omat kahdeksan komentoa ja karsia muu data. Joissakin tulkeissa saattaa olla erityistoimintoja kuten '#', jolla tulkki esimerkiksi näyttää osoittimen nykyisen paikan ja muutaman viereisen solun arvot. Brainfuck-ohjelmat on suurimmalta osin tehty käyttämään UNIXin rivinvaihtoa, ASCII #010. Jos tulkki lukee syötteen jostain tiedostosta ja päätyy tiedoston loppuun, EOF, sen tulisi jättää solu ennalleen eikä muuttaa sitä. Varsin usein tulkit palauttavat nollan (0) EOF-tilanteessa. KomennotBrainfuckissa on kahdeksan komentoa:
KoodiesimerkkiSeuraava ohjelma tulostaa tekstin "Hello World!": ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>. Luettavuuden parantamiseksi ohjelman voi kuitenkin jakaa useammalle riville ja siihen voi lisätä kommentteja keskelle, sillä Brainfuck ottaa huomioon vain merkit ++++++++++ [ >+++++++>++++++++++>+++>+<<<<- ] Aloitussilmukka joka asettaa hyödyllisiä arvoja taulukkoon >++. tulosta 'H' >+. tulosta 'e' +++++++. 'l' . 'l' +++. 'o' >++. välilyönti <<+++++++++++++++. 'W' >. 'o' +++. 'r' ------. 'l' --------. 'd' >+. '!' >. rivinvaihto Ensimmäinen rivi kasvattaa taulukon ensimmäisen solun arvoon 10, eli Sen jälkeen Seuraava rivi siirtää osoittimen kohtaan Pieni-l on seitsemäs kirjain e:n jälkeen, joten ohjelma lisää soluun Pieni-o on kolmas kirjain l:n jälkeen, joten Ohjelman loppu toimii kuten edellä. Lähteet
|