L'arte dimenticata dei calcolatori programmabili HP in Reverse Polish Notation (RPN)
Torno in questo articolo a parlare della serie di calcolatori HP sviluppati a partire dagli anni settanta fino alla fine degli anni novanta, e che a mio avviso sono un ottimo esempio di
[caption id="attachment_10329" align="alignright" width="300"] Una HP 15C ancora funzionante dopo 39 anni, e senza nessun tasto sbiadito.[/caption]
- ergonomia d'uso (tool per ingegneri fatti da ingegneri)
- precisione software
- ortogonalità del design
- qualità costruttiva (vedi a lato una 15C più vecchia del mio gatto...)
Storia
Le calcolatrici di cui parlo si distinguono dalle altre per la modalità operativa chiamata RPN (Reverse Polish Notation) e tipicamente hanno un bel tasto "ENTER" a doppia corsa.In particolare la HP 15C fa parte delle calcolatrici prodotte all'inizio degli anni ottanta con tecnologia SOS (Silicon on Sapphire, letteralmente silicio su Zaffiro) che fa sì che i transistor disperdano pochissima corrente e siano meno vulnerabili ai raggi ultravioletti (e quindi tecnicamente possano anche essere usati...sullo shuttle). La HP 15C funziona con tre batterie in serie da 1.5Volt che forniscono approssimativamente 3 x 150mAh x 1.55 volts = 697.5 mWh. I tasti sono incisi con un procedimento che ne garantisce una lunghissima durata (in pratica non riuscirete a far sparire le scritte su di loro...). La mia HP42S funziona ancora dopo quasi trent'anni e nessun tasto si è scolorito!
Ora questa attenzione ai dettagli d'uso, inclusa la distanza tra la corsa dei tasti (che potete notare anche a colpo d'occhio nel confronto qui a lato) ci portano al prossimo argomento.
Ergonomia d'uso
La modalità RPN prevede prima l'inserimento delle cifre e poi l'esecuzione dei comandi. Per es per eseguire qualcosa come (12+5)x3 si digita:
12 [ENTER] 5 + 3 x
La calcolatrice ha uno stack di quattro livelli (chiamati t,z,y,x) e quindi consente di inserire quattro numeri in successione. Quando lo stack viene spinto verso il basso il registro t viene ri-popolato con una replica del suo precedente valore.
L'idea è che ogni espressione per quanto complessa può essere calcolata usando uno stack di pochi livelli, partendo dalle espressioni tra parentesi rotonde, per andare poi per es sulle quadre e sulle graffe.
con questo trucco è possibile scrivere programmi in cui l'input (per es x) possa essere replicato infinite volte sullo stack (basta inserirlo 4 volte), e sia sempre disponibile per calcolare il polinomio partendo dall'espressione più interna e andando via via verso quella più esterna.La calcolatrice è quindi una "stack machine" di cui la Java Virtual Machine è l'esempio più diffuso (la teoria è nata verso gli anni sessanta, e poi evoluta nel tempo). Le stack machine hanno come punto debole i frequenti accessi allo stack, se esso viene tenuto in memoria centrale. Ma limitando lo stack a soli quattro registri e tenendoli sul microprocessore, le calcolartici HP riducono significativamente questo problema, e nel contesto del loro utilizzo, ciò è accettabile.
[caption id="attachment_10341" align="alignleft" width="300"] Da https://www.hpmuseum.org/hp35.htm[/caption]
Questo modo di ragionare ricorda molto il Lisp, e quindi di fatto si sposa bene con una logica di tipo "funzionale". Alcune facilitazioni come "LASTX" (che ricorda l'ultimo valore messo su X in un registro aggiuntivo) consentono di velocizzare di molto i calcoli.
[caption id="attachment_10306" align="alignright" width="300"] 12C Business calculator (simile alla 15C ma molto meno potente)[/caption]
La posizione dei menu e dei comandi è stata via via ottimizzata. Per es nella HP42S le molte funzioni sono raggruppate per tipologia (es BASE, MATRIX, STAT, PROBabilità, PRINT).
I menu
Le alcolatrici come la HP 42S hanno una piccola interfaccia utente basata su MENU programmabili che appaiono sotto la fila dei primi sei tasti. Nella HP42S questi menu consentono di inserire un carattere premendo sempre solo due tasti, il che rende fattibile creare piccole variabili con nomi di due-tre caratteri con poco sforzo:
Modalità programmazione
Anche le calcolatrici più vecchie (come la 15C, dei primi anni ottanta) disponevano di una modalità di programmazione. In questa modalità i comandi non venivano eseguiti ma registrati. Anche se la memoria era di pochi byte (parliamo di meno di 1Kb) era possibile scrivere programmi di una certa complessità, poiché ogni operazione completa consumava poco spazio (si pensi all'integrazione o anche al solver di equazioni). Tenete presente poi che in queste calcolatrici (tranne forse i prodotti di punta) l'unico modo per "caricare" i programmi era...digitarli per cui la compattezza era anche funzionale al loro uso: troppa memoria avrebbe voluto dire difficoltà di digitare programmi troppo grandi. La situazione ha iniziato a cambiare con le calcolatrici grafiche che avevano una interfaccia di I/O basata su infrarossi e porte seriali.Basso consumo
A tutto questo si aggiunga il bassissimo consumo di queste calcolatrici: ci sono track record in cui le batterie di una HP 15C sono state cambiate solo tre volte (!) in 40 anni...e la mia HP42S dura mediamente un anno di uso intenso.Precisione
[caption id="attachment_10345" align="alignleft" width="300"] La risposta è sempre 42 :)[/caption]La HP 42S ha una precisione interna di 15 cifre (di cui solo 12 mostrate) e un'esponente che può arrivare fino a+/499. Il display è di tipo dot-matrix di 131×16 punti, organizzati su due righe.
E' possibile tracciare piccoli grafici sulla HP42S poiché la calcolatrice supporta dei comandi per accendere singoli pixel dello schermo "programmaticamente".
Tale funzionalità grafica è stata poi estesa nei modelli grafici successivi, con display più ampio.
Ortogonalità
Un'ulteriore aspetto dell'HP42S è l'orgonalità dei suoi data type. E' possibile creare matrici di numeri complessi, moltiplicare delle matrici con degli scalari, ecc.Il solver è in grado di essere ingaggiato su qualsiasi programma (purché termini :-)
Il lascito dei calcolatori RPN
Fino al 2014 era possibile acquistare una HP30b, che risulta quasi completamente dismessa. Tale calcolatrice aveva caratteristiche interessanti perché era veloce e poteva essere riprogrammata.Al momento nemmeno la HP Prime, l'ultima capostipite, supporta seriamente la modalità RPN, almeno da quello che si legge su qualche forum. D'altronde la moda dei sistemi di risoluzione algebrica (CAS) rende di forza necessario inserire le espressioni in modo "normale".
L'ultima calcolatrice RPN a basso costo ed acquistabile è la HP35S ma:
- E' inferiore alle calcolatrici con modalità Alpha come la seria HP4x (41,42,48...) poiché non consente di usare variabili di più di una lettera.
- Non ha una uscita USB per fare il backup dei dati.
- Sembra afflitta da parecchi piccoli bug che ne minano la qualità (tipo non sa fare direttamente la radice di un numero negativo pur supportando i numeri immaginari...).
- E' stata sviluppata nel 2007 e costa ancora sui 70 euro benché abbia solo 30Kb di RAM (!)
- Non ha un display dot matrix vero e proprio, per cui risulta inferiore alla HP 42S (niente mini-grafici).
Una calcolatrice interessante sarebbe la 15C ma non viene più prodotta. La 12C Platinum è pensata più per gli economisti che per gli ingegneri, ed è costruita con tecniche moderne (niente zaffiro :).