Non tutti i programmatori hanno avuto la necessità di dover effettuare la traduzione di un codice scritto in un certo linguaggio di programmazione X, in un altro linguaggio Y. Ed in effetti, questo tipo di necessità è oggi spesso bypassata incapsulando il codice “legacy” all’interno di moduli che espongono poi API per l’accesso ai servizi specifici da esso offerti. È un tipico esempio di architettura a microservizi (microservices), ed è spesso utile soprattutto in applicazioni web che non richiedono livelli di efficienza particolarmente elevati.
Tuttavia, non sempre ci si può affidare a questo tipo di approccio. In alcuni contesti, può essere infatti necessario ottenere un nuovo codice sorgente che di fatto consista nella “traduzione” di un codice scritto in un altro linguaggio. Un tipico esempio potrebbe essere quello di COBOL, recentemente salito in cima alle tendenze dei principali social network per via delle numerose richieste e la scarsa disponibilità di programmatori skillati. Un linguaggio molto obsoleto comporta, infatti, la difficoltà nel reperire l’adeguato personale che sia in grado di manutenere opportunamente i sorgenti.
Come funziona TransCoder
Una delle caratteristiche più interessanti dell’algoritmo alla base di TransCoder consiste nella modalità di apprendimento che esso sfrutta.Gli algoritmi di machine learning più tradizionali si basano infatti su un processo detto di apprendimento supervisionato (supervised learning), in cui i parametri del modello vengono definiti sulla base di un insieme di addestramento che include, per ogni elemento, sia l’input che l’ouput atteso. Utilizzare un algoritmo di apprendimento supervisionato nel contesto per cui è stato pensato TransCoder, significherebbe dover avere a disposizione una enorme quantità di snippet di codice scritto nei due linguaggi di input ed output. Sebbene esistono diversi dataset per i linguaggi di programmazione più comuni, ve ne sono molti di meno per altri linguaggi (come COBOL). Ciò nonostante, sono proprio i linguaggi legacy meno diffusi quelli a poter beneficiare in modo più significativo delle capacità di TransCoder.
Per risolvere questo problema, il team di Facebook AI ha pensato di realizzare un software basato su un approccio “self-supervised“. In altre parole, TransCoder richiede la conoscenza di un solo linguaggio di programmazione (quello di partenza), e sfrutta una procedura di classificazione automatica per “creare” una sorta di insieme di addestramento intermedio, utilizzato poi per l’apprendimento tramite deep learning.
Questo approccio innovativo, se generalizzato ad altri contesti, potrebbe rivelarsi presto particolarmente proficuo anche per applicazioni completamente diverse.
Conclusioni
In questa sede non ci addentreremo maggiormente nei dettagli di TransCoder (che sono comunque ampiamente descritti in questo articolo). È però evidente come questo sia l’ennesimo esempio concreto della potenza del deep learning, e di quanto essa appaia tuttora parzialmente inespressa, con nuove idee di estrema potenza che vengono rilasciate con una cadenza quasi giornaliera.Fonte: Facebook AI
Nessun commento:
Posta un commento