GoSuda

Polityka a Komputery

By snowmerak
views ...

Czym jest filozofia

Czym według Państwa jest filozofia? Słownikowa definicja określa ją jako „działalność polegającą na myśleniu i poszukiwaniu odpowiedzi na fundamentalne pytania dotyczące życia i świata”. Można również podać definicję behawioralną, zgodnie z którą nie jest to rozwiązywanie problemów z ustalonymi odpowiedziami, lecz rozszerzanie myślenia poprzez ciąg pytań, a nawet pytań wiodących, oraz dzielenie się tymi odpowiedziami.

W przeszłości, będąc na studiach licencjackich, uczęszczałem na zajęcia związane z filozofią polityczną. Pamiętam, że podczas mojej prezentacji profesor powiedział coś w rodzaju: „Filozofia polityczna i inżynieria komputerowa to dyscypliny znajdujące się na szczycie różnych filozofii”. Nie były to dokładnie te słowa i zdanie, ale ogólny sens był taki.

Inżynieria komputerowa

Uważam, że inżynieria komputerowa to „fundamentalne badanie mające na celu rozwiązywanie problemów logicznych”. Z tego powodu, w zależności od osoby analizującej problem, może pojawić się wiele różnych odpowiedzi. Najlepszym przykładem jest sortowanie. Nawet w badaniu metod sortowania uporządkowanych danych istnieje wiele podejść, takich jak bąbelkowe, przez wstawianie, przez wybór, przez scalanie, szybkie, przez kopcowanie, TimSort itd. A poprzez ich podział mogą powstać lepsze algorytmy.

Ponadto, patrząc na to lokalnie, można powiedzieć, że jest to „tworzenie i udowadnianie”. W przypadku sortowania, o którym wspomniałem, ciągle tworzymy sposoby sortowania i udowadniamy wyniki. Dla programistów dobrym, bliższym przykładem jest to, że po opracowaniu planu projektu, realizuje się go i udowadnia, że działa poprawnie.

Filozofia polityczna

Uważam, że filozofia polityczna to „fundamentalne badanie mające na celu rozwiązywanie problemów społecznych”. W każdej epoce wielokrotnie zadaje się pytania dotyczące już istniejących problemów, formułuje odpowiedzi i dzieli się nimi w teraźniejszości i przyszłości. Zajmuje się ona głównie abstrakcyjnymi wartościami, takimi jak sprawiedliwość, wolność, równość i władza, które są różnie interpretowane w zależności od epoki i kultury, i charakteryzuje się brakiem jasno określonych granic między dobrem a złem, poprawnymi i błędnymi odpowiedziami.

Ponadto, podobnie jak w inżynierii komputerowej, patrząc na to lokalnie, można to postrzegać jako „pytanie i refleksję”. Nieustannie zadaje się pytania dotyczące powstałych problemów, zastanawia się, dlaczego tak się stało, jakie są lepsze kierunki, i formułuje odpowiedzi. W tym przypadku również pojawia się wiele odpowiedzi, proporcjonalnie do liczby myślących osób.

Dlaczego powinniśmy znać politykę/komputery?

Relacja wzajemnego wywoływania

Oba światy wydają się badać różne obszary, ale w rzeczywistości dzielą wiele podobieństw i mają wiele punktów, w których są wzajemnie przyczyną i skutkiem.

Podam jeden przykład.

  1. Jeśli dane zdrowotne jednostki zostaną bezpiecznie zapisane w chmurze, szpitale będą miały do nich szybki dostęp, gdy zajdzie taka potrzeba. ⇒ Dzięki programowaniu, z wykorzystaniem funkcji każdej dziedziny, można to zaimplementować w sposób bezpieczny i łatwo dostępny.
  2. W takim razie, czyje są te dane? Moje? Osoby, która je zarejestrowała? Czy może podmiotu zarządzającego? Dewelopera? Państwa? W takim razie, jak daleko mogą oni wglądać w moje dane? Jaką mam gwarancję, że moje dane osobowe są chronione i w jakim zakresie? ⇒ Wówczas nastąpi polityczna dyskusja na temat stanowisk i różnic w interesach różnych społeczności i poszczególnych osób.
  3. Następnie, od czasu do czasu, będą powtarzać się polityczne dyskusje oraz programistyczne projektowanie i implementacja, idące w parze.

