GoSuda

Politik och datorer

By snowmerak views ...

Vad är filosofi

Vad anser ni att filosofi är? Enligt ordboken är det en verksamhet där man reflekterar över livet i världen och över grundläggande frågor och söker efter svar. Man kan också ställa upp en handlingsorienterad definition, enligt vilken filosofi inte består i att lösa problem med på förhand fastställda svar, utan i att genom samma frågor eller en kedja av följdfrågor utvidga sitt tänkande och dela med sig av svaren.

I min tid som studerande, när jag höll på att slutföra min kandidatexamen, deltog jag i en kurs som handlade om politisk filosofi. Vid den tiden minns jag att professorn, under min självpresentation, yttrade något i stil med politisk filosofi och datavetenskap är discipliner som befinner sig på toppen av två olika filosofier. Orden och meningen var inte exakt dessa, men jag tror att innebörden i stort sett var densamma.

Datavetenskap

Jag anser att datavetenskap är en grundläggande undersökning för att lösa logiska problem. Därför kan olika personer som tänker kring samma problem komma fram till flera olika svar. Det mest typiska exemplet är sortering. Det finns flera metoder för att undersöka hur samma uppsättning data kan ordnas i rätt följd, till exempel bubbelsortering, insättningssortering, urvalssortering, sammanfogningssortering, snabbsortering, heapsortering, Timsort och fler. Genom att dela upp problemen kan allt bättre algoritmer växa fram.

Om man ser det ur ett lokalt perspektiv kan man också säga att det handlar om att skapa och bevisa. Även sorteringen ovan utvecklas kontinuerligt genom att man skapar nya sätt att sortera och bevisar resultatet. För den som är utvecklare kan ett ännu närmare exempel vara att när ett projektförslag föreligger, implementerar man det och visar att det fungerar felfritt.

Politisk filosofi

Jag anser att politisk filosofi är en grundläggande undersökning för att lösa samhälleliga problem. Den ställer upprepade frågor om redan existerande problem, som skiftar mellan epoker, producerar svar och delar dem med nuvarande och kommande generationer. Den behandlar främst abstrakta värden såsom rättvisa, frihet, jämlikhet och makt, vilka tolkas olika beroende på tid och kultur. Det finns inga fastställda gränser mellan gott och ont eller mellan rätt och fel, och just detta är ett kännetecken för området.

Även ur ett lokalt perspektiv, likt datavetenskapen, kan man se den som att ifrågasätta och reflektera. Den ställer ständigt frågor om uppkomna problem, reflekterar över varför det blev så här, vilka bättre riktningar som finns, och kommer fram till svar. Även detta ger, i proportion till antalet personer som tänker, många olika svar.

Varför behöver vi känna till politik och datavetenskap

Ömsesidigt anropande förhållande

De två världarna verkar utforska olika områden, men i praktiken delar de betydande likheter och har många punkter där de är varandras orsaker och följder.

Låt oss ta ett exempel.

  1. Om personens hälsodata lagras säkert i molnet kan den snabbt nås av varje sjukhus när den behövs ⇒ Detta implementeras genom programmering, så att funktioner från varje område används på ett säkert och lättillgängligt sätt.
  2. Vem äger då dessa data? Jag? Den ansvariga registeransvarige? Eller leverantören? Utvecklaren? Staten? Och vad kan de se i mina data? Hur långt sträcker sig skyddet av mina personuppgifter, och på vilket sätt kan jag få garantier för att det skyddas? ⇒ Det kommer att uppstå en politisk debatt om skillnaderna i ståndpunkter och intressen mellan olika gemenskaper och enskilda individer.
  3. Därefter kommer den politiska debatten och den programmatiska designen och implementeringen ibland att upprepas i en oändlig kedja.

Således används datavetenskap för att lösa befintliga samhällsproblem, och politisk filosofi används sedan för att identifiera och lösa de problem som uppstår där, ifrågasätta dem och lösa nästa problem. I det informationssamhälle vi lever i idag är detta en självklar företeelse.

Är politik och datavetenskap likartade

Punkter som inte verkar så

Dessutom har de två världarna utvecklats i liknande former. Men deras grund skiljer sig åt, liksom förhållandet mellan socialfilosofi och naturfilosofi, när det gäller vaga respektive tydliga formuleringar. Politisk filosofi bygger på föränderliga och vaga definitioner formulerade i naturligt språk, medan datavetenskap bygger på oföränderliga och tydliga propositioner uttryckta i formler snarare än i naturligt språk.

