Politika és számítógépek
Mi a filozófia?
Mit gondol, mi a filozófia? A szótári meghatározás szerint az a tevékenység, amely a világ életével és alapvető kérdéseivel foglalkozik, és válaszokat keres rájuk
. De tekinthetjük egy viselkedési definíciónak is, miszerint nem egy előre meghatározott problémamegoldásról van szó, hanem a gondolkodás kiterjesztéséről ugyanazon kérdések, vagy egymásra épülő kérdések sorozatán keresztül, és a válaszok megosztásáról.
A múltban, az egyetemi tanulmányaim során, részt vettem egy politikai filozófiával kapcsolatos kurzuson. Emlékszem, akkoriban, az önbemutatkozó órán a professzor azt mondta, hogy a politikai filozófia és a számítástechnika a filozófia csúcsán álló tudományágak
, vagy valami hasonlót. Pontosan nem ezekkel a szavakkal és mondatokkal, de nagyjából ez volt a lényege.
Számítástechnika
Én úgy gondolom, hogy a számítástechnika a logikai problémák megoldására irányuló alapvető vizsgálódás
. Ezért egy adott problémára minden gondolkodó embernek többféle válasza is lehet. A legjellemzőbb példa a rendezés. Ugyanazoknak a rendezett adatoknak a sorba rendezésére irányuló vizsgálódásban is számos módszer létezik, mint például a buborékos, beillesztéses, kiválasztásos, összefésüléses, gyors, kupacos, vagy a Tim sort. És ezek felosztásával jobb algoritmusok is születhetnek.
Továbbá, ha lokálisan nézzük, azt is mondhatjuk, hogy épít és bizonyít
. A fent említett rendezés is folyamatosan építi a rendezési módszert, és bizonyítja az eredményeket. A fejlesztők számára egy közelebbi példa, hogy egy projektterv elkészülte után azt implementálják, és bizonyítják, hogy rendeltetésszerűen működik.
Politikai filozófia
Én úgy gondolom, hogy a politikai filozófia a társadalmi problémák megoldására irányuló alapvető vizsgálódás
. Minden korszakban ismétlődően megkérdőjelezi a már létező problémákat, válaszokat állít elő, és megosztja azokat a jelennel és a jövővel. Főként absztrakt értékeket kezel, mint az igazságosság, szabadság, egyenlőség, hatalom, amelyeket korszakonként és kultúránként eltérően értelmeznek, és jellemzője, hogy nincsenek egyértelmű jók és rosszak, helyes és téves válaszok.
Továbbá, ha a számítástechnikához hasonlóan lokálisan nézzük, akkor kérdez és reflektál
. A felmerült problémákra folyamatosan kérdéseket tesz fel, reflektál arra, hogy miért alakultak ki, milyen jobb irányok léteznek, és válaszokat ad. Itt is a gondolkodó emberek számával arányosan sok válasz jelenik meg.
Miért kell ismernünk a politikát/számítástechnikát?
Kölcsönös hívás viszonya
A két világ látszólag különböző területeket tár fel, de valójában meglehetősen sok hasonlóságot mutatnak, és jelentős mértékben egymás okai és következményei.
Vegyünk egy példát.
- Ha a személyes egészségügyi adatokat biztonságosan tároljuk a felhőben, akkor a kórházak gyorsan hozzáférhetnek hozzájuk, amikor szükség van rájuk. ⇒ Programozással biztonságosan és hozzáférhetően valósítjuk meg az egyes területek funkcióit.
- Akkor kié ez az adat? Az enyém? A regisztráló felelősé? Vagy a főszereplőé? A fejlesztőé? Az államé? Akkor meddig láthatnak bele az adataimba? Meddig és hogyan garantálható a személyes adataim védelme? ⇒ Politikai diskurzus fog zajlani a különböző közösségek és az egyes egyének álláspontjai és érdekkülönbségei között.
- Ezt követően időről időre politikai diskurzus és programozási tervezés és megvalósítás fogja egymást követni és ismétlődni.
Így a meglévő társadalmi problémák megoldására számítástechnikát alkalmaznak, majd a felmerült problémák felismerésére és megoldására kérdéseket tesznek fel, és a következő problémák megoldására politikai filozófiát használnak. Ez a jelenség természetes a modern információs társadalomban.
Hasonlít-e a politika és a számítógép?
Különbségek
A két világ hasonlóan fejlődött. Azonban az alapjukban, akárcsak a társadalomfilozófia és a természetfilozófia viszonyában, van egy különbség a homályos és a világos kifejezések között. Míg a politikai filozófia a természetes nyelven alapuló változékony és homályos definíciókra épül, addig a számítástechnika a természetes nyelvnél inkább a matematikai képleteken alapuló, invariáns és világos állításokra támaszkodik.
Továbbá, az irányultság is finoman eltérően fejeződik ki. A számítástechnika úgy véli, hogy létezhet optimális megoldás. A politikai filozófia pedig homályos fogalmakról beszél, mint például meggyőzőbb érvek, megalapozottabb érvek, etikusabb érvek. Azonban az én meglátásom szerint a két irányultság szinte azonos. Végül is mindkettő a jobb következő
elérésére törekszik. A számítástechnikának is számos területe van, de például a codec-eknek nevezett média tömörítés területén a jobb tömörítési arány, tömörítési teljesítmény és licencköltségek bemutatására törekszik.
Hasonlóságok
Jellemzően a programozási nyelvek és a kormányzási ideológiák hasonlóan érvényesülnek az emberre. Bár az egyes nyelvek és ideológiák nem feleltethetők meg egymásnak, a szórakozás kedvéért felsorolom őket.
- C nyelv (
A fejlesztő tudja, mit csinál
): Ezt a republikanizmushoz szeretném hasonlítani. Történelmileg hasonlít a nyugati politikai rendszerek alapját képező köztársaságra, és a közösségi szellemhez is hasonló, amely az egyes polgárok tudatosságát és a jobb ideálok felé való egyéni törekvéseit hangsúlyozza. Továbbá, hasonlóan éreztem, hogy a jogokkal felelősség is jár. - Java (
Egyszer írod meg, bárhol futtatod
): Nem tudom. Erős törvények vannak, és azokat betartva egységes életet élnek, de ez stabil, és azon belül szabadok. És ha belépnek a Springbe, számos juttatás várja Önöket. Legyen liberalizmus? - C# (
A fejlesztői produktivitás és a szoftverfejlesztési elvek harmóniája
): Erős kormányzati támogatással minden jól megtervezett, és ezen belül a tervezett keretek között a produktivitás és a teljesítmény maximalizálható. A tervgazdaság illik ide. Nem kommunizmus, mert a termelőeszközöket felszabadították, és a termelőket nem korlátozzák. - Go (
Bonyolultság elhagyása, praktikum és hatékonyság előnyben
): Nincs hasonló. Mivel mindent megad, legyen ez egy jóléti állam. - Rust (
Teljesítményromlás nélküli biztonság
): A Rust tulajdonjogát és élettartamát egy szigorú fordító, mint uralkodó irányítja. Ez azt jelenti, hogy a közösség irányítja és tervezi a termelőeszközöket, hogy stabil életet biztosítson, megakadályozva az egyéni szabad gazdasági tevékenységből eredő egyenlőtlenséget és kockázatokat. Ez az egyéni szabadság részleges korlátozásával a rendszer egészének biztonságára és egyenlőségére törekvésnek tűnik, ezért szocializmusnak gondolom. - JavaScript (
Rugalmasság és tolerancia, és mindenhol jelen van
): A kapitalizmushoz szeretném hasonlítani. Ebben a nyelvben az egyének birtokolják a termelőeszközöket, sőt még a berendezéseket is bőségesen. Ennek köszönhetően számos tömegtermék született, és a szabad verseny révén bárki nyereségre törekedhetett. Azonban a szabályozatlan piac hamarosan káoszba süllyedt. - TypeScript (
Kiterjesztett JavaScript
): Természetesen a módosított kapitalizmus. A kapitalizmusba vetett hit megrendül, és a piaci instabilitás felszámolására a kormány bizonyos mértékig beavatkozik. A korábbi teljes szabadság viszonylag visszaszorult, de még mindig bárki szabadon beléphet a piacra és versenyezhet.
És meglepően sok fejlesztő harcol a nyelvekkel, mintha ideológiai háborút vívnának a valóságban. Maga a nyelv a fejlesztők számára ismerős ideológia, és egyben az az ideál, amelyre törekedniük kell.
Állam és architektúra
- Monolitikus architektúra és centralizált állam: Egyetlen hatalmas kódbázis és egyetlen bináris fájl tartalmaz mindent. Ez hasonló szerkezetű, mint egy erős központi kormánnyal rendelkező egységes állam vagy abszolút monarchia. Az állam minden funkcióját egyetlen hatalmi rendszer irányítja.
- Előnye, hogy a legkönnyebben alakítható állami formává, és a döntéshozatal gyors. Ez ugyanaz a logika, mint az egész szoftver gyors elkészülésének előnye. Mivel minden erőforrás és információ egy helyen összpontosul, az irányítás egyértelmű.
- Azonban minél nagyobb az állam, annál nehezebb reagálni a változásokra, és még egy apró törvény vagy szabály megváltoztatásához is az egészet át kell tekinteni és alkalmazni. Fennáll a veszélye annak is, hogy egy területen felmerülő probléma megbéníthatja az egész államot. A monolitikus architektúra is nehezen reagál a változásokra a nagy kódbázis és az összefüggő kód miatt, és még egy sor kód megváltoztatásához is meg kell becsülni a hatókörét, és egy modulban felmerülő probléma könnyen befolyásolhatja az egész rendszert.
- MSA és föderális állam: A rendszer egyes funkciói független szolgáltatásokra vannak felosztva. Ez hasonlóságot mutat egy föderális állammal, ahol az ország egyes részei több független államból állnak. Továbbá, minden szolgáltatás és állam független infrastruktúrával rendelkezik. A központi kormány beavatkozása laza, és hasonló az is, hogy bármikor bekövetkezhet a függetlenség és a csatlakozás.
- Alapvetően minden független állam és szolgáltatás önállóan módosíthatja a törvényeket/írhat kódot. Ezért nem kell összehangolniuk egymás tempóját. Továbbá, még ha valahol probléma is merül fel, az egész szövetséget nehéz megbénítani. És az egyes régiók vagy területek igényeinek megfelelő rendszereket (technológiákat) választhatnak.
- Azonban a kölcsönös megegyezés elérése vagy kommunikációs csatornák létrehozása nehéz. Nehéz lehet következetes politikát folytatni, ami zavart okozhat.
- EDA (Event-Driven Architecture) és civil társadalom: Ahelyett, hogy a központi kormány vagy a képviselők közvetlenül utasítanának, az egyének proaktívan és autonóm módon oldják meg a felmerülő társadalmi problémákat. Ez hasonló az EDA jellemzőjéhez, miszerint ha egy esemény bekövetkezik, az előfizetők közül valaki autonóm módon felveszi és feldolgozza.
- Bárki könnyen részt vehet. Az EDA-ban is könnyen csatlakozhat új szolgáltatás új előfizetőként a folyamathoz.
- Azonban hátránya, hogy nem lehet átlátni a teljes folyamatot. Nehéz nyomon követni, ki hogyan dolgozta fel, és nem lehet tudni, hogy egy esemény milyen láncreakciót vált ki.
- Rétegelt architektúra és feudalizmus: A feudalizmus olyan struktúra, amelyben minden réteg teljesíti a rá rótt szerepet és felelősséget, és teljesíti a felsőbb réteg felé fennálló kötelezettségeit. Ezek egyfajta szerződéses viszonyban állnak egymással, és szigorú vertikális hierarchiát alkotnak, ami hasonlóságot mutat a rétegelt architektúrával.
Bár több hasonlat is lehetséges, a cikk lényege nem maga a struktúra, hanem a struktúra kialakításának folyamata.
Talán a fejlesztés és a politika problémamegoldása is ugyanaz?
Ha a szoftverarchitektúra és az államrendszer hasonlítanak egymásra, akkor a kettő kialakításának folyamata is meglepően párhuzamos. A szoftverfejlesztés folyamata gyakorlatilag nem különbözik attól a politikai tevékenységtől, amely új rendet épít és fejleszt ki a digitális térben.
- Társadalmi problémák nyilvánosságra hozatala és követelményelemzés**: Minden a „Mi a probléma?” kérdéssel kezdődik. Ahogyan a civil társadalom szenvedése és kényelmetlensége nyilvánosságra kerül és politikai kérdéssé válik, úgy a felhasználók kényelmetlensége és igényei is elemzésen mennek keresztül, és a „követelmény specifikáció” néven a fejlesztés első mérföldkövévé válnak.
- Alkotmánytervezés és architektúra-tervezés**: Milyen államot építsünk? Milyen rendszert építsünk? Ahogyan a politikusok ideológiák és filozófiák alapján lefektetik az alkotmány és a törvények alapjait, úgy az építészek is technikai meggyőződéseik alapján rajzolják meg a rendszer alapját képező architektúra tervrajzát. Ezen a szakaszon hozott döntések határozzák meg a rendszer sorsát.
- Politikavégrehajtás és szoftverimplementáció**: Amikor a tervrajz elkészült, a fejlesztők megírják a tényleges kódot, a közigazgatási tisztviselők pedig a törvények szerint végrehajtják a politikát. Ez a folyamat, amelyben az absztrakt tervek konkrét, a valóságban működő entitásokká válnak.
- Választásokon keresztüli ítélkezés és szoftvertesztelés**: A politikát a választások és a közvélemény ítéli meg. A szoftver értékét a QA-csapat tesztjei és a felhasználói visszajelzések igazolják. Mindkettő csak akkor maradhat fenn, ha a szuverén (polgárok, felhasználók) beleegyezését megkapja.
- Intézményi reform és rendszerkarbantartás**: Az egyszer megalkotott törvények és rendszerek nem örökkévalók. Ahogyan a korszak változásaihoz igazodva módosítják a régi törvényeket és reformálják az intézményeket, úgy a szoftver is, ha megállítja a „refaktorálást”, amely a változó környezethez való alkalmazkodást és a belső ineffektivitások javítását célozza, halott kóddá válik.
Így a problémameghatározástól a tervezésen, implementáción, ellenőrzésen át a folyamatos fejlesztésig tartó teljes folyamat azt mutatja, hogy a két világ ugyanazt a problémamegoldó ritmust osztja meg.
Az új törvényhozók napja
Az információs társadalom értelmetlenné tette a két filozófia csúcsa közötti távolságot. A kód már nem egyszerű logikai áramkör, hanem „törvény” (Code is Law), amely szabályozza az emberek közötti kapcsolatokat, elosztja a hatalmat, és megvalósítja a társadalmi értékeket. Ha az általunk tervezett architektúra hasonlít az állam kormányzási struktúrájához, és az általunk követett fejlesztési folyamat megegyezik a politikai konszenzus folyamatával, akkor kik vagyunk mi, fejlesztők? És mit kell tenniük a politikusoknak? Ezért a fejlesztőknek már nemcsak a kód logikáját kell figyelembe venniük, hanem azt a társadalmat is, amelyet a kód létrehoz, a politikusoknak pedig nemcsak a szavazatok logikáját kell érteniük, hanem a világot mozgató technológia logikáját is. Mert az a hatalmas erő, amelyet a saját világunkban gyakorolunk, ugyanakkora etikai felelősséggel jár.