W ten sposób inżynieria komputerowa jest wykorzystywana do rozwiązywania istniejących problemów społecznych, a następnie, aby rozpoznać i rozwiązać problemy, które z niej wynikły, zadaje się pytania i wykorzystuje filozofię polityczną do rozwiązania kolejnych problemów. W dzisiejszym społeczeństwie informacyjnym jest to zjawisko naturalne.

Czy polityka i komputery są do siebie podobne?

Różnice

Oba światy ewoluowały w podobny sposób. Jednak ich podstawa, podobnie jak w przypadku relacji między filozofią społeczną a filozofią przyrody, charakteryzuje się różnicą między wyrażeniami niejednoznacznymi a wyraźnymi. Podczas gdy filozofia polityczna opiera się na zmiennych i niejednoznacznych definicjach sformułowanych w języku naturalnym, inżynieria komputerowa opiera się na niezmiennych i wyraźnych tezach sformułowanych w języku matematycznym, a nie w języku naturalnym.

Ponadto, kierunek jest również subtelnie różnie wyrażany. Inżynieria komputerowa zakłada istnienie optymalnego rozwiązania. Natomiast filozofia polityczna mówi o niejednoznacznych pojęciach, takich jak bardziej przekonujące argumenty, lepiej uzasadnione argumenty, czy bardziej etyczne argumenty. Jednak moim zdaniem oba kierunki są niemal identyczne. Ostatecznie wydaje się, że dążą do „lepszego następnego” etapu. Nawet jeśli inżynieria komputerowa ma wiele dziedzin, to na przykład w przypadku kompresji mediów, zwanej kodekami, dąży się do osiągnięcia lepszej kompresji, wydajności kompresji i niższych kosztów licencyjnych.

Podobieństwa

W sposób reprezentatywny języki programowania i ideologie polityczne wydają się podobnie oddziaływać na ludzi. Chociaż nie można bezpośrednio przyporządkować każdego języka do ideologii, spróbuję je zabawnie wymienić.

  • C (programista wie, co robi): Chciałbym to porównać do republikanizmu. Historycznie jest to podobne do republik, które były podstawą zachodnich systemów politycznych, a także do komunitaryzmu, który ceni świadomość poszczególnych obywateli i ich wysiłki w dążeniu do lepszych ideałów. Czułem również podobieństwo w tym, że z prawami wiążą się obowiązki.
  • Java (napisz raz, uruchom wszędzie): Nie wiem. Istnieje silne prawo, którego się przestrzega, żyje się zuniformizowanym życiem, ale jest ono stabilne, a w jego ramach panuje wolność. A kiedy wchodzisz w Spring, czekają na Ciebie różne korzyści. Może liberalizm?
  • C# (połączenie produktywności programistów i zasad inżynierii oprogramowania): Pod opieką silnego rządu wszystko jest dobrze zaprojektowane, a w ramach tego planu można maksymalnie zwiększyć produktywność i wydajność. Pasuje do gospodarki planowej. Nie jest to komunizm, ponieważ środki produkcji zostały udostępnione, a producenci nie są ograniczeni.
  • Go (porzuć złożoność, przyjmij pragmatyzm i wydajność): Nie ma nic podobnego. Wszystko jest rozdawane, więc wybierz państwo opiekuńcze.
  • Rust (bezpieczeństwo bez spadku wydajności): Własność i czas życia w Rust są zarządzane przez surowego kompilatora, który jest jak władca. Uważam to za socjalizm, ponieważ wspólnota zarządza środkami produkcji i planuje, aby zapewnić stabilne życie, aby zapobiec nierównościom i zagrożeniom wynikającym z wolnej działalności gospodarczej jednostek. Ogranicza to częściowo wolność jednostki, dążąc do bezpieczeństwa i równości całego systemu.
  • JavaScript (elastyczność i tolerancja, i obecność wszędzie): Chciałbym to porównać do kapitalizmu. W tym języku jednostki posiadają środki produkcji, a nawet sprzęt jest obficie dostępny dla jednostek. Dzięki temu powstało wiele produktów przemysłowych, a poprzez wolną konkurencję każdy mógł dążyć do zysku. Jednak rynek bez regulacji wkrótce pogrążył się w chaosie.
  • TypeScript (rozszerzenie JavaScript): Oczywiście jest to kapitalizm zreformowany. Wiara w kapitalizm została zachwiana, a rząd w pewnym stopniu interweniuje, aby przezwyciężyć niestabilność rynku. Dotychczasowa pełna swoboda nieco się cofnęła, ale nadal każdy swobodnie wchodzi na rynek i konkuruje.

