giovedì 12 giugno 2014

Calcolare all'inverso, come i polacchi?

A volte capita. Capita proprio a tutti, ci mancherebbe altro. Ci sono dei programmi di uso quotidiano, quelli che proprio utilizzi senza pensarci. Senza andare in profondità, studiarne le caratteristiche, esplorare tutti i vari sottomenù. Eh già. Perché sono fatti così, in fondo sono proprio  fatti apposta. Li lanci e li utilizzi. Per esempio, fai il conto sulla lista della spesa, controlla quanto hai speso in cose inutili ad esempio (le più deliziose ed intriganti, come ben sappiamo). Come fai? Semplice, se sei su un Mac apri Calcolatrice ed inizi a batterci dentro i numeri. Tiri le dovute somme, eventualmente ti senti un attimo in colpa per i soldi spesi (appena un attimo, non più del dovuto) e poi via.

Quello è ciò che deve fare una calcolatrice: a costo di esser banale, lo ripetiamo: fare i conti.

Non è che ti aspetti molte sorprese, in fondo. Eccoti qui la calcolatrice, semplice come deve essere 

CalcBas

Le immagini sono tutte screenshot di "Calcolatrice” su OS X 

Non ha certo l’aria di metter soggezione a qualcuno, non sembra una sua prerogativa quella di poter celare sorprese. Naturalmente quando i conti diventano un poco più complessi, si può sempre chiedere alla calcolatrice, per ora splendidamente basilare, di fare uno sforzo in più e diventare leggermente più scientifica… e lei prontamente obbedisce, slargandosi appena un po’ (la cultura prende spazio).

CalcSc

Notate come abbiano fatto la loro comparsa tutte le funzioni trigonometriche insieme con i logaritmi (naturali, in base due - mai usati - e in base dieci) e altre simpatiche possibilità (come il generatore di numeri casuali, ad esempio).

Una possibilità ulteriore è quella della vista programmatore, e qui andiamo abbastanza sull’esoterico, per molte persone (me incluso). Notare come uno strumento semplicissimo, banale quasi in maniera irritante - nel primo caso - si è già trasformato in un tool particolarmente elaborato, capace di costituire un valido strumento di lavoro in un ambito decisamente particolare. 

CalProg

E già potrebbe essere abbastanza, per un programmino diciamo accessorio che viene insieme con il sistema operativo. Però non è tutto. 

C’è ancora da esplorare il "Mela-R”: la porta di accesso - come stiamo per vedere - ad una logica differente, ad un altro modo di mettere insieme i numeri.

Era lì che aspettava, ma io non lo sapevo. Grande dunque è stata la mia sorpresa quando ho capito che con "Mela-R” quella che è una ordinaria calcolatrice si trasforma ubbidiente in una calcolatrice che funziona secondo la logica della notazione polacca inversa (RPN, per gli amanti della concisione). Ora, direte voi, che cosa è mai questa notazione inversa? Ai più non dice nulla, siamo d’accordo.

Mi sembra logico.

A me riporta invece di colpo agli anni lontani dell’adolescenza. Di quando papà portò a casa fiero una prima calcolatrice Hewlett Packard. Che appunto oltre a fare un sacco di cose sbalorditive per l’epoca (come programmare ad esempio) aveva qualcosa di  radicalmente diverso dalle “altre". Un vero modo di pensare differente. Una diversità tale che si imponeva anche di fronte ad un semplice calcolo, del tipo 2 +3 (lo so si può perfino fare a mente, se mi sforzo ci riesco, ma è per fare un esempio).

Il punto è che su una calcolatrice RPN non puoi fare 2 + 3 e battere il tasto di uguale.

CalcRPNScien

Per il semplice fatto (verificate qui sopra) che il tasto di uguale non esiste.

No, non esiste.

Non esiste perché non serve.

Abbastanza spiazzante, eh? Vediamo di fare un po’ di luce.

"La notazione polacca inversa (in inglese reverse polish notation o semplicemente RPN) è una sintassi utilizzata per le formule matematiche. Fu inventata dall'australiano Hamblin, filosofo ed esperto di computer, e fu così chiamata per analogia con la notazione polacca, inventata da Łukasiewicz. Con la RPN è possibile effettuare qualsiasi tipo di operazione, con il vantaggio di eliminare i problemi dovuti alle parentesi e alla precedenza degli operatori (prima la divisione, poi l'addizione ecc.). Alcune calcolatrici scientifiche utilizzano la RPN in quanto evita l'annotazione di risultati intermedi durante le operazioni.” (dalla relativa voce di Wikipedia)

Dunque, riepilogando la faccenda proiettata nell’evidenza di più immediata caratura, il tasto di uguale non serve. Perché se devo fare “2 + 3” prima introduco il 2, poi il 3, li mando all’insù nello stackinfine spingo il tasto”+” che processa i due numeri secondo l’operazione che voglio, e mi fornisce il risultato. E il gioco è fatto. 

Tornando a quel tempo, per me fare i conti (letteralmente) con una logica diversa era una piccola sfida e una possibilità di imparare qualcosa di nuovo. Soprattutto (come ogni  cultore del Perl sa bene) che c’è più di un modo per farlo. E che questo vale anche per le cose più banali. Era un tassello aggiuntivo della scoperta del mondo, un modo in cui mio padre mi stava dicendo che c’è un mondo da scoprire e questo mondo va ben al di là di quanto potevo allora figurarmi. Come oggi. Come in ogni istante. Ci sono più cose nel reale che nelle rappresentazioni di comodo che ci creiamo per illuderci di aver fatto completamente luce su di esso (non sia mai!).

Ecco. Ritrovare la logica RPN dentro la calcolatrice di sistema sul Mac, al di là del fatto che probabilmente non la userò mai veramente, mi arriva  come una deliziosa sorpresa, perché mi riporta ai tempi della giovinezza. All’epoca in cui il mondo era - appunto -  una continua scoperta. 

Che poi sempre lo è. Certo, alle volte uno un po' se lo dimentica. 

Ma fortuna, basta fare "Mela-R” per ricordarselo.