GoSuda

Politiek en computers

By snowmerak
views ...

Wat is filosofie?

Wat denkt u dat filosofie is? De woordenboekdefinitie is 'de activiteit van het nadenken over en het zoeken naar antwoorden op fundamentele vragen over het leven en de wereld'. Er kan ook een gedragsmatige definitie worden gegeven, namelijk dat het niet gaat om het oplossen van problemen met een vaststaand antwoord, maar om het uitbreiden van het denken door middel van een reeks dezelfde vragen, of opeenvolgende vragen, en het delen van die antwoorden.

In het verleden heb ik tijdens mijn bacheloropleiding een vak gevolgd met betrekking tot politieke filosofie. Ik herinner me dat mijn professor tijdens mijn introductie sprak over iets vergelijkbaars met 'politieke filosofie en computerwetenschappen zijn disciplines op het hoogtepunt van verschillende filosofieën'. Het waren niet precies deze woorden en zinnen, maar het kwam daar ongeveer op neer.

Computerwetenschappen

Ik denk dat computerwetenschappen een 'fundamenteel onderzoek naar het oplossen van logische problemen' is. Daarom kunnen er verschillende antwoorden komen, afhankelijk van de persoon die over een bepaald probleem nadenkt. Het meest representatieve voorbeeld is sorteren. Er zijn verschillende methoden om dezelfde opgesomde gegevens in volgorde te sorteren, zoals bubble, insertion, selection, merge, quick, heap en tim. En door deze te verdelen, kan een beter algoritme ontstaan.

Bovendien kan, vanuit een lokaal perspectief, worden gezegd dat het 'creëren en bewijzen' is. Zelfs de hierboven genoemde sortering creëert voortdurend hoe er gesorteerd moet worden en bewijst de resultaten. Ontwikkelaars kunnen het beter zien als het implementeren en bewijzen dat het project goed werkt wanneer er een projectplan is.

Politieke filosofie

Ik beschouw politieke filosofie als een 'fundamenteel onderzoek naar het oplossen van sociale problemen'. Voor elk tijdperk worden bestaande problemen herhaaldelijk bevraagd, worden antwoorden geproduceerd en gedeeld in het heden en de toekomst. Het behandelt voornamelijk abstracte waarden zoals rechtvaardigheid, vrijheid, gelijkheid en macht, die in verschillende tijdperken en culturen verschillend worden geïnterpreteerd. Er zijn geen duidelijke scheidslijnen tussen goed en kwaad, juist en onjuist, en het kenmerk is dat deze niet vaststaan.

Bovendien kan, net als bij computerwetenschappen, vanuit een lokaal perspectief worden gezegd dat het 'vragen stellen en reflecteren' is. Er worden voortdurend vragen gesteld over het ontstane probleem, waarom het zo is geworden, wat betere richtingen zijn, er wordt gereflecteerd en antwoorden worden geproduceerd. Ook hier verschijnen veel antwoorden, in verhouding tot het aantal mensen dat nadenkt.

Waarom moeten we politiek/computers begrijpen?

Relatie van wederzijdse oproep

Hoewel de twee werelden verschillende gebieden lijken te onderzoeken, delen ze in werkelijkheid aanzienlijke overeenkomsten en hebben ze veel punten waarop ze elkaars oorzaak en gevolg zijn.

Laten we een voorbeeld nemen.

  1. Als persoonlijke gezondheidsgegevens veilig in de cloud worden opgeslagen, kunnen individuele ziekenhuizen er snel toegang toe krijgen wanneer dat nodig is. ⇒ Dit wordt geïmplementeerd met behulp van de functies van elk gebied door middel van programmering, op een veilige en toegankelijke manier.
  2. Van wie zijn die gegevens dan? Van mij? Van de geregistreerde contactpersoon? Of van de hoofdaannemer? De ontwikkelaar? De staat? Hoeveel van mijn gegevens kunnen zij dan zien? Hoeveel van mijn persoonlijke gegevens kunnen gegarandeerd worden beschermd? ⇒ Er zal een politieke discussie ontstaan over de standpunten en belangenverschillen van de verschillende gemeenschappen en individuen.
  3. Daarna zullen politieke discussies en programmeerontwerpen en -implementaties elkaar periodiek opvolgen en herhalen.