Även inriktningen uttrycks på subtilt olika sätt. Datavetenskapen anser att optimala lösningar kan existera. Inom politisk filosofi talar man om vagare begrepp, såsom mer övertygande argument, bättre underbyggda argument eller mer etiska argument. Men enligt min mening är de två världarnas inriktning nästan likartad. I slutändan verkar båda sträva efter ett bättre nästa steg. Även datavetenskapen har många områden, men ett typiskt exempel är mediekomprimering, kallad codec, där man arbetar för att visa bättre komprimeringsgrad, komprimeringsprestanda och licenskostnader.

Punkter som liknar varandra

Ett framträdande exempel är att programmeringsspråk och styrideologier tycks tillämpas på människor på liknande sätt. Man kan inte para ihop varje språk med en viss ideologi, men för nöjes skull ska jag räkna upp dem.

  • C-språket (utvecklaren vet vad den gör): Jag vill jämföra det med republikanism. Det liknar den republik som historiskt blev grunden för det västerländska politiska systemet, och det påminner också om kommunitarismen, som lägger stor vikt vid varje medborgares medvetenhet och individuella strävan efter ett bättre ideal. Dessutom upplever jag att det liknar hur rättigheter åtföljs av ansvar.
  • Java (skriv en gång, kör var som helst): Jag vet inte riktigt. Det finns starka lagar, och man lever ett enhetligt liv genom att följa dem, men det är stabilt, och inom dess ramar är man fri. När man sedan kommer in i Spring väntar olika välfärdstjänster på er. Ska vi säga liberalism?
  • C# (harmoni mellan utvecklarproduktivitet och principer för mjukvaruteknik): Under ett starkt statligt beskydd är allt väl utformat, och inom det planerade kan produktivitet och prestanda drivas till sitt yttersta. Planekonomi passar bra. Att det inte är kommunism beror på att produktionsmedlen har frigjorts och att producenterna inte begränsas.
  • Go (överge komplexitet, välj praktisk nytta och effektivitet): Ingenting liknande finns. Man ger bort allt, så ni borde bli en välfärdsstat.
  • Rust (säkerhet utan prestandaförlust): Ägandet och livstiderna i Rust hanteras av en strikt kompilator som fungerar som härskare. Detta verkar syfta till att förhindra den ojämlikhet och de risker som fri ekonomisk verksamhet för med sig, genom att gemenskapen förvaltar och planerar produktionsmedlen för att garantera ett stabilt liv, och att delvis begränsa individens frihet för att eftersträva säkerhet och jämlikhet för hela systemet. Därför anser jag att det är socialism.
  • JavaScript (flexibilitet och tolerans, och att det finns överallt): Jag vill jämföra det med kapitalism. Detta språk gör att produktionsmedlen ägs av enskilda individer, och till och med utrustningen finns i rikligt mått hos dem. Tack vare detta uppstår ett brett utbud av industriprodukter, och genom fri konkurrens kan vem som helst sträva efter vinst. Men en marknad utan reglering hamnade snart i kaos.
  • TypeScript (JavaScript som utvidgats): Självklart är det reglerad kapitalism. Kapitalismens tro har krossats, och för att undanröja marknadens instabilitet ingriper staten i viss mån. Den tidigare fullständiga friheten har relativt sett tillbakagått, men alla kan fortfarande fritt ge sig in på marknaden och konkurrera.

Och inte så få utvecklare, fler än man kanske tror, bråkar mycket med varandra om språk, nästan som om de förde ett ideologiskt krig i verkligheten. Språket i sig är den ideologi som utvecklaren är förtrogen med och samtidigt det ideal som ska eftersträvas.

