Le Voci dell’AI – Episodio 79: Scrivere software con l’intelligenza artificiale: servono ancora i programmatori?

Ciao a tutti, sono Vincenzo Lomonaco, ricercatore e docente all’Università di Pisa.

Nella puntata di oggi parliamo di un tema molto interessante, dibattuto nel contesto dell’intelligenza artificiale e le sue applicazioni.

Parliamo di soluzioni di AI per aiutarci a scrivere codice sorgente software.

Qual è lo stato dell’arte in questa direzione? Possiamo pensare, in questo contesto, di semplificare la vita dei nostri sviluppatori o addirittura di rimpiazzarli? Scopriamolo insieme in questa puntata di Le Voci dell’AI.

Lo sviluppo software ha attraversato un’evoluzione a dir poco straordinaria, dalle prime istruzioni su schede perforate agli attuali sistemi complessi alimentati da intelligenza artificiale in poche decine di anni.

Scrivere e mantenere codice sorgente è notoriamente difficile a causa della complessità intrinseca dei software moderni che devono integrarsi con hardware, sistemi operativi, reti e requisiti in continuo cambiamento.

La difficoltà principale risiede nella necessità di tradurre esigenze umane complesse e ambigue, soprattutto, in istruzioni precise per le macchine, un compito intrinsecamente propenso a errori.

I bug, ossia gli errori nel codice, sono quindi inevitabili anche nei sistemi più semplici.

L’intreccio di variabili, logiche e condizioni rende quasi impossibile evitarli del tutto.

Per affrontare queste sfide, negli ultimi decenni si è diffuso lo sviluppo Agile, un approccio iterativo e collaborativo per lo sviluppo software che si concentra su piccoli cicli di lavoro, feedback continuo e adattamento rapido.

Questa metodologia aiuta a migliorare la qualità del codice e a rispondere meglio ai cambiamenti anche dei requisiti dello stesso, ma non elimina la falla di fallibilità umana.

Anche i migliori programmatori, quindi, commettono errori, complice la complessità crescente dei progetti e le scadenze sempre troppo strette. La manutenzione del software, inoltre è altrettanto ardua; ogni modifica può introdurre eventuali nuovi problemi, rendendo il codice una sorta di ecosistema vivo e dinamico che richiede costante attenzione.

L’intelligenza artificiale sta diventando un alleato cruciale nello sviluppo del software, sia per migliorare il codice esistente, quindi già scritto, sia per generarlo automaticamente.

La sua capacità di analizzare grandi quantità di dati e quindi rilevare schemi, pattern, negli stessi permette di individuare bug, problemi nascosti, vulnerabilità e inefficienze, anche attività che richiederebbe ore o giorni a programmatori umani.

Strumenti basati su l’AI come sistemi di analisi statica di programmi, esaminano il codice sorgente in profondità, rilevando potenziali errori e suggerendo correzioni.

Ma l’AI, appunto, non si limita a migliorare il codice scritto.

La tendenza più recente è quella di usarla per generare codice da zero, basandosi su specifiche magari fornite in linguaggio naturale o attraverso dei diagrammi grafici.

Sistemi come i modelli generativi che abbiamo visto più volte all’interno di questa rubrica trasformano idee in funzioni operative, accelerando lo sviluppo e riducendo anche il numero di errori iniziali.

Questo approccio non solo velocizza il processo di sviluppo, ma anche democratizza, se vogliamo, la programmazione, consentendo anche ai non esperti di creare soluzioni tecniche complesse.

Tuttavia va detto che anche il codice generato dall’AI non è immune da problemi e richiede sempre un feedback, una revisione umana, evidenziando quindi un rapporto in realtà simbiotico tra sviluppatori, almeno per il momento.

La crescente complessità del software moderno, quindi, rende l’integrazione dell’AI indispensabile per mantenere alti standard di qualità e di produttività, innovazione e sicurezza, mitigando al contempo l’inevitabilità degli errori umani.

Nel 2024 sono ormai tanti, tantissimi gli strumenti basati sull’AI che vengono utilizzati quotidianamente dagli sviluppatori software.

GitHub Copilot e OpenAI Codex, per esempio, automatizzano la scrittura del codice con suggerimenti intelligenti e funzioni di auto completamento.

AlphaCode, progettato da DeepMind, risolve problemi complessi di programmazione.

Google Gemini Code Assist combina capacità multimodali per applicazioni più avanzate.

In questo contesto, Snyk identifica e corregge le vulnerabilità nel codice, migliorando la sicurezza.

Cursor facilita il debug e la navigazione del codice e infine MetaGPT sfrutta il concetto di AI multi agente per progetti ancor più complessi.

