102 lines
6.3 KiB
Plaintext
102 lines
6.3 KiB
Plaintext
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.
|