I co ciekawe, niemało programistów kłóci się o języki, tak jakby toczyły wojny ideologiczne w rzeczywistości. Sam język jest dla programistów znajomą ideologią i ideałem, do którego należy dążyć.

Państwo a architektura

  • Architektura monolityczna i państwo scentralizowane: Wszystko jest zawarte w jednej ogromnej bazie kodu i jednym pliku wykonywalnym. Jest to podobne do struktury scentralizowanego państwa z silnym rządem centralnym lub monarchii absolutnej. Wszystkie funkcje państwa są kontrolowane przez jeden system władzy.
    • Zaletą jest to, że najłatwiej jest uformować państwo i szybko podejmować decyzje. Jest to analogiczne do zalety szybkiego powstawania całego oprogramowania. Wszystkie zasoby i informacje są skoncentrowane w jednym miejscu, co ułatwia zarządzanie.
    • Jednak im większe państwo, tym trudniej reagować na zmiany, a nawet niewielka zmiana prawa czy systemu wymaga przeglądu i zastosowania w całym kraju. Problem w jednej dziedzinie może sparaliżować całe państwo. Monolity również mają trudności z reagowaniem na zmiany ze względu na dużą bazę kodu i powiązany kod, a zmiana jednej linii kodu wymaga oszacowania zakresu wpływu, a problem w jednym module łatwo wpływa na cały system.
  • Architektura mikroserwisów (MSA) i państwo federalne: Każda funkcja systemu jest podzielona na niezależne usługi. Jest to podobne do państwa federalnego, w którym każda część kraju składa się z wielu niezależnych stanów. Ponadto każda usługa i stan mają niezależną infrastrukturę. Interwencja rządu centralnego jest luźna, a podobieństwo polega również na tym, że nie wiadomo, kiedy nastąpi secesja lub przystąpienie.
    • Zasadniczo każdy niezależny stan i usługa mogą niezależnie zmieniać prawo/pisać kod. Dzięki temu nie muszą dopasowywać się do siebie. Ponadto, nawet jeśli pojawi się problem w jednym miejscu, trudno jest sparaliżować całą federację. Można również wybrać odpowiednie systemy (technologie) w zależności od regionu czy dziedziny.
    • Jednak uzgadnianie i tworzenie kanałów komunikacji jest trudne. Może to również prowadzić do zamieszania, ponieważ trudno jest prowadzić spójną politykę.
  • Architektura sterowana zdarzeniami (EDA) i społeczeństwo obywatelskie: Zamiast rządu centralnego lub przedstawiciela bezpośrednio wydającego polecenia, jednostki aktywnie i autonomicznie zajmują się rozwiązywaniem powstałych problemów społecznych. Jest to podobne do cechy EDA, gdzie po wystąpieniu zdarzenia, ktoś z subskrybentów autonomicznie zajmuje się jego przetworzeniem.
    • Każdy może łatwo wziąć udział. EDA również umożliwia nowym usługom łatwe stawanie się nowymi subskrybentami i uczestniczenie w procesie.
    • Jednak wadą jest brak możliwości zrozumienia całego przepływu. Trudno jest śledzić, kto i jak przetworzył zdarzenie, i nie wiadomo, jakie reakcje łańcuchowe wywoła jedno zdarzenie.
  • Architektura warstwowa i feudalizm: Feudalizm to struktura, w której każda warstwa wypełnia swoje przypisane role i obowiązki, wypełniając zobowiązania wobec wyższych warstw. Są one połączone pewnym rodzajem stosunku umownego i tworzą ścisłą hierarchiczną strukturę dominacji, co upodabnia je do architektury warstwowej.

