fbpx
Crea sito

Perché il primo PC aveva la notazione polacca inversa?

La notazione polacca inversa è, appunto, una notazione, nata molto prima delle sue applicazioni informatiche. Il nome (abbreviato in RPN, per Reverse Polish Notation) è in onore di Jan Łukasiewicz, filosofo polacco che la introdusse nei suoi lavori di logica a partire dagli anni ’20 del secolo scorso.

Il senso della RPN è principalmente poter scrivere espressioni aritmetiche equivalenti a quelle che si scrivono usando le parentesi e le convenzioni di precedenza degli operatori, masenza le parentesi e le convenzioni. Usa cioè meno segni e meno regole.

Da questo punto di vista è una soluzione elegante e minimale. La minimalità però si paga. La RPN, almeno finché non ci si fa l’abitudine, risulta meno facile da usare; le regole sono poche ma bisogna applicarle mentalmente. Per capire meglio cosa significa basta pensare alle raccomandazioni che tipicamente si fanno ai programmatori: invece di sfruttare le regole di precedenza, meglio esplicitare qualche parentesi. L’espressione è più chiara e si usa la cortesia di evitare un esercizio (e possibili errori) a chi dovrà leggerla. Ecco, la RPN parte invece dall’opinione (lecita) che l’esercizio mentale sia cosa sana e giusta.
Per esempio, l’espressione tradizionalmente scritta:

5 + ((1 + 2) × 4) − 3

in RPN si scrive:

5 1 2 + 4 × + 3 −

Da notare che fra ‘5’, ‘1’, e ‘2’ c’è uno spazio, significativo affinché le tre cifre siano interpretate come tre operandi e non come un unico ‘512’. Nella notazione tradizionale invece gli spazi non sono significativi: gli operatori separano gli operandi.

Ovviamente, il risultato dell’espressione, comunque sia scritta, deve essere 14.

La RPN e le calcolatrici

A un certo punto, la minimalità delle regole per interpretare la RPN è diventata un’opportunità per realizzare calcolatrici capaci di calcolare espressioni complesse, ma con un’organizzazione dell’hardware semplice, conveniente ed efficiente. Le calcolatrici RPN sono costruite intorno a una precisa soluzione implementativa: la memoria a pila (o stack).

La pila è una struttura dati in cui gli operandi sono impilati uno “sopra” l’altro e prelevati dalla “cima” – gli amanti degli acronimi inglesi dicono LIFO, per Last In First Out. Nelle calcolatrici è utile per il calcolo delle espressioni. Nei calcolatori è lo strumento principe per passare parametri/risultati in chiamate/ritorni di sottoprogrammi. La pila e la RPN sono anche alla base di alcuni linguaggi di programmazione, uno fra tutti il Forth.

Riprendiamo il nostro esempio di espressione in RPN “5 1 2 + 4 × + 3 −” e interpretiamolo proprio come fa una calcolatrice RPN, cioè usando la pila. Per descrivere lapila usiamo una lista fra graffe, con la cima a destra, e.g {A, B}, B è l’ultimo inserito e il primo candidato ad essere prelevato. Battendo un operando, la calcolatrice semplicemente lo inserisce nella pila:

‘5’→ {5}
‘1’→ {5, 1}
‘2’→ {5, 1, 2}

Battendo un operatore, la calcolatrice estrae i primi due valori della pila, applica l’operatore e reinserisce il risultato nella pila, quindi:

‘+’→ {5}, 1 + 2→{5, 3}

passi successivi nell’interpretazione della nostra espressione sono chiari:

‘4’→ {5, 3, 4}
‘×’→ {5}, 3 × 4→{5, 12}
‘+’→ {}, 5 + 12→{17}
‘3’→ {17, 3}
‘−’→ {}, 17 − 3→{14}

Il valore che rimane nella pila, 14, è il risultato atteso.

Fra le prime calcolatrici costruite su un’architettura hardware a pila vanno citate la FridenEC-130, introdotta nel giugno del 1963 e la Mathatron, presentata nel novembre 1963. La Friden era una calcolatrice RPN a tutti gli effetti, la Mathatron invece usava pila e RPN solo internamente, per i programmi delle (notevoli) librerie di funzioni matematiche residenti nella memoria permanente. Da punto di vista utente invece la Mathatron si usavacon la più comoda notazione tradizionale, con la macchina che gestiva parentesi e precedenza degli operatori. Ecco un’espressione, esattamente come veniva battuta e come sivedeva stampata sul nastrino di carta della macchina:

Il risultato era calcolato e stampato dopo la pressione dell’uguale (il ‘••’ era l’operatore di elevazione a potenza). Notevole eh?

Tra le macchine che usano la notazione polacca inversa c’è la Programma 101, affettuosamente detta Perottina, il primo personal computer della storia, come spiega nel video sotto Gastone Garziera, progettista della macchina.

Via Progetto HMR

Copy link
Powered by Social Snap