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
Processo Paperless: come risparmiare ore e ore dei tuoi dipendenti e tonnellate di carta
Hai mai pensato che nella tua azienda venga utilizzata troppa carta di cui si potrebbe fare a meno semplicemente grazie a strumenti tecnologici innovativi? Ti sei mai reso conto di quante ore i tuoi dipendenti passano a fare azioni che potrebbero essere velocizzate...
Industria 4.0 e macchinari industriali: il processo di innovazione di prodotto per le PMI manifatturiere
L’industria 4.0 non è solo un trend ma è un paradigma che può essere applicato concretamente a tutte le PMI italiane produttrici di macchinari industriali che vogliono rispondere in modo efficace alle attuali esigenze di mercato. Esistono aziende che hanno sviluppato...