Copilot: il futuro della programmazione secondo GitHub. Si tratta di una intelligenza artificiale che svolge il ruolo di assistente alla programmazione secondo la tecnica del "pair programming" Il pair programming (letteralmente "programmazione in coppia") è una tecnica agile di sviluppo del software nella quale due programmatori lavorano insieme a una postazione di lavoro. Uno dei due, indicato come "conducente" ("driver") scrive il codice; l'altro, detto "osservatore" ("observer") o "navigatore" ("navigator"), svolge un ruolo di supervisione e di revisione simultanea del codice. Il conducente ha l'obiettivo principale di portare a termine una soluzione funzionante del problema in considerazione, mentre al navigatore è lasciato il compito di segnalare errori del conducente o proporre strategie alternative di soluzione. (fonte: wikipedia) L'idea alla base di Copilot è, al netto della creazione di una AI efficace, relativamente semplice: si analizza il "contesto" del codice che stiamo scrivendo, si passano le informazioni del contesto e quanto stiamo scrivendo all'intelligenza artificiale che, analizzando il tutto, restituisce del codice "già cucinato" per risolvere quanto stiamo facendo. Nel fare questo Copilot assolve in qualche modo al ruolo di "osservatore". Allo stato attuale di "Technical Preview" Copilot non è ancora in grado di offrire risultati ottimali per le situazioni più complesse per diversi motivi: - Il "contesto" usato per proporre il codice è limitato al solo file che si sta editando (niente "analisi" dei riferimenti ad elementi presenti in altri files) e, all'interno del file ad un numero relativamente piccolo di righe prima e dopo il punto in cui si sta scrivendo (si parla di un centinaio di righe, forse globalmente). - I linguaggi di programmazione con cui può essere utilizzato Copilot sono tanti, ma al momento quelli "prediletti" sono Python, JavaScript, TypeScript, Ruby e Go. - La AI prende in considerazione il nome delle variabili, delle funzioni e i commenti e ovviamente comprende soltanto l'inglese. - Per come funziona la AI Copilot rende meglio quando il codice viene frazionato ed incapsulato in funzioni costituite da un numero ridotto di righe di codice. - Il codice suggerito dalla AI non deve essere preso in modo dogmatico. La AI formula il suo codice ma questo può contenere errori anche subdoli: è sempre bene verificare attentamente quanto suggerito. Trovo inoltre fondamentale una lettura delle FAQ sul sito di Copilot. Altre considerazioni "a braccio" - Si tratta di una "technical preview". Ne è consentito l'uso gratuito in questa fase per migliorare l'accuratezza dalla AI. L'orizzonte del produttore è quello del tutto lecito di creare un prodotto commerciale. - Si può prefigurare un problema di privacy: l'editor invia alla AI le informazioni di contesto; la AI propone una soluzione o più soluzioni tra cui scegliere, l'editor restituisce poi alla AI quale è stata la nostra scelta (comprese le eventuali modifiche che abbiamo apportato?) in modo da consentire alla AI di apprendere ulteriormente (la cosiddetta fase di "improve suggestions"). Tutte queste trasmissioni verso la AI possono anche contenere dati sensibili. E' vero che il produttore garantisce la massima privacy e i dati sensibili non possono essere visti, ma è comunque una condizione da tenere bene in considerazione. - Anche se stanno sempre migliorando la AI potrebbe restituire codice contenente "parti" di dati sensibili e/o termini scurrili. - Il produttore afferma che la AI esegue le fasi di apprendimento soltanto su codice pubblico. Occorre credergli sulla fiducia. Se però fossi un cliente che paga la versione "business" di github qualche domanda me la farei (in realtà me la sarei fatta comunque prima di acquistare il servizio). - Da un punto di vista di produttività questa tecnologia potrebbe essere un salto enorme rispetto agli attuali sistemi di autocompletamento. Da un punto di vista di "conoscenza" potrebbe rappresentare un disastro: i programmatori si abitueranno probabilmente a fidarsi e "scrivere" codice senza sapere che roba è; un po' quello che è successo con le calcolatrici tascabili che hanno ridotto notevolmetne la capacità di "fare di conto" (io ne sono la prima vittima). - Se restasse "free" potrebbe forse causare una forte riduzione nell'uso di interi portali in stile "stack overflow" Analisi del contenuto di alcune pagine web che parlano di Copilot: - https://copilot.github.com/ E' il "sito istituzionale". Comprende una spiegazione con esempi di funzionamento in vari linguaggi, le importanti FAQ, una box di "test drive" in alcuni linguaggi definiti e il pulsante per richiedere l'adesione alla "technical preview" - https://www.sitepoint.com/github-copilot-ai-pair-programming/ Una pagina di blog dove vengono proposte le impressioni di uso di Copilot con alcuni esempi di funzionamento partendo da cose semplici per arrivare a qualcosa di relativamente più complesso (quanto complesso è da definire). In questa pagina c'è una "chicca", una "chat" con la AI di Copilot che introduce alla possibilità di utilizzare questo strumento nella scrittura della documentazione (markdown, LaTeX, RST). Non meno importanti le considerazioni nell'ultima parte del posto che oltre a mettere in evidenza alcuni limiti attuali, ma non solo, parlano anche di eventuali alternative. - https://medium.com/analytics-vidhya/github-copilot-all-you-need-to-know-8e6fc1d5ccc Introduzione a Copilot con alcune considerazioni comuni sulla bontà dei risultati e ripercussioni etiche. Ammesso e non concesso che si riesca ad ottenere un account di accesso a Copilot, si potrebbe tentare una dimostrazione nella scrittura di codice che risolve un problema che la platea sia in grado di comprendere. Che succede se gli studenti, folgorati dal fatto che qualcuno scriva codice al posto loro lo utilizzano per fare i compiti a casa? Naturalmente questo è al di fuori delle nostre possibilità di controllo e anche non menzionare Copilot sarebbe una foglia di fico: prima o poi si verrebbe a sapere dell'esistenza di questo prodotto e i "furbetti" potrebbero tentare di utilizzarlo... almeno fino a che non ci sarà da pagare.