GoSuda

Politica e Computer

By snowmerak
views ...

Cos'è la Filosofia

Cosa pensate che sia la filosofia? Il suo significato da dizionario è "l'attività di riflettere e cercare risposte alle questioni fondamentali della vita e del mondo". Si potrebbe anche dare una definizione comportamentale, secondo cui non si tratta di risolvere problemi con risposte predefinite, ma di espandere il pensiero attraverso le stesse domande, o una serie di domande concatenate, e di condividere le risposte.

In passato, durante il mio corso di laurea, ho seguito un corso di filosofia politica. Ricordo che, durante la mia presentazione, il professore disse qualcosa di simile a "la filosofia politica e l'ingegneria informatica sono discipline che si trovano al culmine di filosofie diverse". Non erano esattamente queste parole e frasi, ma il senso era più o meno quello.

Ingegneria Informatica

Considero l'ingegneria informatica come "l'indagine fondamentale per risolvere problemi logici". Per questo motivo, per un dato problema, possono emergere diverse risposte a seconda di chi lo sta pensando. L'esempio più rappresentativo è l'ordinamento. Anche per l'indagine su come ordinare i dati elencati in sequenza, esistono diversi metodi come Bubble, Insertion, Selection, Merge, Quick, Heap, Tim, ecc. E dividendoli, può emergere un algoritmo migliore.

Inoltre, da un punto di vista locale, si potrebbe dire che "si crea e si dimostra". Anche l'ordinamento di cui sopra, si continua a creare come ordinare e a dimostrare i risultati. Per gli sviluppatori, un esempio più vicino è che, quando viene proposto un piano di progetto, è bene vederlo come l'implementazione e la dimostrazione che funziona correttamente.

Filosofia Politica

Considero la filosofia politica come "l'indagine fondamentale per risolvere problemi sociali". Per ogni epoca, essa solleva ripetutamente domande su problemi già esistenti, produce risposte e le condivide nel presente e nel futuro. Si occupa principalmente di valori astratti come giustizia, libertà, uguaglianza, potere, che vengono interpretati diversamente a seconda dell'epoca e della cultura, e non ha un chiaro bene e male, giusto e sbagliato, o caratteristiche indeterminate.

Inoltre, come l'ingegneria informatica, da un punto di vista locale, si può vedere come "interrogare e riflettere". Di fronte a un problema, si interroga incessantemente, si riflette sul perché sia accaduto e su quali siano le direzioni migliori, e si producono risposte. Anche qui, appaiono molte risposte in proporzione al numero di persone che pensano.

Perché dobbiamo conoscere sia la politica che l'informatica?

Relazione di Chiamata Reciproca

I due mondi sembrano investigare ambiti diversi, ma in realtà condividono notevoli somiglianze e presentano numerosi punti in cui l'uno è causa e l'altro effetto.

Facciamo un esempio.

  1. Se i dati sanitari personali vengono archiviati in modo sicuro nel cloud, ogni ospedale potrà accedervi rapidamente quando necessario. ⇒ Questo viene implementato tramite la programmazione, utilizzando le funzionalità di ciascun dominio in modo sicuro e accessibile.
  2. Ma di chi sono questi dati? Miei? Del responsabile registrato? O dell'organizzatore? Dello sviluppatore? Dello Stato? E fino a che punto possono vedere i miei dati? Come posso essere garantito che la mia privacy sia protetta e fino a che punto? ⇒ Si instaurerà un dibattito politico sulle posizioni e sulle differenze di interessi tra le diverse comunità e i singoli individui.
  3. Successivamente, di tanto in tanto, questo dibattito politico e la progettazione e implementazione programmatica si ripeteranno a ciclo continuo.

In questo modo, l'ingegneria informatica viene utilizzata per risolvere i problemi sociali esistenti, e poi la filosofia politica viene utilizzata per riconoscere e risolvere i problemi che ne derivano, sollevando domande per risolvere il problema successivo. Nell'era dell'informazione, questo è un fenomeno naturale.

Politica e Informatica sono simili?

Aspetti che sembrano differenti

Inoltre, i due mondi si sono evoluti in forme simili. Tuttavia, il loro fondamento, come la relazione tra filosofia sociale e filosofia naturale, presenta una differenza tra espressione ambigua ed espressione chiara. Mentre la filosofia politica si basa su definizioni variabili e ambigue espresse in linguaggio naturale, l'ingegneria informatica si basa su proposizioni immutabili e chiare espresse in formule piuttosto che in linguaggio naturale.

Inoltre, le direzioni sono espresse in modo sottilmente diverso. L'ingegneria informatica ritiene che possa esistere una soluzione ottimale. E nella filosofia politica si parla di concetti ambigui come argomentazioni più convincenti, argomentazioni più fondate, argomentazioni più etiche. Ma a mio parere, le direzioni dei due sono quasi simili. Alla fine, sembra che entrambi mirino a un "prossimo migliore". Anche se l'ingegneria informatica ha diversi campi, in particolare per la compressione multimediale chiamata codec, si sforza di mostrare un rapporto di compressione, prestazioni di compressione e costi di licenza migliori.

