Ciao Claudio,

Il 23 Aprile 2024 23:15:29 CEST, Claudio Agosti 
<[email protected]> ha scritto:
> Ciao Giacomo; capisco le ragioni che ci sono dietro, ma devo dire che ho
> provato un paio di sistemi di assistenza allo sviluppo.. ed il mio giudizio
> finale è che sono d'aiuto anche ad uno sviluppo responsabile ed informato.

Forse nel tuo caso riesci ad usarlo bene perché sei perfettamente consapevole 
che non
si tratta di codice scritto da una mente che ne comprende il significato (come 
quello scritto 
da un collega in peer programming).


Io l'ho visto usare a colleghi più giovani in peer programming, ed in più di 
un'occasione
il tempo richiesto per il refactoring/debug del output è stato maggiore del 
tempo
necessario a scrivere il codice da zero (sapendo cosa scrivere).

I colleghi in questione tendevano a fidarsi troppo dei "suggerimenti" e 
soprattutto non imparavano
dagli errori del software (forse perché non li vivevano come propri?)
Non solo: in un caso ho provato a far notare al collega i problemi che avevamo 
osservato
durante la sessione di pp, ottenendo una reazione piuttosto piccata, come se 
avessi messo
in discussione la sua competenza invece di quella di Copilot.

L'esperienza fin'ora mi ha lasciato un senso di diffidenza nei confronti del 
codice committato
da chi lo usa (cui corrispondono review più lunghe, meticolose, faticose e 
nettamente più costose
per l'azienda).

Riflettendoci, potrebbe anche aver senso tenerne conto in fase di colloquio:
a parità degli altri fattori, chi non necessita di LLM per scrivere il proprio 
codice 
ha probabilmente prospettive di crescita maggiori.


Forse può essere utile se già conosci perfettamente il dominio del problema
e il contesto di sviluppo (librerie, framework, servizi) nel cui caso riduce i 
tempi di battitura,
ma onestamente non credo che siano davvero "tempi morti": l'atto di scrivere il 
codice
"lentamente" serve a rileggerlo più volte, criticamente,  individuando in 
anticipo
potenziali problemi.

Inoltre, tale sforzo è utile a ricordarlo e dunque a debuggare mentalmente un 
problema
più rapidamente.

> sono assistito nel generare unit test più rapidamente.

Sarà sfiga, ma non gli ho visto produrre in output test utili se non in casi 
esteremamente basilari
(come funzioni pure di natura algebrica)

Nella quasi totalità dei miei casi d'uso, la quantità dei mock da configurare 
rende semplicemente
inutile quei tool.


Leggermente più utile è nella scrittura di esempi di utilizzo per la 
documentazione (ma anche
in quel caso, bisogna sempre rileggere e testare manualmente che la stronzata è 
dietro l'angolo.


> Secondo me posizioni come quella di Gentoo, sono importanti per dare un
> segnale, per fare un racconto di una comunità più attenta, ma poi sotto
> sotto, se committo del codice scritto con l'aiuto di chatgpt + co-pilot,
> costantemente rivisto da me... si può dire che il mio contributo sia stato
> AI-generato?

Sì beh... stai completamente ignorando il problema etico.

Se copi il codice che ho donato al mondo sotto un copyleft forte (supponi 
AGPLv3 o 
magari Hacking License[1]) in un progetto distribuito con una licenza 
incompatibile
(proprietaria o permissiva che sia), sei uno stronzo e lo sai.

Se lo fai perché te lo suggerisce CopyALot, sei comunque uno stronzo, ma non lo 
sai.

O meglio, scegli di non saperlo, di lavartene le mani perché... "AI".


Non saprei dire, in termini di filosofia morale, se questo ti renda doppiamente 
colpevole o meno.

Penso però si tratti di una di quelle situazioni in cui il soggetto è 
pienamente consapevole che dalle
proprie azioni deriverà un danno a terzi, ma non conoscendo personalmente i 
terzi, se ne sbatte.

Che sia usare Copilot per "risparmiare tempo", vendere criptomenate per non 
restare 
col cerino in mano o persino costruire proiettili, la questione mi sembra 
moralmente analoga.


> Non mi sono limitato a premere tab, ma ho fatto un lavoro di selezione,
> riflessione, e guida di quello che mi è stato suggerito. Mi sento comunque
> autore e responsabile dei pezzi di codice scritti, anche se c'era un
> "autocomplete" un bel po' più sofisticato del solito.

Per questo dovresti analizzare con più attenzione le implicazioni etiche.

Anche se produci sempre codice "open", quel codice deriva dal codice donato da 
altri perché 
sia sì riutilizzato, ma a certe condizioni, prima fra tutte un'attribuzione 
corretta [2]

Tu stai inevitabilmente violando quelle condizioni.


Se te ne senti davvero responsabile, come concili la consapevolezza di 
sfruttare il lavoro 
di migliaia di altri sviluppatori di software libero senza neppure citarli e la 
tua idea di te?

La scarsa probabilità di essere beccati è rilevante dal punto di vista legale, 
ma da quello morale no.


Per il software libero questi LLM costituiscono un danno secco: hai notato che 
Microsoft 
si è guardata bene dall'usare i propri sorgenti per programnare statisticamente 
GitHub Copilot?

Perché?

Poteva farlo senza incorrere in ovvie violazioni delle licenze di terze parti.

E mediamente il codice Microsoft è più testato, documentato e... 
"professionale" di quello
caricato su GitHub.


Non l'ha fatto perché era ben consapevole che quel sorgente sarebbe stato 
distribuito 
ed incorporato dentro prodotti proprietari di concorrenti.
E non voleva danneggiare sé stessa, per cui ha scelto di danneggiare tutti gli 
sviluppatori
di software libero che sono individualmente più deboli (e collettivamente 
disorganizzati).


Per questo, anche se funzionassero bene, preferisco non usare simili strumenti.

E trovo eticamente molto grave favorirne lo sviluppo e 
normalizzarne/legittimarne l'utilizzo [3].


Giacomo

[1] <https://encrypted.tesio.it/documents/HACK.txt>

[2] il noto caso di Quake è stato solo più facile da identificare, ma CopyALot 
funziona 
sempre così (al netto di string replace) e non può che funzionare così 
<https://peertube.opencloud.lu/w/eW497u3UYXmQwcQu9LYEDR>

[3] vedi ad esempio 
<https://www.softwareheritage.org/2023/10/19/swh-statement-on-llm-for-code/>
_______________________________________________
nexa mailing list
[email protected]
https://server-nexa.polito.it/cgi-bin/mailman/listinfo/nexa

Reply via email to