Deprecated: Creation of dynamic property Timber\Site::$pingback is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Site.php on line 180

Deprecated: Creation of dynamic property Timber\User::$name is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/User.php on line 118

Deprecated: Creation of dynamic property Timber\Post::$os_meta is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$has_disclaimer is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_lock is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_last is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$tipologia is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_tipologia is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$attributi is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_attributi is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$in_evidenza_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_in_evidenza_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$inviato_in_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_inviato_in_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$fonte is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_fonte is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$fonte_url is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_fonte_url is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_category is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_blz_affiliation_attributes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_content_type is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_attributes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_speciali is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_focuskw is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_metadesc is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_linkdex is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_content_score is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_focuskeywords is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_keywordsynonyms is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_estimated-reading-time-minutes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_thumbnail_id is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$os_previous_publish_date is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$os_notification_id is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_indexnow_last_ping is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_064f8b1f50a341d6db39fdeb05c3f2a3 is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_time_064f8b1f50a341d6db39fdeb05c3f2a3 is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_e4687fe3a1bc287507221482e0916a3b is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_time_e4687fe3a1bc287507221482e0916a3b is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_date_gmt is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$ping_status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_password is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_name is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$to_ping is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$pinged is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified_gmt is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_content_filtered is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$guid is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$menu_order is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_mime_type is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_count is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$filter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71
CodeSpeak, il creatore di Kotlin presenta un linguaggio per parlare con le AI

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