Il contesto
Consideriamo uno sviluppo tramite toolkit Qt su piattaforma ARM Mx.i6ULL e sistema operativo Linux, soluzione che consente un uso integrato dei linguaggi C++, JavaScript e QML anche in presenza di scarsa potenza di calcolo.
Il nostro contributo
Un approccio comunemente adottato in questo tipo di contesto prevede di implementare l’intera logica di funzionamento in C++, per garantire il soddisfacimento degli stringenti requisiti di RAM (<=128MB) imposti dal sistema embedded.
Contrariamente a quanto si potrebbe pensare, è possibile, in alternativa, limitare l’uso del C++ e porre il JavaScript come linguaggio centrale dell’applicazione, senza per questo incorrere in perdite di efficienza che risultino proibitive a fronte delle limitate risorse hardware disponibili.
Il metodo
Nel caso in cui, ad esempio, si debbano implementare delle logiche di macchine a stati, come abbiamo fatto nello sviluppo di questo software di collaudo, per verificare tempestivamente che la soluzione sia corretta, è conveniente sviluppare per prima la porzione di logica con maggiori esigenze computazionali, così da testare l’utilizzo delle risorse nel caso peggiore. In questo modo si fa una sorta di Smoke Test per testare la scelta sull’hardware di cui si dispone.
Così facendo, si può scoprire che la JavaScript engine in ambiente Qt/QML (derivata dalla V8 di Google) è sufficientemente ottimizzata da non interferire con i limiti di memoria imposti dall’hardware (un progetto Qt/QML di base può richiedere infatti solo 16 MB di RAM).
A questo punto, una volta confermate le ipotesi iniziali, il C++ può essere limitato alla logica di basso livello del controllore (nel caso in cui, ad esempio, sia già presente un software parzialmente preesistente), mentre la logica delle singole macchine a stati e la loro interazione con l’unità di controllo possono essere implementate in JavaScript.
Esempi
Per capire meglio i vantaggi che può portare la scelta del Javascript per la business logic riportiamo di seguito alcuni esempi con i relativi snippet di codice.
Scrittura di un file
La scrittura di un file è una tipica operazione di basso livello, per la cui implementazione risulterebbe naturale ricorrere al C++. In alternativa, è possibile affidarsi al JavaScript e fare un POST sull’URL dato dal nome del file (se esso si trova nella directory corrente) o, più in generale, dal suo path relativo. Il risultato è un codice estremamente leggibile e intuitivo:
Timer
Sono molte le istanze in cui, in un contesto come quello descritto, ci può essere la necessità di tener traccia del trascorrere del tempo. In questo caso la convenienza del JavaScript è ancora più evidente, dal momento che Timer è una delle classi/tipi presenti in QML. L’esempio che segue descrive un bottone “RIAVVIA” che, se cliccato, fa partire un conto alla rovescia di dieci secondi, al termine del quale il sistema viene riavviato; il conto alla rovescia può essere interrotto, prima dello scadere del tempo, cliccando nuovamente il bottone, che riporterà adesso la dicitura “STOP”:
Si osservi come il JavaScript possa essere integrato al markup QML per definirne gli aspetti imperativi.
I vantaggi
Le scelte progettuali descritte garantiscono accesso ai vantaggi offerti dal JavaScript, in quanto linguaggio di più alto livello rispetto al C++, interpretato, a tipizzazione dinamica e con supporto a un paradigma dichiarativo-funzionale, con conseguente riduzione dei tempi di sviluppo e manutenzione del software e accesso a un maggior bacino di informazioni vista la più ampia diffusione dell’uso del Javascript rispetto al C++ nei vari contesti di sviluppo software
Francesco Ballerini
Software Engineer
Kiwibit
Francesco Ballerini
Software Engineer
Kiwibit
Ti è stato utile questo articolo?
POTREBBERO INTERESSARTI ANCHE
Gli strumenti del mestiere: le parole dell’innovazione che caratterizzano il nostro lavoro
Agile Agile è una filosofia organizzativa, applicata in particolare alle aziende di sviluppo software, pensata per rendere il processo di realizzazione di un progetto, specie se corposo, più snello e capace di adattarsi a cambiamenti di requisiti in corsa, rispondendo...
Digital twin: cos’è, come funziona, applicazioni e vantaggi
Il “gemello digitale” è un modello informatico, virtuale, di un elemento reale. Oltre agli algoritmi software che lo costituiscono può includere rappresentazioni visuali che aiutano chi lo utilizza a comprenderne il funzionamento ed i risultati, quali ad esempio,...
Le parole chiave dell’innovazione: ecco come l’industria 4.0 rivoluzionerà la produzione nei prossimi anni
Acatech Acatech è l'Accademia tedesca delle scienze e dell'ingegneria fondata il 1 ° gennaio 2008 e che rappresenta gli interessi delle scienze tecniche tedesche in modo indipendente in patria e all'estero, equivalente al nostro CNR. Essa fornisce valutazioni...