GoSuda

Politika és számítógép

By snowmerak views ...

A filozófia

Mit gondol, mi is a filozófia? A szótári jelentése szerint a filozófia a világ életéről és alapvető kérdéseiről való gondolkodás és a válaszok keresésének tevékenysége. Megadható egy cselekvésalapú meghatározás is: nem kész válaszokat kereső feladatmegoldás, hanem ugyanazon kérdések vagy egymásba kapcsolódó kérdések sorozata, amely során a gondolkodás kitágul, és a választ megosztjuk másokkal.

Korábban, miközben a BSc-képzésemet végeztem, politikafilozófiával kapcsolatos tárgyat vettem fel. Az akkori bemutatkozó körben a tanár úr valami olyasmit mondott, hogy a politikafilozófia és a számítástechnika egymástól különböző filozófiai csúcsokon álló tudományok. Emlékszem, hogy nem pontosan ezek a szavak és mondatok hangzottak el, de nagyjából ez volt az értelme.

Számítástechnika

Úgy gondolom, hogy a számítástechnika a logikai problémák megoldására irányuló alapvető kutatás. Ezért bármely probléma esetén, amelyen különböző emberek gondolkodnak, többféle válasz születhet. A legjellemzőbb példa a rendezés. Ugyanazon rendezetlen adatsor sorba rendezésének módszereiről való kutatás során is sok módszer létezik: buborékos, beszúrásos, kiválasztásos, összefésülő, gyors-, halom- és Timsort-rendezés. Ezeket egymás után felosztva még jobb algoritmusok születhetnek.

Helyi szemszögből nézve pedig azt is mondhatjuk, hogy alkotunk és bizonyítunk. A fent említett rendezés esetén is folyamatosan alkotjuk meg a rendezés módját, és bizonyítjuk az eredményt. A fejlesztők számára a közelebbi példa a projekttervezés: amikor egy projekt megtervezésre kerül, megvalósítják, és bizonyítják, hogy hibátlanul működik.

Politikai filozófia

Úgy gondolom, hogy a politikai filozófia a társadalmi problémák megoldására irányuló alapvető kutatás. Minden korszakban ismételten megkérdőjelezik a már létező, de korszakonként eltérő problémákat, válaszokat hoznak, és ezeket a jelenben és a jövőben megosztják. Főként olyan elvont értékekkel foglalkozik, mint az igazságosság, a szabadság, az egyenlőség és a hatalom, amelyeket a korok és kultúrák eltérően értelmeznek. Nincs egyértelműen meghatározott jó és rossz, helyes és helytelen válasz, és ez a bizonytalanság a sajátossága.

Helyi szemszögből nézve, a számítástechnikához hasonlóan, azt mondhatjuk, hogy kérdez és reflektál. Folyamatosan kérdezünk a felmerülő problémákról: miért alakult így, milyen jobb irány lehetséges, és reflektálva válaszokat adunk. Ez is annál több válaszhoz vezet, minél többen gondolkodnak rajta.

Miért kell nekünk a politikát és a számítástechnikát is ismernünk?

Kölcsönös hivatkozási viszony

A két világ látszólag különböző területeket kutat, valójában mégis meglehetősen sok hasonlóságot osztanak meg, és számos olyan pontjuk van, amelyek egymás okai és következményei.

Vegyünk egy példát.

  1. Ha az egyén egészségügyi adatait biztonságosan tároljuk a felhőben, akkor szükség esetén minden kórházból gyorsan hozzáférhetünk ⇒ programozással, a különböző területek funkcióit kihasználva, biztonságosan és jó hozzáférhetőséggel valósítjuk meg.
  2. Akkor ezek az adatok kié? Az enyém? A rögzítést végző felelősé? Vagy a szolgáltatóé? A fejlesztőé? Az államé? És akkor ők meddig láthatják az adataimat? Meddig és hogyan garantálhatják, hogy a személyes adataim védelme biztosított? ⇒ A különböző közösségek és az egyes személyek érdekei és érdekellentétei körüli politikai diskurzus indul meg.
  3. Ezt követően a politikai diskurzus és a programozási tervezés és megvalósítás időnként egymásba kapaszkodva ismétlődik.

