From 8d1649981e23d7ec439a47e5004c6481805effc0 Mon Sep 17 00:00:00 2001 From: me Date: Sat, 9 Oct 2021 18:39:19 +0200 Subject: [PATCH] Aggiunti appunti su Copilot --- copilot.txt | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 copilot.txt diff --git a/copilot.txt b/copilot.txt new file mode 100644 index 0000000..b37b4ef --- /dev/null +++ b/copilot.txt @@ -0,0 +1,101 @@ +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.