BlooP and FlooP




Bloop și Floop (buclă delimitată și buclă liberă) sunt limbaje de programare simple proiectate de Douglas Hofstadter pentru a ilustra un punct din cartea sa Gödel, Escher, Bach.

Bloop este un limbaj de programare care nu se completează, a cărui structură principală a fluxului de control este o buclă delimitată (adică recursul nu este permisă).

Toate programele din limbaj trebuie să se încheie, iar acest limbaj poate exprima doar funcții recursive primitive.

Floop este identic cu bloop, cu excepția faptului că acceptă bucle nelimitate; Este un limbaj complet Turing și poate exprima toate funcțiile calculabile.

De exemplu, poate exprima funcția Ackermann, care (nefiind primitivă recursivă) nu poate fi scrisă în Bloop.

Împrumut de la terminologia standard în logica matematică, Hofstadter numește buclele nelimitate ale lui Floop Mu-bucle.

Ca toate limbajele de programare complete Turing, Floop suferă de problema de oprire: programele s-ar putea să nu se încheie și nu este posibil, în general, să decidem ce programe fac.

Bloop și Floop pot fi considerate modele de calcul și au fost uneori utilizate în predarea calculabilității.