GoSuda

Politikk og datamaskiner

By snowmerak views ...

Hva er filosofi

Hva tenker du at filosofi er? Ifølge ordboken er det en aktivitet der man tenker over livet i verden og de grunnleggende spørsmålene, og søker svar på dem. Man kan også formulere en handlingsbasert definisjon: filosofi er ikke løsning av oppgaver med forhåndsbestemte svar, men en fortløpende utvidelse av tenkningen gjennom de samme spørsmålene, eller gjennom spørsmål som følger hverandre i rekke, samt deling av svarene.

Tidligere, mens jeg var i ferd med å fullføre bachelorstudiet, tok jeg et emne knyttet til politisk filosofi. Under presentasjonsrunden i begynnelsen av kurset sa professoren noe i retning av politisk filosofi og datavitenskap er fag som befinner seg på hver sin ytterste spiss av ulike filosofier. Jeg husker det ganske tydelig. Det var ikke nøyaktig dette ordet og denne setningen, men omtrent slik tror jeg det ble sagt.

Datavitenskap

Jeg mener at datavitenskap er en grunnleggende utforskning for å løse logiske problemer. Derfor kan ulike mennesker som tenker over samme problem komme frem til forskjellige svar. Det mest typiske eksempelet er sortering. For å sortere samme liste med data i rekkefølge finnes det flere metoder, blant annet boblesortering, innsettingssortering, utvalgssortering, flettesortering, quicksort, heapsort og timsort. Ved å dele opp problemet kan man også komme frem til bedre algoritmer.

Lokalt sett kan man også si at det handler om å lage og bevise. Selv sorteringen ovenfor utformes stadig på nye måter, og resultatene bevises. For utviklere er et nærmere eksempel prosjektplanlegging: Når en prosjektskisse foreligger, implementerer man den og beviser at den fungerer som den skal.

Politisk filosofi

Jeg mener at politisk filosofi er en grunnleggende utforskning for å løse samfunnsmessige problemer. Den stiller gjentatte spørsmål ved problemer som allerede finnes, og som er ulike i ulike tidsepoker, produserer svar og deler dem med samtiden og fremtiden. Den behandler hovedsakelig abstrakte verdier som rettferdighet, frihet, likhet og makt, som tolkes ulikt avhengig av tid og kultur. Den har ingen klare grenser mellom godt og ondt, eller mellom riktig og galt, som er fastlagt på forhånd; nettopp det at dette ikke er avgjort, er et kjennetegn ved faget.

Også lokalt sett, på samme måte som i datavitenskap, kan man si at den stiller spørsmål og reflekterer. Den stiller uopphørlig spørsmål ved problemer som har oppstått, og reflekterer over hvorfor det ble slik og hvilke bedre retninger som finnes, før den gir svar. Også her finnes mange svar, i takt med antallet mennesker som tenker.

Hvorfor bør vi kjenne til politikk og datavitenskap?

Gjensidig avhengighet

De to verdenene later til å utforske ulike områder, men i virkeligheten deler de betydelige likhetstrekk og har mange punkter der de er årsak og virkning for hverandre.

La oss se på ett eksempel.

  1. Dersom personlige helsedata lagres trygt i skyen, vil de kunne nås raskt fra hvert sykehus når det trengs ⇒ Dette implementeres ved programmering, ved å bruke funksjonene i hvert område på en trygg og tilgjengelig måte.
  2. Hvem eier da disse dataene? Meg selv? Den ansvarlige som registrerte dem? Eller leverandøren? Utvikleren? Staten? Hvor langt kan de da se i dataene mine? Hvor langt og på hvilken måte kan jeg få garanti for at personopplysningene mine er beskyttet? ⇒ Det vil oppstå en politisk debatt om interessene og interessekonfliktene mellom ulike fellesskap og enkeltpersoner.
  3. Deretter vil den politiske debatten og den programmeringsmessige utformingen og implementeringen av dette til tider gjentas i en fortløpende kjede.

Slik brukes datavitenskap for å løse eksisterende samfunnsproblemer, og når problemene som oppstår skal erkjennes og løses, stilles spørsmål og politisk filosofi tas i bruk for å løse neste problem. I det moderne informasjonssamfunnet er dette en selvfølgelig tilstand.

Er politikk og datamaskiner like?

Punkter som ikke ser ut til å være like

Også de to verdenene har utviklet seg i lignende former. Men grunnlaget deres skiller seg, på samme måte som forholdet mellom samfunnsfilosofi og naturfilosofi, i forskjellen mellom vag og presis formulering. Politisk filosofi bygger på foranderlige og vage definisjoner formulert i naturlig språk, mens datavitenskap bygger på uforanderlige og presise utsagn formulert med formler i stedet for naturlig språk.