Stat och arkitektur

  • Monolitisk arkitektur och centraliserad stat: Allt ingår i en enda stor kodbas och en enda binärfil. Detta har en struktur som liknar en enhetsstat med en stark central regering eller ett absolut monarki. Alla statens funktioner kontrolleras av ett och samma maktsystem.
    • Det har fördelen att det är lättast att bilda en stat och att beslut fattas snabbt. Det hänger ihop med fördelen att hela mjukvaran snabbt blir klar. Eftersom alla resurser och all information samlas på ett ställe är förvaltningen tydlig.
    • Men ju större staten blir, desto svårare är det att anpassa sig till förändringar, och även om man vill ändra en liten lag eller ett litet system måste hela helheten granskas och tillämpas. Det finns också en risk att ett problem inom ett område förlamar hela staten. Även monolitiska system har svårt att anpassa sig till förändringar på grund av den stora och sammanflätade kodbasen, och även när man bara vill ändra en rad kod måste man bedöma påverkansomfånget, och ett problem i en modul påverkar lätt hela systemet.
  • MSA och federal stat: Varje funktion i systemet delas upp i en självständig tjänst. Detta liknar en federal stat, som består av flera självständiga delstater. Dessutom har varje tjänst och delstat en egen oberoende infrastruktur. Den centrala regeringens inblandning är relativt liten, och liksom i en federation är det oförutsägbart när självständighet och anslutning kan uppstå.
    • I grunden kan varje oberoende delstat och tjänst ändra lagar och skriva kod på egen hand. På grund av detta behöver man inte synkronisera sina takter. Dessutom är det svårt för hela federationen att förlamas av ett problem på en plats. Och man kan välja den institution (teknik) som passar varje region eller område.
    • Men det är svårt att nå överenskommelser mellan parterna och att skapa kommunikationskanaler. Det är svårt att föra en enhetlig politik, vilket kan orsaka förvirring.
  • EDA (Event Drive Architecture) och civilsamhälle: Snarare än att en central regering eller ett ombud ger direkta order, tar enskilda individer på eget initiativ och autonomt upp de uppkomna samhällsproblemen och löser dem. Detta liknar EDA:s kännetecken, nämligen att när en händelse inträffar, plockar någon av prenumeranterna upp den autonomt och bearbetar den.
    • Vem som helst kan lätt delta. Även i EDA kan nya tjänster enkelt bli nya prenumeranter och delta i processen.
    • Men det finns en nackdel: man kan inte överblicka hela flödet. Det är svårt att spåra vem som hanterade vad och hur, och man kan inte veta vilken kedjereaktion en enskild händelse kommer att utlösa.
  • Layerd Architecture och feodalism: Feodalism är en struktur där varje aktör inom sin egen nivå fullgör den roll och det ansvar som tilldelats, och uppfyller sina skyldigheter gentemot den högre nivån. Dessa relationer bygger på en slags avtal och bildar en strikt vertikal härskarordning, och i det avseendet kan man finna likheter med layered architecture.

Även om fler liknelser är möjliga, ligger kärnan i denna text inte i strukturen i sig utan i processen att skapa den.

Är utveckling och politisk problemlösning desamma?

Om mjukvaruarkitektur och statssystem liknar varandra är även processen att skapa dem överraskande parallell. Att utveckla mjukvara är i praktiken detsamma som en politisk handling, där man bygger upp och utvecklar en ny ordning i det digitala rummet.

  1. Offentliggörande av samhällsproblem och kravanalys**:** Allt börjar med frågan "Vad är problemet?" Precis som medborgarnas lidande och olägenheter offentliggörs och blir en politisk agenda, genomgår användarnas olägenheter och krav analys och blir den första milstolpen i utvecklingen, nämligen "kravspecifikationen".
  2. Konstitutionell design och arkitekturdesign**:** Vilken stat ska vi skapa? Vilket system ska vi skapa? Precis som politiker lägger grunden för konstitutionen och lagarna utifrån sina ideologier och filosofier, ritar arkitekten utifrån sina tekniska övertygelser ritningen för den arkitektur som ska bli systemets grund. Besluten i detta skede avgör systemets öde.
  3. Politisk implementering och mjukvaruimplementation**:** När ritningen är färdig skriver utvecklarna den faktiska koden, och tjänstemän verkställer politiken enligt lagen. Det är en process där en abstrakt plan blir till en konkret verklighet som fungerar i den verkliga världen.
  4. Bedömning genom val och mjukvarutestning**:** Politiken bedöms i fråga om sin legitimitet genom val och opinion. Mjukvaran verifieras för sitt värde genom QA-teamets tester och användarnas feedback. Båda måste i slutändan få suveränens (medborgarnas, användarnas) samtycke för att kunna överleva.
  5. Institutionell reform och systemunderhåll**:** Lagar och system som en gång har skapats är inte eviga. Liksom man ändrar gamla lagar och reformerar institutioner i takt med tidens förändringar, måste även mjukvaran anpassa sig till en föränderlig miljö, och den som slutar med "refaktorisering" för att förbättra intern ineffektivitet blir till död kod.

Således visar hela processen, från problemdefinition genom design, implementering och verifiering till ständig förbättring, att de två världarna delar samma andetag i problemlösningen.

En nya lagstiftares tid

Informationssamhället har gjort avståndet mellan de två filosofiernas toppar meningslöst. Kod är inte längre bara ett enkelt logiskt kretsschema, utan har blivit "lag" (Code is Law) som reglerar människors relationer, fördelar makt och förverkligar sociala värden. Om den arkitektur vi designar liknar statens styrelsestruktur, och den utvecklingsprocess vi följer liknar en politisk förhandlingsprocess, vilka är vi då som utvecklare egentligen? Och vad ska politiker göra? Därför måste utvecklaren nu reflektera inte bara över kodens logik utan även över det samhälle som koden skapar, och politikern måste förstå inte bara röstningens logik utan även teknikens logik som driver världen. Eftersom den enorma makt vi utövar i våra respektive världar medför ett lika stort etiskt ansvar.