Politikk og datamaskiner
Hva er filosofi?
Hva tenker du filosofi er? Den leksikalske betydningen er "aktiviteten med å tenke på og finne svar på verdens liv og grunnleggende spørsmål". Man kan også gi en adferdsdefinisjon, som at det ikke er en problemløsning med et fastsatt svar, men en utvidelse av tenkningen gjennom samme spørsmål, eller en rekke spørsmål som følger hverandre, og deling av disse svarene.
Tidligere, under min bachelorgrad, tok jeg et emne relatert til politisk filosofi. Jeg husker at professoren, under min introduksjonstid, sa noe lignende som "politisk filosofi og informatikk er disipliner som befinner seg på toppen av hver sin filosofi". Det var ikke nøyaktig disse ordene og setningene, men det var omtrent den betydningen.
Informatikk
Jeg anser informatikk som en "grunnleggende utforskning for å løse logiske problemer". Derfor kan det være flere svar avhengig av hvem som tenker på et gitt problem. Det mest representative eksemplet er sortering. Selv i utforskningen av hvordan man sorterer de samme opplistede dataene i rekkefølge, finnes det mange metoder som bubble, insertion, selection, merge, quick, heap, team, etc. Og ved å dele dem opp, kan bedre algoritmer dukke opp.
I tillegg, sett fra et regionalt perspektiv, kan det sies at man "skaper og beviser". Også den ovennevnte sorteringen fortsetter å skape og bevise resultater for hvordan man skal sortere. For utviklere er et nærmere eksempel at når et prosjektforslag kommer, er det bra å se det som å implementere og bevise at det fungerer som det skal.
Politisk filosofi
Jeg anser politisk filosofi som en "grunnleggende utforskning for å løse sosiale problemer". Den stiller gjentatte ganger spørsmål ved allerede eksisterende problemer i hver epoke, produserer svar, og deler dem med nåtiden og fremtiden. Den behandler hovedsakelig abstrakte verdier som rettferdighet, frihet, likhet og makt, som tolkes forskjellig avhengig av tid og kultur, og den har den egenskapen at det ikke er klare grenser mellom godt og ondt, eller riktig og feil, og at det ikke er fastsatt.
I tillegg, sett fra et regionalt perspektiv, som informatikk, kan det ses som å "stille spørsmål og reflektere". Man stiller uopphørlig spørsmål ved oppståtte problemer, reflekterer over hvorfor det skjedde, og hvilke bedre retninger det finnes, og kommer frem til svar. Også her dukker det opp mange svar, proporsjonalt med antall tenkende personer.
Hvorfor bør vi også kjenne til politikk/datamaskiner?
Forholdet mellom gjensidig kall
Disse to verdenene ser ut til å grave i forskjellige områder, men i virkeligheten deler de betydelige likheter og har mange punkter der de er hverandres årsak og virkning.
La oss ta et eksempel:
- Hvis personlige helsedata lagres sikkert i skyen, vil de raskt være tilgjengelige for hvert sykehus når det er nødvendig. ⇒ Implementeres ved å bruke funksjonene i hvert område på en sikker og tilgjengelig måte gjennom programmering.
- Hvem eier da disse dataene? Meg? Den registrerte ansvarlige? Eller hovedansvarlig? Utvikleren? Staten? Hvor mye av mine data kan de da se? Hvor mye og hvordan kan jeg garanteres at min personlige informasjon er beskyttet? ⇒ Politisk diskurs om ulike fellesskap og forskjeller i perspektiver og forståelse mellom enkeltpersoner vil finne sted.
- Deretter vil politisk diskurs og programmeringsdesign og -implementering gjentatte ganger følge hverandre.
På denne måten brukes informatikk for å løse eksisterende samfunnsproblemer, og deretter stilles spørsmål for å gjenkjenne og løse problemene som oppstår herfra, og politisk filosofi brukes for å løse de neste problemene. I det informasjonsrike samfunnet vi lever i dag, er dette et naturlig fenomen.
Er politikk og datamaskiner like?
Punkter som ikke ser ut til å være like
Disse to verdenene har også utviklet seg i lignende former. Men grunnlaget, i likhet med forholdet mellom sosial filosofi og naturfilosofi, har en forskjell mellom vage og klare uttrykk. Mens politisk filosofi er basert på variable og vage definisjoner av naturlig språk, er informatikk basert på uforanderlige og klare proposisjoner formulert i matematiske termer snarere enn naturlig språk.
Dessuten uttrykkes retningen subtilt forskjellig. Informatikk anser at en optimal løsning kan eksistere. Og i politisk filosofi snakker man om vage begreper som mer overbevisende argumenter, mer velbegrunnede argumenter, mer etiske argumenter. Men slik jeg ser det, er retningen for begge nesten identisk. Til syvende og sist ser det ut til at de begge streber etter "en bedre neste". Selv om informatikk har mange forskjellige felt, jobber man for eksempel innen mediekoding, også kalt codecs, for å vise bedre kompresjonsforhold, kompresjonsytelse og lisenskostnader.
Punkter som ser ut til å være like
Som et typisk eksempel ser programmeringsspråk og styringsideologier ut til å gjelde mennesker på en lignende måte. Selv om man ikke kan korrespondere hvert språk og hver ideologi, skal jeg liste dem opp for moro skyld.
- C-språket (
Utvikleren vet hva han gjør
): Jeg vil gjerne sammenligne det med republikanisme. Jeg ser det som likt en republikk, som historisk har vært grunnlaget for vestlige politiske systemer, og også som likt kommunitarisme, som legger vekt på enkeltindividers bevissthet og deres innsats for å strebe mot et bedre ideal. Jeg følte også at likheten ligger i at rettigheter følges av ansvar. - Java (
Skriv én gang, kjør hvor som helst
): Jeg vet ikke. Det er sterke lover, og man lever et standardisert liv ved å følge dem, men det er stabilt og man er fri innenfor det. Og når man går inn i Spring, venter det mange velferdsordninger på dere. Skal vi si liberalisme? - C# (
Harmoni mellom utviklerproduktivitet og prinsipper for programvareteknikk
): Under beskyttelse av en sterk regjering er alt godt designet, og innenfor det som er planlagt her, kan produktivitet og ytelse maksimeres. Planøkonomi passer godt. Det er ikke kommunisme, da produksjonsmidlene er frigitt og produsentene ikke er begrenset. - Go (
Gi slipp på kompleksitet, omfavn praktisk anvendelighet og effektivitet
): Det er ingenting lignende. Siden alt deles ut, la oss si velferdsstat. - Rust (
Sikkerhet uten ytelsesnedgang
): Rusts eierskap og levetid styres av en streng kompilator, som en hersker. Dette ligner på sosialisme, hvor fellesskapet styrer og planlegger produksjonsmidlene for å sikre et stabilt liv, for å forhindre ulikhet og risiko som følger av individets frie økonomiske aktivitet, og hvor dette søker systemets generelle sikkerhet og likhet ved delvis å begrense individets frihet. - JavaScript (
Fleksibilitet og toleranse, og eksistens overalt
): Jeg vil gjerne sammenligne det med kapitalisme. I dette språket eier enkeltpersoner produksjonsmidlene, og til og med utstyret eies rikelig av enkeltpersoner. Takket være dette har en rekke industrivarer kommet frem, og alle kan søke profitt gjennom fri konkurranse. Men et uregulert marked havnet snart i kaos. - TypeScript (
Utvidende JavaScript
): Det er selvfølgelig modifisert kapitalisme. Troen på kapitalismen er brutt, og for å overvinne markedets ustabilitet griper regjeringen inn i en viss grad. Den tidligere fullstendige friheten har relativt sett gått tilbake, men fortsatt kan alle fritt delta i markedet og konkurrere.
Og et ikke ubetydelig antall utviklere kjemper mye med språk, akkurat som om de utkjemper ideologiske kriger i virkeligheten. Selve språket er en kjent ideologi for utviklere, og et ideal å strebe etter.
Nasjon og arkitektur
- Monolitisk arkitektur og sentralisert stat: Alt er inkludert i en stor kodebase og én binærfil. Dette har en struktur som ligner en enhetsstat med en sterk sentralregjering eller et absolutt monarki. Alle statens funksjoner kontrolleres av ett maktsystem.
- Fordelen er at det er enklest å danne en stat og beslutninger tas raskt. Dette er i samme ånd som fordelen med at hele programvaren kommer raskt ut. Alle ressurser og informasjon er samlet på ett sted, noe som gjør administrasjonen klar.
- Imidlertid, jo større staten blir, desto vanskeligere blir det å tilpasse seg endringer, og selv en liten endring i lov eller system krever en gjennomgang og anvendelse av hele systemet. Problemer i ett område risikerer å lamme hele staten. Monolitisk arkitektur har også vanskelig for å tilpasse seg endringer på grunn av stor kodebase og sammenflettede koder, og selv for å endre en enkelt kodelinje må man vurdere omfanget av påvirkningen, og et problem i én modul kan lett påvirke hele systemet.
- MSA (Microservices Architecture) og føderalstat: Hver funksjon i systemet skilles ut som en uavhengig tjeneste. Dette har likhetstrekk med en føderalstat der hver del av staten består av flere uavhengige delstater. Hver tjeneste og delstat har også en uavhengig infrastruktur. Sentralregjeringens innblanding er løs, og det ligner også at man aldri vet når uavhengighet og tilslutning vil skje.
- I utgangspunktet kan hver uavhengige delstat og tjeneste uavhengig endre lover/skrive kode. Dette eliminerer behovet for å tilpasse seg hverandres tempo. Selv om det oppstår et problem ett sted, er det vanskelig for hele føderasjonen å bli lammet. Og man kan velge passende systemer (teknologier) i henhold til hver region eller hvert felt.
- Men det er vanskelig å oppnå gjensidig enighet eller å opprette kommunikasjonskanaler. Det kan være vanskelig å føre en konsekvent politikk, noe som kan føre til forvirring.
- EDA (Event-Driven Architecture) og sivilsamfunn: Snarere enn at sentralregjeringen eller en representant gir direkte ordre, tar enkeltpersoner proaktivt og autonomt tak i sosiale problemer som oppstår og løser dem. Dette ligner på EDA's egenskap der når en hendelse oppstår, tar en abonnent autonomt tak i den og behandler den.
- Alle kan enkelt delta. I EDA kan også nye tjenester enkelt bli nye abonnenter og delta i prosessen.
- Men det er en ulempe at man ikke kan forstå hele flyten. Det er vanskelig å spore hvem som behandlet det og hvordan, og man kan ikke vite hvilken kjedereaksjon en enkelt hendelse vil utløse.
- Layered Architecture og føydalisme: Føydalisme er en struktur der hvert lag utfører sine tildelte roller og ansvar, og oppfyller sine forpliktelser overfor høyere lag. De er bundet av en slags kontraktforhold, og man kan finne likhetstrekk med lagdelt arkitektur i den strenge vertikale hierarkiske strukturen.
På denne måten er flere metaforer mulige, men kjernen i denne teksten ligger mer i prosessen med å skape strukturen enn i selve strukturen.
Kan utvikling og politisk problemløsning være det samme?
Hvis programvarearkitektur og statlige systemer ligner hverandre, tegner prosessen med å skape dem også bemerkelsesverdig parallelle linjer. Prosessen med å utvikle programvare er i realiteten ikke annerledes enn en politisk handling der man etablerer og utvikler en ny orden i det digitale rom.
- Offentliggjøring av samfunnsproblemer og kravsanalyse: Alt starter med spørsmålet "Hva er problemet?". Akkurat som sivilsamfunnets smerte og ulemper blir offentliggjort og blir en politisk agenda, blir brukerens ulemper og krav, etter analyse, den første milepælen i utviklingen, kalt "kravspesifikasjon".
- Utforming av konstitusjon og arkitekturdesign: Hvilken stat skal vi bygge? Hvilket system skal vi bygge? Akkurat som politikere bygger grunnlaget for konstitusjoner og lover basert på ideologi og filosofi, tegner arkitekter en blåkopier for systemets grunnleggende arkitektur basert på teknologisk tro. Beslutningene i dette stadiet bestemmer systemets skjebne.
- Gjennomføring av politikk og programvareimplementering: Når designet er fullført, skriver utviklere faktisk kode, og administrative tjenestemenn implementerer politikk i henhold til loven. Det er prosessen der abstrakte planer blir konkrete enheter som fungerer i den virkelige verden.
- Vurdering gjennom valg og programvaretesting: Politikken vurderes for sin legitimitet gjennom valg og offentlig opinion. Programvaren valideres for sin verdi gjennom QA-teamets testing og brukerfeedback. Begge må til syvende og sist få samtykke fra suverenen (borgere, brukere) for å overleve.
- Institusjonell reform og systemvedlikehold: En lov og et system som er laget én gang, varer ikke evig. Akkurat som man reviderer gamle lover og reformerer institusjoner i takt med tidens endringer, blir programvare også død kode i det øyeblikket den slutter å tilpasse seg et skiftende miljø og forbedre interne ineffektiviteter gjennom "refaktorering".
På denne måten viser hele prosessen, fra problemdefinisjon til design, implementering, verifisering og kontinuerlig forbedring, at de to verdenene deler samme pust i problemløsning.
Nye lovgiveres dag
Informasjonssamfunnet har gjort avstanden mellom toppene av disse to filosofiene meningsløs. Kode er ikke lenger bare en enkel logisk krets, men har blitt en "lov (Code is Law)" som regulerer menneskelige relasjoner, fordeler makt og realiserer sosiale verdier. Hvis arkitekturen vi designer ligner på statens styringsstruktur, og utviklingsprosessen vi følger er som en politisk konsensusprosess, hvem er vi utviklere da egentlig? Og hva bør politikere gjøre? Derfor må utviklere nå reflektere ikke bare over kodens logikk, men også over samfunnet koden vil skape, og politikere må forstå ikke bare stemmenes logikk, men også teknologiens logikk som driver verden. For den formidable makten vi utøver i hver vår verden, følger det med et tilsvarende etisk ansvar.