Aggiunti appunti su Copilot

This commit is contained in:
me 2021-10-09 18:39:19 +02:00
parent 8196092eb8
commit 8d1649981e
1 changed files with 101 additions and 0 deletions

101
copilot.txt Normal file
View File

@ -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.