L'Intelligenza Artificiale per la conversione tra linguaggi di programmazione

(di Alessandro Rugolo)
03/08/20

Non ci stupiamo più quando sentiamo parlare di Intelligenza Artificiale, come peraltro aveva previsto Alan Turing ormai 70 anni fa, nel suo saggio "Computing Machinery and Intelligence". Non ci stupisce neppure vedere le evoluzioni di un robot antropomorfo, dotato di sensori, capace di parlare, scrivere, giocare a scacchi o svolgere i più disparati compiti.

La tecnologia procede velocemente e siamo ad un passo dal vedere circolare in mezzo alla razza umana, una nuova razza, più evoluta, quella dei cyborg...

Potreste pensare, a prima vista, che le righe appena lette provengano da una qualche antologia del fantastico, di quelle tanto in voga trent'anni fa tra i lettori accaldati delle spiaggie italiane, ma non è così, si tratta di realtà.

L'Intelligenza Artificiale ha ormai sorpassato la fase di test e si prepara ad entrare prepotentemente nella nostra vita di tutti i giorni, quella quotidiana dell'uomo della strada e quella lavorativa delle società.

Dal mondo dei social, facebook, viene una novità sull'impiego dell'Intelligenza Artificiale: "Facebook's AI Transcoder". Vediamo di che si tratta.

Sono i ricercatori di Facebook che hanno realizzato il primo "Neural Transcompiler", un convertitore di codice per linguaggi di programmazione. Si tratta di un sistema basato sulla AI capace di convertire il codice di linguaggi di programmazione di alto livello (Java, Python, C++...) in altri linguaggi di programmazione e viceversa.

Il sistema realizzato appartiene alla categoria detta "Unsupervised", ovvero senza necessità di istruzione su dati di training e, teoricamente, senza necessità di supervisione umana.

L'esigenza di conversione di codice di programmazione tra differenti linguaggi è molto sentita. Con l'evoluzione dell'informatica e lo sviluppo di differenti linguaggi di programmazione si è visto che non sempre era economico e fattibile il passaggio a nuovi sistemi o piattaforme informative a causa della mancata conoscenza dei linguaggi di programmazione più vecchi.

Per il passaggio di grossi sistemi, per esempio quelli bancari, i costi sono divenuti esorbitanti e qui potrebbe entrare in gioco il nuovo neural transcompiler.
Il nuovo sistema si basa sull'impiego di un "cross-lingual language" (per la fase di pre-training) che mappa le espressioni aventi significato simile dei differenti linguaggi di programmazione.

L'accuratezza del nuovo sistema è molto elevata, almeno nel passaggio tra il C++ e Java (si arriva ad un 74,8%), mentre scende al 67,2% quando si tratta di passare da C++ a Python.
Risultati ancora migliori si hanno nel passaggio da Java a C++ (91,6%).
Accuratezza più modesta per il passaggio da Python a Java (56,1%) e da Python a C++ (57,8%).

Nel mondo industriale e militare non è strano trovare sistemi vecchi di decenni ancora in uso a causa della impossibilità di conversione e degli enormi costi da sostenere per l'ammodernamento, in questo settore di mercato, non piccolo, si posiziona il nuovo strumento.
Ci vorrà un po di tempo per migliorare l'accuratezza del sistema, soprattutto per la conversione da sistemi realizzati con i linguaggi più vecchi verso quelli più recenti, ma la strada sembra definitivamente aperta.

Dal punto di vista della sicurezza è tutta un'altra questione e andrà studiata daccapo, caso per caso.

Per approfondire:
https://medium.com/@learnbay/facebooks-ai-transcoder-6299a62bf222
https://medium.com/@learnbay/facebooks-ai-transcoder-6299a62bf222
https://www.infoq.com/news/2020/06/facebook-ai-transpiler/
https://medium.com/swlh/transcoder-facebooks-unsupervised-programming-la...