Mokabyte

Dal 1996, architetture, metodologie, sviluppo software

  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti
Menu
  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti
Cerca
Chiudi

Nel numero:

264 settembre
, anno 2020

Fare pair programming con l’intelligenza artificiale

II parte: I tool che abbiamo sperimentato

Chiara Muzzolon e Giulio Roggero

Chiara Muzzolon

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.

Chiara Muzzolon e Giulio Roggero

Giulio Roggero

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.

pair programming + artificial intelligence

Fare pair programming con l’intelligenza artificiale

II parte: I tool che abbiamo sperimentato

Chiara Muzzolon e Giulio Roggero

Chiara Muzzolon e Giulio Roggero

  • Questo articolo parla di: Frameworks & Tools, Intelligenza artificiale, Programmazione & Linguaggi

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

 

 

Facebook
Twitter
LinkedIn
Chiara Muzzolon e Giulio Roggero

Chiara Muzzolon

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.

Chiara Muzzolon e Giulio Roggero

Giulio Roggero

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.

Chiara Muzzolon e Giulio Roggero

Chiara Muzzolon e Giulio Roggero

Tutti gli articoli
Nello stesso numero
Loading...

Vita da Scrum Master

II parte: Lo Scrum Master come Agile Coach

Quindici statistiche da conoscere per lavorare in UX design

Uno sguardo internazionale

Nella stessa serie
Loading...

Fare pair programming con l’intelligenza artificiale

I parte: Il quadro della situazione

Mokabyte

MokaByte è una rivista online nata nel 1996, dedicata alla comunità degli sviluppatori java.
La rivista tratta di vari argomenti, tra cui architetture enterprise e integrazione, metodologie di sviluppo lean/agile e aspetti sociali e culturali del web.

Imola Informatica

MokaByte è un marchio registrato da:
Imola Informatica S.P.A.
Via Selice 66/a 40026 Imola (BO)
C.F. e Iscriz. Registro imprese BO 03351570373
P.I. 00614381200
Cap. Soc. euro 100.000,00 i.v.

Privacy | Cookie Policy

Contatti

Contattaci tramite la nostra pagina contatti, oppure scrivendo a redazione@mokabyte.it

Seguici sui social

Facebook Linkedin Rss
Imola Informatica
Mokabyte