Perché l’AI non sostituirà gli sviluppatori di firmware

Le AI generative non sono ancora pronte per sviluppare firmware di basso livello, ma aiutano a farlo.

La generazione di firmware con le AI generative,  funziona davvero? 

Non giriamoci attorno, veniamo al punto. Le AI generative si basano su grandi quantità di dati per apprendere e generare contenuti. Tuttavia, i dati relativi ai firmware di basso livello sono spesso scarsi, protetti o specifici per ogni dispositivo. Questo rende difficile per le AI generative trovare dei dati adeguati e rappresentativi per addestrarsi.

Inoltre, le AI generative devono rispettare delle regole e delle specifiche precise quando generano dei firmware di basso livello. Queste regole riguardano la sintassi, la semantica, la logica, la sicurezza e la compatibilità del codice. Se le AI generative non seguono queste regole, il codice generato potrebbe essere errato, incoerente o dannoso per il dispositivo. Tuttavia, le AI generative non hanno sempre la capacità di verificare e validare il codice che producono.

Infine, le AI generative devono essere in grado di testare e correggere il codice che generano. Questo richiede delle competenze e degli strumenti specifici per il debugging, il testing e il deployment del firmware. Inoltre, le AI generative devono essere in grado di gestire le eccezioni, gli errori e i guasti che possono verificarsi durante l’esecuzione del firmware. Tuttavia, le AI generative non hanno sempre l’esperienza e la flessibilità necessarie per affrontare questi problemi.

Il confronto tra la generazione di firmware e la generazione di codici Python o Java

Per capire meglio le difficoltà delle AI generative nel generare firmware di qualità, possiamo confrontarle con la generazione di codici Python o Java. Questi sono due linguaggi di programmazione molto popolari e usati in molti ambiti, quindi ci sono più dati disponibili per addestrare le AI generative. Inoltre, Python e Java sono linguaggi di alto livello, più vicini al linguaggio naturale e più facili da interpretare e generare rispetto a un linguaggio di basso livello come il C.

Esistono diversi strumenti basati sulle AI generative che possono aiutare i programmatori a scrivere codici Python o Java. Per esempio:

  • OpenAI Codex è un modello basato su GPT-3 che genera codice a partire dal linguaggio naturale. OpenAI Codex è in grado di scrivere codice in almeno una dozzina di linguaggi, tra cui Python e Java. OpenAI Codex è il modello che alimenta GitHub Copilot, uno strumento di GitHub che genera codice all’interno di ambienti di sviluppo come VS Code, Neovim, JetBrains e anche nel cloud con GitHub Codespaces.
  • Tabnine è uno strumento che migliora la funzionalità di auto-completamento degli ambienti di sviluppo integrati (IDE). Tabnine supporta oltre 20 linguaggi e 15 editor, tra cui Python e Java, e popolari IDE come VS Code, IntelliJ, Android Studio e anche Vim
  • CodeT5 è un modello open source di programmazione basato sul framework T5 (Text-to-Text Transfer Transformer) di Google. CodeT5 è stato addestrato su oltre 8.35 milioni di istanze di codice, tra cui commenti degli utenti, provenienti da repository GitHub accessibili al pubblico. CodeT5 può potenzialmente portare tre capacità alla programmazione software: generazione di testo in codice, auto-completamento del codice e traduzione del codice.


Questi strumenti possono essere utili per creare dei prototipi, esplorare delle soluzioni creative, migliorare la qualità del codice e risparmiare tempo e risorse. Tuttavia, questi strumenti non sono perfetti e possono generare codici errati o non ottimali. Inoltre, questi strumenti non sostituiscono la creatività e l’esperienza degli sviluppatori umani, ma li supportano nel loro lavoro.

Il confronto tra generazione di codice di basso e di alto livello

Le AI generative hanno delle difficoltà a generare firmware di basso livello per diversi motivi:

  • Le AI generative hanno meno dati disponibili per addestrarsi sui firmware in linguaggi di basso livello come C o micro Python rispetto ai codici di alto livello come Python o Java. Questo rende più difficile per le AI generative apprendere le regole e le specifiche dei firmware.
  • Le AI generative hanno meno capacità di verificare e validare il codice che generano per i firmware. Questo rende più probabile che le AI generative producano codici errati o dannosi per i dispositivi.
  • Le AI generative hanno meno esperienza e flessibilità nel gestire le eccezioni, gli errori e i guasti che possono verificarsi durante l’esecuzione dei firmware.

Le AI generative non sostituiscono la creatività e l’esperienza degli sviluppatori umani, ma li supportano nel loro lavoro. 

Le AI generative possono essere utili per lo sviluppo firmware limitatamente a piccoli snippet o poche istruzioni, ma non sono in grado di sviluppare codici complessi. Per esempio, le AI generative possono aiutare a scrivere una funzione semplice o a tradurre un codice da un linguaggio all’altro. Ma non possono scrivere un intero programma complesso e con specifici requisiti di sicurezza, robustezza e su custom hardware. 

E non abbiamo fatto menzione al custom hardware, alla specificità architetturale di ciascun progetto embedded. Ma lo vedremo in un altro articolo. _

1. appvance.ai 2. jobs.apple.com 3. encora.com 4. github.blog 5. venturebeat.com 6. analyticsvidhya.com 7. forbes.com 8. openai.com 9. infodata.ilsole24ore.com