Így a meglévő társadalmi problémák megoldására a számítástechnika szolgál, majd az ott felmerülő problémák felismerésére és megoldására a politikafilozófia, amely kérdéseket tesz fel, és a következő probléma megoldását segíti. A mai információs társadalomban ez természetes jelenség.

Hasonlít-e a politika a számítástechnikára?

Ami nem tűnik hasonlónak

A két világ hasonló formában fejlődött. Alapjuk azonban, akárcsak a társadalmi és a természetfilozófia viszonya esetében, a homályos és a pontos kifejezés különbségét mutatja. A politikafilozófia a természetes nyelven megfogalmazott, változékony és homályos definíciókra épül, míg a számítástechnika a természetes nyelv helyett inkább képletekben kifejezett, állandó és egyértelmű állításokon alapul.

Irányultságuk is eltérően fogalmazódik meg. A számítástechnika szerint létezhet optimális megoldás. A politikafilozófia pedig olyan homályos fogalmakról beszél, mint a meggyőzőbb érv, a jobban megalapozott érv vagy az etikusabb érv. Szerintem azonban a két irányultság szinte hasonló: végső soron mindkettő a „jobb következő” elérésére törekszik. A számítástechnikának is sok területe van, de a legjellemzőbb példa a kodekeknek nevezett médiatömörítés, ahol jobb tömörítési arány, tömörítési teljesítmény és licencdíj elérésén dolgoznak.

Ami hasonlónak tűnik

Legjellemzőbben a programozási nyelvek és a kormányzati eszmények hasonlóan vonatkoztathatók az emberre. Bár az egyes nyelveket és eszméket nem lehet egymásnak megfeleltetni, szórakozásból felsorolom őket.

  • C nyelv (a fejlesztő tudja, mit csinál): A republikanizmushoz hasonlítanám. Történelmileg hasonló a nyugati politikai rendszer alapját képező köztársasághoz, és azért is, mert a polgárok egyéni tudatosságát és az egyének azon erőfeszítését becsüli, hogy egy jobb eszmény felé haladjanak, így a közösségelvűséghez is hasonlít. Azt is érzem, hogy a jogokhoz felelősség társul, ez is hasonló.
  • Java (egyszer írva, bárhol futtatható): Nem tudom. Erős törvények vannak, és ezeket betartva egységesített életet élünk, de ez stabil, és ezen belül szabadok vagyunk. A Springbe belépve pedig különféle jóléti juttatások várnak. Legyen liberalizmus?
  • C# (a fejlesztői produktivitás és a szoftvertechnika elveinek harmóniája): Az erős állam védelme alatt minden jól megtervezett, és ezen belül, a tervezett keretek között, a produktivitás és a teljesítmény a határokig fokozható. A tervgazdaság illik hozzá. Abban nem kommunista, hogy a termelési eszközöket szabaddá tette, és nem korlátozza a termelőket.
  • Go (a bonyolultságot elvetjük, a gyakorlatiasságot és a hatékonyságot választjuk): Nincs hasonló. Mindent odaadnak, legyen jóléti állam.
  • Rust (biztonság teljesítményromlás nélkül): A Rust tulajdonjogát és élettartamait egy szigorú fordító mint uralkodó kezeli. Ez azért van, hogy megakadályozza a szabad gazdasági tevékenység által okozott egyenlőtlenségeket és kockázatokat, a közösség a termelési eszközöket kezeli és tervezi, így biztosítva a stabil életet. Úgy vélem, hogy ez a szocializmus, mert az egyéni szabadság egy részének korlátozásával a teljes rendszer biztonságát és egyenlőségét szolgálja.
  • JavaScript (rugalmasság és toleranciaképesség, és mindenhol jelen van): A kapitalizmushoz hasonlítanám. Ebben a nyelvben az egyének birtokolják a termelési eszközöket, sőt a berendezéseket is bőségesen. Ennek köszönhetően sokféle ipari termék készül, és a szabad verseny révén bárki törekedhet a profitra. Ugyanakkor a szabályozás nélküli piac hamar káoszba süllyedt.
  • TypeScript (a kiterjesztett JavaScript): Természetesen módosított kapitalizmus. A kapitalizmus hite megingott, és a piac instabilitásának megszüntetése érdekében az állam bizonyos mértékig beavatkozik. A korábbi teljes szabadság viszonylag visszaszorult, de továbbra is bárki szabadon beléphet a piacra és versenyezhet.

