Notația postfixată[1][2] sau notația poloneză postfixată (în engleză Reverse Polish notation – RPN[3]) este o notație pentru o operație matematică și logică în care operatorii sunt plasați după operanzi, cum ar fi semnul plus în expresia 3 4 +.

Thumb
Ordinea operanzilor și operatorului în notația postfixată

Avantajul acestei notații este că nu are nevoie de paranteze cât timp fiecare operator are un număr de operanzi fix. Descrierea „poloneză” se referă la naționalitatea logicianului Jan Łukasiewicz,[4][5] care a inventat această notație în 1924.[6][7][8][9][10]

Primul calculator care a folosit logica notației postfixate, deși a rămas mult timp necunoscut în afara Germaniei, a fost Z3 al lui Konrad Zuse, în 1941,[11][12][13][14][15][16][17][18] ca și Z4 în 1945. Schema postfixată a fost propusă din nou în 1954 de Arthur Burks, Don Warren și Jesse Wright[19] și a fost rescoperită independent de Friedrich L. Bauer și Edsger W. Dijkstra la începutul anilor 1960 pentru a reduce accesul la memoria calculatoarelor, folosind stiva pentru a evalua expresiile matematice. Algoritmii și notațiile pentru această schemă au fost extinse de către filozoful și informaticianul australian Charles Leonard Hamblin la mijlocul anilor 1950.[20][21][22][23][24][25][26]

În anii 1970 și 1980, Hewlett-Packard a folosit logica postfixată în toate calculatoarele lor de birou și de buzunar și a continuat s-o folosească în unele modele până în anii 2020.[27][28]

În informatică, notația postfixată este folosită în limbaje de programare orientate pe stivă⁠(d), cum ar fi Forth, STOIC, PostScript, RPL și Joy.

Explicarea funcționării

În notația postfixată operatorii urmează operanzii. De exemplu, pentru a aduna 3 cu 4 s-ar scrie 3 4 + în loc de 3 + 4. Dacă există mai multe operații, operatorii sunt dați imediat după operanzii lor (deseori un operator acționează asupra a doi operanzi, caz în care operatorul este scris după al doilea operand); deci expresia scrisă 3 − 4 + 5 în notație convențională (infixată) s-ar scrie 3 4 − 5 + în notația postfixată, unde mai întâi este scăzut 4 din 3, apoi este adunat 5.