Op deze manier worden computerwetenschappen gebruikt om bestaande sociale problemen op te lossen, en vervolgens wordt politieke filosofie gebruikt om de problemen die hieruit voortvloeien te herkennen, vragen te stellen om ze op te lossen, en de volgende problemen aan te pakken. In de informatiemaatschappij van vandaag is dit een natuurlijk fenomeen.

Zijn politiek en computers vergelijkbaar?

Punten die niet zo lijken

Bovendien zijn de twee werelden op vergelijkbare wijze geëvolueerd. De basis is echter, net als de relatie tussen sociale filosofie en natuurfilosofie, het verschil tussen vage en duidelijke uitdrukkingen. Waar politieke filosofie gebaseerd is op variabele en vage definities in natuurlijke taal, is computerwetenschap gebaseerd op onveranderlijke en duidelijke proposities in wiskundige formules in plaats van natuurlijke taal.

Ook de richting wordt subtiel anders uitgedrukt. Computerwetenschap gaat ervan uit dat er een optimale oplossing kan bestaan. En in de politieke filosofie worden vage concepten besproken zoals een overtuigender argument, een beter onderbouwd argument, een ethischer argument. Maar naar mijn mening zijn de richtingen van beide vrijwel identiek. Uiteindelijk lijken ze te streven naar 'een betere volgende'. Computerwetenschap heeft weliswaar diverse gebieden, maar bijvoorbeeld op het gebied van mediacompressie, ook wel codecs genoemd, wordt gestreefd naar een betere compressieverhouding, compressieprestaties en licentiekosten.

Punten die vergelijkbaar lijken

Representatief gezien lijken programmeertalen en bestuursideologieën op een vergelijkbare manier van toepassing te zijn op de mens. Hoewel talen en ideologieën niet direct met elkaar overeenkomen, zal ik ze voor de grap opsommen.

  • C-taal (De ontwikkelaar weet wat hij doet): Ik zou dit willen vergelijken met het republicanisme. Het lijkt op de republiek die historisch gezien de basis vormde van westerse politieke systemen, en ik zie ook overeenkomsten met het communitarisme, dat de nadruk legt op het bewustzijn van individuele burgers en hun inspanningen om naar een beter ideaal te streven. Bovendien voelde ik een gelijkenis in het feit dat rechten gepaard gaan met verantwoordelijkheden.
  • Java (Schrijf eenmaal, voer overal uit): Ik weet het niet. Er is een sterke wet, en men leeft een gestandaardiseerd leven door zich daaraan te houden, maar het is stabiel en daarbinnen is er vrijheid. En als je Spring binnengaat, wachten er diverse voordelen op je. Zullen we het liberalisme noemen?
  • C# (Harmonie tussen ontwikkelaarproductiviteit en software engineering principes): Onder de vleugels van een sterke overheid is alles goed ontworpen, en binnen wat gepland is, kan de productiviteit en prestatie tot het uiterste worden gedreven. Een planeconomie past hier goed bij. Het is geen communisme, omdat de productiemiddelen zijn vrijgegeven en de producenten niet worden beperkt.
  • Go (Complexiteit weggooien, praktisch nut en efficiëntie omarmen): Er is niets vergelijkbaars. Geef alles weg, dus word een welvaartsstaat.
  • Rust (Veiligheid zonder prestatievermindering): De eigendom en levensduur van Rust worden beheerd door een strikte compiler als heerser. Dit komt overeen met het socialisme, omdat het de ongelijkheid en risico's voorkomt die voortvloeien uit de vrije economische activiteit van individuen, door de gemeenschap de productiemiddelen te laten beheren en plannen om een stabiel leven te garanderen, wat deels de vrijheid van het individu beperkt om de veiligheid en gelijkheid van het hele systeem na te streven.
  • JavaScript (Flexibiliteit en tolerantie, en overal aanwezig): Ik zou dit willen vergelijken met het kapitalisme. Bij deze taal bezitten individuen de productiemiddelen, en zelfs de faciliteiten zijn ruim aanwezig bij individuen. Hierdoor zijn er diverse industriële producten ontstaan, en door vrije concurrentie kon iedereen winst nastreven. Echter, een ongereguleerde markt stortte al snel in chaos.
  • TypeScript (Uitbreidend JavaScript): Natuurlijk is dit het gereguleerde kapitalisme. Het vertrouwen in het kapitalisme is geschonden, en om de instabiliteit van de markt aan te pakken, grijpt de overheid tot op zekere hoogte in. De oorspronkelijke volledige vrijheid is relatief achteruitgegaan, maar iedereen kan nog steeds vrijelijk de markt betreden en concurreren.

