Buongiorno Cristina, Cristina Iuli <cristina.iuli@uniupo.it> writes: [...]
Condivido - nella misura in cui la comprendo - questa affermazione di Giovanni Biscuolo:
solo sistemi basati su algoritmi pubblici, consultabili (e quindi contestabili) forniscono adeguate garanzie costituzionali; solo il software libero garantisce che l'implementazione sia confrontabile con l'algoritmo :-)
qualsiasi cosa posso fare per rendere il più comprensibile possibile questa affermazione (niente farina del mio sacco) la farò, sono a disposizione senza sapere bene cosa non è chiaro, mi viene solo da sottolineare la fondamentale differenza tra algoritmo e implementazione (programma *sorgente* software); mi scuso se ripeto cose che potrebbero suonare ovvie https://it.wikipedia.org/wiki/Algoritmo#Definizione: --8<---------------cut here---------------start------------->8--- [...] una definizione del concetto di algoritmo che sia formale e non tecnica manca tuttora e si è pertanto costretti ad accontentarsi dell'idea intuitiva di algoritmo come: "una sequenza ordinata e finita di passi (operazioni o istruzioni) elementari che conduce a un ben determinato risultato in un tempo finito". --8<---------------cut here---------------end--------------->8--- io mi accontenterei di questa idea intuitiva di algoritmo: ci basta che le operazioni che conducono al risultato siano pubblicate; avendo quello è quantomeno _possibile_ poter verificare i criteri, anche se per farlo occorre saper interpretare la sequenza ordinata che potrebbe essere espressa in un linguaggio formale un po' criptico (quindi chiederemmo a chi la pubblica di scriverla in un linguaggio più chiaro) sottolineo anche che (sempre dalla pagina Wikipedia ditata sopra) --8<---------------cut here---------------start------------->8--- L'algoritmo è un concetto fondamentale dell'informatica, anzitutto perché è alla base della nozione teorica di calcolabilità: un problema è calcolabile quando è risolvibile mediante un algoritmo. --8<---------------cut here---------------end--------------->8--- e questo apre una questione piuttosto rilevante in merito alla *possibilità* di applicare algoritmi per decidere un po' su "laqualunque" come se fosse ovvio; questo implica la _non_banale_ possibilità che analizzato l'algoritmo possa evidenziarsi (a volte in modo sfacciatamente palese) che non è il caso di prendere quelle decisioni sulla base di una serie di calcoli, in una sorta di eccesso di zelo di grezzo determinismo socio-economico infine, in merito al software che implementa l'algoritmo (stessa pagina Wikipedia): --8<---------------cut here---------------start------------->8--- la programmazione costituisce essenzialmente la traduzione o codifica di un algoritmo per tale problema in programma, scritto in un certo linguaggio, che può essere quindi effettivamente eseguito da un calcolatore rappresentandone la logica di elaborazione --8<---------------cut here---------------end--------------->8--- nella definizione sopra c'è un errore: il 99.9% [1] dei programmi *non* sono direttamente eseguibili da un calcolatore, devono a loro volta essere tradotti in un linguaggio macchina [2], per questo ci sono i c.d. compilatori e interpreti di linguaggi; es. di linguaggi di programmazione sono il C, Python, Lisp (uno degli enne dialetti)... in ogni caso essendo il lavoro dei calcolatori frutto di una **doppia** traduzione, ovvero da algoritmo a codice sorgente (in un linguaggio di programmazione) e da questo a codice macchina, c'è un certo margine di errore che queste operazioni possono inserire tra il risultato atteso (secondo la definizione algoritmica) e quello effettivo quindi lo schema è algoritmo -> codice sorgente -> codice macchina il senso della "mia" frase iniziale è che sarebbe opportuno che algoritmo e "codice sorgente" fossero scrutinabili da tutti
ma non sono sicura di comprenderne fino in fondo le implicazioni. Per un non addetto ai lavori, per una persona che non ha le assai specifiche e costose competenze matematiche o informatiche necessarie a valutare il rapporto tra gli algoritmi e loro messa in opera in programmi di gestione delle popolazioni, che cosa significa, davvero, questa affermazione?
è vero: per poter verificare che il codice sorgente implementi in modo corretto l'algoritmo ci vogliono specifiche competenze informatiche, ovvero occorre conoscere il linguaggio di programmazione usato per scrivere il codice sorgente da cittadino io mi ritetterrei comunque già notevolmente rispettato se almeno l'algoritmo mi fosse messo a disposizione per essere studiato e comprenderne gli elementi, per poi poter eventualmente contestarne gli aspetti che non condivido e se del caso determinarne la modifica: si tratta del primo passo, fondamentale, per una adeguata implementazione del processo democratico anche nella sfera della cittadinanza digilale: il diritto a conoscere l'algoritmo paragonato al diritto di conoscere le leggi che regolano la convivenza civile
Significa che in un sistema di pubblicità degli algoritmi, il controllo incrociato (ma invisibile ai più) da parte di addetti ai lavori opera come effettivo organismo di controllo sul rapporto tra algoritmo,sua implementazione, e suo significato politico?
sì; ciascun cittadino, in funzione delle proprie competenze, può decidere in che misura e a che livello di verifica, nella "catena di traduzione", vuole partecipare è vero che per controllare il codice sorgente ci vogliono adeguate competenze, ma l'accesso a tali competenze è quantomeno possibile ai cittadini che desiderassero acquisirle (e non stiamo parlando di competenze di analisi matematica o simili)
O significa che vanno creati organismi di addetti ai lavori che possano dare sufficienti garanzie sul modo in cui gli algoritmi vengono creati e utilizzati?
grazie infinitamente per *la* domanda :-) questo è esattamente quello che succede quando l'implementazione dell'algoritmo (codice sorgente) è in forma di software proprietario: i cittadini, e spesso le istituzioni stesse, devono fidarsi di un ristretto gruppo di addetti ai lavori (in genere di grandi aziende private) per la verifica che tale implementazione sia adeguata in altre parole: quando le regole di convinenza civile sono inglobate nel software proprietario il diritto alla partecipazione alla propria cittadinanza digitale è negato in partenza, ovvero rimarrebbe solo la possibilità di verificare l'algoritmo fidandosi ciecamente dell'implementazione
Significa che nella società digitale e del controllo, il controllo critico che i cittadini (e le istituzioni che essi eleggono) dovrebbero poter esercitare sulle politiche pubbliche, sia a livello decisionale che amministrativo, deve essere delegato per default a chi ha le capacità tecniche di esercitarlo?
io (e molti altri prima e più in alto di me) ritengo che questo sia un grave pericolo per la democrazia prossima ventura: questo controllo non deve essere *esclusivo* ma aperto, a tutti deve essere data la possibilità di partecipare in funzione delle proprie competenze non è automatico che chiunque sia in grado di partecipare a questo processo di verifica quando il software è libero, solo il software libero, però, lo rende possibile
E se è così, quali sono le conseguenze di questa condizione sui sistemi democratici e sull'idea stessa di democrazia? E in assenza della possibilità di conoscere, comprendere e valutare il significato degli algoritmi e del loro uso, cosa dovrebbe convincere i cittadini a fidarsi delle procedure, delle istituzioni, e del controllo degli esperti?
Nulla: la fiducia sulla base dell'autorità è morta e sepolta ormai, dobbiamo _ricostruire_ la fiducia su nuove basi
Grazie molte a chi risponde. Cristina Iuli
Grazie per gli interessanti spunti di riflessione Saluti, Giovanni [1] alcuni rarissimi programmi sono scritti in un lingiaggio direttamente traducibile in codice macchina, con margini di errore vicini allo zero assoluto [2] ogni architettura di calcolatore (es. i386, ARM7, Arduino) ha un proprio linguaggio macchina specifico [...] -- Giovanni Biscuolo Xelera IT Infrastructures