Politik och datorer
Vad är filosofi?
Vad anser du att filosofi är? Den lexikala definitionen är "aktiviteten att tänka på och söka svar på livets och världens grundläggande frågor". Man kan också ge en handlingsbaserad definition, nämligen att det inte handlar om att lösa problem med förutbestämda svar, utan om att utvidga tanken genom en följd av samma frågor, eller frågor som följer på varandra, och att dela dessa svar.
Tidigare, under min kandidatexamen, tog jag en kurs relaterad till politisk filosofi. Jag minns att professorn under min självintroduktion sa något i stil med: "Politisk filosofi och datavetenskap är discipliner som befinner sig på toppen av olika filosofier." Det var inte exakt dessa ord och meningar, men jag tror att det var ungefär den innebörden.
Datavetenskap
Jag anser att datavetenskap är "en grundläggande undersökning för att lösa logiska problem". Därför kan flera svar uppstå beroende på vem som tänker på ett visst problem. Det mest representativa exemplet är sortering. Även i undersökningen av hur man sorterar samma listade data i ordning finns det många metoder, såsom bubbelsortering, insättningssortering, urvalssortering, sammanslagningssortering, snabbsortering, heapsortering och Timsort. Och genom att dela upp dem kan bättre algoritmer uppstå.
Dessutom, ur ett regionalt perspektiv, kan man säga att det handlar om att "skapa och bevisa". Även sorteringen som nämndes ovan fortsätter att skapas och resultaten bevisas för hur den ska sorteras. För utvecklare är ett närmare exempel att när en projektplan presenteras, är det bäst att se det som att implementera den och bevisa att den fungerar korrekt.
Politisk filosofi
Jag anser att politisk filosofi är "en grundläggande undersökning för att lösa sociala problem". Den ifrågasätter upprepade gånger existerande problem som skiljer sig åt i varje tidsålder, producerar svar och delar dem med nutiden och framtiden. Den behandlar huvudsakligen abstrakta värden som rättvisa, frihet, jämlikhet och makt, som tolkas olika beroende på tid och kultur, och har den egenskapen att det inte finns någon tydlig gräns mellan gott och ont, rätt och fel svar.
Dessutom, liksom datavetenskapen, kan man ur ett regionalt perspektiv se den som att "fråga och reflektera". Man ifrågasätter ständigt de problem som uppstått, reflekterar över varför de uppstod, vilka bättre riktningar som finns, och producerar svar. Även här uppstår många svar i proportion till antalet tänkande individer.
Varför behöver vi förstå både politik och datorer?
Förhållandet mellan ömsesidiga anrop
Även om de två världarna verkar utforska olika områden, delar de faktiskt betydande likheter och har många punkter där de är orsak och verkan för varandra.
Låt mig ge ett exempel:
- Om individuella hälsodata lagras säkert i molnet, kommer varje sjukhus att snabbt kunna komma åt dem vid behov. ⇒ Detta implementeras genom programmering, säkert och tillgängligt, med hjälp av funktioner från varje område.
- Vems är då dessa data? Mina? Den registrerade handläggarens? Eller huvudansvarig? Utvecklaren? Staten? Hur mycket kan de då se av mina data? Hur långt och hur kan jag garanteras att min personliga information skyddas? ⇒ Politiska diskussioner om olika samhällens och individers ståndpunkter och intressekonflikter kommer att uppstå.
- Därefter kommer politiska diskussioner och programmeringsdesign och -implementering att upprepas om och om igen.
På detta sätt används datavetenskap för att lösa befintliga sociala problem, och sedan används politisk filosofi för att identifiera och lösa problem som uppstår härifrån, ifrågasätta dem och lösa nästa problem. I dagens informationssamhälle är detta ett naturligt fenomen.
Är politik och datorer lika?
Punkter som inte verkar lika
De två världarna har också utvecklats på liknande sätt. Men deras grundvalar, liksom förhållandet mellan samhällsfilosofi och naturfilosofi, skiljer sig åt i fråga om vaga uttryck och tydliga uttryck. Om politisk filosofi bygger på föränderliga och vaga definitioner som består av naturligt språk, bygger datavetenskap på oföränderliga och tydliga propositioner som består av matematiska formler snarare än naturligt språk.
Dessutom uttrycker de också sin riktning på subtilt olika sätt. Datavetenskapen anser att en optimal lösning kan existera. Och i politisk filosofi talar man om vaga begrepp som mer övertygande argument, mer välgrundade argument, mer etiska argument. Men som jag ser det är de tvås riktningar nästan identiska. I slutändan verkar det handla om att sträva efter "en bättre nästa". Även om datavetenskapen har många olika områden, strävar man till exempel inom mediakompression, som representeras av codecs, efter att uppnå bättre komprimeringsförhållanden, komprimeringsprestanda och licenskostnader.
Punkter som verkar lika
I allmänhet verkar programmeringsspråk och styrningsideologier tillämpas på liknande sätt på människor. Även om man inte kan koppla ihop varje språk och ideologi, kommer jag att lista dem för skojs skull.
- C-språket (
Utvecklaren vet vad den gör
): Jag vill likna det vid republikanism. Jag ser det som liknande den republikanska staten, som historiskt sett har varit grunden för västerländska politiska system, och även liknar kommunitarism som betonar medvetenheten hos enskilda medborgare och deras individuella ansträngningar att sträva mot ett bättre ideal. Dessutom kändes det som att det fanns en likhet i att rättigheter medför ansvar. - Java (
Skriv en gång, kör var som helst
): Jag vet inte. Det finns starka lagar, och man lever ett enhetligt liv genom att följa dem, men det är stabilt och man är fri inom det. Och när man går in i Spring väntar olika förmåner på er. Ska vi kalla det liberalism? - C# (
Harmoni mellan utvecklares produktivitet och principer för Software Engineering
): Under en stark regerings beskydd är allt väl designat, och inom det som planerats kan produktivitet och prestanda maximeras. Planekonomi passar. Anledningen till att det inte är kommunism är att produktionsmedlen har släppts fria och producenterna inte begränsas. - Go (
Släpp komplexiteten, omfamna pragmatism och effektivitet
): Det finns inget liknande. De ger allt, så kalla det en välfärdsstat. - Rust (
Säkerhet utan prestandaförlust
): Rusts ägandeskap och livslängd hanteras av en strikt kompilator som styrande. Detta liknar socialismen, där gemenskapen kontrollerar och planerar produktionsmedlen för att garantera ett stabilt liv och förhindra ojämlikhet och risker som uppstår genom individers fria ekonomiska verksamhet. Det handlar om att delvis begränsa individens frihet för att uppnå säkerhet och jämlikhet i hela systemet. - JavaScript (
Flexibilitet och tolerans, och finns överallt
): Jag vill likna det vid kapitalism. I detta språk äger individer produktionsmedlen, och även utrustningen är riklig för individerna. Tack vare detta har en mångfald av tillverkade varor uppstått, och genom fri konkurrens kan vem som helst sträva efter vinst. Men en oreglerad marknad föll snart i kaos. - TypeScript (
Utökad JavaScript
): Naturligtvis är det modifierad kapitalism. Tron på kapitalismen bryts, och för att övervinna marknadens instabilitet ingriper regeringen till viss del. Den tidigare fullständiga friheten har relativt sett gått tillbaka, men vem som helst kan fortfarande fritt ge sig in på marknaden och konkurrera.
Och det är inte så få utvecklare som, precis som i verkligheten, utkämpar ideologiska krig med språk. Språket i sig är en bekant ideologi för utvecklare och ett ideal att sträva efter.
Nation och arkitektur
- Monolitisk arkitektur och centraliserad stat: Allt ingår i en gigantisk kodbas och en enda binärfil. Detta har en struktur som liknar en enhetsstat med en stark centralregering eller en absolut monarki. Alla statens funktioner kontrolleras av en enda maktstruktur.
- Fördelen är att det är lättast att bilda en stat och att beslut fattas snabbt. Detta är i linje med fördelen att hela programvaran kommer ut snabbt. Eftersom alla resurser och all information är samlad på ett ställe är det tydligt att hantera.
- Däremot blir det svårare att anpassa sig till förändringar ju större staten blir, och även för att ändra en liten lag eller institution måste hela systemet granskas och tillämpas. Det finns också en risk att ett problem inom ett område förlamar hela staten. Monolitiska system är också svåra att anpassa sig till förändringar på grund av stora kodbaser och kopplad kod, och även för att ändra en enda kodrad måste påverkan beräknas, och ett problem som uppstår i en modul påverkar lätt hela systemet.
- MSA (Microservices Architecture) och federal stat: Varje funktion i systemet är uppdelad i oberoende tjänster. Detta liknar en federal stat där varje del av landet består av flera oberoende delstater. Dessutom har varje tjänst och delstat en oberoende infrastruktur. Centralregeringens inblandning är lös, och det är också likt att man inte vet när självständighet och anslutning kommer att ske.
- I grunden kan varje oberoende delstat och tjänst självständigt ändra lagar/skriva kod. Detta eliminerar behovet av att anpassa sig till varandras tempo. Dessutom, även om ett problem uppstår på ett ställe, är det svårt för hela federationen att förlamas. Och man kan välja lämpliga institutioner (tekniker) beroende på region eller område.
- Däremot är det svårt att uppnå ömsesidig överenskommelse eller att skapa kommunikationskanaler. Det kan också orsaka förvirring på grund av svårigheten att införa en konsekvent politik.
- EDA (Event-Driven Architecture) och civilsamhälle: Snarare än att centralregeringen eller ombud direkt beordrar, tar individer proaktivt och autonomt itu med sociala problem som uppstår och löser dem. Detta liknar hur, i EDA, när en händelse inträffar, någon av prenumeranterna autonomt tar upp den och bearbetar den.
- Vem som helst kan enkelt delta. I EDA kan även nya tjänster enkelt bli nya prenumeranter och delta i processen.
- Däremot finns det en nackdel i att man inte kan förstå hela flödet. Det är svårt att spåra vem som hanterade vad och hur, och man vet inte vilka kedjereaktioner en händelse kan utlösa.
- Layered Architecture och feodalism: Feodalismen är en struktur där varje nivå fullgör sina givna roller och ansvar och uppfyller sina skyldigheter gentemot överordnade nivåer. De är bundna av ett slags kontraktsförhållande och bildar en strikt vertikal hierarki, vilket gör att man kan hitta likheter med en lagerarkitektur.
På detta sätt är fler analogier möjliga, men kärnan i denna text ligger i processen att skapa strukturen, snarare än strukturen själv.
Kanske är problemlösning inom utveckling och politik densamma?
Om programvaruarkitektur och statsskick liknar varandra, så går processen för att skapa dem också parallellt på ett överraskande sätt. Processen att utveckla programvara är i själva verket inte annorlunda än en politisk handling att etablera och utveckla en ny ordning i det digitala rummet.
- Offentliggörande av sociala problem och kravanalys: Allt börjar med frågan "Vad är problemet?". Precis som medborgarsamhällets lidande och obehag offentliggörs och blir en politisk fråga, blir användarnas obehag och krav, efter analys, den första milstolpen i utvecklingen: "kravspecifikationen".
- Konstitutionsdesign och arkitekturdesign: Vilken typ av stat ska skapas? Vilken typ av system ska skapas? Precis som politiker bygger upp stommen av konstitutioner och lagar baserat på ideologier och filosofier, ritar arkitekter upp ritningen för systemets grundläggande arkitektur baserat på tekniska övertygelser. Besluten i detta steg avgör systemets öde.
- Policyimplementering och programvaruimplementering: När designen är klar skriver utvecklarna den faktiska koden, och administrativa tjänstemän implementerar policys i enlighet med lagen. Det är processen där abstrakta planer förvandlas till konkreta enheter som fungerar i den verkliga världen.
- Bedömning genom val och programvarutestning: Policys bedöms för sin legitimitet genom val och allmän opinion. Programvara verifieras för sitt värde genom QA-teamets tester och användarfeedback. Båda kan i slutändan bara överleva genom att få samtycke från suveränen (medborgare, användare).
- Institutionell reform och systemunderhåll: En gång skapade lagar och system varar inte för evigt. Precis som gamla lagar ändras och institutioner reformeras i takt med tidens förändringar, blir programvara en död kod i samma ögonblick som den slutar anpassa sig till föränderliga miljöer och "refaktorisera" ineffektivitet.
På detta sätt visar hela processen, från problemdefinition till design, implementering, verifiering och ständig förbättring, att de två världarna delar samma problemlösningsrytm.
Nya lagstiftares dag
Informationssamhället har gjort avståndet mellan dessa två filosofiers höjdpunkter meningslöst. Kod är inte längre bara en enkel logisk krets, utan en "lag (Code is Law)" som definierar människors relationer, fördelar makt och förverkligar sociala värden. Om arkitekturen vi designar liknar statens styrningsstruktur, och utvecklingsprocessen vi följer liknar den politiska samförståndsprocessen, vem är vi då som utvecklare? Och vad bör politiker göra? Därför måste utvecklare nu inte bara reflektera över kodens logik, utan också över det samhälle koden skapar, och politiker måste inte bara förstå röstens logik, utan också logiken hos den teknik som driver världen. Detta beror på att den enorma makt vi utövar i våra respektive världar åtföljs av ett motsvarande etiskt ansvar.