Sarà Go il linguaggio preferito per l’ibridazione tra programmatore e AI?

Go, tra rigidità e semplicità, potrebbe essere il linguaggio perfetto per l’era dell’AI generativa (ma niente improvvisazioni)

Close-up view of a complex industrial gear mechanism in black and white.

Recentemente ho avuto l’opportunità di assistere a una presentazione di Matteo Vaccari presso lo XP-UG di Milano, focalizzata sul linguaggio di programmazione Go. Devo ammettere che la mia conoscenza di Go (anche noto come Golang) era molto superficiale, ma questo si è rivelato un vantaggio: ho potuto seguire la sessione senza preconcetti, assorbendo con curiosità le informazioni condivise.

Già alle prime slide (in realtà la n° 7 nello stack condiviso da Matteo) ero conquistato. La presentazione ha evidenziato un punto che trovo particolarmente interessante e che ho sollevato durante la discussione (premettendo che parlavo da “programmatore scarso”): Go potrebbe essere il candidato ideale per l’automazione dello sviluppo software nell’era dell’intelligenza artificiale generativa.

Go è nato in Google nel 2007 per rispondere alle esigenze di scalabilità e produttività nello sviluppo di software. Creato da Robert Griesemer, Rob Pike e Ken Thompson, il linguaggio ha ereditato l’efficienza di C, semplificandone la sintassi e migliorando la gestione della concorrenza. L’obiettivo era chiaro: rendere lo sviluppo più rapido e meno soggetto a errori, senza sacrificare le prestazioni. In diversi momenti della presentazione di Matteo si percepiva chiaramente come Go fosse un linguaggio “Made in Google”: una progettazione votata alla produzione su larga scala, con scelte tecniche che lo rendono ideale, ad esempio, per sviluppare microservizi completi e pronti per essere distribuiti come container distroless.

Una delle caratteristiche distintive di Go è il suo focus sulla manutenibilità e sulla coerenza del codice, spesso anteposto alle preferenze individuali dei programmatori. Il linguaggio impone una standardizzazione rigorosa: meno scelte stilistiche, una formattazione automatica (grazie a gofmt), e una sintassi minimalista che scoraggia l’uso di strutture complesse. Questo approccio riduce la complessità dei progetti e facilita la collaborazione tra team. Go non è un linguaggio che si presta all’espressione personale, ma uno strumento pensato per la produttività e la leggibilità a lungo termine. Si può pensare a una parentela con il “Clean Code”, ma rafforzato da strumenti automatici.

Ed è proprio questa caratteristica che lo rende particolarmente interessante in un contesto di automazione e generazione automatica di codice. Nell’era dell’intelligenza artificiale generativa applicata allo sviluppo software, un linguaggio con una struttura rigorosa e prevedibile è un candidato ideale per essere generato automaticamente. Insomma, il cosiddetto vibe coding diventato di moda nelle ultime settimane: uno stile di programmazione conversazionale in cui il programmatore si affida all’IA per scrivere codice sulla base di descrizioni in linguaggio naturale. Strumenti avanzati di AI potrebbero sfruttare la prevedibilità di Go per produrre codice con meno ambiguità e maggiore uniformità rispetto a linguaggi più flessibili e meno strutturati.

Tuttavia, se ci stiamo già immaginando un futuro in cui Go diventa la chiave del vibe coding, è bene tornare con i piedi per terra: Go è progettato per integrarsi in architetture complesse e ragionate, non per improvvisare. Come ogni prodotto pensato per organizzazioni di una certa scala, il vero lavoro inizia sapendo dove e come il codice si innesta nell’ecosistema generale. Difficile pensare che basti “vibrare” due righe per ottenere un microservizio ben strutturato pronto per la produzione.

L’idea non è tanto quella di sostituire gli sviluppatori, quanto piuttosto di accelerare la produzione di software “noioso” e ripetitivo, lasciando ai professionisti il compito di occuparsi delle parti più critiche: progettazione dell’architettura, revisione del codice, gestione delle integrazioni e supervisione dei test. In altre parole, Go potrebbe diventare un ulteriore livello di astrazione nel ciclo di sviluppo software, così come avvenuto nel corso della storia informatica con l’evoluzione dai linguaggi assembly ai linguaggi ad alto livello.

Se consideriamo questa prospettiva, il ruolo dello sviluppatore potrebbe spostarsi sempre più verso la supervisione e il raffinamento del codice generato, piuttosto che sulla scrittura manuale di ogni singola linea. Forse Go, con la sua essenzialità e uniformità, sarà uno dei linguaggi che più beneficeranno di questa transizione, diventando non solo uno strumento di programmazione, ma anche una base solida per la generazione automatizzata di software efficiente e affidabile.

Photo by Pixabay on Pexels
Torna in alto