Emellett nem kevés fejlesztő vív úgy nyelvi háborúkat, mintha a valóságban eszmei háború folyna. A nyelv maga a fejlesztők számára ismerős eszme és követendő ideál.

Állam és architektúra

  • Monolitikus architektúra és központosított állam: Egyetlen nagy kódbázisban és egyetlen bináris fájlban minden benne van. Ez egy erős központi kormánnyal rendelkező egységes államhoz vagy az abszolút monarchiához hasonló szerkezet. Az állam minden funkcióját egyetlen hatalmi rendszer irányítja.
    • Előnye, hogy a legkönnyebb állami formát kialakítani, és a döntéshozatal gyorsan születik. Ez ugyanabban az összefüggésben van, mint az, hogy a teljes szoftver gyorsan elkészül. Mivel minden erőforrás és információ egy helyen összpontosul, a kezelése egyértelmű.
    • Viszont minél nagyobb az állam, annál nehezebben reagál a változásokra, és még egy kisebb törvény vagy intézmény módosításához is az egészet át kell vizsgálni és alkalmazni. Egy területen felmerülő probléma az egész államot megbéníthatja. A monolitikus rendszer is nagy kódbázissal és összefonódó kóddal nehezen alkalmazkodik a változásokhoz; egyetlen kódsor megváltoztatásakor is fel kell mérni a hatókört, és egy modulban keletkező probléma könnyen kihat az egész rendszerre.
  • MSA és föderatív állam: A rendszer minden funkciója önálló szolgáltatásokra válik szét. Ez hasonlóságot mutat azzal a föderatív állammal, amelyben az állam egyes részei több önálló tagállamból állnak. Emellett minden szolgáltatás és tagállam önálló infrastruktúrával rendelkezik. A központi kormány beavatkozása viszonylag laza, és hasonló az is, hogy sosem lehet tudni, mikor következik be függetlenedés vagy csatlakozás.
    • Alapvetően minden önálló tagállam és szolgáltatás önállóan módosíthatja a törvényeket, illetve írhat kódot. Emiatt nincs szükség arra, hogy összehangoljuk egymás ritmusát. Ha valahol probléma adódik, a föderáció egésze nehezen bénul meg. Emellett az egyes régiókhoz vagy területekhez megfelelő intézményt (technológiát) választhatnak.
    • Nehézséget jelent viszont a kölcsönös megállapodások összehangolása vagy kommunikációs csatornák kialakítása. Nehéz egységes politikát folytatni, ami zavart okozhat.
  • EDA (Event Driven Architecture) és civil társadalom: A központi kormány vagy megbízottja nem közvetlenül parancsol, hanem a felmerülő társadalmi problémákat az egyének önállóan, kezdeményezően felkarolják és megoldják. Ez hasonlít az EDA jellemzőjéhez, amely szerint amikor esemény történik, a feliratkozók valamelyike önállóan felkarolja és feldolgozza.
    • Bárki könnyen részt vehet benne. Az EDA-ban is könnyen válhat új szolgáltatás új feliratkozóvá, és csatlakozhat a folyamathoz.
    • Hátránya viszont, hogy nem lehet átlátni az egész folyamatot. Nehéz nyomon követni, ki és hogyan dolgozta fel, és nem tudni, egy esemény milyen láncreakciót indít el.
  • Rétegezett architektúra és feudalizmus: A feudalizmus olyan szerkezet, amelyben mindenki a saját rétegében a neki adott szerepet és felelősséget látja el, és a felsőbb réteggel szemben kötelezettségeket teljesít. Ezek egyfajta szerződéses viszonyban állnak, és szigorú, vertikális uralmi rendet alkotnak, ezért a rétegezett architektúrához találhatunk hasonlóságokat.

