Fare pair programming con l’intelligenza artificiale

II parte: I tool che abbiamo sperimentatodi e

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.

Figura 1 – Il disegno a mano dell’interfaccia.

Figura 1 – Il disegno a mano dell’interfaccia.

Abbiamo quindi provato a disegnare una possibile interfaccia web con testi, immagini e bottoni e abbiamo provato a caricarla su Sketch2Code.

Figura 2 – Il disegno caricato su Sketch2Code.

Figura 2 – Il disegno caricato 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.

Figura 3 – Le possibilità di corrispondenza a oggetti codificabili.

Figura 3 – Le possibilità di corrispondenza a oggetti codificabili.

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.

Figura 4 – La classe Java aperta su Visual Studio Code.

Figura 4 – La classe Java aperta su Visual Studio Code.

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à.

Figura 5 – Intellisense “impara” gli utenti a mano a mano che vengono scritti.

Figura 5 – Intellisense “impara” gli utenti a mano a mano che vengono scritti.

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.

Figura 6 – Intellisense suggerisce il codice.

Figura 6 – Intellisense suggerisce il codice.

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.

Figura 7 – Deep Code.

Figura 7 – Deep Code.

DeepCode mostra cosa stiamo facendo sul nostro codice e fa un audit, proponendo delle correzioni laddove le ritenga opportune.

Figura 8 – Deep Code fornisce suggerimenti al programmatore.

Figura 8 – Deep Code fornisce suggerimenti al programmatore.

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à.

Riferimenti

[1] Sketch2Code

https://sketch2code.azurewebsites.net/

 

[2] Visual Studio IntelliCode

https://visualstudio.microsoft.com/it/services/intellicode/

 

[3] DeepCode

https://www.deepcode.ai/

 

[4] Facebook Aroma

https://ai.facebook.com/blog/aroma-ml-for-code-recommendation/

 

[5] Diffblue

https://www.diffblue.com/

 

[6] Kibana

https://www.elastic.co/what-is/elasticsearch-machine-learning

 

[7] Lista di risorse e documenti sul Machine Learning applicato al codice

https://github.com/src-d/awesome-machine-learning-on-source-code

 

 

 

 

Condividi

Pubblicato nel numero
264 settembre 2020
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…
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.
Articoli nella stessa serie
Ti potrebbe interessare anche