Siri, Alexa e i loro fratelli: la rivoluzione dei linguaggi di programmazione non formali

La rivoluzione dei linguaggi di programmazione non formali

Se in passato era il programmatore a dover imparare la lingua dei processori, oggi abbiamo capovolto la prospettiva: è la CPU a dover imparare a interpretare la lingua e i gesti dell’operatore. La rivoluzione dei linguaggi di programmazione non formali

di Giambattista Gruosso *

«Ehi, Siri…». Stiamo vivendo un momento tecnologico ricco di meraviglie, dove la commistione tra linguaggi naturali e comando di dispositivi sta facendo passi da gigante. L’idea di fondo è quella di tradurre modi naturali di dare comandi e istruzioni in una lista codificata di istruzioni che possano poi essere eseguite dalla CPU nella lingua che lei è abituata a parlare. È un cambiamento epocale, iniziato già decenni fa, ma oggi fortemente accelerato. Si è passati dalla necessità del programmatore di imparare la lingua dei processori al cambio completo di direzione in cui è la CPU a dovere imparare la lingua dell’utente, non necessariamente un programmatore. Ma a parte la suggestione che suscitano in noi motti come «Ehi, Siri…» e «Alexa, accendi…», il tema nel mondo dell’industria è approcciato a livelli differenti e con modalità molto diverse da quelle usate oggi nel mondo consumer. E non è soltanto una questione di poter dare comandi vocali al proprio sistema, è qualcosa che va ben oltre. Si tratta di pensare schemi di controllo che siano più vicini al modo con cui li immaginiamo, lasciando poi ad algoritmi il compito di trasformarli in linguaggi che possano essere compresi da un calcolatore.

L’approccio basato sui modelli

Il primo approccio all’uso di linguaggi non strutturati per la programmazione è quello del cosiddetto Model Based Design. In questa metodologia ci si focalizza nel modellizzare con opportuni tool il sistema fisico comprensivo delle logiche di control lo per poi generare in modo automatico il codice che verrà eseguito dal controllore.

Il linguaggio di modellizzazione è vicino all’utente ma molto lontano dal modo con cui il codice verrà eseguito, per cui dietro si nasconde una evoluta tecnologia in grado di tradurre il modello in equazioni e le equazioni poi in istruzioni macchina. Ma non basta. La programmazione dei sistemi di controllo ha una normazione molto spinta in termini di sicurezza e affidabilità che deve essere rispettata nelle fasi di codifica. Quindi il lavoro più grande è quello di partire dalla descrizione di requisiti espressi nella lingua dell’utente (in questo caso la lingua dei modelli) e aggiungerci requisiti non espressi, tra cui quelli di sicurezza, per poi scrivere un programma che si occupi di aspetti di basso livello (configurazione dei dispositivi), di sicurezza e interazione con altri componenti, e infine la parte applicativa. Questo approccio nel mondo industriale è il cuore del Virtual Commissioning basato su digital twins del sistema, dove il progetto meccatronico si abbina a quello delle logiche di controllo, e solo alla fine viene generato in modo automatico il codice da implementare sulla macchina. Metodologia questa ben consolidata in molti fornitori di automazione anche se non ancora compresa a fondo dagli utilizzatori.

La sfida dei linguaggi naturali

Il livello successivo di questa rivoluzione è basato su quello che è il riconoscimento dei linguaggi naturali soprattutto di tipo vocale, come avviene oggi negli smartphone. Alla base di questa metodologia c’è la creazione di una libreria dei comandi e di azioni prememorizzate sul controllore sia esso un robot, una macchina utensile o un PLC. Il comando vocale viene elaborato da schede elettroniche su cui girano algoritmi di intelligenza artificiale che sono in grado di riconoscere le istruzioni e di scegliere, all’interno degli algoritmi prememorizzati, quello più opportuno o più vicino all’azione che si vuole compiere.

Lo scenario che si prefigura è quello di un’interfaccia di controllo di una macchina utensile a controllo numerico che non è un pannello pieno di pulsanti, ma invece un auricolare connesso a un assistente digitale in grado di comprendere i comandi verbali di un macchinista. Quell’assistente è il regista in grado di fare funzionare tutte le diverse macchine utensili CNC nell’officina, con vari controllori, esattamente nella stesso modalità. Ma è molto di più: l’assistente potrebbe anche parlare all’operatore e avendo accesso immediato a tutte le informazioni della macchina essere in grado di suggerire all’utente le migliori operazioni da fare, inclusi gli interventi di manutenzione.

La tecnologia in grado di effettuare queste operazioni è la stessa di quella consumer usata nei dispositivi di comunicazione personale, e sono diversi i produttori di macchine utensili e PLC che stanno guardando all’applicazione massiccia di questi algoritmi. Ma non è solo voce. I sistemi di riconoscimento automatici possono basarsi anche su gesti o movimenti degli occhi, per cui è possibile usare questi sistemi anche in ambienti molto rumorosi dove non sia facile riconoscere un comando vocale. Di fatto la stessa tecnologia alla base della robotica collaborativa.

Ed è proprio questa la nuova direzione: le macchine collaborative, dove l’iterazione con l’utente avviene a un livello sempre più alto, senza dovere ricorrere a istruzioni complesse a livello di officina. E anche il ruolo del programmatore avrà una nuova vita: sempre più rivolto a sviluppare algoritmi e sistemi evoluti che non rivolto alla programmazione spicciola.

Athena, l’interfaccia vocale che esiste già

Un’applicazione concreta di riconoscimento dei linguaggi naturali di tipo vocale nel mondo delle macchine industriale è rappresentata da Athena, l’innovativa soluzione per la comunicazione M2M (machine-to-machine) proposta dal costruttore di macchine utensili Makino. Athena è progettata per controllare tramite voce qualsiasi tipo di macchina – fresatrici, torni, elettroerosioni e così via – e funziona perfettamente anche in officine che non dispongono di una rete Internet. Athena prepara report, effettua il controllo della macchina, offre assistenza in caso di necessità ed esegue calcoli per fornire un supporto prezioso nei processi di produzione all’avanguardia.

* docente al Dipartimento di Elettronica, Informazione e Bioingegneria presso il Politecnico di Milano