Aggiunti appunti su Copilot
This commit is contained in:
parent
8196092eb8
commit
8d1649981e
|
@ -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.
|
Loading…
Reference in New Issue