En verrassend veel ontwikkelaars vechten veel met talen, alsof ze in de realiteit een ideologische oorlog voeren. De taal zelf is een ideologie die ontwikkelaars bekend is, en een ideaal dat nagestreefd moet worden.

Natie en architectuur

  • Monolitische architectuur en gecentraliseerde staat: Alles is opgenomen in één gigantische codebase en één binair bestand. Dit heeft een vergelijkbare structuur als een eenheidsstaat met een krachtige centrale overheid of een absolute monarchie. Alle functies van de staat worden gecontroleerd door één machtssysteem.
    • Het voordeel is dat het de eenvoudigste manier is om een staatsvorm aan te nemen en dat beslissingen snel worden genomen. Dit is in lijn met het voordeel dat de gehele software snel wordt opgeleverd. Aangezien alle middelen en informatie op één plek zijn geconcentreerd, is het beheer duidelijk.
    • Echter, naarmate de staat groter wordt, wordt het moeilijker om op veranderingen te reageren, en zelfs om een kleine wet of regel te wijzigen, moet het geheel worden beoordeeld en toegepast. Er is ook het risico dat een probleem in één gebied de hele staat lamlegt. Monolitische systemen zijn ook moeilijk aan te passen aan veranderingen vanwege de grote codebase en de onderling verbonden code, en zelfs een wijziging van één regel code vereist een inschatting van de impact, en een probleem in één module kan gemakkelijk het hele systeem beïnvloeden.
  • MSA en federale staat: Elke functie van het systeem is gescheiden in onafhankelijke services. Dit heeft overeenkomsten met een federale staat waar elk deel van het land bestaat uit verschillende onafhankelijke staten. Bovendien hebben elke service en staat een onafhankelijke infrastructuur. De inmenging van de centrale overheid is losjes, en het is ook vergelijkbaar dat men nooit weet wanneer onafhankelijkheid en toetreding zullen plaatsvinden.
    • In principe kunnen elke onafhankelijke staat en service onafhankelijk wetten wijzigen/code schrijven. Hierdoor hoeven ze hun tempo niet op elkaar af te stemmen. Bovendien, zelfs als er ergens een probleem optreedt, is het moeilijk om de hele federatie lam te leggen. En het is mogelijk om geschikte systemen (technologieën) te kiezen, afhankelijk van de regio of het gebied.
    • Echter, het bereiken van wederzijdse overeenstemming of het creëren van communicatiekanalen is moeilijk. Het kan ook verwarring veroorzaken omdat het moeilijk is om een consistent beleid te voeren.
  • EDA (Event-Driven Architecture) en de burgermaatschappij: In plaats van dat de centrale overheid of vertegenwoordigers direct bevelen geven, pakken individuen proactief en autonoom sociale problemen aan die zich voordoen en lossen ze op. Dit is vergelijkbaar met het kenmerk van EDA, waarbij wanneer een gebeurtenis plaatsvindt, iemand van de abonnees deze autonoom oppakt en verwerkt.
    • Iedereen kan gemakkelijk deelnemen. Ook bij EDA kan een nieuwe service gemakkelijk een nieuwe abonnee worden en deelnemen aan het proces.
    • Het nadeel is echter dat de algehele stroom niet kan worden begrepen. Het is moeilijk om te traceren wie wat heeft verwerkt en hoe, en het is onmogelijk te weten welke ketenreactie één gebeurtenis zal veroorzaken.
  • Gelaagde architectuur en feodalisme: Feodalisme is een structuur waarin elk niveau zijn toegewezen rol en verantwoordelijkheden vervult en verplichtingen jegens hogere niveaus nakomt. Ze zijn verbonden door een soort contractuele relatie en vormen een strikte verticale hiërarchie, wat overeenkomsten vertoont met een gelaagde architectuur.

