Undeath Posted September 19, 2012 Report Posted September 19, 2012 Nu, nu te-am injurat. Brainfuck este, efectiv, un limbaj de programare.Face parte din categoria limbajelor de programare ezoterice, adica este mai mult un concept decat un limbaj din care pot iesi aplicatii adevarate.Concepte brainfuckConceptele care guverneaza Brainfuck nu sunt chiar asa de greu de inteles, dar programele sunt mult mai greu de scris sau de citit decat in C sau in alte limbaje.In primul rand, Brainfuck functioneaza pe baza unor celule de memorie. Fiecare celula contine un numar. La inceput numarul este 0 (zero), dar poate fi incrementat cu operatorul + sau decrementat cu – (minus) teoretic de oricate ori vrei. Se poate sari de la o celula la o alta, invecinata, cu < (se muta la celula din stanga) sau > (se muta la celula din dreapta).Mai exista doi operatori pentru citire si afisare. Citirea de la tastatura se face cu , (virgula), iar scrierea cu . (punct). Scrierea caracterului inseamna ca se transforma numarul din celula in reprezentarea ASCII (de exemplu pentru 65 va scrie ‘A’). La fel, citirea de la tastatura inseamna ca tasta apasata se transforma in cod ASCII si se “depoziteaza” in celula.Pe langa aceste 6 semne, alfabetul Brainfuck mai contine si paranteze drepte ( [ si ] ). Aceasta este singura forma de bucla disponibila in Brainfuck. In principiu “[" inseamna ca instructiunea urmatoare este executata doar daca celula curenta NU este goala (nu contine zero), altfel se duce la paranteza inchisa "]” corespondenta.Puteti sa va ganditi la aceste celule ca la niste borcane cu boabe de fasole. Cu parantezele unghiulare (< si >) va mutati de la un borcan la altul. Cu plus (+) puneti un bob in borcanul la care sunteti, cu (-) scoateti bobul. Cu virgula (,) puneti cate boabe vreti in borcan, iar cu punct (.) numarati si scrieti pe hartie.Acestia 8 sunt singurii operatori si singurele caractere recunoscute de un eventual compilator de Brainfuck. Orice alte caractere ar trebui ignorate.Iata o sinteza:< Merge la celula (borcanul) din stanga.> Merge la celula (borcanul) din dreapta.+ Adauga o unitate (un bob) in borcanul curent.- Scade o unitate (un bob) din borcanul curent.. Afiseaza caracterul ASCII corespunzator valorii din celula., Valoarea citita (tasta apasata) este depusa in celula.[ Incepe/Continua bucla daca celula nu e goala (!=0).] Sare la inceputul buclei.Testeaza BrainfuckDaca va tenteaza sa va jucati, am scris un interpretor Brainfuck in PHP. Diferenta fata de un eventual interpretor real este ca nu am implementat nicio functie care sa trateze operatorul de citire (virgula), deci functioneaza numai pentru afisare.EpilogBrainfuck nu este interesant pentru crearea pentru productie a unor programe, ci pentru antrenarea creierului pentru conceperea algoritmilor. De exemplu, puteti incerca sa realizati mici programele cum ar fi o secventa care simuleaza un IF din limbajele superioare, sau secvente pentru adunarea/scaderea/inmultirea/impartirea a doua numere intregi.Brainfuck este un limbaj de programare cu reguli foarte stricte. Iti poti antrena talentul in programare folosindu-te numai de aceste reguli pentru crearea de programele cat mai complexesursa : Brainfuck - Scoala Web Quote