Politica și Calculatorul
Ce este Filosofia
Ce credeți că este filosofia? Definiția din dicționar este activitatea de a gândi și de a căuta răspunsuri la întrebările fundamentale despre viața și lumea înconjurătoare. Putem formula și o definiție acțională, conform căreia este actul de a extinde gândirea printr-o succesiune de întrebări identice sau întrebări înlănțuite, nu o rezolvare de probleme cu răspunsuri prestabilite, și de a împărtăși aceste răspunsuri.
În trecut, în timpul studiilor de licență, am urmat un curs legat de filosofia politică. Îmi amintesc că, în timpul prezentării mele, profesorul a spus ceva similar cu Filosofia politică și informatica sunt discipline care se află la apogeul unor filosofii diferite. Deși nu au fost exact aceste cuvinte și această frază, cred că acesta era, în linii mari, sensul.
Ingineria Calculatoarelor
Consider că ingineria calculatoarelor (Computer Engineering) este o investigație fundamentală pentru rezolvarea problemelor logice. Prin urmare, la o anumită problemă, pot exista multiple răspunsuri, în funcție de persoana care gândește. Cel mai elocvent exemplu este sortarea. Chiar și în investigarea metodelor de sortare a datelor listate într-o ordine anume, există mai multe variante, cum ar fi Bubble, Insertion, Selection, Merge, Quick, Heap, Tim etc. Și prin împărțirea lor, pot apărea algoritmi mai buni.
De asemenea, la nivel local, se poate spune că este vorba de a crea și a demonstra. Chiar și sortarea menționată mai sus continuă să fie creată și rezultatele sunt demonstrate. Pentru dezvoltatori, un exemplu mai apropiat ar fi că, atunci când apare o planificare de proiect, este bine să o privim ca pe o implementare și o demonstrare a funcționării sale corecte.
Filosofia Politică
Consider că filosofia politică este o investigație fundamentală pentru rezolvarea problemelor sociale. Aceasta pune în mod repetat sub semnul întrebării problemele deja existente, diferite pentru fiecare epocă, produce răspunsuri și le împărtășește în prezent și viitor. Tratează în principal valori abstracte, cum ar fi justiția, libertatea, egalitatea, puterea, care sunt interpretate diferit în funcție de epocă și cultură, și se caracterizează prin faptul că nu există un bine și un rău clar definite, un răspuns corect sau greșit prestabilit, și că acestea rămân nedefinite.
De asemenea, la nivel local, similar ingineriei calculatoarelor, se poate considera că este vorba de a chestiona și a reflecta. Se pun întrebări constante despre problemele apărute, se reflectează asupra motivului apariției lor, asupra direcțiilor mai bune posibile și se emit răspunsuri. Și aici, numărul de răspunsuri este proporțional cu numărul de oameni care gândesc.
De ce trebuie să știm și despre Politică/Calculatoare
Relația de Apel Reciproc
Deși cele două domenii par să exploreze teritorii diferite, în realitate ele împărtășesc similarități considerabile și au numeroase puncte în care sunt cauză și efect una pentru cealaltă.
Iată un exemplu:
- Dacă datele personale de sănătate sunt stocate în siguranță în Cloud, spitalele le vor putea accesa rapid atunci când este necesar. ⇒ Implementarea se realizează prin programare, utilizând funcționalitățile fiecărui domeniu, într-un mod sigur și accesibil.
- Atunci, ale cui sunt aceste date? Ale mele? Ale funcționarului care le-a înregistrat? Sau ale organizației gazdă? Ale companiei de dezvoltare? Ale statului? Până unde pot vedea ei datele mele? Cum pot fi sigur că informațiile mele personale sunt protejate și în ce măsură? ⇒ Vor exista discuții politice despre pozițiile și diferențele de interese dintre diversele comunități și fiecare individ.
- Ulterior, discuțiile politice și proiectarea și implementarea prin programare se vor repeta într-un ciclu continuu.
Astfel, ingineria calculatoarelor este folosită pentru a rezolva problemele sociale existente, iar apoi filosofia politică este folosită pentru a identifica și rezolva problemele care apar din aceasta, punând întrebări și rezolvând următoarele probleme. Acesta este un fenomen firesc în societatea informațională modernă.
Seamănă Politica și Calculatoarele?
Aspecte care Par a Nu Semăna
De asemenea, cele două domenii au evoluat în moduri similare. Totuși, la baza lor, există o diferență între expresia ambiguă și expresia clară, similară relației dintre filosofia socială și filosofia naturală. În timp ce filosofia politică se bazează pe definiții variabile și ambigue formulate în limbaj natural, ingineria calculatoarelor se bazează pe propoziții imuabile și clare, formulate mai degrabă în termeni matematici decât în limbaj natural.
De asemenea, direcția lor este exprimată subtil diferit. Ingineria calculatoarelor consideră că poate exista o soluție optimă (최적해). Iar filosofia politică vorbește despre concepte ambigue, cum ar fi o argumentare mai convingătoare, o argumentare mai bine fundamentată, o argumentare mai etică. Totuși, din punctul meu de vedere, direcția lor este aproape similară. În cele din urmă, par să vizeze un viitor mai bun. Chiar și în ingineria calculatoarelor, deși există diverse domenii, în mod reprezentativ, în ceea ce privește compresia media numită Codec, se depun eforturi pentru a arăta o rată de compresie și o performanță de compresie mai bune, precum și costuri de licență.
Aspecte care Par a Semăna
În mod reprezentativ, limbajele de programare și ideologiile de guvernare par să se aplice similar la nivel uman. Deși nu se poate face o corespondență directă între fiecare limbaj și ideologie, le voi enumera de dragul amuzamentului.
- Limbajul C (
Dezvoltatorul știe ce face): Aș vrea să-l asimilez cu republicanismul. Se aseamănă cu republica, care a stat la baza sistemului politic occidental din punct de vedere istoric, și cu comunitarismul, care pune accentul pe conștiința fiecărui cetățean și pe eforturile individuale de a tinde spre un ideal mai bun. De asemenea, am simțit o similitudine în faptul că drepturile vin la pachet cu responsabilități. - Java (
Scrie o dată, rulează oriunde): Nu știu. Există o lege puternică, iar oamenii trăiesc o viață standardizată, respectând-o, dar este stabilă și există libertate în cadrul ei. Și dacă intri în Spring, te așteaptă diverse beneficii sociale. Să-l numim liberalism? - C# (
Armonia dintre productivitatea dezvoltatorului și principiile ingineriei software): Sub protecția unui guvern puternic, totul este bine proiectat, și în cadrul a ceea ce este planificat, productivitatea și performanța pot fi duse la extrem. Economia planificată s-ar potrivi. Faptul că nu este comunism este că mijloacele de producție au fost eliberate și producătorii nu sunt restricționați. - Go (
Renunță la complexitate, adoptă pragmatismul și eficiența): Nu există nimic similar. Oferă totul, deci să fie un stat al bunăstării. - Rust (
Siguranță fără compromisuri de performanță): Proprietatea (ownership) și durata de viață (lifetime) în Rust sunt gestionate de un guvernator strict, numit compilator. Acest lucru se aseamănă cu faptul că, pentru a preveni inegalitatea și riscurile generate de activitatea economică liberă a individului, comunitatea gestionează și planifică mijloacele de producție pentru a asigura o viață stabilă, ceea ce implică o limitare parțială a libertății individuale în scopul urmăririi siguranței și egalității sistemului în ansamblu, de aceea mă gândesc la socialism. - JavaScript (
Flexibilitate, toleranță și prezență peste tot): Aș vrea să-l asimilez cu capitalismul. În acest limbaj, mijloacele de producție sunt deținute de indivizi, și chiar și echipamentele sunt deținute în abundență de către indivizi. Datorită acestui fapt, apar diverse bunuri industriale, și oricine poate urmări profitul prin competiție liberă. Totuși, piața fără reglementări a intrat rapid în haos. - TypeScript (
JavaScript extins): Evident, este capitalismul modificat. Încrederea în capitalism este zdruncinată, iar pentru a înlătura instabilitatea pieței, guvernul intervine într-o anumită măsură. Libertatea totală anterioară a regresat relativ, dar oricine continuă să intre liber pe piață și să concureze.
Și un număr considerabil de dezvoltatori se ceartă mult pe marginea limbajelor, ca și cum ar duce un război ideologic în realitate. Limbajul în sine este o ideologie familiară dezvoltatorului și un ideal de urmat.
Statul și Arhitectura
- Arhitectura Monolitică și Statul Centralizat: Totul este inclus într-o singură bază de cod gigantică și un singur binar. Aceasta are o structură similară cu un stat unitar cu un guvern central puternic sau cu o monarhie absolută. Toate funcțiile statului sunt controlate de o singură structură de putere.
- Avantajul este că este cel mai ușor de format ca stat și deciziile sunt luate rapid. Acest lucru este în același context cu avantajul că întregul software este realizat rapid. Deoarece toate resursele și informațiile sunt concentrate într-un singur loc, gestionarea este clară.
- Totuși, pe măsură ce statul crește, devine dificil să se adapteze la schimbări, iar chiar și pentru a modifica o mică lege sau o instituție, trebuie examinată și aplicată întreaga structură. Există și riscul ca o problemă dintr-un singur domeniu să paralizeze întregul stat. De asemenea, Monoliticului îi este dificil să se adapteze la schimbări din cauza bazei de cod mari și a codului interconectat, iar pentru a schimba o singură linie de cod, trebuie estimat domeniul de impact, și o problemă apărută într-un modul poate afecta cu ușurință întregul sistem.
- MSA (Microservice Architecture) și Statul Federal: Fiecare funcție a sistemului este separată în servicii independente. Aceasta prezintă similarități cu un stat federal, unde fiecare parte a statului este formată din mai multe state independente. De asemenea, fiecare serviciu și stat are o infrastructură independentă. Intervenția guvernului central este relaxată, și similar este și faptul că independența și aderarea pot avea loc oricând.
- În principiu, fiecare stat independent și serviciu poate revizui legile/scrie cod în mod independent. Prin urmare, nu este necesar să se sincronizeze ritmul între ele. De asemenea, chiar dacă apare o problemă într-un loc, este dificil ca întreaga federație să fie paralizată. Și se pot alege instituții (tehnologii) adecvate pentru fiecare regiune sau domeniu.
- Totuși, este dificil să se ajungă la un acord reciproc sau să se stabilească canale de comunicare. De asemenea, poate fi dificil să se mențină o politică coerentă, ceea ce poate cauza confuzie.
- EDA (Event Driven Architecture) și Societatea Civilă: În loc ca guvernul central sau un reprezentant să dea ordine direct, problemele sociale apărute sunt preluate și rezolvate în mod autonom și proactiv de către indivizi. Aceasta este similar cu caracteristica EDA, unde, atunci când apare un eveniment, cineva dintre abonați (subscribers) îl preia și îl procesează în mod autonom.
- Oricine poate participa cu ușurință. De asemenea, în EDA, un serviciu nou poate deveni cu ușurință un nou abonat și poate participa la proces.
- Totuși, există dezavantajul că nu se poate înțelege întregul flux. Este dificil de urmărit cine și cum a procesat evenimentul și nu se poate ști ce reacție în lanț va declanșa un singur incident.
- Layered Architecture și Feudalismul: Feudalismul este o structură în care fiecare clasă își îndeplinește rolul și responsabilitățile atribuite, îndeplinind obligațiile față de clasa superioară. Acestea sunt legate printr-o formă de relație contractuală și formează o structură de dominare verticală strictă, fapt ce prezintă similarități cu arhitectura pe straturi (Layered Architecture).
Deși ar fi posibile mult mai multe analogii de acest fel, esența acestui articol se află mai mult în procesul de creare a structurii decât în structura însăși.
S-ar Putea ca Rezolvarea Problemelor în Dezvoltare și Politică să Fie Asemănătoare?
Dacă arhitectura software și sistemul de guvernare al statului se aseamănă, și procesul de creare a lor desenează linii paralele uimitoare. Procesul de dezvoltare a software-ului nu este diferit de un act politic de construire și dezvoltare a unei noi ordini în spațiul digital.
- Publicarea Problemei Sociale și Analiza Cerințelor: Totul începe cu întrebarea "Ce este problema?". Așa cum suferința și disconfortul societății civile devin publice și se transformă în agendă politică, disconfortul și cerințele utilizatorilor, după analiză, devin primul reper al dezvoltării, numit 'Specificația Cerințelor' (Requirements Specification).
- Proiectarea Constituției și Designul Arhitectural: Ce fel de stat să se creeze? Ce fel de sistem să se construiască? Așa cum politicienii stabilesc scheletul Constituției și al legilor pe baza ideologiilor și filosofiilor, arhitecții desenează planul arhitectural care va sta la baza sistemului, bazându-se pe convingerile tehnice. Decizia luată în această etapă hotărăște soarta sistemului.
- Implementarea Politicilor și Implementarea Software-ului: Odată ce planul este finalizat, dezvoltatorii scriu codul efectiv, iar funcționarii publici implementează politicile conform legilor. Este procesul prin care un plan abstract se transformă într-o entitate concretă care funcționează în lumea reală.
- Judecata prin Alegeri și Testarea Software-ului: Politicile sunt judecate în privința legitimității lor prin alegeri și opinia publică. Software-ul își verifică valoarea prin testele echipei de QA și feedback-ul utilizatorilor. Ambele pot supraviețui doar obținând consimțământul suveranului (cetățeanul, utilizatorul).
- Reforma Instituțională și Mentenanța Sistemului: O lege și un sistem create nu sunt eterne. Așa cum legile învechite sunt revizuite și instituțiile sunt reformate pentru a se adapta schimbărilor epocii, software-ul încetează să mai fie un cod viu în momentul în care se oprește 'Refactoring'-ul, care este adaptarea la mediul în schimbare și îmbunătățirea ineficiențelor interne.
Astfel, întregul proces, de la definirea problemei, proiectare, implementare, verificare și până la îmbunătățirea continuă, arată că cele două domenii împărtășesc același ritm de rezolvare a problemelor.
Ziua Noilor Legislatori
Societatea informațională a făcut ca distanța dintre cele două apogee filosofice să devină irelevantă. Codul nu mai este un simplu circuit logic, ci a devenit o 'Lege (Code is Law)' care reglementează relațiile dintre oameni, distribuie puterea și realizează valori sociale. Dacă arhitectura pe care o proiectăm se aseamănă cu structura de guvernare a unui stat, și procesul de dezvoltare pe care îl urmăm este similar cu procesul de consens politic, cine suntem noi, dezvoltatorii, de fapt? Și ce ar trebui să facă politicienii? Prin urmare, dezvoltatorul trebuie să reflecteze nu doar asupra logicii codului, ci și asupra societății pe care o creează acel cod, iar politicianul trebuie să înțeleagă nu doar logica votului, ci și logica tehnologiei care mișcă lumea. Aceasta deoarece puterea imensă pe care o exercităm în lumile noastre vine cu o responsabilitate etică pe măsură.