Politica e informatica

Che cos'è la filosofia
Che cosa pensa che sia la filosofia? Secondo il significato del dizionario, essa è l'attività di riflettere sulla vita del mondo e sulle questioni fondamentali, e di cercarne le risposte. Si può anche proporre una definizione operativa: non la soluzione di problemi con risposte già stabilite, bensì l'espansione del pensiero attraverso la stessa domanda, o una successione di domande che si susseguono l'una dall'altra, e la condivisione di tali risposte.
In passato, mentre frequentavo il corso di laurea, ho seguito un insegnamento legato alla filosofia politica. In quell'occasione, durante la presentazione personale, il professore pronunciò delle parole simili a la filosofia politica e l'informatica sono discipline collocate agli estremi di filosofie diverse. Non ricordo esattamente questi termini e questa frase, ma credo che il senso fosse più o meno questo.
Informatica
Ritengo che l'informatica sia una ricerca fondamentale per risolvere problemi logici. Proprio per questo, persone diverse che riflettono su uno stesso problema possono giungere a risposte diverse. L'esempio più rappresentativo è l'ordinamento. Anche nella ricerca di metodi per ordinare in sequenza gli stessi dati disposti in fila esistono numerosi approcci: bubble sort, insertion sort, selection sort, merge sort, quick sort, heap sort, tim sort e altri ancora. E suddividendo ulteriormente questi metodi possono emergere algoritmi migliori.
Inoltre, considerandola da un punto di vista locale, si può dire che essa consista nel costruire e dimostrare. Anche l'ordinamento appena citato consiste nel continuare a costruire il modo in cui ordinare e nel dimostrare il risultato. Per chi sviluppa software, l'esempio più vicino è la progettazione di un progetto: si può considerarlo come l'implementazione di un sistema e la dimostrazione che esso funziona correttamente.
Filosofia politica
Ritengo che la filosofia politica sia una ricerca fondamentale per risolvere problemi sociali. Essa solleva ripetutamente interrogativi su problemi già esistenti che variano di epoca in epoca, produce risposte e le condivide con il presente e con il futuro. Tratta principalmente valori astratti, come giustizia, libertà, uguaglianza e potere, che vengono interpretati in modo diverso a seconda dell'epoca e della cultura, e presenta la caratteristica di non avere confini netti tra bene e male, né risposte giuste o sbagliate definite in modo univoco, restando quindi indeterminata.
Inoltre, considerandola da un punto di vista locale, come nell'informatica, si può dire che essa consista nel interrogare e riflettere. Di fronte ai problemi che si manifestano, si pone continuamente domande: perché sia accaduto così, quali direzioni migliori esistano, e si riflette per arrivare a una risposta. Anche in questo caso, il numero di risposte cresce in proporzione al numero di persone che pensano.
Perché dobbiamo conoscere la politica e l'informatica
Relazione di mutua evocazione
I due mondi sembrano esplorare campi differenti, ma in realtà condividono molte somiglianze significative e presentano numerosi punti in cui l'uno costituisce la causa e l'effetto dell'altro.
Vorrei proporre un esempio.
- Se i dati sanitari personali vengono conservati in modo sicuro nel cloud, essi potranno essere consultati rapidamente da ciascun ospedale quando necessario ⇒ questo viene realizzato programmando funzioni di ciascun ambito in modo sicuro e accessibile.
- Allora a chi appartengono tali dati? A me? Al responsabile della registrazione? Oppure all'ente gestore, alla società di sviluppo, allo Stato? E fino a dove possono vedere i miei dati? Fino a che punto e in che modo posso ottenere la garanzia che le mie informazioni personali siano protette? ⇒ si svilupperanno discussioni politiche sulle differenze di posizione e di interesse tra comunità diverse e singoli individui.
- Successivamente, talvolta, il dibattito politico e la progettazione e l'implementazione programmatica si susseguiranno e si ripeteranno in una catena continua.
In questo modo, l'informatica viene impiegata per risolvere i problemi sociali esistenti, e la filosofia politica viene a sua volta utilizzata per riconoscere e risolvere i problemi emersi da tale impiego, sollevando interrogativi e preparando la soluzione del problema successivo. Nella società contemporanea dell'informazione, questo è un fenomeno del tutto naturale.
Politica e informatica sono simili?
Ciò che non appare simile
Inoltre, i due mondi si sono evoluti in forme analoghe. Tuttavia, come nel rapporto tra filosofia sociale e filosofia naturale, alla base vi è una differenza tra espressioni ambigue ed espressioni precise. La filosofia politica si fonda su definizioni variabili e ambigue formulate in linguaggio naturale, mentre l'informatica si basa su proposizioni invariabili e precise espresse tramite formule, anziché in linguaggio naturale.
Inoltre, esprimono in modo leggermente diverso la direzione del proprio sviluppo. L'informatica ritiene che possa esistere una soluzione ottimale. La filosofia politica, invece, tratta concetti vaghi come argomenti più persuasivi, argomenti meglio fondati e argomenti più etici. Tuttavia, a mio avviso, la direzione dei due ambiti è quasi identica: in entrambi si persegue sostanzialmente un domani migliore. Ad esempio, anche l'informatica ha molti settori, ma tra i più rappresentativi vi è la compressione dei media, detta codec, nella quale ci si impegna a ottenere un rapporto di compressione migliore, prestazioni di compressione superiori e costi di licenza inferiori.
Somiglianze apparenti
In particolare, il linguaggio di programmazione e l'ideologia di governo sembrano applicarsi in modo analogo agli esseri umani. Non è possibile far corrispondere ciascun linguaggio a un'ideologia, ma per divertimento li elenco.
- Linguaggio C (
lo sviluppatore sa ciò che sta facendo): vorrei farlo corrispondere al repubblicanesimo. Ciò perché è simile alla repubblica, che è stata alla base del sistema politico occidentale, e perché mi sembra affine al comunitarismo, che attribuisce importanza alla coscienza dei singoli cittadini e agli sforzi individuali verso ideali migliori. Inoltre, ho avvertito una somiglianza nel fatto che ai diritti si accompagnano delle responsabilità. - Java (
scritto una volta, eseguito ovunque): non lo so. Vi sono leggi rigide, e si vive in modo uniforme nel rispetto di esse, ma ciò è stabile e al suo interno si è liberi. Inoltre, entrando in Spring, vi attendono vari sistemi di welfare. Lo associamo al liberalismo? - C# (
armonia tra produttività dello sviluppatore e principi dell'ingegneria del software): tutto è ben progettato sotto la protezione di uno Stato forte, e all'interno di ciò che è pianificato si possono spingere produttività e prestazioni al limite. Si adatta all'economia pianificata. Non è comunismo, perché i mezzi di produzione sono stati liberalizzati e non si limitano i produttori. - Go (
abbandona la complessità e privilegia praticità ed efficienza): non c'è nulla di simile. Dà tutto a tutti, quindi adottate lo Stato sociale. - Rust (
sicurezza senza perdita di prestazioni): la proprietà e i lifetime di Rust sono gestiti da un sovrano rigoroso, ossia il compilatore. Ciò appare come un tentativo di proteggere la sicurezza e l'uguaglianza dell'intero sistema, limitando in parte la libertà individuale, affinché la comunità gestisca e pianifichi i mezzi di produzione per garantire una vita stabile e prevenire le disuguaglianze e i rischi generati dalla libera attività economica dei singoli. Per questo lo considero socialismo. - JavaScript (
flessibilità, tolleranza e presenza ovunque): vorrei associarlo al capitalismo. In questo linguaggio i mezzi di produzione sono nelle mani dei singoli, e anche le attrezzature sono abbondanti per ciascun individuo. Grazie a ciò nascono vari prodotti industriali e, attraverso la libera concorrenza, chiunque può perseguire il profitto. Tuttavia, un mercato senza regole è presto caduto nel caos. - TypeScript (
JavaScript esteso): naturalmente è il capitalismo rivisto. La fiducia nel capitalismo viene incrinata e, per superare l'instabilità del mercato, lo Stato interviene in una certa misura. La piena libertà precedente è relativamente regredita, ma chiunque può ancora entrare liberamente nel mercato e competere.
Inoltre, non pochi sviluppatori combattono spesso con il linguaggio, come se fossero in una guerra ideologica nella realtà. Il linguaggio stesso è, per così dire, l'ideologia familiare agli sviluppatori e l'ideale da perseguire.
Stato e architettura
- Architettura monolitica e Stato centralizzato: tutto è contenuto in un'unica grande base di codice e in un unico binario. Questa struttura è analoga a uno Stato unitario con un governo centrale forte o a una monarchia assoluta. Tutte le funzioni dello Stato sono controllate da un unico sistema di potere.
- Ha il vantaggio di essere la forma più facile da costituire e di produrre decisioni rapide. Ciò si inserisce nello stesso contesto del vantaggio per cui l'intero software viene rilasciato rapidamente. Poiché tutte le risorse e le informazioni sono concentrate in un solo luogo, la gestione è chiara.
- Tuttavia, più lo Stato cresce, più è difficile rispondere ai cambiamenti, e anche per modificare una piccola legge o un piccolo istituto occorre esaminare e applicare l'intero sistema. Vi è inoltre il rischio che un problema in un solo settore paralizzi l'intero Stato. Anche il monolite, a causa della grande base di codice e del codice intrecciato, fatica a rispondere ai cambiamenti: anche per modificare una sola riga di codice occorre calcolare il raggio d'impatto, e un problema in un modulo tende a ripercuotersi sull'intero sistema.
- MSA e Stato federale: ogni funzione del sistema viene separata in un servizio indipendente. Ciò presenta analogie con lo Stato federale, in cui ogni parte dello Stato è composta da più stati autonomi. Inoltre, ogni servizio e ogni stato dispone di un'infrastruttura indipendente. L'interferenza del governo centrale è relativamente debole, e anche il fatto che non si sappia quando possano verificarsi secessioni o adesioni è simile.
- In linea di principio, ogni stato autonomo e ogni servizio può modificare le proprie leggi o scrivere il proprio codice in modo indipendente. Di conseguenza, non è necessario sincronizzare i rispettivi ritmi. Inoltre, anche se un problema si manifesta in un luogo, è difficile che l'intera federazione venga paralizzata. Ed è possibile scegliere istituti (tecnologie) adatti a ciascuna regione o ambito.
- Tuttavia, è difficile raggiungere accordi reciproci o creare canali di comunicazione. Poiché è complesso attuare politiche coerenti, si possono anche generare confusione e disordine.
- EDA (Event Driven Architecture) e società civile: anziché essere direttamente comandati da un governo centrale o da un rappresentante, i problemi sociali che si manifestano vengono raccolti e risolti in modo autonomo e proattivo dai singoli individui. Ciò è analogo alla caratteristica dell'EDA, per cui, quando si verifica un evento, un sottoscrittore raccoglie autonomamente l'evento e lo elabora.
- Chiunque può partecipare facilmente. Anche nell'EDA un nuovo servizio può diventare facilmente un nuovo sottoscrittore e partecipare al processo.
- Tuttavia, presenta lo svantaggio di non poter comprendere l'intero flusso. È difficile tracciare chi abbia elaborato cosa e come, e non si può sapere quale reazione a catena un singolo evento possa innescare.
- Layered Architecture e feudalesimo: il feudalesimo è una struttura in cui ciascun livello svolge il proprio ruolo e le proprie responsabilità assegnate, adempiendo ai doveri verso il livello superiore. Questi rapporti si instaurano come una sorta di relazione contrattuale e, poiché formano una rigida struttura di dominio verticale, si possono trovare somiglianze con la Layered Architecture.
Così, sebbene siano possibili molte altre analogie, il nucleo di questo testo risiede non tanto nella struttura in sé, quanto nel processo attraverso cui la si costruisce.
La soluzione dei problemi nello sviluppo e nella politica è la stessa?
Se l'architettura software e l'ordinamento statale si assomigliano, anche il processo con cui li si costruisce procede in modo sorprendentemente parallelo. Il processo di sviluppo del software non è, di fatto, diverso da un atto politico che costruisce e sviluppa un nuovo ordine nello spazio digitale.
- Problematizzazione pubblica dei problemi sociali e analisi dei requisiti**:** Tutto inizia dalla domanda "Qual è il problema?". Come le sofferenze e i disagi della società civile diventano oggetto di dibattito pubblico e tema politico, così le difficoltà e le richieste degli utenti, dopo essere state analizzate, diventano la prima tappa dello sviluppo, ovvero la "specifica dei requisiti".
- Progettazione della costituzione e progettazione dell'architettura**:** Quale Stato costruire? Quale sistema costruire? Come i politici erigono l'ossatura della costituzione e delle leggi sulla base di ideologie e filosofie, così l'architetto traccia il progetto dell'architettura, che sarà la base del sistema, fondandosi su convinzioni tecniche. Le decisioni di questa fase determinano il destino del sistema.
- Esecuzione delle politiche e implementazione del software**:** Una volta completato il progetto, gli sviluppatori scrivono il codice effettivo e i funzionari amministrativi eseguono le politiche secondo le leggi. È il processo attraverso cui un piano astratto prende forma come entità concreta che opera nel mondo reale.
- Giudizio elettorale e test del software**:** Le politiche vengono giudicate nella loro legittimità attraverso le elezioni e l'opinione pubblica. Il software ottiene la convalida del proprio valore attraverso i test del team QA e il feedback degli utenti. Entrambi, in ultima analisi, possono sopravvivere solo ottenendo il consenso dei sovrani (cittadini, utenti).
- Riforma istituzionale e manutenzione del sistema**:** Le leggi e i sistemi, una volta realizzati, non sono eterni. Come si modificano le leggi obsolete e si riformano le istituzioni in risposta ai cambiamenti dei tempi, così anche il software, nel momento in cui smette di adattarsi all'ambiente in evoluzione e di migliorare le inefficienze interne tramite il "refactoring", diventa codice morto.
Così, l'intero percorso che va dalla definizione del problema alla progettazione, all'implementazione, alla verifica e al miglioramento continuo mostra che i due mondi condividono lo stesso respiro nella soluzione dei problemi.
Il giorno dei nuovi legislatori
La società dell'informazione ha reso insignificante la distanza tra i vertici di queste due filosofie. Il codice non è più un semplice circuito logico, ma è diventato il "codice come legge" (Code is Law), che definisce le relazioni tra le persone, distribuisce il potere e realizza valori sociali. Se l'architettura che progettiamo assomiglia alla struttura di governo di uno Stato, e il processo di sviluppo che seguiamo è analogo al processo di consenso politico, chi siamo noi sviluppatori? E che cosa deve fare il politico? Per questo, lo sviluppatore deve ormai riflettere non solo sulla logica del codice, ma anche sulla società che quel codice creerà, e il politico deve comprendere non solo la logica dei voti, ma anche la logica della tecnologia che muove il mondo. Poiché il potere enorme che esercitiamo nei rispettivi ambiti comporta altrettanta responsabilità etica.