Aspetti che sembrano simili

In particolare, i linguaggi di programmazione e le ideologie di governo sembrano applicarsi in modo simile agli esseri umani. Sebbene non sia possibile far corrispondere ciascun linguaggio e ideologia, li elencherò per divertimento.

  • Linguaggio C (Lo sviluppatore sa cosa sta facendo): Vorrei paragonarlo al repubblicanesimo. Credo che sia simile alla repubblica, che storicamente è stata il fondamento dei sistemi politici occidentali, e anche al comunitarismo, che valorizza la consapevolezza dei singoli cittadini e gli sforzi individuali per progredire verso un ideale migliore. Inoltre, ho percepito una somiglianza nel fatto che ai diritti si accompagna la responsabilità.
  • Java (Scrivi una volta, esegui ovunque): Non lo so. C'è una legge forte, e si vive una vita omologata rispettandola, ma è stabile e si è liberi al suo interno. E quando si entra in Spring, vi aspettano diversi benefici. Lo chiamiamo liberalismo?
  • C# (Armonizzazione della produttività degli sviluppatori e dei principi di ingegneria del software): Sotto la protezione di un governo forte, tutto è ben progettato, e all'interno di ciò che è pianificato, la produttività e le prestazioni possono essere massimizzate. Si adatta all'economia pianificata. Il fatto che non sia comunismo è che i mezzi di produzione sono stati liberalizzati e i produttori non sono limitati.
  • Go (Abbandona la complessità, adotta la praticità e l'efficienza): Non c'è niente di simile. Dato che dà tutto, sia uno stato sociale.
  • Rust (Sicurezza senza compromessi sulle prestazioni): La proprietà e la durata di Rust sono gestite da un compilatore rigoroso come governante. Questo mi fa pensare al socialismo, poiché il suo scopo è prevenire le disuguaglianze e i rischi derivanti dalla libera attività economica individuale, garantendo una vita stabile attraverso la gestione e la pianificazione dei mezzi di produzione da parte della comunità, il che sembra limitare in parte la libertà individuale per perseguire la sicurezza e l'uguaglianza dell'intero sistema.
  • JavaScript (Flessibilità e tolleranza, e onnipresenza): Vorrei paragonarlo al capitalismo. Questo linguaggio consente agli individui di possedere i mezzi di produzione, e persino le attrezzature sono ampiamente disponibili per i singoli. Di conseguenza, sono stati prodotti una varietà di beni di consumo e una libera concorrenza ha permesso a chiunque di perseguire il profitto. Tuttavia, un mercato senza regolamentazione è presto caduto nel caos.
  • TypeScript (JavaScript esteso): Naturalmente, si tratta di capitalismo modificato. La fiducia nel capitalismo si è incrinata e il governo interviene in una certa misura per affrontare l'instabilità del mercato. La libertà completa precedente è relativamente regredita, ma chiunque può ancora entrare liberamente nel mercato e competere.

E, sorprendentemente, non pochi sviluppatori si scontrano molto sui linguaggi, come se stessero combattendo una guerra ideologica nella realtà. Il linguaggio stesso è per gli sviluppatori un'ideologia familiare e un ideale da perseguire.

Nazione e Architettura

  • Architettura monolitica e Stato centralizzato: Un'unica e vasta base di codice e un unico binario contengono tutto. Questo ha una struttura simile a quella di uno stato unitario con un governo centrale forte o di una monarchia assoluta. Tutte le funzioni dello stato sono controllate da un unico sistema di potere.
    • Ha il vantaggio di essere il più semplice da formare come stato e di prendere decisioni rapidamente. Questo è in linea con il vantaggio che l'intero software viene prodotto rapidamente. Poiché tutte le risorse e le informazioni sono concentrate in un unico luogo, la gestione è chiara.
    • Tuttavia, man mano che lo stato cresce, diventa difficile adattarsi ai cambiamenti, e anche per modificare una piccola legge o istituzione, è necessario esaminare e applicare l'intero sistema. C'è anche il rischio che un problema in un settore possa paralizzare l'intero stato. Anche il monolitico, a causa della sua grande base di codice e del codice interconnesso, è difficile da adattare ai cambiamenti, e anche per modificare una singola riga di codice, è necessario stimare l'ambito dell'impatto, e un problema che si verifica in un modulo può facilmente influenzare l'intero sistema.
  • MSA (Microservices Architecture) e Stato Federale: Ogni funzione del sistema è separata in servizi indipendenti. Questo ha somiglianze con uno stato federale, in cui ogni parte del paese è composta da diversi stati indipendenti. Inoltre, ogni servizio e stato avrà un'infrastruttura indipendente. L'interferenza del governo centrale è debole, ed è anche simile il fatto che non si sa quando avverranno l'indipendenza e l'adesione.
    • In linea di principio, ogni stato e servizio indipendente può modificare le leggi/scrivere codice in modo indipendente. Ciò elimina la necessità di sincronizzare i tempi tra loro. Inoltre, anche se si verifica un problema in un punto, è difficile che l'intera federazione si paralizzi. E si possono scegliere istituzioni (tecnologie) appropriate per ogni regione o settore.
    • Tuttavia, raggiungere un accordo reciproco o creare canali di comunicazione è difficile. Può anche causare confusione rendere difficile l'attuazione di politiche coerenti.
  • EDA (Event-Driven Architecture) e Società Civile: Piuttosto che il governo centrale o un delegato che impartisce direttamente ordini, i problemi sociali che emergono vengono affrontati e risolti autonomamente dai singoli individui in modo proattivo. Questo è simile alla caratteristica dell'EDA, in cui quando si verifica un evento, qualcuno tra gli iscritti lo prende autonomamente e lo elabora.
    • Chiunque può partecipare facilmente. Anche l'EDA consente a nuovi servizi di diventare facilmente nuovi iscritti e di partecipare al processo.
    • Tuttavia, ha lo svantaggio di non poter comprendere l'intero flusso. È difficile tracciare chi ha elaborato cosa e come, e non si sa quale reazione a catena un singolo evento possa innescare.
  • Architettura a Strati (Layered Architecture) e Feudalesimo: Il feudalesimo è una struttura in cui ogni strato svolge il proprio ruolo e le proprie responsabilità, adempiendo agli obblighi verso lo strato superiore. Essi sono legati da una sorta di relazione contrattuale e formano una rigida struttura di potere verticale, il che lo rende simile all'architettura a strati.

Sebbene siano possibili molte altre analogie, il fulcro di questo articolo non è tanto la struttura in sé, quanto il processo di creazione di tale struttura.

La risoluzione dei problemi nello sviluppo e nella politica è la stessa?

Se l'architettura del software e il sistema statale si assomigliano, anche i processi per crearli sono sorprendentemente paralleli. Il processo di sviluppo del software è, in effetti, un atto politico di costruzione e sviluppo di un nuovo ordine nello spazio digitale.

  1. Pubblicizzazione dei problemi sociali e analisi dei requisiti: Tutto inizia con la domanda "Qual è il problema?". Così come il disagio e le difficoltà della società civile vengono pubblicizzati e diventano un'agenda politica, il disagio e i requisiti dell'utente, attraverso l'analisi, diventano la prima pietra miliare dello sviluppo, la "specifica dei requisiti".
  2. Progettazione della Costituzione e design dell'architettura: Che tipo di nazione costruire? Che tipo di sistema creare? Come i politici, basandosi su ideologie e filosofie, stabiliscono l'ossatura della costituzione e delle leggi, così gli architetti, basandosi su convinzioni tecniche, disegnano il progetto dell'architettura che sarà il fondamento del sistema. Le decisioni di questa fase determinano il destino del sistema.
  3. Attuazione delle politiche e implementazione del software: Una volta completato il progetto, gli sviluppatori scrivono il codice effettivo e i funzionari amministrativi attuano le politiche in base alla legge. È il processo in cui un piano astratto si trasforma in un'entità concreta che funziona nel mondo reale.
  4. Giudizio attraverso le elezioni e test del software: Le politiche sono giudicate nella loro legittimità attraverso le elezioni e l'opinione pubblica. Il software è validato nel suo valore attraverso i test del team QA e il feedback degli utenti. Entrambi possono sopravvivere solo se ottengono il consenso del sovrano (cittadini, utenti).
  5. Riforma istituzionale e manutenzione del sistema: Una volta create, le leggi e i sistemi non sono eterni. Così come le leggi obsolete vengono modificate e le istituzioni riformate per adattarsi ai cambiamenti dei tempi, anche il software, nel momento in cui smette di adattarsi all'ambiente che cambia e di migliorare le inefficienze interne attraverso il "refactoring", diventa codice morto.

In questo modo, l'intero processo, dalla definizione del problema alla progettazione, implementazione, verifica e miglioramento continuo, dimostra che i due mondi condividono lo stesso ritmo di risoluzione 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 una "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 una nazione, e il processo di sviluppo che seguiamo è come il processo di consenso politico, chi siamo noi sviluppatori? E cosa dovrebbero fare i politici? Per questo motivo, gli sviluppatori devono ora riflettere non solo sulla logica del codice, ma anche sulla società che quel codice creerà, e i politici devono comprendere non solo la logica dei voti, ma anche la logica della tecnologia che muove il mondo. Questo perché l'immenso potere che esercitiamo nei nostri rispettivi mondi comporta una pari responsabilità etica.