Acest mod de lucru este adecvat pe o stivă, unde se aplică regula „ultimul intrat, primul ieșit”. În exemplul de mai sus, 3 este încărcat în partea de jos a stivei (nivelul vizibil) și o acțiune specială (de exemplu apăsarea tastei "Enter ↑ pe un calculator) termină intrarea. Fără această acțiune 4 ar fi atașat la 3, dând 34, ceea ce nu este ce s-a dorit. Când este introdus 4, 3 este „promovat” pe al doilea nivel al stivei, fiind acum deasupra lui 4, vizibil în acest moment. Operatorul de scădere acționează imediat asupra primelor două niveluri ale conținutului stivei, scăzând valoarea de jos din cea de sus, obținând −1 la primul nivel. Acest lucru oprește și introducerea datelor, astfel încât 5 poate fi introdus imediat. Acest lucru ridică automat −1 la al doilea nivel. Atunci când utilizatorul apasă apoi + (adunare), conținutul primelor două niveluri este adunat, iar rezultatul, 4, apare în partea de jos. Această promovare (și retrogradare) automată a datelor între nivelurile din stivă, pe măsură ce fiecare operație este efectuată, plasează automat operanzii succesivi așa cum sunt necesari.

În multe calculatoare HP stiva are patru niveluri. Deci, este posibil să se introducă 3, Enter ↑, să se tasteze 4, Enter ↑, să se tasteze 5, Enter ↑ și să se tasteze 6. Acum stiva conține cele patru valori în cele patru niveluri ale sale. Apoi se poate apăsa butonul + de trei ori, iar suma, 18, va apărea la nivelul unu. Orice introducere nouă de date îl promovează pe 18 la nivelul doi. Această activitate este limitată doar de „înălțimea” (mărimea) stivei.

Gestionarea atentă a stivei permite ca expresiile complexe, cu multe paranteze, să fie evaluate într-un mod liniar simplu. Rareori este necesar ca rezultatele intermediare să fie stocate și rechemate, așa cum este nevoie de obicei la sistemele care lucrează în stilul notațiilor algebrice obișnuite.

Prin urmare, avantajul notației postfixate este că elimină necesitatea parantezelor care sunt cerute de notația infixată, deoarece stiva deține toate argumentele într-o progresie ultimul intrat, primul ieșit. De exemplu, pentru a calcula expresia (3 × 4) + (5 × 6), ar trebui tastat 3, apăsat Enter ↑ și tastat 4. La apăsarea × (înmulțire), produsul intermediar 12 apare în partea de jos a stivei. Apoi se tastează 5, Enter ↑ și 6. Rezultatul intermediar 12 a fost promovat la nivelul trei, cu 5 la nivelul doi și 6 la nivelul unu. Este necesar doar apăsarea succesivă a × și apoi a +. Produsul intermediar, 30, apare primul la nivelul unu, iar apoi rezultatul final, 42, apare tot la nivelul unu, deoarece acum s-a adunat 12 de la nivelul doi.

Implicații practice

Prin comparație, la testarea notației postfixate cu notația algebrică, s-a constatat că postfixata duce la calcule mai rapide, din două motive. Primul motiv este că calculatoarele care lucrează după logica postfixată nu au nevoie de paranteze, așa că trebuie introduse mai puține operațiuni pentru a efectua calcule tipice. În plus, utilizatorii calculatoarelor postfixate au făcut mai puține greșeli decât în cazul altor tipuri de calculatoare,[29][30] fapt care poate fi atribuit numărului mai mic de apăsări de taste necesare pentru a introduce această notație.[31] Totuși, dovezi empirice sugerează că notația postfixată este mai dificil de învățat de către utilizatori decât notația algebrică.[30]

Realizări

Limbaje de programare orientate pe notația postfixată

  • Forth
  • STOIC
  • Factor
  • PostScript, limbaj de descriere a unei pagini[32][33]
  • BibTeX
  • Befunge
  • Joy
  • IPTSCRAE
  • Lotus 1-2-3 și Lotus Symphony[34][35]
  • RPL, limbaj de programare pentru Commodore PET în jur de 1979/1981
  • RPL limbaj de programare pentru calculatoare Hewlett-Packard între 1984–2015
  • Reverse Polish Notation Language – (RPNL)[36][37]

Calculatoare

Primul calculator în logică postfixată a fost Z3 al lui Konrad Zuse, construit în 1938 și prezentat publicului la 12 mai 1941.[14][16][38][39] În mod interactiv, permitea introducerea a doi operanzi urmați de operatorul dorit.[11][12][13][14][15][16][17][18][40] Acesta a fost distrus la 21 decembrie 1943 într-un raid de bombardament.[14] Cu ajutorul lui Zuse, în 1961 a fost construită o replică a sa.[14] La calculatorul Z4 din 1945 a fost adăugată o stivă.[41][42]

La începutul anilor 1960 English Electric Company a lansat modelele KDF9 și Burroughs B5000[43] după ideile lui Hamblin.[20][21][24]

Thumb
Calculatorul demonstrativ al Hewlett-Packard "No Equals" era în logică RPN

Hewlett-Packard a realizat HP 9100A în 1968,[27] HP-35 în 1972[27] și HP-10 în 1977. Apoi a produs calculatoarele cu afișaj cu cristale lichide HP-10C, HP-11C, HP-15C, HP-16C și HP-12C, iar în 1990 HP-19BII dispunea de opțiunea de a funcționa în notație infixată sau postfixată. Printre ultimele modele RPN ale HP au fost 12C, 12C Platinum, 17bii+.

În Marea Britanie modelele Sinclair Scientific și Sinclair Scientific Programmable foloseau logica postfixată.[44][45]

În URSS s-au realizat calculatoarele MK-52, MK-61, Elektronika B3-34 și vechiul B3-21,[46][47] și mai modernul MK-161,[48] bazate și ele pe logica postfixată.

Simulatoare

și încă câteva.

Note

Vezi și

Legături externe

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.