Lo Psion Serie 3 è un computer palmare uscito nei primi anni '90 ormai obsoleto e fuori produzione, ma che tuttavia conserva un suo fascino. Fu uno dei primi palmari ad utilizzare EPOC come sistema operativo e OPL come linguaggio di programmazione. OPL significa Organizer Programming Language oppure Open Programming Language sul quale ho lavorato per diverso tempo, divertendomi.
Il sistema operativo è Epoc, che diventerà il futuro Symbian, un sistema che supporta il multitasking, qualcosa di veramente innovativo per quei tempi dove i PC erano quasi tutti basati su Dos , un sistema poco avvezzo al multitask.
All'epoca, il Serie 3 veniva messo in commercio ad un prezzo che non ha nulla da invidiare ai comuni palmari di oggi, con un prezzo che oscillava dalle 450.000 lire, la versione più economica con 128 K di ram, a circa 600.000 lire la versione con 256 K di ram. Come optional esisteva anche un cavo seriale per il collegamento al PC il cui costo per me era improponibile, infatti costava circa 180.000 lire e non riuscii mai ad acquistarlo per le mie tasche bucate e mi dovetti accontentare del palmare nudo e crudo. Il palmare aveva la potenza di un personal IBM compatibile, come ad esempio il glorioso M24 dell'Olivetti, tutta potenza concentrata nel palmo della mano.
Su quel palmare ci feci un sacco di cose e lo programmai per lo studio grafico delle funzioni tipo y=f(x) e per il calcolo matriciale inserendo formule per risolvere determinanti e operazioni tra matrici, tutto in OPL, linguaggio di programmazione che trovai semplice e intuitivo.
Purtroppo, all'epoca, il cavo seriale per il collegamento al PC, non era alla portata delle mie tasche, come del resto nemmeno i dischi allo stato solito che non riuscii mai a trovare nei negozi ad un prezzo abbordabile, per cui dovetti tenere tutto il software nella memoria volatile del palmare per diversi anni preoccupandomi di ricaricare le batterie prima del loro esaurimento per non perdere i dati, non potendoli salvare su PC, era un vero stillicidio.
Fatto sta che il mercato si è poi evoluto e ad un certo punto sono passato a lavorare su PC più potenti e non ho più pensato a sostituire le batterie del Serie 3 che si sono esaurite insieme alla batteria tampone e tutto il mio lavoro di programmazione in OPL è andato perso essendosi cancellata la memoria. Ci sono rimasto malissimo alla perdita dei dati, perché ci tenevo a quel software, anche se ora non ho più motivo di utilizzarlo, anche perché esistono programmi già fatti scaricabili da Internet che fanno le stesse cose, anche meglio.
Programmare in OPL è stata per me una bella esperienza. Si tratta di un linguaggio di programmazione molto potente con funzioni grafiche e matematiche pronte all'uso. La sintassi è molto simile al Pascal, ma più semplice. Una delle funzioni che utilizzai per disegnare il grafico delle funzioni su display fu la funzione EVAL() insieme a quella VAL() potentissime. Infatti bastava dargli alla funzione Eval(), come variabile parametro in input, una stringa matematica anche complessa perché venisse calcolata restituendo un risultato. In questo modo potevi passargli per esempio stringhe come F$=sin(x$)+cos(x$) con x$ variabile stringa generica in questo modo:
PROC funzione:
LOCAL x1$(10), f1$(20) rem // si definiscono x1 e f1 due variabili stringa di lunghezza 10 e 20 caratteri rispettivamente
x1$="3.14" rem // si inizializza x1 con la stringa 3.14 che volendo possiamo anche passare da input da tastiera
f1$="sin" rem // usiamo la funzione seno
x1$=fix$(val(x1$),2,10) //Si trasforma la stringa x1 prima in virgola mobile con la funzione val(). Poi si trasforma di nuovo in valore stringa con la funzione fix().
f1$=f1$+"("+x1$+")" rem si compone la stringa da passare alla funzione EVAL() aggiungendo le parentesi e la variabile x1&
print "risultato: ",fi$; "="; eval(f1$); get rem si stampa sul dispaly il risultato del seno di pi greco che è zero
ENDP
Volendo, con OPL si può passare in input una stringa del tipo sin(x) + cos(x) +1 e vedere come evolvono i risultati al variare di x. Occorre, in questo caso, fare un rudimentale "parsing" della stringa di input alla ricerca delle variabili x da sostituire con una stringa numerica utilizzando le funzioni len(), right$(), mid$() e left$(), questo se non si vuole scrivere nel codice del programma la funzione da calcolare o analizzare, per non dovere ricompilare tutte le volte il programma al cambio della funzione.
Comments