Ehhez hasonlóan több párhuzam is lehetséges, de az írás lényege nem maga a szerkezet, hanem az a folyamat, amely ezt a szerkezetet létrehozza.

A fejlesztés és a politikai problémamegoldás vajon ugyanaz?

Ha a szoftverarchitektúra és az államrendszer hasonlít egymásra, akkor a kettő kialakításának folyamata is meglepően párhuzamosan halad. A szoftverfejlesztés lényegében nem különbözik attól a politikai tevékenységtől, amely a digitális térben új rendet épít és fejleszt tovább.

  1. A társadalmi problémák nyilvánossá tétele és a követelményelemzés**:** Minden a „Mi a probléma?” kérdésből indul. Ahogy a polgárok szenvedése és kellemetlenségei nyilvánossá válnak, és politikai napirendre kerülnek, úgy a felhasználók kellemetlenségei és igényei elemzés után a „követelményspecifikáció” nevű fejlesztési első mérföldkővé válnak.
  2. Alkotmánytervezés és architektúra-tervezés**:** Milyen államot akarunk létrehozni? Milyen rendszert akarunk építeni? Ahogy a politikusok eszmék és filozófia alapján felállítják az alkotmány és a törvények vázát, úgy az architekt technikai meggyőződés alapján megrajzolja a rendszer alapját képező architektúra tervrajzát. Ennek a szakasznak a döntései határozzák meg a rendszer sorsát.
  3. Politikai végrehajtás és szoftverimplementáció**:** Amikor a terv elkészül, a fejlesztők megírják a tényleges kódot, a közigazgatási tisztviselők pedig a törvények szerint hajtják végre a politikát. Ez az a folyamat, amelyben az elvont terv a valós világban működő, konkrét valósággá születik.
  4. Választásos ítélet és szoftvertesztelés**:** A politikát a választások és a közvélemény ítéli meg legitimitása szempontjából. A szoftvert a QA-csapat tesztjei és a felhasználói visszajelzések igazolják. Mindkettőnek végső soron a szuverén (polgárok, felhasználók) egyetértését kell elnyernie a fennmaradáshoz.
  5. Intézményi reform és rendszerkarbantartás**:** Az egyszer megalkotott törvények és rendszerek nem örökkévalók. Ahogy a változó korhoz igazítva a régi törvényeket módosítják és az intézményeket reformálják, úgy a szoftver is alkalmazkodik a változó környezethez, és a belső nem hatékonyságok javítását célzó „refaktorálás” megszűnése pillanatában halott kóddá válik.

Ahogy a problémadefiníciótól a tervezésen, megvalósításon és ellenőrzésen át az állandó fejlesztésig tartó teljes folyamat mutatja, a két világ ugyanazt a problémamegoldó ritmust osztja meg.

Az új törvényhozók kora

Az információs társadalom e két filozófiai csúcs közötti távolságot jelentéktelenné tette. A kód már nem egyszerű logikai áramkör, hanem olyan „törvény” (Code is Law), amely meghatározza az emberek kapcsolatait, megosztja a hatalmat, és megvalósítja a társadalmi értékeket. Ha az általunk tervezett architektúra az állami kormányzati szerkezethez hasonlít, és az általunk követett fejlesztési folyamat a politikai egyeztetési folyamathoz, akkor mi, fejlesztők vajon kik vagyunk? És mit kell tennie a politikusnak? Ezért a fejlesztőnek ma már nemcsak a kód logikáját, hanem az általa létrehozandó társadalmat is reflektálnia kell, a politikusnak pedig nemcsak a szavazatok logikáját, hanem a világot mozgató technológia logikáját is meg kell értenie. Mert az a hatalom, amelyet mindannyian a saját világunkban gyakorlunk, ugyanakkora erkölcsi felelősséggel jár.