Politiek en computers

Wat is filosofie
Wat denkt u dat filosofie is? In het woordenboek wordt het gedefinieerd als de activiteit waarbij men nadenkt over het leven in de wereld en over fundamentele vragen, en zoekt naar antwoorden. Men kan er ook een handelingsgerichte definitie aan verbinden: het is het voortdurend uitbreiden van het denken door dezelfde vraag, of een keten van opeenvolgende vragen, en het delen van die antwoorden, in plaats van het oplossen van problemen waarvan het antwoord al vaststaat.
In het verleden, tijdens mijn bachelorstudie, volgde ik een vak dat verband hield met de politieke filosofie. Tijdens de voorstelronde van mezelf herinner ik me dat de professor iets zei dat leek op: Politieke filosofie en informatica zijn disciplines die zich aan de uiterste punten van verschillende filosofieën bevinden. Dat waren niet precies deze woorden en deze zin, maar het was ongeveer die betekenis, geloof ik.
Informatica
Ik ben van mening dat informatica het fundamentele onderzoek is om logische problemen op te lossen. Daarom kunnen er, afhankelijk van wie over een probleem nadenkt, verschillende antwoorden ontstaan. Het meest kenmerkende voorbeeld is sorteren. Voor het onderzoek naar methoden om dezelfde reeks gegevens in volgorde te sorteren bestaan er verschillende algoritmen, zoals bubble sort, insertion sort, selection sort, merge sort, quicksort, heapsort en timsort. Door deze te analyseren en op te splitsen, kunnen nog betere algoritmen ontstaan.
Vanuit een lokaal perspectief kan men ook zeggen dat het gaat om bouwen en bewijzen. Ook bij het bovenstaande sorteren wordt steeds bepaald hoe er gesorteerd zal worden, en wordt het resultaat bewezen. Voor mensen die als ontwikkelaar werken, is het een goed idee om dit te zien als het implementeren van een projectplan en het aantonen dat het foutloos werkt.
Politieke filosofie
Ik ben van mening dat politieke filosofie het fundamentele onderzoek is om maatschappelijke problemen op te lossen. Ze stelt herhaaldelijk vragen over reeds bestaande problemen die in elke tijd verschillend zijn, produceert antwoorden en deelt deze met het heden en de toekomst. Zij houdt zich vooral bezig met abstracte waarden zoals rechtvaardigheid, vrijheid, gelijkheid en macht, die naargelang de tijd en cultuur verschillend worden geïnterpreteerd. Er bestaan geen vaste grenzen tussen goed en kwaad, of tussen juist en onjuist, en dat ongedefinieerde karakter is kenmerkend.
Vanuit een lokaal perspectief, zoals bij informatica, kan men zeggen dat zij vraagt en reflecteert. Zij stelt voortdurend vragen over problemen die zich voordoen, reflecteert op waarom iets zo is gebeurd en welke betere richtingen mogelijk zijn, en formuleert antwoorden. Ook hier ontstaan, in verhouding tot het aantal denkende mensen, veel verschillende antwoorden.
Waarom we ook politiek en informatica moeten kennen
Wederzijdse verwijzingsrelatie
Hoewel de twee werelden verschillende gebieden lijken te onderzoeken, delen zij in werkelijkheid opvallend veel overeenkomsten, en hebben zij heel wat punten die elkaars oorzaak en gevolg zijn.
Laat ik één voorbeeld geven.
- Als persoonlijke gezondheidsgegevens veilig in de cloud worden opgeslagen, kan elk ziekenhuis er snel toegang toe krijgen wanneer dat nodig is ⇒ Dit wordt geïmplementeerd door met programmering veilig en toegankelijk gebruik te maken van de functies van elk gebied.
- Wie is dan de eigenaar van die gegevens? Ik? De verantwoordelijke die ze heeft geregistreerd? Of de beheerder, de ontwikkelaar, de staat? En tot waar kunnen zij dan in mijn gegevens kijken? Tot waar en op welke manier kan ik de zekerheid krijgen dat mijn persoonsgegevens beschermd worden? ⇒ Er zal een politiek debat ontstaan over de standpunten en de verschillende belangen van uiteenlopende gemeenschappen en individuen.
- Daarna zullen politieke discussies en programmatisch ontwerp en implementatie af en toe op elkaar volgen en zich herhalen.
Zo wordt informatica gebruikt om bestaande maatschappelijke problemen op te lossen, en wordt vervolgens politieke filosofie gebruikt om de problemen die daaruit voortvloeien te herkennen en op te lossen, door vragen te stellen en het volgende probleem aan te pakken. In de informatiemaatschappij van vandaag is dit een vanzelfsprekend verschijnsel.
Lijken politiek en informatica op elkaar?
Punten die niet zo lijken
De twee werelden zijn ook op vergelijkbare wijze geëvolueerd. Toch heeft hun grondslag, net als de relatie tussen sociale filosofie en natuurfilosofie, een verschil tussen vage en precieze formuleringen. De politieke filosofie baseert zich op veranderlijke en vage definities in natuurlijke taal, terwijl de informatica zich baseert op onveranderlijke en precieze proposities in de vorm van formules, en minder in natuurlijke taal.
Ook de richting die zij uitgaan verschilt subtiel. De informatica gaat ervan uit dat een optimale oplossing kan bestaan. De politieke filosofie daarentegen heeft het over vage begrippen zoals een overtuigender argument, een better onderbouwd argument of een ethischer argument. Toch lijkt mij de richting van beide bijna gelijk. Uiteindelijk lijkt beide te streven naar een betere volgende stap. Zo streeft ook de informatica, hoewel er vele vakgebieden zijn, er bij voorbeeld met codecs, de technologie voor mediacompressie, naar om een betere compressieverhouding, betere compressieprestaties en lagere licentiekosten te bereiken.
Punten die op elkaar lijken
Vooral programmeertalen en politieke ideologieën lijken op een vergelijkbare manier op mensen van toepassing te zijn. Ze kunnen niet één-op-één met elkaar worden gekoppeld, maar ik zal ze bij wijze van spel opsommen.
- C (
de ontwikkelaar weet wat hij doet): Ik wil het vergelijken met het republicanisme. Het lijkt historisch op de republiek, die de basis vormde van het westerse politieke stelsel, en het lijkt ook op het communitarisme, dat het bewustzijn van de individuele burger en de inspanningen van elk individu om naar een betere ideaal te streven belangrijk vindt. Ook voelt het aan alsof rechten gepaard gaan met verantwoordelijkheden. - Java (
schrijf eenmaal, draai overal): Ik weet het niet. Er is een sterke wet, en men leeft volgens die wet een gestandaardiseerd leven, maar dat is stabiel, en binnen dat kader is men vrij. En wanneer men in Spring duikt, wachten allerlei sociale voorzieningen op u. Zal ik het liberalisme kiezen? - C# (
harmonie tussen productiviteit van de ontwikkelaar en de principes van software-engineering): Onder de bescherming van een sterke overheid is alles goed ontworpen, en binnen wat gepland is, kan men productiviteit en prestaties tot het uiterste drijven. De geplande economie past hierbij. Het is niet communistisch, omdat de productiemiddelen zijn vrijgegeven en de producenten niet worden beperkt. - Go (
complexiteit laten varen, pragmatisme en efficiëntie omarmen): Er is niets vergelijkbaars. Men geeft alles weg, dus raad ik een verzorgingsstaat aan. - Rust (
veiligheid zonder prestatieverlies): De eigendom en levensduur in Rust worden beheerd door een strenge compiler als heerser. Dit lijkt erop gericht te zijn om de ongelijkheid en de risico's te voorkomen die voortvloeien uit de vrije economische activiteit van individuen, waarbij de gemeenschap de productiemiddelen beheert en plant om een stabiel leven te garanderen, en waarbij de individuele vrijheid deels wordt beperkt om de veiligheid en gelijkheid van het hele systeem na te streven. Daarom denk ik dat het socialisme is. - JavaScript (
flexibiliteit en tolerantie, en alomtegenwoordigheid): Ik wil het vergelijken met het kapitalisme. In deze taal bezitten individuen de productiemiddelen, en zelfs de installaties zijn ruimschoots in handen van individuen. Dankzij dat komen er allerlei industriële producten tot stand, en via vrije concurrentie kan iedereen winst nastreven. Maar een markt zonder regulering raakte al snel in chaos. - TypeScript (
JavaScript die wordt uitgebreid): Uiteraard is dit gemengd kapitalisme. Het geloof in het kapitalisme wordt doorbroken, en om de instabiliteit van de markt te bestrijden, grijpt de overheid tot op zekere hoogte in. De volledige vrijheid van vroeger is relatief teruggedrongen, maar nog steeds kan iedereen vrij de markt betreden en concurreren.
En niet weinig ontwikkelaars voeren, alsof het in de werkelijkheid een ideologische oorlog is, veel strijd met talen. De taal zelf is de ideologie die voor ontwikkelaars vertrouwd is, en tegelijk het ideaal dat nagestreefd moet worden.
Staat en architectuur
- Monolithische architectuur en gecentraliseerde staat: Alles is opgenomen in één enorme codebase en één binair bestand. Dit heeft een structuur die lijkt op een enkelvoudige staat met een sterke centrale regering, of op een absolute monarchie. Alle functies van de staat worden gecontroleerd door één machtssysteem.
- Het heeft het voordeel dat het het gemakkelijkst is om de vorm van een staat te realiseren en dat beslissingen snel worden genomen. Dit gaat dezelfde kant op als het voordeel dat de gehele software snel verschijnt. Doordat alle middelen en informatie op één plek zijn geconcentreerd, is het beheer duidelijk.
- Naarmate de staat groter wordt, is het echter moeilijker om op veranderingen te reageren, en ook als men een kleine wet of instelling wil wijzigen, moet het geheel worden onderzocht en toegepast. Er bestaat ook het risico dat een probleem in één sector de hele staat verlamt. Ook de monolithische architectuur is door de grote codebase en de sterk verweven code moeilijk aan te passen; zelfs als men maar één regel code wil wijzigen, moet men het bereik van de impact bepalen, en een probleem in één module kan gemakkelijk het hele systeem treffen.
- Microservices-architectuur en federale staat: De functies van het systeem worden opgesplitst in onafhankelijke diensten. Dit heeft overeenkomsten met een federale staat, waarin elk deel van de staat bestaat uit verschillende onafhankelijke deelstaten. Ook beschikt elke dienst en elke deelstaat over een eigen onafhankelijke infrastructuur. De inmenging van de centrale regering is relatief los, en het is vergelijkbaar doordat niet bekend is wanneer onafhankelijkheid of toetreding zal plaatsvinden.
- In principe kunnen elke onafhankelijke deelstaat en elke dienst op zelfstandige wijze wetten wijzigen of code schrijven. Daardoor hoeven zij hun tempo niet op elkaar af te stemmen. Ook is het moeilijk dat een probleem op één plek de hele federatie verlamt. En men kan het passende instituut (technologie) kiezen voor elke regio of elk vakgebied.
- Het is echter moeilijk om onderlinge overeenstemming te bereiken of communicatiekanalen tot stand te brengen. Het is ook lastig om een consistent beleid te voeren, wat tot verwarring kan leiden.
- EDA (Event Driven Architecture) en burgermaatschappij: In plaats van dat een centrale overheid of een vertegenwoordiger direct bevelen geeft, pakken individuele burgers maatschappelijke problemen zelfstandig en op eigen initiatief op en lossen ze op. Dit lijkt op het kenmerk van EDA, waarbij wanneer een gebeurtenis plaatsvindt, een van de abonnees die de gebeurtenis oppakt, deze autonoom verwerkt.
- Iedereen kan er gemakkelijk aan deelnemen. Ook in EDA kan een nieuwe dienst eenvoudig een nieuwe abonnee worden en aan het proces deelnemen.
- Het heeft echter het nadeel dat men de volledige stroom niet kan overzien. Het is moeilijk na te gaan wie wat heeft verwerkt, en men weet niet welke kettingreactie één gebeurtenis zal veroorzaken.
- Gelaagde architectuur (Layered Architecture) en leenstelsel: Het leenstelsel is een structuur waarin elke laag de aan haar toegewezen rol en verantwoordelijkheden vervult en zo de plichten jegens de hogere laag nakomt. Deze verhoudingen worden gesloten als een soort contractuele relatie, en het feit dat zij een strikte verticale heerschappijstructuur vormen, maakt dat er overeenkomsten zijn met de gelaagde architectuur.
Hoewel er nog meer vergelijkingen mogelijk zijn, ligt de kern van deze tekst niet zozeer in de structuur zelf, maar in het proces waarmee die structuur wordt opgebouwd.
Zijn het oplossen van problemen in ontwikkeling en politiek hetzelfde?
Als softwarearchitectuur en staatsinrichting op elkaar lijken, dan vertonen ook het proces waarmee die twee worden opgebouwd een verbazingwekkend parallel verloop. Het ontwikkelen van software is in feite niet anders dan een politieke handeling waarbij in de digitale ruimte een nieuwe orde wordt opgebouwd en verder ontwikkeld.
- Maatschappelijke problemen publiek maken en eisen analyseren: Alles begint met de vraag "Wat is het probleem?" Net zoals de pijn en het ongemak van het maatschappelijk middenveld publiek worden gemaakt en tot politieke agenda worden, worden de ongemakken en eisen van gebruikers na analyse het eerste mijlpaal van de ontwikkeling: de "specificatie van de eisen".
- Grondwetsontwerp en architectuurontwerp: Welke staat willen we bouwen? Welk systeem willen we bouwen? Net zoals politici op basis van ideologie en filosofie het fundament van grondwet en wetgeving leggen, tekent de architect op basis van technische overtuiging de blauwdruk van de architectuur die de basis van het systeem zal vormen. Beslissingen in deze fase bepalen het lot van het systeem.
- Beleidsuitvoering en softwareimplementatie: Wanneer het ontwerp klaar is, schrijven ontwikkelaars de daadwerkelijke code, en voeren ambtenaren het beleid uit op basis van de wet. Dit is het proces waarin een abstract plan tot een concrete entiteit wordt die in de echte wereld functioneert.
- Beoordeling door verkiezingen en softwaretesten: Beleid wordt door verkiezingen en de publieke opinie op zijn legitimiteit beoordeeld. Software wordt door tests van het QA-team en feedback van gebruikers op haar waarde gevalideerd. Beide moeten uiteindelijk de instemming van de soevereine burgers (burgers, gebruikers) krijgen om te kunnen bestaan.
- Institutionele hervorming en systeemonderhoud: Eenmaal gemaakte wetten en systemen zijn niet eeuwig. Net zoals oude wetten worden gewijzigd en instituties worden hervormd om zich aan de veranderende tijd aan te passen, wordt software, wanneer het stopt met zich aan te passen aan de veranderende omgeving en met het verbeteren van interne inefficiënties door middel van "refactoring", een dode code.
Zo laat het hele proces, van probleemdefinitie over ontwerp, implementatie en verificatie tot voortdurende verbetering, zien dat beide werelden dezelfde adem van het oplossen van problemen delen.
De dag van de nieuwe wetgevers
De informatiemaatschappij heeft de afstand tussen die twee filosofische toppen betekenisloos gemaakt. Code is niet langer slechts een logisch circuit, maar is de "wet van de code" (Code is Law) geworden, die de relaties tussen mensen bepaalt, macht verdeelt en maatschappelijke waarden verwezenlijkt. Als de architectuur die wij ontwerpen lijkt op de bestuursstructuur van een staat, en als het ontwikkelproces dat wij volgen gelijk is aan het politieke consensusproces, wie zijn wij, ontwikkelaars, dan eigenlijk? En wat moeten politici doen? Daarom moet de ontwikkelaar nu niet alleen de logica van de code, maar ook de samenleving die deze code zal vormen reflecteren, en moet de politicus niet alleen de logica van stemmen, maar ook de logica van de technologie die de wereld in beweging brengt begrijpen. Omdat de enorme macht die wij in onze eigen werelden uitoefenen, een even grote ethische verantwoordelijkheid met zich meebrengt.