Også retningen formuleres litt forskjellig. Datavitenskap mener at optimale løsninger kan finnes. I politisk filosofi snakker man derimot om vage begreper som mer overbevisende argumenter, bedre begrunnede argumenter og mer etiske argumenter. Likevel er retningen i de to, slik jeg ser det, nesten den samme. Til syvende og sist ser det ut til at begge streber etter et bedre neste. Selv datavitenskap har mange fagfelt, men et typisk eksempel er komprimering av medier, kalt codec, der man arbeider for å oppnå bedre komprimeringsgrad, komprimeringsytelse og lisenskostnad.

Punkter som kan ligne

Programmeringsspråk og styringsideologier ser ut til å gjelde for mennesker på lignende måte. Hvert språk og hver ideologi kan ikke knyttes direkte til hverandre, men jeg vil likevel liste dem opp for moro skyld.

  • C-språket (utvikleren vet hva hen gjør): Jeg vil sammenligne det med republikanismen. Det er fordi det minner om republikken, som historisk ble grunnlaget for det vestlige politiske systemet, og fordi det ligner kommunitarismen, som vektlegger borgernes bevissthet og den enkeltes innsats for å nå et bedre ideal. Jeg har også opplevd at rettigheter følges av ansvar, og at dette er likt.
  • Java (skriv én gang, kjør hvor som helst): Jeg vet ikke. Det finnes en streng lov, og man lever et enhetlig liv i henhold til den. Men dette er stabilt, og innenfor den er man fri. Og når man går inn i Spring, venter ulike velferdsgoder på deg. Skal vi kalle det liberalisme?
  • C# (harmoni mellom utviklerproduktivitet og prinsipper for programvareutvikling): Under beskyttelse av en sterk stat er alt godt utformet, og innenfor det som er planlagt kan produktivitet og ytelse drives til det ytterste. Planøkonomi passer godt. Det er ikke kommunisme, fordi produksjonsmidlene er frigitt og produsentene ikke er begrenset.
  • Go (forkast kompleksitet, og velg praktisk nytte og effektivitet): Det finnes ingenting som ligner. Man deler ut mye, så ta i bruk velferdsstaten.
  • Rust (sikkerhet uten ytelsestap): Eierskap og levetider i Rust administreres av en streng kompilator, som en hersker. For å hindre ulikhet og risiko som oppstår av fri økonomisk aktivitet, forvalter og planlegger fellesskapet produksjonsmidlene for å sikre et stabilt liv. Ved å begrense noe av den enkeltes frihet søker man sikkerhet og likhet for hele systemet. Dette virker for meg som sosialisme.
  • JavaScript (fleksibilitet og toleranse, og at det finnes overalt): Jeg vil sammenligne det med kapitalismen. Dette språket gjør at enkeltpersoner eier produksjonsmidlene, og til og med utstyret har enkeltpersoner rikelig av. Takket være dette kommer det ulike industriprodukter, og gjennom fri konkurranse kan alle forfølge fortjeneste. Men et marked uten regulering havnet raskt i kaos.
  • TypeScript (JavaScript som er utvidet): Selvsagt er det revidert kapitalisme. Troen på kapitalismen brytes, og for å overvinne markedets ustabilitet griper staten inn i en viss grad. Den fullstendige friheten som fantes tidligere er relativt redusert, men fortsatt kan alle fritt gå inn i markedet og konkurrere.

Og ikke så få utviklere kjemper, nesten som i en ideologisk krig i virkeligheten, mye med språkene. Språket selv er en ideologi som utviklerne er kjent med, og samtidig et ideal å strebe etter.