W ten sposób możliwe są liczne dalsze analogie, ale sednem tego artykułu jest proces tworzenia struktury, a nie sama struktura.

Czy rozwiązywanie problemów w rozwoju i polityce jest takie samo?

Jeśli architektura oprogramowania i systemy państwowe są podobne, to proces ich tworzenia również wykazuje zadziwiające podobieństwa. Proces tworzenia oprogramowania jest w rzeczywistości aktem politycznym, polegającym na budowaniu i rozwijaniu nowego porządku w przestrzeni cyfrowej.

  1. Upublicznienie problemów społecznych i analiza wymagań: Wszystko zaczyna się od pytania: „Co jest problemem?”. Podobnie jak ból i niedogodności społeczeństwa obywatelskiego stają się publiczne i stają się agendą polityczną, tak i niedogodności i potrzeby użytkowników, po analizie, stają się pierwszym kamieniem milowym rozwoju – „specyfikacją wymagań”.
  2. Projektowanie konstytucji i architektura: Jakie państwo zbudować? Jaki system zbudować? Tak jak politycy, opierając się na ideologiach i filozofii, tworzą szkielet konstytucji i prawa, tak architekci, opierając się na przekonaniach technicznych, rysują plan architektury, która będzie podstawą systemu. Decyzje podjęte na tym etapie decydują o losach systemu.
  3. Wdrażanie polityki i implementacja oprogramowania: Po zakończeniu projektowania, programiści piszą rzeczywisty kod, a urzędnicy wdrażają politykę zgodnie z prawem. Jest to proces, w którym abstrakcyjny plan staje się konkretną rzeczywistością działającą w świecie rzeczywistym.
  4. Ocena poprzez wybory i testowanie oprogramowania: Polityka jest oceniana pod kątem swojej słuszności poprzez wybory i opinię publiczną. Oprogramowanie jest weryfikowane pod kątem swojej wartości poprzez testy zespołu QA i opinie użytkowników. Oba ostatecznie muszą uzyskać zgodę suwerena (obywateli, użytkowników), aby przetrwać.
  5. Reforma instytucjonalna i utrzymanie systemu: Raz stworzone prawo i system nie są wieczne. Tak jak stare prawa są zmieniane i instytucje reformowane w odpowiedzi na zmieniające się czasy, tak i oprogramowanie, w momencie gdy przestaje się „refaktorować”, czyli dostosowywać do zmieniającego się środowiska i poprawiać wewnętrzną nieefektywność, staje się martwym kodem.

W ten sposób cały proces, od zdefiniowania problemu, przez projektowanie, implementację, weryfikację, aż po nieustanne doskonalenie, pokazuje, że oba światy dzielą ten sam rytm rozwiązywania problemów.

Dzień Nowych Legislatorów

Społeczeństwo informacyjne sprawiło, że odległość między tymi dwoma szczytami filozofii stała się bez znaczenia. Kod nie jest już prostym obwodem logicznym, lecz „prawem (Code is Law)”, które reguluje relacje międzyludzkie, rozdziela władzę i realizuje wartości społeczne. Jeśli architektura, którą projektujemy, przypomina strukturę rządzenia państwem, a proces rozwoju, którego przestrzegamy, jest podobny do procesu politycznego konsensusu, to kim właściwie jesteśmy, my, programiści? I co powinni robić politycy? Dlatego programista musi teraz zastanawiać się nie tylko nad logiką kodu, ale także nad społeczeństwem, które ten kod tworzy, a polityk musi rozumieć nie tylko logikę głosów, ale także logikę technologii, która porusza świat. Dzieje się tak, ponieważ ta ogromna władza, którą sprawujemy w naszych światach, wiąże się z taką samą odpowiedzialnością etyczną.