Hoewel er meer analogieën mogelijk zijn, ligt de kern van dit artikel niet zozeer in de structuur zelf als wel in het proces van het creëren van die structuur.

Is probleemoplossing in ontwikkeling en politiek hetzelfde?

Als softwarearchitectuur en staatsstructuur op elkaar lijken, dan vertoont het proces van hun totstandkoming ook een opmerkelijke parallel. Het softwareontwikkelingsproces is in feite niets anders dan een politieke daad van het opbouwen en ontwikkelen van een nieuwe orde in de digitale ruimte.

  1. Publicatie van sociale problemen en vereistenanalyse: Alles begint met de vraag "Wat is het probleem?". Net zoals het lijden en ongemak van de burgermaatschappij openbaar worden gemaakt en een politieke kwestie worden, zo worden het ongemak en de eisen van de gebruiker na analyse de eerste mijlpaal van ontwikkeling, de 'vereisten specificatie'.
  2. Grondwetsontwerp en architectuurontwerp: Welk land willen we bouwen? Welk systeem willen we creëren? Net zoals politici op basis van ideologie en filosofie de structuur van een grondwet en wetten opzetten, tekent een architect op basis van technische overtuigingen de blauwdruk van de architectuur die de basis zal vormen van het systeem. De beslissingen in deze fase bepalen het lot van het systeem.
  3. Beleidsuitvoering en software-implementatie: Zodra het ontwerp is voltooid, schrijven ontwikkelaars de daadwerkelijke code en voeren overheidsfunctionarissen het beleid uit volgens de wet. Het is het proces waarbij abstracte plannen een concrete realiteit worden die in de echte wereld functioneert.
  4. Oordeel via verkiezingen en softwaretests: Het beleid wordt via verkiezingen en de publieke opinie op zijn legitimiteit beoordeeld. Software wordt op zijn waarde getest via tests door het QA-team en feedback van gebruikers. Beide kunnen uiteindelijk alleen overleven met instemming van de soeverein (burgers, gebruikers).
  5. Institutionele hervorming en systeembeheer: Eenmaal gemaakte wetten en systemen zijn niet eeuwig. Net zoals oude wetten worden herzien en instellingen worden hervormd om zich aan te passen aan veranderingen in de tijd, zo wordt software, als het stopt met 'refactoring' om zich aan te passen aan veranderende omgevingen en interne inefficiënties te verbeteren, een dode code.

Dit hele proces, van probleemdefinitie tot ontwerp, implementatie, validatie en constante verbetering, toont aan dat de twee werelden dezelfde ademhaling van probleemoplossing delen.

De dag van de nieuwe wetgevers

De informatiemaatschappij heeft de afstand tussen de hoogtepunten van die twee filosofieën betekenisloos gemaakt. Code is niet langer een eenvoudig logisch circuit, maar een 'wet (Code is Law)' die relaties tussen mensen reguleert, macht verdeelt en sociale waarden realiseert. Als de architectuur die we ontwerpen lijkt op de bestuursstructuur van een land, en het ontwikkelingsproces dat we volgen lijkt op het politieke consensusproces, wie zijn wij dan als ontwikkelaars? En wat moeten politici doen? Daarom moeten ontwikkelaars nu niet alleen nadenken over de logica van de code, maar ook over de samenleving die die code zal creëren, en politici moeten niet alleen de logica van de stemmen begrijpen, maar ook de logica van de technologie die de wereld beweegt. Want aan deze enorme macht die we in onze respectievelijke werelden uitoefenen, kleeft een even grote ethische verantwoordelijkheid.