Quindi questi strumenti accelerano lo sviluppo aumentando la produttività e migliorando la qualità stessa del software.

Oggi non soltanto in un contesto una visione futura, uno tra i più popolari ed utilizzati è sicuramente GitHub Copilot, un assistente di sviluppo software basato su AI, sviluppato da GitHub in collaborazione con OpenAI.

Come funziona Copilot? Analizza il contesto del codice scritto fino a un certo punto, i suoi commenti, le descrizioni di contesto di contorno e suggerisce completamenti, funzioni e persino intere soluzioni, rendendolo ideale per accelerare il processo di scrittura.

L’integrazione con GitHub è anche uno dei suoi punti di forza.

Gli sviluppatori possono facilmente sfruttare Copilot per lavorare su repository, quindi diciamo contenitori di codice sorgente ospitati su questa piattaforma, beneficiando della sua capacità di comprendere e navigare tra file multipli di progetto.

Inoltre Copilot è compatibile con editor e IDE, quindi interfacce di sviluppo, applicativi che ci aiutano a sviluppare il software, inclusi Visual Studio Code e PyCharm , uno degli strumenti più diffusi per i linguaggi di programmazione Python.

La cosa bella è che per usare Copilot in PyCharm, ad esempio, è sufficiente installare il plug-in dedicato e accedere con un account GitHub che abbia attivato una licenza per l’utilizzo di Copilot.

Una volta configurato, Copilot automaticamente analizza il codice scritto fino a un certo punto, suggerendo in tempo reale con queste opzioni di auto completamento personalizzate, permettendo di accettare, eventualmente modificare o rifiutare determinate proposte e visualizzare alternative.

Questa integrazione trasforma quindi PyCharm in un ambiente di sviluppo ancora più potente, combinando funzionalità avanzate già presenti in questa interfaccia di sviluppo software con l’assistenza intelligente di Copilot, rendendo la programmazione molto più fluida ed efficace.

In uno studio recente, Microsoft ha cercato di capire gli impatti dell’uso di Copilot sulla produttività, serenità e felicità degli sviluppatori.

In questa immagine vediamo le risposte di più di 2.000 sviluppatori software che hanno partecipato all’indagine e vediamo che a livello di percezione personale, circa l’88% giudica come migliorata la propria produttività, mentre circa il 60% si sente meno frustrato e più appagato dal proprio lavoro.

Il 74% dichiara inoltre di potersi dedicare a compiti più soddisfacenti, potendo automatizzare quelli più noiosi e ripetitivi.

Infine, riguardo l’efficienza l’88% si dice più veloce nel risolvere problemi diversi e quasi la totalità dei 2.000 sviluppatori si ritiene più veloce per lo svolgimento di compiti di programmazione ripetitivi.

Come in ultima analisi, gran parte di loro giudica il tempo speso in cercare soluzioni online inferiore e di avere un carico mentale inferiore su task ripetitivi.

Risultati io credo estremamente confortanti vista la relativa immaturità di questi strumenti, non trovate?

In queste immagini invece vediamo un indagine molto meno soggettiva e più quantitativa, dove 95 sviluppatori con diversi livelli di esperienza sono stati pagati per sviluppare un webserver in JavaScript, divisi in due gruppi uno che usa Copilot, l’altro che non lo usa.

I risultati dell’indagine sono molto interessanti.

Il gruppo che ha usato Copilot ha risolto il compito di programmazione in meno della metà del tempo.

In media, mentre in termini di efficacia l’uso di questo strumento di AI ha reso possibile all’8% in più dei partecipanti del gruppo di portare a termine il compito con successo.

Bene, in questa puntata abbiamo discusso di strumenti di eye generative al servizio della programmazione e dello sviluppo software.

Sebbene siamo ancora lontani dall’automazione totale nello sviluppo del software, molti strumenti esistono oggi che possono essere nativamente integrati in piattaforme di sviluppo professionali o meno, come Visual Studio o PyCharm, rendendo molto più agevole la scrittura di codice con processi di auto completamento predittivo che riescono ad abbattere letteralmente i tempi di sviluppo e rendono il codice anche più sicuro e meno soggetto ad errori di distrazione.

Nel futuro sono convinto, vedremo un’integrazione massiccia e più pervasiva di questi strumenti spontanei, spostando l’attenzione nell’educazione e in ambito professionale anche su scelte strategiche, algoritmiche o scientifiche di più alto livello creativo, lasciando l’implementazione efficiente alle macchine.

Ciao! Alla prossima puntata di Le Voci dell’AI.

 

Se questo articolo ti è piaciuto e vuoi rimanere sempre informato sulle novità tecnologiche

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome