Questa pagina è contraria all'intelligenza artificiale?
No. Sviluppiamo funzionalità di intelligenza artificiale e ci aspettiamo che tu continui a usare l'assistente che preferisci. La questione è più specifica: la generazione e la verifica sono compiti diversi e la verifica richiede uno strumento che fornisca sempre la stessa risposta.
Visual Assist sostituisce Copilot?
No, e non ci prova nemmeno. VA e Copilot funzionano in parallelo in Visual Studio. Copilot crea le bozze; il parser di VA è quello con cui si confronta la bozza.
Cosa significa esattamente "deterministico" in questo contesto?
Dato lo stesso codice, il parser produce lo stesso modello di esso — stessi riferimenti, definizioni e ambito di ridenominazione — a ogni esecuzione, su ogni macchina, a ogni sessione. Nessun campionamento, nessuna variazione, nessuna differenza.
Qual è un esempio di un modello di intelligenza artificiale che commette un errore nel codice C++?
Tra gli errori più comuni: scegliere l'overload sbagliato quando ce ne sono diversi che corrispondono (una stringa letterale che preferisce boolun altro tipo std::stringè un classico), suggerire un membro o un'API che non esiste su quel tipo, gestire in modo errato la proprietà degli smart pointer in modo che qualcosa venga liberato due volte o mai, e "aggiornare" una chiamata a una firma da una versione diversa della libreria. Ognuno di questi errori può sembrare perfettamente ragionevole nel diff.
Se il codice viene compilato, non va bene?
No. In C++ una compilazione pulita indica che la sintassi è valida, non che il comportamento sia corretto. Errori come use-after-free, riferimenti pendenti, overflow di interi e semplici errori di logica vengono tutti compilati senza problemi e si manifestano a runtime, spesso solo sotto carico. Compilare non è corretto.
Non posso semplicemente chiedere all'IA di trovare tutti gli utilizzi di un simbolo?
È possibile, ma non si avrà la certezza che l'elenco sia completo. Un modello restituisce un insieme plausibile e potrebbe non rilevare gli utilizzi in macro, modelli o file non analizzati, e potrebbe restituire un insieme diverso la volta successiva. Un parser, invece, analizza l'intero set di traduzioni e fornisce il conteggio completo, sempre lo stesso a ogni esecuzione.