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

Una HP 15C ancora funzionante dopo 39 anni, e senza nessun tasto sbiadito.
  1. ergonomia d’uso (tool per ingegneri fatti da ingegneri)
  2. precisione software
  3. ortogonalità del design
  4. qualità costruttiva (vedi a lato una 15C più vecchia del mio gatto…)

Spiegherò nel dettaglio ogni cosa in questo articolo, anche se in generale mi soffermerò sulla HP42S poiché la conosco molto bene ed è l’unica ad avere una implementazione open source & copyright free che gira anche sui vostri cellulari.

Storia

Pentrupla di calcolatrici RPN

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.

Il manuale della 15C parla del metodo di Horner per riscrivere i polinomi in modo che siano “stack-friendly”:


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. 

 

Da https://www.hpmuseum.org/hp35.htm

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.

12C Business calculator (simile alla 15C ma molto meno potente)

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

La risposta è sempre 42 :)

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.

Il chip fu un design custom di HP, era internamente a 4bit ed esternamente aveva bus a 8 bit. Aveva però registri da 64bit e quindi poteva manipolare agevolmente i numeri in virgola mobile.

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:

  1. 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.
  2. Non ha una uscita USB per fare il backup dei dati.
  3. 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…).
  4. E’ stata sviluppata nel 2007 e costa ancora sui 70 euro benché abbia solo 30Kb di RAM (!)
  5. Non ha un display dot matrix vero e proprio, per cui risulta inferiore alla HP 42S (niente mini-grafici).

Per approfondire sulla HP35S leggete questo articolo.

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 :).