CodeSpeak, il creatore di Kotlin presenta un linguaggio per parlare con le AI

CodeSpeak propone un nuovo modello di sviluppo: gli ingegneri scrivono specifiche in linguaggio naturale strutturato e un LLM genera il codice. L’approccio punta a ridurre il codice manuale e a rendere la specifica la fonte primaria del software.

La crescita dei modelli linguistici di grandi dimensioni (LLM) sta modificando sempre più il modo in cui concepiamo il software. Una parte crescente del lavoro di sviluppo consiste ormai nel dialogo con sistemi di generazione automatica del codice: prompt, istruzioni testuali, revisioni iterative e strumenti di agentic coding sono entrati nel flusso quotidiano degli sviluppatori. In questo contesto prende forma l’idea di CodeSpeak, un progetto che punta a riorganizzare il rapporto tra esseri umani e programmi: scrivere specifiche invece di codice e lasciare a un modello linguistico il compito di produrre l’implementazione.

L’idea non nasce dal nulla. Dal linguaggio C agli strumenti di modellazione UML, la storia dell’ingegneria del software è attraversata da tentativi di spostare il livello di astrazione sempre più lontano dall’hardware. L’interesse verso questa direzione si è riacceso con l’arrivo degli LLM, che mostrano capacità sorprendenti nella generazione di codice in più linguaggi.

CodeSpeak: specifiche come artefatto principale dello sviluppo

CodeSpeak è un’iniziativa guidata da Andrey Breslav, noto per aver creato il linguaggio Kotlin – progettato per essere pienamente interoperabile con Java, migliorandone sicurezza, leggibilità del codice e produttività, ampiamente usato per lo sviluppo di app Android – durante la sua attività in JetBrains

Nel caso di CodeSpeak, l’obiettivo dichiarato consiste nel costruire un ambiente di sviluppo in cui il vero artefatto di progetto non sia il codice sorgente ma una descrizione strutturata del comportamento del sistema. A partire da tali specifiche, un modello linguistico produce e aggiorna automaticamente le implementazioni in linguaggi tradizionali come Python, Go e JavaScript.

L’approccio ambisce a ridurre drasticamente il volume di codice gestito manualmente, concentrando il lavoro umano sull’intenzione funzionale del software.

Lo sviluppo del software è sempre aderente alle specifiche

L’idea alla base di CodeSpeak (sito ufficiale) consiste nel ribaltare il rapporto tra descrizione e implementazione. In molti progetti software le specifiche formali vengono redatte nelle prime fasi e poi progressivamente abbandonate mentre il codice evolve. Il risultato è un divario tra ciò che la documentazione afferma e ciò che il programma realmente esegue. Il modello proposto tenta di eliminare questa divergenza stabilendo che la specifica sia la fonte primaria della verità.

In pratica lo sviluppatore scrive file di descrizione in linguaggio naturale strutturato, spesso in formato Markdown o simili, nei quali definisce il comportamento atteso. Il sistema di generazione analizza tali documenti e li trasforma in codice eseguibile utilizzando modelli linguistici.

L’operazione non si limita alla generazione iniziale. Quando una specifica cambia, lo strumento calcola le differenze (diff) tra le versioni del documento e produce una modifica corrispondente nell’implementazione.

Il meccanismo alla base di CodeSpeak differisce da molti sistemi di generazione di codice basati su prompt. In quei casi la richiesta inviata al modello rimane spesso temporanea e difficilmente tracciabile. L’uso di file di specifica persistenti consente invece di mantenere uno storico delle istruzioni che hanno portato alla creazione del software, facilitando audit e revisione del processo di sviluppo.

Generazione del codice e integrazione con tool esistenti

Dal punto di vista tecnico, strumenti come CodeSpeak operano come una forma di compilatore basato su modelli linguistici.

Il flusso tipico prevede tre passaggi principali. La specifica è prima analizzata per estrarre entità, vincoli e relazioni tra componenti. Successivamente il LLM genera l’implementazione in un linguaggio target. Infine il sistema esegue test automatici o controlli statici per verificare che il codice soddisfi i requisiti descritti.

Le implementazioni prodotte possono essere integrate in repository Git tradizionali e convivere con codice scritto manualmente. In un progetto reale è comune che alcune parti dell’applicazione rimangano completamente gestite dagli sviluppatori, mentre altre siano rigenerate a partire dalle specifiche. L’idea è creare una struttura modulare in cui componenti complessi o ripetitivi possano essere delegati alla generazione automatica.

Uno degli strumenti sperimentali associati al progetto, chiamato codespeak takeover, tenta di affrontare un problema ancora più complesso: convertire codice esistente in specifiche equivalenti. Il sistema analizza repository esistenti e prova a sintetizzare una descrizione ad alto livello del comportamento del programma. Una volta ottenuta la specifica, il codice potrebbe essere rigenerato automaticamente mantenendo gli stessi test e gli stessi vincoli funzionali.

Con un progetto come CodeSpeak, la programmazione software potrebbe avvicinarsi sempre di più alla progettazione di sistemi piuttosto che alla scrittura diretta di istruzioni. Il codice rimarrà l’ultimo anello della catena, ma il luogo in cui nasce il software potrebbe spostarsi definitivamente verso la definizione formale dell’intento.

Ti consigliamo anche

Link copiato negli appunti