Stater og arkitektur

  • Monolittisk arkitektur og sentralisert stat: Alt er inneholdt i én stor kodebase og ett binært program. Dette har en struktur som ligner en enhetsstat med en sterk sentralregjering eller et absolutt monarki. Alle statens funksjoner kontrolleres av ett maktsystem.
    • Det har fordelen at det er lettest å etablere som stat, og at beslutninger tas raskt. Dette går i samme retning som fordelen med at hele programvaren kommer raskt ut. Fordi alle ressurser og all informasjon er samlet ett sted, er de enkle å administrere.
    • Men jo større staten blir, desto vanskeligere er den å tilpasse seg endringer. Selv om man bare vil endre en liten lov eller ordning, må hele systemet gjennomgås og tas i bruk. Det er også en risiko for at problemer på ett område lammer hele staten. Også monolitten er vanskelig å tilpasse seg endringer i på grunn av en stor kodebase og sammenvevd kode. Selv om man bare vil endre én linje kode, må man beregne omfanget av påvirkningen, og et problem i én modul kan lett påvirke hele systemet.
  • MSA og føderal stat: Hver funksjon i systemet skilles ut som en selvstendig tjeneste. Dette har likhetstrekk med en føderal stat, der hver del av staten består av flere uavhengige delstater. Også hver tjeneste og delstat har egen uavhengig infrastruktur. Den sentrale regjeringens innblanding er relativt løs, og det er likt at man ikke vet når uavhengighet eller tilslutning vil skje.
    • I utgangspunktet kan hver uavhengig delstat og tjeneste endre lover eller skrive kode uavhengig av de andre. På grunn av dette er det ikke nødvendig å tilpasse tempoet seg imellom. Dessuten er det vanskelig at hele føderasjonen lammes av et problem på ett sted. Man kan også velge den egnede ordningen (teknologien) for hvert område eller fagfelt.
    • Men det er vanskelig å bli enige seg imellom eller å etablere kommunikasjonskanaler. Det er også vanskelig å føre en konsekvent politikk, noe som kan skape forvirring.
  • EDA (Event Driven Architecture) og sivilsamfunn: Fremfor at en sentral regjering eller en representant gir direkte ordre, plukker enkeltpersoner selvstendig opp og løser samfunnsproblemer som oppstår. Dette ligner et kjennetegn ved EDA, nemlig at når en hendelse inntreffer, plukker en av abonnentene den opp og behandler den selvstendig.
    • Alle kan delta lett. Også i EDA kan en ny tjeneste enkelt bli en ny abonnent og delta i prosessen.
    • Men det er en ulempe at man ikke kan få oversikt over hele flyten. Det er vanskelig å spore hvem som behandlet hva og hvordan, og man vet ikke hvilken kjedereaksjon en enkelt hendelse kan utløse.
  • Layered Architecture og føydalisme: Føydalismen er en struktur der hver på sitt nivå utfører de oppgavene og det ansvaret som er tildelt, og oppfyller forpliktelser overfor nivået over. Disse inngås som en slags kontraktsforhold, og ettersom de danner et strengt vertikalt herredømme, kan man finne likhetstrekk med lagdelt arkitektur.

Slik kan det finnes flere sammenligninger, men kjernen i denne teksten ligger ikke i strukturen i seg selv, men i prosessen med å skape den.

Er problemløsning innen utvikling og politikk den samme?

Dersom programvarearkitektur og statsstyre ligner hverandre, er også prosessene som skaper dem, slående parallelle. Å utvikle programvare er i realiteten ikke annerledes enn en politisk handling der man bygger opp og utvikler en ny orden i det digitale rommet.

  1. Offentliggjøring av samfunnsproblemer og kravanalyse**:** Alt begynner med spørsmålet «Hva er problemet?». På samme måte som innbyggernes lidelse og ubehag offentliggjøres og blir en politisk sak, blir brukerens ubehag og krav, etter analyse, til den første milepælen i utviklingen: en «kravspesifikasjon».
  2. Grunnlovsdesign og arkitekturdesign**:** Hvilken stat skal vi lage? Hvilket system skal vi lage? På samme måte som politikere legger grunnlaget for grunnloven og lovverket på bakgrunn av ideologi og filosofi, tegner arkitekten, på bakgrunn av teknisk overbevisning, en plan for arkitekturen som skal danne grunnlaget for systemet. Avgjørelsene i dette stadiet avgjør systemets skjebne.
  3. Politisk gjennomføring og programvareimplementering**:** Når tegningene er ferdige, skriver utviklerne den faktiske koden, og byråkratene gjennomfører politikken i henhold til lovene. Dette er prosessen der en abstrakt plan blir til en konkret enhet som fungerer i den virkelige verden.
  4. Dommen ved valg og programvaretesting**:** Politikk får sin legitimitet dømt gjennom valg og opinion. Programvare får sin verdi bekreftet gjennom QA-teamets testing og brukernes tilbakemeldinger. Begge må til syvende og sist få samtykke fra suverenen (borgere, brukere) for å kunne overleve.
  5. Institusjonell reform og systemvedlikehold**:** En gang laget lov og et system er ikke evig. På samme måte som gamle lover revideres og institusjoner reformeres i takt med tidens endringer, tilpasser programvaren seg et skiftende miljø. Den som slutter å forbedre seg selv gjennom «refaktorering» av interne ineffektiviteter, blir straks til død kode.

Slik viser hele prosessen fra problemdefinisjon, via design, implementering og verifisering, til kontinuerlig forbedring, at de to verdenene deler samme puls i problemløsningen.

Nye lovgiveres dag

Informasjonssamfunnet har gjort avstanden mellom de to filosofiens ytterste spisser meningsløs. Kode er ikke lenger bare en enkel logisk krets, men har blitt «lov» (Code is Law), som definerer menneskers relasjoner, fordeler makt og realiserer samfunnsverdier. Hvis arkitekturen vi designer ligner statens styringsstruktur, og utviklingsprosessen vi følger ligner den politiske konsensusprosessen, hvem er vi da egentlig, vi utviklere? Og hva bør politikerne gjøre? Derfor må utviklere nå reflektere ikke bare over kodens logikk, men også over samfunnet som koden skaper, og politikere må forstå ikke bare stemmelogikken, men også teknologiens logikk som former verden. Den enorme makten vi utøver i våre respektive verdener medfører nemlig et tilsvarende etisk ansvar.