Un esperimento
Nel precedente articolo di questa serie, abbiamo immaginato come potremmo fare pair programming con l’assistenza dell’intelligenza artificiale anziché con una persona.
Nel fare questo, siamo giunti alla conclusione che non esiste ancora un metodo specifico per poter fare pair programming con l’AI, ma che esistono dei tool che possono aiutarci a scrivere codice in modo più efficace e con meno errori. Abbiamo quindi deciso di provare alcuni di questi tool e di raccontarvi la nostra esperienza.
Prima di partire, è necessario però un breve disclaimer: alcuni dei tool che seguono sono disponibili online gratuitamente, in demo o a pagamento, alcuni sono open source e altri no.
In questo articolo non intendiamo pubblicizzarli ma vogliamo portare alcuni esempi di come l’AI stia entrando nel mondo del codice in modo sempre più pervasivo, e a volte senza che ne siamo realmente consapevoli.
Fatta questa premessa, passiamo in rassegna i tool che abbiamo provato.
Sketch2Code
Sketch2Code [1] è uno strumento di Microsoft. Si tratta di un’AI addestrata a riconoscere schizzi grafici e a farli diventare codice HTML.
Abbiamo quindi provato a disegnare una possibile interfaccia web con testi, immagini e bottoni e abbiamo provato a caricarla su Sketch2Code.
Una volta caricata l’immagine, il tool propone delle possibili corrispondenze a degli oggetti, in base a una percentuale di probabilità. Sulla base dell’oggetto prescelto, il tool permette di fare un download dell’HTML corrispondente.
In breve: Sketch2Code fa riconoscimento di immagini applicato alla scrittura di codice automatico.
Intellisense di Visual Studio Code, con Intellicode e Tabnine
Su Visual Studio Code [2] proviamo ad aprire una classe Java che espone su un controller hello con un nome e restituisce la salutation a chi ha fatto hello.
Ipotizziamo poi di voler salutare le persone in base a chi sono. Così inseriamo i nomi delle persone che vogliamo salutare e definiamo i loro ruoli.
A mano a mano che scriviamo gli utenti, il tool li impara e inizia a darci suggerimenti su come inserirli, fornendo le percentuali di probabilità di utilizzo di una determinata funzionalità.
Ipotizziamo di voler fare lo split dei nomi da passare. Inizio a scrivere String, Name, e il tool mi fa alcune proposte con la percentuale di probabilità che utilizzi una determinata funzionalità. Se provo a scrivere For per fare un ciclo for, il tool mi propone su quali elementi potrei farlo, e così via.
Abbiamo provato con un codice molto semplice, ma abbiamo visto come il tool inizi a capire l’intenzione di chi scrive codice.
In breve: è un supporto alla parte di Intellisense e aiuta a scrivere meglio il codice dando le percentuali di affinità di cosa probabilmente vorrai scrivere in quel momento. Più si scrive, meglio funziona, con alcune differenze a seconda dei linguaggi che si vanno a usare.
DeepCode
Mentre sperimentavamo sul punto precedente, avevamo già agganciato DeepCode [3], un tool che analizza il codice che stiamoscrivendo.
DeepCode mostra cosa stiamo facendo sul nostro codice e fa un audit, proponendo delle correzioni laddove le ritenga opportune.
In breve: da provare; basta attaccarlo a Github e DeepCode fa analisi sul codice dando suggerimenti.
Altri tool da provare
I tool da provare non sono solo questi, e ce ne sono diversi altri.
Possiamo citare Facebook Aroma [4] lanciato nel 2019, che suggerisce come scrivere il codice: non lo abbiamo provato e online trovate solo il paper divulgativo.
C’è poi Bayou che genera codice a partire dalla scrittura delle nostre intenzioni ma che, lanciato nel 2018 non è più mantenuto
Interessante è Diffblue [5] poiché consente di generare test “al contrario”: utile se abbiamo del codice già scritto e dobbiamo fare i test in un secondo tempo… ma pensiamo che resti meglio il TDD!
E, al termine della nostra lista non esaustiva, c’è Kibana [6] un’estensione di machine learning per la Log Anomaly Detection, che fa vedere le anomalie sulla predizione, per esempio, del numero di log che vengono scritti ogni giorno.
Conclusioni
Pensare oggi di ottenere dei benefici veramente impattanti con l’AI è prematuro, ma vale la pena approfondire questi temi perché nei prossimi cinque anni potrà succedere che alcuni di questi tool evolveranno e ci ritroveremo, senza rendercene conto, a utilizzarli correntemente.
Sono quindi interessanti da esplorare per chi vuole capire fin da ora come funzionano le dinamiche e vuole iniziare a sperimentare con un’aspettativa di efficacia media.
E, come risorsa, su GitHub [7] si può trovare una lista di spunti tra paper, tool, POC di applicazioni che aiutano a scrivere codice pulito testato e utilizzabile.
E se qualche lettore ne conosce altri, ci farà molto piacere se ce li segnalerà.
Lavora come Communication Master in Mia-Platform. Nel team comunicazione si occupa di copywriting e pianificazione della comunicazione. Appassionata di tecnologie, mette in pratica in questo mondo le sue conoscenze di scrittura e comunicazione.
Ha sperimentato il modo di applicare i metodi Agile anche a un team non tecnico, per la pianificazione ed esecuzione di attività di comunicazione e marketing. Da qualche tempo segue anche le attività di comunicazione interna: blog aziendale, attività di team building o iniziative di coinvolgimento dei team.
Come CTO e co-founder di Mia-Platform, aiuta i team a semplificare la digital transformation delle aziende concretizzando le loro strategie in software funzionante.
Ingegnere Informatico, è anche tra i fondatori di Agile Reloaded srl e ricopre il ruolo di Strategic Partner di Intré srl.