Brainfuck

Brainfuck on programmeerimiskeel, mille lõi Urban Müller eesmärgiga kirjutada maailma kõige väiksem kompilaator.

Loomulikult vajas selline kompilaator ka maailma väikseimat programmeerimiskeelt, milleks saigi Brainfuck.

Brainfuck
Faililaiend .b, .bf
Paradigma esoteeriline
Väljalaskeaeg 1993
Looja Urban Müller
Mõjutatud keeltest P", FALSE

Urban Mülleril õnnestus kirjutada Amiga OS 2.0-le kompilaator, mis oli vaid 200 baidi suurune. Brian Raiter kirjutas Linuxile kompilaatori, mis saavutas suuruse 171 baiti. Brainfucki kompilaatoreid ja interpretaatoreid on eri autorid kirjutanud paljudes keeltes. Eriti tasub ära märkida Brainfucki interpretaatoreid, mis on kirjutatud Brainfuckis. Eeskätt Daniel B. Cristofani kirjutatud imetilluke variant.

Süntaks

Brainfuck on minimalistlik keel. Programmis on kesksel kohal üks globaalne viitmuutuja, mis programmi alguses viitab esimesele positsioonile suures baitide massiivis (võib olla näiteks 30 kilobaidi suurune), mis kõik on vaikimisi seatud väärtusele null. Keeles on kaheksa käsku, mis kõik koosnevad vaid ühest sümbolist:

  • > liigutab viida ühe positsiooni võrra edasi
  • < liigutab viida ühe positsiooni võrra tagasi
  • + suurendab viidatavat baiti ühe võrra
  • - vähendab viidatavat baiti ühe võrra
  • . kirjutab viidatava baidi tähemärgina programmi väljundisse
  • , loeb programmi sisendist tähemärgi ja kirjutab selle väärtuse viidatavasse baiti
  • [ liigub edasi vastava ']'-ni, kui viidatav bait võrdub nulliga
  • ] liigub tagasi vastava '['-ni, kui viidatav bait ei võrdu nulliga

Hello world

Hello world programm Brainfuckis:

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

Brainfucki interpretaator

Tegu on väga lihtsa C++ programmiga, mis näitab Brainfucki koodi väljundit seda kompileerimata.

#include  #include  using namespace std;  int main() {    unsigned char buffer[30000] = {0};    char *ptr = "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.";    unsigned char *ptr2 = buffer;    stack<char *> pos_stack;    while(*ptr && *ptr != EOF)    {       if(*ptr == '+') ++*ptr2;       if(*ptr == '-') --*ptr2;       if(*ptr == '>') ++ptr2;       if(*ptr == '<') --ptr2;       if(*ptr == ',') *ptr2 = cin.get();       if(*ptr == '.') cout << *ptr2;       if(*ptr == '[') pos_stack.push(ptr + 1);       if(*ptr == ']' && *ptr2 != 0) ptr = pos_stack.top();       else {          if(*ptr == ']' && *ptr2 == 0) pos_stack.pop();          ptr++;       }       fflush(stdin);    }    return 0; } 

Välislingid

Tags:

Brainfuck SüntaksBrainfuck Hello worldBrainfuck i interpretaatorBrainfuck VälislingidBrainfuckKompilaatorProgrammeerimiskeel

🔥 Trending searches on Wiki Eesti:

EukarüoodidKelly SildaruJalgpallIlmutusSwedbankVoldemar PansoKilpkonnalisedHugo Malmsten (noorem)Elizabeth IIIndiaIiri meriJeesuse ristilöömineEstoniaTangensMaailma rahvaarvNaisenimede loendAndero ErmelVanade ja vähemlevinud mõõtühikute loendMetskitsPrantsusmaaMatsalu rahvusparkWerol TehasedRenato GuttusoSugulussuhtedSüdame rütmihäiredLeukotsüütTamm (perekond)GruusiaFranz KafkaNewtoni seadusedVõruDemokraatiaOtt TänakHarilik kuuskUrmas EspenbergHarilik mändAnnely AkkermannVetikadMaterjaliteadus2023. aasta Riigikogu valimisedLiivi sõdaSingapurVanemuine (teater)OksüdatsiooniasteJuudidIsamaa ErakondÜlestõusmispühadEesti ansamblite loendRaivo PeäskeKeemiliste elementide loendMaarja UnduskMark RutteVenemaa linnade loendKonstantin PätsLahemaa rahvusparkEesti TelevisioonRoomaSuduLepo SumeraRahvusooper EstoniaKristjan Jaak PetersonPajuEesti tähestikEesti KeskerakondDoonauMesopotaamiaKummituslinnEutrofeerumineKonkubiin🡆 More