Politică și calculatoare

Ce este filosofia
Ce credeți că înseamnă filosofia? Definiția din dicționar o descrie ca activitatea de a reflecta asupra vieții în lume și a întrebărilor fundamentale și de a căuta răspunsuri. Se poate formula și o definiție prin acțiune: nu rezolvarea unor probleme cu răspunsuri prestabilite, ci extinderea gândirii prin aceeași întrebare sau prin lanțuri de întrebări care se succed, urmată de împărtășirea acestor răspunsuri.
În trecut, pe când urmam studiile de licență, am urmat un curs legat de filosofia politică. Cu ocazia prezentării mele personale, profesorul a spus ceva asemănător cu filosofia politică și informatica sunt discipline situate în vârfurile unor filosofii diferite. Nu sunt sigur că acestea au fost exact aceste cuvinte și această propoziție, dar îmi amintesc că sensul era cam acesta.
Informatica
Consider că informatica este o cercetare fundamentală pentru rezolvarea problemelor logice. Prin urmare, oamenii care gândesc asupra unei probleme pot ajunge la mai multe răspunsuri. Cel mai reprezentativ exemplu este sortarea. Pentru sortarea aceluiași șir de date în ordine există numeroase metode de cercetare, precum sortarea prin bule, prin inserție, prin selecție, prin interclasare, rapidă, cu heap, Timsort și altele. Iar prin împărțirea acestora pot apărea algoritmi din ce în ce mai buni.
De asemenea, din punct de vedere local, se poate spune că informatica înseamnă a construi și a demonstra. Chiar și sortarea de mai sus înseamnă construirea continuă a modului în care sortăm și demonstrarea rezultatelor. Pentru cei care sunt dezvoltatori, un exemplu mai apropiat este următorul: atunci când apare planificarea unui proiect, se consideră bun să o implementezi și să demonstrezi că funcționează corect.
Filosofia politică
Consider că filosofia politică este o cercetare fundamentală pentru rezolvarea problemelor sociale. Ea pune din nou și din nou sub semnul întrebării probleme deja existente, care diferă de la o epocă la alta, produce răspunsuri și le împărtășește prezentului și viitorului. Se ocupă în principal de valori abstracte precum justiția, libertatea, egalitatea și puterea, care sunt interpretate diferit în funcție de epocă și cultură, iar graniță clară între bine și rău, între răspuns corect și greșit nu este stabilită, ci rămâne nedefinită, și aceasta este o trăsătură caracteristică.
De asemenea, din punct de vedere local, ca și informatica, se poate considera că înseamnă a pune întrebări și a reflecta. Asupra problemelor apărute se pun continuu întrebări: de ce s-a ajuns aici, care ar fi direcții mai bune, și apoi se reflectează și se formulează răspunsuri. Și aici, numărul de răspunsuri crește proporțional cu numărul celor care gândesc.
De ce trebuie să cunoaștem politica și informatica
Relația de apelare reciprocă
Cele două lumi par să exploreze domenii diferite, dar în realitate împărtășesc asemănări considerabile și au multe puncte în care sunt, reciproc, cauză și efect.
Să dăm un exemplu.
- Dacă datele de sănătate ale unui individ sunt stocate în siguranță în cloud, ele vor putea fi accesate rapid de fiecare spital atunci când este nevoie ⇒ se implementează prin programare, folosind funcțiile fiecărui domeniu, într-un mod sigur și accesibil.
- Atunci, cui aparțin aceste date? Mie? Persoanei responsabile care le-a înregistrat? Sau organizației care o administrează? Dezvoltatorului? Statului? Și atunci, până unde pot vedea ei datele mele? Până unde și cum pot fi garantate protecția datelor mele personale? ⇒ Vor avea loc discuții politice despre interesele și punctele de vedere divergente ale diferitelor comunități și ale indivizilor.
- După aceasta, discuția politică și proiectarea și implementarea programatică se vor succeda și se vor repeta uneori, într-un lanț continuu.
Astfel, pentru rezolvarea problemelor sociale existente se utilizează informatica, iar apoi, pentru a recunoaște și rezolva problemele apărute aici, se pun întrebări, iar pentru rezolvarea următoarei probleme se folosește filosofia politică. În societatea informatizată de astăzi, acesta este un fenomen firesc.
Sunt politica și informatica asemănătoare?
Ceea ce nu pare a fi asemănător
De asemenea, cele două lumi au evoluat în forme asemănătoare. Totuși, la baza lor se află, la fel ca în relația dintre filosofia socială și filosofia naturii, o diferență între exprimarea vagă și exprimarea clară. În filosofia politică se pornește de la definiții variabile și vagi, formulate în limbaj natural, în timp ce informatica se bazează pe propoziții invariabile și clare, formulate prin expresii matematice și nu prin limbaj natural.
De asemenea, ele exprimă în mod subtil direcții diferite. Informatica consideră că poate exista o soluție optimă. În filosofia politică, în schimb, se discută concepte vagi precum argumentul mai convingător, argumentul mai bine fundamentat sau argumentul mai etic. Totuși, din punctul meu de vedere, direcțiile celor două sunt aproape similare. În cele din urmă, ambele par să urmărească un următor mai bun. Chiar și informatica are multe domenii, însă un exemplu reprezentativ este compresia media, numită codec, pentru care se depun eforturi pentru a arăta o rată de compresie mai bună, performanțe de compresie mai bune și costuri de licență mai mici.
Ceea ce pare a fi asemănător
În mod reprezentativ, limbajele de programare și ideologiile de guvernare par să se aplice oamenilor într-un mod asemănător. Nu se pot pune în corespondență fiecare limbaj cu fiecare ideologie, dar le voi enumera pentru amuzament.
- Limbajul C (
dezvoltatorul știe ce face): aș compara cu republicanismul. Este asemănător cu republica, care din punct de vedere istoric a stat la baza sistemului politic occidental, și seamănă cu comunitarismul, care pune accent pe conștiința fiecărui cetățean și pe eforturile individuale de a înainta spre un ideal mai bun. De asemenea, mi s-a părut asemănător faptul că drepturile sunt însoțite de responsabilități. - Java (
scrii o dată, rulează oriunde): nu știu. Există legi puternice, iar oamenii trăiesc conform acestora într-un mod uniformizat, dar aceasta este stabilă, iar în interiorul ei există libertate. Apoi, dacă intri în Spring, te așteaptă diverse beneficii sociale. Să spunem liberalism? - C# (
armonia dintre productivitatea dezvoltatorului și principiile ingineriei software): sub protecția unui stat puternic, totul este bine proiectat, iar în cadrul celor planificate se pot atinge productivitatea și performanța la maximum. Economia planificată i se potrivește. Nu este comunism, deoarece mijloacele de producție sunt eliberate și nu se restricționează producătorii. - Go (
renunță la complexitate, adoptă practicitatea și eficiența): nu există nimic asemănător. Oferă totul, deci să adoptăm statul bunăstării. - Rust (
siguranță fără pierdere de performanță): proprietatea și duratele de viață din Rust sunt gestionate de un guvernant strict, compilatorul. Aceasta, pentru a preveni inegalitățile și riscurile care apar din activitatea economică liberă a indivizilor, comunitatea gestionează și planifică mijloacele de producție pentru a garanta o viață stabilă; consider că aceasta este socialism, deoarece urmărește siguranța și egalitatea întregului sistem prin limitarea parțială a libertății individuale. - JavaScript (
flexibilitate și toleranță, și prezență peste tot): aș compara cu capitalismul. În acest limbaj, mijloacele de producție aparțin indivizilor, iar chiar și echipamentele sunt deținute de indivizi din belșug. Datorită acestui fapt, apar produse industriale variate, iar prin concurență liberă toată lumea poate urmări profitul. Totuși, piața fără reglementare a intrat curând în haos. - TypeScript (
JavaScript extins): desigur, capitalism modificat. Credința în capitalism se clatină, iar pentru a elimina instabilitatea pieței, statul intervine într-o anumită măsură. Libertatea deplină de până acum a regresat relativ, dar totuși toată lumea poate intra liber pe piață și concura.
Și nu puțini dezvoltatori, mai mult decât s-ar crede, se luptă verbal prin limbaje, ca într-un adevărat război ideologic. Limbajul în sine reprezintă ideologia familiară dezvoltatorilor și idealul de urmărit.
Statul și arhitectura
- Arhitectura monolitică și statul centralizat: totul este cuprins într-o singură bază de cod uriașă și într-un singur binar. Aceasta are o structură asemănătoare unui stat unitar cu un guvern central puternic sau unei monarhii absolute. Toate funcțiile statului sunt controlate de un singur sistem de putere.
- Are avantajul că este cel mai ușor de constituit ca stat și că deciziile se iau rapid. Acesta are aceeași logică cu avantajul că întregul software apare rapid. Deoarece toate resursele și informațiile sunt concentrate într-un singur loc, gestionarea este clară.
- Totuși, pe măsură ce statul devine mai mare, devine mai greu de adaptat la schimbare, iar chiar dacă se dorește modificarea unei legi sau a unei instituții mici, trebuie examinat și aplicat întregul sistem. Există și riscul ca o problemă dintr-un domeniu să paralizeze întregul stat. Și arhitectura monolitică, din cauza bazei de cod mari și a codului interconectat, se adaptează greu la schimbare; chiar și pentru a modifica o singură linie de cod trebuie stabilită aria de impact, iar o problemă dintr-un modul poate afecta cu ușurință întregul sistem.
- MSA și statul federal: fiecare funcție a sistemului este separată ca serviciu independent. Aceasta are asemănări cu statul federal, în care fiecare parte a statului este formată din mai multe state independente. De asemenea, fiecare serviciu și fiecare stat au o infrastructură independentă. Interferența guvernului central este relativ slabă, iar momentul în care apar independența sau aderarea nu poate fi previzionat, ceea ce este de asemenea o asemănare.
- În principiu, fiecare stat și serviciu independent poate modifica legi sau scrie cod în mod independent. Din acest motiv, nu este necesar să se sincronizeze ritmul între ele. De asemenea, chiar dacă apare o problemă într-un loc, este greu ca întreaga federație să fie paralizată. Și se poate alege instituția (tehnologia) potrivită pentru fiecare regiune sau domeniu.
- Totuși, stabilirea acordului reciproc sau crearea canalelor de comunicare este o dificultate. Este greu de aplicat o politică coerentă, ceea ce poate provoca și haos.
- EDA (Event Driven Architecture) și societatea civilă: în loc ca guvernul central sau un reprezentant să dea direct ordine, problemele sociale apărute sunt preluate și rezolvate de indivizi care acționează din proprie inițiativă și autonom. Aceasta seamănă cu caracteristica EDA, potrivit căreia, atunci când apare un eveniment, unul dintre abonați îl preia autonom și îl procesează.
- Oricine poate participa cu ușurință. Și în EDA, un serviciu nou poate deveni cu ușurință un nou abonat și poate participa la proces.
- Totuși, are dezavantajul că nu se poate înțelege întregul flux. Este dificil de urmărit cine a procesat și cum, iar nu se poate ști ce reacție în lanț poate provoca un singur eveniment.
- Arhitectura pe straturi și feudalismul: feudalismul este o structură în care fiecare, în stratul său, își îndeplinește rolul și responsabilitățile atribuite și își exercită obligațiile față de stratul superior. Acestea se stabilesc ca un fel de relații contractuale și formează o guvernare ierarhică verticală strictă, astfel că se pot găsi asemănări cu arhitectura pe straturi.
Deși sunt posibile și mai multe analogii, esența acestui text nu constă în structura în sine, ci în procesul prin care această structură este construită.
Sunt similare rezolvarea problemelor în dezvoltare și în politică?
Dacă arhitectura software și sistemul de stat se aseamănă, atunci procesul prin care sunt construite pe amândouă urmează, de asemenea, traiectorii paralele uimitor de apropiate. Dezvoltarea software este, în fond, o acțiune politică prin care se construiește și se dezvoltă o nouă ordine în spațiul digital.
- Dezbaterea publică a problemelor sociale și analiza cerințelor: totul pornește de la întrebarea „care este problema?”. Așa cum suferința și disconfortul societății civile sunt făcute publice și devin subiecte politice, nemulțumirile și cererile utilizatorilor, după analiză, devin primul reper al dezvoltării, și anume „specificația cerințelor”.
- Proiectarea constituției și arhitectura: ce stat vom construi? Ce sistem vom construi? Așa cum politicienii, pe baza ideologiei și filosofiei, ridică structura constituției și a legilor, arhitectul, pe baza convingerii tehnice, trasează planul arhitecturii care va sta la baza sistemului. Deciziile din această etapă determină soarta sistemului.
- Executarea politicilor și implementarea software: odată finalizat planul, dezvoltatorii scriu codul efectiv, iar funcționarii administrativi aplică politicile conform legilor. Este procesul prin care planul abstract prinde viață ca entitate concretă care funcționează în lumea reală.
- Judecata electorală și testarea software: politicile sunt judecate în privința legitimității lor prin alegeri și opinia publică. Software-ul își verifică valoarea prin testarea echipei QA și prin feedbackul utilizatorilor. Ambele trebuie, în cele din urmă, să obțină consimțământul suveranilor (cetățenilor, utilizatorilor) pentru a putea supraviețui.
- Reforma instituțională și întreținerea sistemului: legile și sistemele odată create nu sunt veșnice. Așa cum vechile legi sunt modificate și instituțiile reformate pentru a se adapta schimbărilor timpului, și software-ul trebuie să se adapteze mediului în schimbare și să îmbunătățească ineficiențele interne prin „refactorizare”; dacă această activitate încetează, codul devine cod mort.
Astfel, întregul proces, de la definirea problemei până la proiectare, implementare, verificare și îmbunătățirea continuă, arată că cele două lumi împărtășesc același ritm al rezolvării problemelor.
Ziua noilor legiuitori
Societatea informatizată a făcut ca distanța dintre vârfurile celor două filosofii să devină lipsită de sens. Codul nu mai este doar un circuit logic simplu, ci devine legea codului (Code is Law), care reglementează relațiile dintre oameni, distribuie puterea și realizează valorile sociale. Dacă arhitectura pe care o proiectăm seamănă cu structura de guvernare a unui stat, iar procesul de dezvoltare pe care îl urmăm este asemănător procesului de consens politic, atunci cine suntem noi, dezvoltatorii? Și ce trebuie să facă politicienii?
Prin urmare, dezvoltatorul trebuie acum să reflecteze nu doar asupra logicii codului, ci și asupra societății pe care o va crea acel cod, iar politicianul trebuie să înțeleagă nu doar logica voturilor, ci și logica tehnologiei care pune în mișcare lumea. Deoarece puterea uriașă pe care o exercităm fiecare în propria lume vine cu o responsabilitate etică la fel de mare.