Scusami, evidentemente mi sono spiegato MALISSIMO! :-D On 18/03/2019, Andrea Glorioso <andrea@digitalpolicy.it> wrote:
Caro Giacomo,
con tutto il rispetto, mi pare che assumere la fattibilità del programma politico che proponi (che, bada bene, io non metto in discussione in termini assoluti, anche se certo ne rilevo la difficoltà) sulla base di supposte abilità, caratteristiche o pratiche della categoria dei "programmatori" sia errato, o quanto meno azzardato
No, assolutamente non era ciò che intendevo. Il "programma" (in realtà un insieme di iniziative piuttosto ovvie e di buon senso buttate insieme in una mail giusto per fare esempi... assolutamente insufficienti, seppure utili) è fattibile in sé in condizione di volontà politica a realizzarlo. Naturalmente creare i presupposti di tale volontà non è facile. Soprattutto senza la consapevolezza del pericolo. Consapevolezza che deriva dalla conoscenza. Insomma, un cane che si morde la coda.
Il primo è che le dinamiche socio-politiche degli esseri umani non sono dei programmi per elaboratori, per quanto complessi. Ogni volta che qualcuno, da sinistra o da destra, dall'alto o dal basso, per i motivi più o meno nobili, ha costruito progetti di società basati su questo assunto, si è scontrato duramente con la realtà.
Uhm... diciamo che credo di aver chiara la differenza fra uomo e macchina (vorrei allegare agli atti tutti i pippotti sulla IA con cui l'imputato ha annoiato la lista in questo anno... :-D) Però vedi, la peculiarità della mia proposta è la profonda fiducia nell'uomo che presuppone, proprio in quanto NON macchina prevedibile. L'educazione è sempre stata espressione di una visione politica. Educare alla programmazione significa dare alle persone la possibilità di ragionare in modo ordinato su problemi complessi e di progettare "procedure" che permettano di risolverli. Significa dar loro la possibilità di insegnare il dialogo ad una macchina (e dunque imparare a riconoscere i problemi di comunicazione con il diverso), progettando e implementando protocolli di comunicazione. Significa dar loro la possibilità di debuggare, di andare a fondo nell'analisi dei sistemi complessi educandoli a non accontentarsi di spiegazioni superficiali che non risolvono i problemi. La programmazione, da sola, non basta (io parlo sempre di Storia ed Informatica) ma la mia non è fiducia nei programmatori, la mia è speranza negli Europei (nei bambini per la precisione... gli adulti sono per lo più spacciati). Spiegandoti alcuni aspetti del mio mestiere (diciamo... un cucchiaino del ghiaccio dell'iceberg) volevo solo dirti: lo so che è un casino... non pensare che sottovaluti la complessità implementativa di ciò che propongo... ma sappi che è possibile gestirla: ogni giorno gestiamo complessità comparabili per mestiere.
Il secondo è che, in tutta franchezza e detto da uno che pur non essendo un programmatore professionista (la vita mi ha portato altrove) qualcosa dell'argomento ne capisce, l'attuale panorama tecnologico è desolante,
Sfondi una porta aperta. Non puoi immaginare come sia frustrante lavorare con strumenti primitivi (concettuali ma anche linguaggi di programmazione, IDE, sistemi operativi, macchine virtuali... tutto!) in un contesto in cui la stragrande maggioranza dei colleghi si putta a testa china ad usarli senza chiedersi se non facciano perdere più tempo di quanto ne fanno guadagnare. Potrei farti un lungo elenco, ma è davvero troppo deprimente. Pochissimi di noi sono pienamente consapevoli di quanto primitiva sia la nostra condizione. I più frustrati cercano di fare qualcosa per migliorare (o quanto meno sottrarsi a) la situazione (vedi https://suckless.org/ o http://cat-v.org/ ) ma la stragrande maggioranza preferisce fingere che viviamo in un mondo in continuo progresso, che ogni novità sia innovazione, che JavaScript sia la migliore tecnologia del mondo e che il numero di framework che cercano di tapparne i buchi sia in realtà una riprova di questo fatto. Credo sia un meccanismo di difesa psicologico.
per quanto attiene alle capacità della suddetta categoria di costruire sistemi complessi robusti e che molto banalmente facciano ciò che si suppone debbano fare - e parliamo di una complessità che è ordini di grandezza inferiore rispetto ai sistemi sociali più semplici.
Sulla robustezza hai ragione. Sulla complessità... non lo so. Certamente un singolo essere umano è più complesso ed imprevedibile di qualsiasi programma. Siamo creature, non artefatti. Ma noi dobbiamo prevedere e gestire tutti i posibili comportamenti di un software, mentre agli umani (e ai sistemi sociali) viene lasciata grande libertà e ci si limita ad orientarne (attraverso l'educazione, i mass media, le leggi, il marketing etc) i comportamenti aggregati, spesso segmento per segmento, sotto gruppo per sotto gruppo. Si stima che nell'universo osservabile ci siano circa 2^267 atomi di idrogeno. Il kernel Linux alla commit 9e98c678c2d6ae3a17cb2de55d17f69dddaa231b (di 20 ore fa) contiene circa 276365 IF. (contati grossolanamente con un semplice `grep -wr 'if ('|wc -l` ) Il che significa che esistono 2^276365 comportamenti possibili (senza contare switch e altri tipi di branch basati su puntatori a funzione) Non ho un sorgente del kernel OpenBSD sotto mano, ma scommetterei che se anche vi sono molti meno branch siamo certamente nell'ordine delle diverse decine di migliaia. E stiamo parlando solo del kernel! Un sistema operativo è molto... MOLTO più complesso! Noi programmatori siamo fallibili e l'Informatica è certamente ai primordi. Ma non sottovaluterei la complessità che riusciamo a gestire insieme. Ora... immagina se tutti gli Europei fossero in condizione di fare lo stesso. Credi che sarebbe uno strumento di Difesa... efficace? ;-)
Dunque discutiamo pure senza preconcetti di ciò che gli europei dovrebbero fare nell'ambito di cui stiamo parlando (o altri nel caso) ma cerchiamo di mantenere un po' di lucidità e realismo su tempi, modi e mezzi.
Bene, sono tutto orecchi. Con quali tempi, modi e mezzi procederesti per realizzare questi obbiettivi? Giacomo