GoSuda

Politiikka ja tietokoneet

By snowmerak views ...

Mitä filosofia on

Mitä sinä ajattelet filosofian olevan? Sanakirjan mukaan se on toiminta, jossa pohditaan maailman ja elämän perustavia kysymyksiä sekä etsitään niihin vastauksia. Voidaan myös esittää toiminnallinen määritelmä: filosofia ei ole valmiiksi määrättyjen ongelmien ratkaisemista, vaan ajattelun laajentamista samojen tai toisiinsa kytkeytyvien kysymysten jatkuvan sarjan kautta ja näiden vastausten jakamista.

Aiemmin, kandidaatintutkinnon suorittamisen aikana, suoritin kurssin, joka liittyi poliittiseen filosofiaan. Muistan, että esittäytymistilaisuudessani professori sanoi jotain sellaista kuin poliittinen filosofia ja tietojenkäsittelytiede ovat eri filosofioiden huipulla sijaitsevia tieteenaloja. Tarkalleen ottaen nämä sanat ja tämä lause eivät olleet juuri nämä, mutta merkitys oli suunnilleen sama.

Tietojenkäsittelytiede

Minun mielestäni tietojenkäsittelytiede on perustavaa tutkimusta loogisten ongelmien ratkaisemiseksi. Siksi jokainen ongelmaa pohtiva ihminen voi päätyä moniin eri vastauksiin. Tyypillisin esimerkki on lajittelu. Samaa järjestämätöntä tietojoukkoa voi lajitella monin eri tavoin, ja lajittelumenetelmien tutkimuksessa on olemassa monia vaihtoehtoja: kupla-, lisäys-, valinta-, yhdistämis-, pikka-, kasa- ja tim-lajittelu. Jakamalla ongelmaa edelleen voidaan löytää parempia algoritmeja.

Paikallisemmasta näkökulmasta tietojenkäsittelytiedettä voidaan myös kuvata sanoin rakentaminen ja todistaminen. Juuri edellä mainittu lajittelukin rakennetaan jatkuvasti sen mukaan, miten lajittelu toteutetaan, ja tulos todistetaan. Ohjelmistokehittäjille lähin esimerkki on seuraava: kun projektisuunnitelma annetaan, se toteutetaan, ja toteutuksen toimivuus osoitetaan.

Poliittinen filosofia

Minun mielestäni poliittinen filosofia on perustavaa tutkimusta yhteiskunnallisten ongelmien ratkaisemiseksi. Se tarkastelee uudelleen eri aikakausina olemassa olevia ongelmia, tuottaa niihin vastauksia ja jakaa ne nykyisyydelle ja tulevaisuudelle. Se käsittelee ensisijaisesti abstrakteja arvoja, kuten oikeudenmukaisuutta, vapautta, tasa-arvoa ja valtaa, joita tulkitaan eri tavoin aikakauden ja kulttuurin mukaan. Selkeitä hyvän ja pahan rajoja tai oikeita ja vääriä vastauksia ei ole määritelty, ja juuri tämä määrittelemättömyys on sen ominaispiirre.

Paikallisemmasta näkökulmasta poliittista filosofiaa voidaan tarkastella kuten tietojenkäsittelytiedettä, ja sitä voidaan kuvata sanoin kysymistä ja reflektointia. Syntyneitä ongelmia kysytään jatkuvasti: miksi asiat ovat näin, mikä olisi parempi suunta ja mitä vaihtoehtoja on. Reflektoinnin kautta syntyy vastauksia. Myös tässä vastauksia syntyy sitä enemmän, mitä enemmän on ajattelevia ihmisiä.

Miksi meidän pitäisi tuntea sekä politiikka että tietojenkäsittelytiede

Keskinäisen kutsumisen suhde

Kaksi maailmaa näyttävät tutkivan eri alueita, mutta todellisuudessa niillä on paljon yhteisiä piirteitä, ja ne ovat monin tavoin toistensa syitä ja seurauksia.

Esitän yhden esimerkin.

  1. Jos henkilön terveystiedot tallennetaan turvallisesti pilveen, eri sairaalat voivat päästä niihin nopeasti tarvittaessa ⇒ ohjelmoinnilla toteutetaan turvallinen ja helposti saavutettava järjestelmä, joka hyödyntää eri alojen toimintoja.
  2. Kenelle tieto sitten kuuluu? Minulle? Rekisteröivälle vastuuhenkilölle? Vai hankkeen järjestäjälle, kehitysyhtiölle tai valtiolle? Kuinka pitkälle nämä tahot voivat nähdä tietoni? Miten pitkälle ja millä tavoin voin saada takeet henkilötietojeni suojasta? ⇒ Eri yhteisöjen ja yksittäisten ihmisten näkemysten ja etujen välisistä eroista käydään poliittista keskustelua.
  3. Tämän jälkeen poliittinen keskustelu ja ohjelmointiin liittyvä suunnittelu ja toteutus seuraavat toisiaan ajoittain toistuvasti.

Näin tietojenkäsittelytiedettä käytetään ratkaisemaan olemassa olevia yhteiskunnallisia ongelmia, ja sen synnyttämiä ongelmia havaitaan ja ratkaistaan poliittisen filosofian avulla: kysymyksiä esitetään, jotta seuraava ongelma voidaan ratkaista. Tietoyhteiskunnassa nykyajassa tämä on luonnollinen ilmiö.

Ovatko politiikka ja tietokone samankaltaisia

Piirteet, joissa ne eivät näytä samankaltaisilta

Myös nämä kaksi maailmaa ovat kehittyneet samankaltaisiin muotoihin. Niiden perusta on kuitenkin erilainen, samoin kuin yhteiskuntafilosofian ja luonnonfilosofian suhteessa: toinen on epämääräinen, toinen täsmällinen. Poliittinen filosofia perustuu luonnolliselle kielelle rakennettuihin muuttuviin ja epämääräisiin määritelmiin, kun taas tietojenkäsittelytiede perustuu luonnollisen kielen sijaan kaavoihin rakennettuihin muuttumattomiin ja selkeisiin väitteisiin.

Ne myös ilmaisevat suuntaansa hieman eri tavoin. Tietojenkäsittelytiede olettaa, että optimaalinen ratkaisu voi olla olemassa. Poliittisessa filosofiassa puhutaan taas epämääräisistä käsitteistä, kuten vakuuttavammasta, paremmin perustellusta tai eettisemmästä väitteestä. Minun mielestäni molempien suunta on kuitenkin lähes sama. Lopulta molemmat näyttävät pyrkivän parempaan seuraavaan. Esimerkiksi tietojenkäsittelytieteessäkin on monia aloja, mutta tyypillinen esimerkki on mediapakkaus, jota kutsutaan koodekiksi. Siinä pyritään parempaan pakkaustasoon, pakkauksen suorituskykyyn ja lisenssikustannuksiin.

Jotain samankaltaista

Ohjelmointikielet ja hallintoideologiat ovat selvä esimerkki siitä, että ne näyttävät soveltuvan ihmiseen samankaltaisella tavalla. Kieliä ja ideologioita ei voi asettaa vastaamaan toisiaan, mutta esitän ne huvin vuoksi.

  • C-kieli (kehittäjä tietää, mitä tekee): Haluaisin verrata sitä tasavaltalaisuuteen. Historiallisesti se vastaa länsimaisen poliittisen järjestelmän perustaa, eli tasavaltaa, ja se muistuttaa yhteisöllisyyttä, joka korostaa kansalaisten omaa tietoisuutta ja yksilöiden pyrkimystä kohti parempaa ihannetta. Lisäksi tuntuu siltä, että oikeuksiin liittyy vastuu.
  • Java (kirjoita kerran, aja missä tahansa): En osaa sanoa. On vahva laki, jota noudattaen eletään yhdenmukaista elämää, mutta se on vakaa, ja sen sisällä on vapautta. Lisäksi kun siirrytään Springiin, monet hyvinvointipalvelut odottavat teitä. Valitaanko liberalismi?
  • C# (kehittäjien tuottavuuden ja ohjelmistotekniikan periaatteiden sopusointu): Kaikki on hyvin suunniteltua vahvan valtion suojeluksessa, ja suunnitelman puitteissa tuottavuutta ja suorituskykyä voidaan viedä äärimmilleen. Suunnitelmatalous sopii tähän. Se ei ole kommunismia, koska tuotantovälineet on vapautettu eikä tuottajia rajoiteta.
  • Go (hylkää monimutkaisuus, valitse käytännöllisyys ja tehokkuus): Vastaavaa ei ole. Kaikki jaetaan anteliaasti, joten kannattaa ottaa hyvinvointivaltio.
  • Rust (turvallisuus ilman suorituskyvyn heikkenemistä): Rustin omistajuutta ja elinikää hallitsee tiukka kääntäjä, joka toimii hallitsijana. Tämä näyttää minusta sosialismilta: yhteisö hallinnoi ja suunnittelee tuotantovälineitä yksilöiden vapaan taloudellisen toiminnan aiheuttaman eriarvoisuuden ja riskien estämiseksi, ja näin taataan vakaa elämä. Se rajoittaa osittain yksilön vapautta, jotta koko järjestelmän turvallisuus ja tasa-arvo voidaan saavuttaa.
  • JavaScript (joustavuus, sietokyky ja se, että se on kaikkialla): Haluaisin verrata sitä kapitalismiin. Tässä kielessä tuotantovälineet ovat yksittäisten ihmisten hallussa, ja jopa laitteistoa on heillä runsaasti. Tämän ansiosta syntyy monenlaisia teollisuustuotteita, ja vapaan kilpailun kautta jokainen voi tavoitella voittoa. Ilman sääntelyä markkinat joutuivat kuitenkin pian kaaokseen.
  • TypeScript (laajennettu JavaScript): Tietenkin se on sekatalous. Kapitalismin usko murtuu, ja markkinoiden epävakauden torjumiseksi valtio puuttuu jonkin verran asioihin. Täydellinen vapaus on jonkin verran heikentynyt, mutta edelleen jokainen voi vapaasti astua markkinoille ja kilpailla.

Lisäksi aika moni kehittäjä kiistelee kielistä paljon, aivan kuin käytäisiin todellista ideologista sotaa. Kieli itsessään on kehittäjille tuttu ideologia ja tavoiteltava ihanne.

Valtio ja arkkitehtuuri

  • Monoliittinen arkkitehtuuri ja keskitetty valtio: Kaikki sisältyy yhteen suureen koodikantaan ja yhteen binääriin. Tämä muistuttaa rakenteeltaan vahvaa keskushallintoa omaavaa yhtenäisvaltiota tai absoluuttista monarkiaa. Valtion kaikki toiminnot ohjataan yhden valtajärjestelmän kautta.
    • Valtion muodostaminen on helpointa, ja päätöksenteko on nopeaa. Tämä kuuluu samaan yhteyteen kuin koko ohjelmiston nopea valmistuminen. Kaikki resurssit ja tieto ovat keskitetty yhteen paikkaan, joten hallinta on selkeää.
    • Kun valtio kasvaa, sen on kuitenkin vaikeampi reagoida muutoksiin, ja pienenkin lain tai järjestelmän muuttaminen edellyttää koko järjestelmän tarkastelua ja soveltamista. Yhden alan ongelma voi halvaannuttaa koko valtion. Myös monoliitti on vaikea muuttaa, koska suuri koodikanta ja toisiinsa kietoutunut koodi tekevät muutoksiin reagoimisen vaikeaksi. Jo yhden koodirivin muuttaminen edellyttää vaikutusalueen arviointia, ja yhden moduulin ongelma vaikuttaa helposti koko järjestelmään.
  • MSA ja liittovaltio: Järjestelmän jokainen toiminto erotetaan itsenäiseksi palveluksi. Tämä muistuttaa valtion rakennetta, jossa valtio koostuu useista itsenäisistä osavaltioista, eli liittovaltiosta. Lisäksi jokaisella palvelulla ja osavaltiolla on itsenäinen infrastruktuuri. Keskushallinnon puuttuminen on löyhää, ja on samankaltaista, ettei tiedetä, milloin itsenäistymisiä tai liittymisiä tapahtuu.
    • Jokainen itsenäinen osavaltio ja palvelu voi lähtökohtaisesti muuttaa lakejaan tai kirjoittaa koodia itsenäisesti. Siksi niiden ei tarvitse sovittaa tahtiaan toisiinsa. Jos ongelma syntyy yhdessä paikassa, koko liittovaltion halvaantuminen on epätodennäköistä. Lisäksi voidaan valita kuhunkin alueeseen tai alaan sopiva järjestelmä (teknologia).
    • Keskinäisen sopimuksen aikaansaaminen tai viestintäkanavien rakentaminen on kuitenkin vaikeaa. Yhdenmukaisen politiikan toteuttaminen on vaikeaa, ja se voi aiheuttaa sekaannusta.
  • EDA (Event Driven Architecture) ja kansalaisyhteiskunta: Keskushallinto tai edustaja ei anna suoria käskyjä, vaan yksittäiset ihmiset tarttuvat itsenäisesti ja omasta aloitteestaan syntyneisiin yhteiskunnallisiin ongelmiin ja ratkaisevat ne. Tämä muistuttaa EDA:n piirrettä, jossa tapahtuman sattuessa jokin tilaajista ottaa sen omaehtoisesti käsiteltäväkseen.
    • Kuka tahansa voi osallistua helposti. Myös EDA:ssa uusi palvelu voi helposti liittyä prosessiin uutena tilaajana.
    • Haittapuolena on kuitenkin se, ettei kokonaisuutta voi hahmottaa. On vaikeaa jäljittää, kuka käsitteli asian ja miten, eikä voida tietää, minkä ketjureaktion yksi tapahtuma voi aiheuttaa.
  • Kerrosarkkitehtuuri ja feodalismi: Feodalismi on rakenne, jossa jokainen toimii oman kerroksensa tehtävien ja vastuiden mukaisesti ja täyttää velvollisuutensa ylempää kerrosta kohtaan. Ne solmitaan eräänlaisina sopimussuhteina, ja ne muodostavat tiukan pystysuoran herruussuhteen. Tässä mielessä niissä on löydettävissä yhtäläisyyksiä kerrosarkkitehtuuriin.

Näin voisi esittää vielä monia vertauksia, mutta tämän tekstin ydin ei ole rakenteissa itsessään, vaan siinä prosessissa, jolla näitä rakenteita luodaan.

Ovatko ohjelmistokehityksen ja politiikan ongelmanratkaisut samoja?

Jos ohjelmistoarkkitehtuuri ja valtiojärjestelmä ovat samankaltaisia, myös niiden rakentamisen prosessit kulkevat hämmästyttävän rinnakkain. Ohjelmiston kehittäminen ei käytännössä eroa poliittisesta toiminnasta, jossa luodaan ja kehitetään uutta järjestystä digitaaliseen tilaan.

  1. Yhteiskunnallisten ongelmien julkinen käsittely ja vaatimusanalyysi: Kaikki alkaa kysymyksestä "mikä on ongelma?". Kuten kansalaisyhteiskunnan kärsimykset ja epämukavuudet tulevat julkisiksi ja muuttuvat poliittisiksi asialistoiksi, myös käyttäjän epämukavuus ja vaatimukset analysoidaan, ja ne muodostavat kehityksen ensimmäisen virstanpylvään, eli vaatimusmäärittelyn.
  2. Perustuslain suunnittelu ja arkkitehtuurin suunnittelu: Minkälainen valtio halutaan rakentaa? Minkälainen järjestelmä halutaan luoda? Kuten poliitikot luovat perustuslain ja lakien rungon ideologioidensa ja filosofiansa pohjalta, arkkitehti piirtää teknisen vakaumuksensa pohjalta järjestelmän perustana olevan arkkitehtuurin suunnitelman. Tämän vaiheen ratkaisut määräävät järjestelmän kohtalon.
  3. Politiikan toimeenpano ja ohjelmiston toteutus: Kun suunnitelma on valmis, kehittäjät kirjoittavat varsinaisen koodin, ja virkamiehet toimeenpanevat politiikkaa lakien mukaisesti. Tämä on prosessi, jossa abstrakti suunnitelma syntyy konkreettiseksi todellisuudessa toimivaksi kokonaisuudeksi.
  4. Tuomio vaaleissa ja ohjelmiston testaus: Politiikan oikeutuksen tuomitsevat vaalit ja mielipidemittaukset. Ohjelmiston arvon todentavat QA-tiimin testit ja käyttäjien palaute. Molemmat tarvitsevat lopulta suvereenin (kansalaisten, käyttäjien) suostumuksen selvitäkseen.
  5. Institutionaalinen uudistus ja järjestelmän ylläpito: Kerran luotu laki ja järjestelmä eivät ole ikuisia. Kuten vanhoja lakeja muutetaan ja instituutioita uudistetaan ajan muutosten mukaan, myös ohjelmisto on sopeuduttava muuttuvaan ympäristöön ja parannettava sisäisiä tehottomuuksia. Jos refaktorointi pysähtyy, ohjelmasta tulee kuollutta koodia.

Näin koko prosessi ongelman määrittelystä suunnitteluun, toteutukseen, verifiointiin ja jatkuvaan parantamiseen osoittaa, että kaksi maailmaa jakavat saman ongelmanratkaisun rytmin.

Uusien lainsäätäjien päivä

Tietoyhteiskunta on tehnyt näiden kahden filosofian huippujen välisestä etäisyydestä merkityksettömän. Koodi ei ole enää pelkkä loogisten piirien kokonaisuus, vaan se määrittää ihmisten suhteita, jakaa valtaa ja toteuttaa yhteiskunnallisia arvoja, ja siitä on tullut laki (Code is Law). Jos arkkitehtuuri, jonka suunnittelemme, muistuttaa valtion hallintorakennetta, ja noudattamamme kehitysprosessi on kuin poliittinen sopimusprosessi, niin keitä me kehittäjät oikeastaan olemme? Entä mitä poliitikon pitäisi tehdä? Siksi kehittäjän on nyt pohdittava paitsi koodin logiikkaa myös yhteiskuntaa, jonka koodi tulee muovaamaan, ja poliitikon on ymmärrettävä paitsi äänestyksen logiikkaa myös maailmaa liikuttavan teknologian logiikkaa. Se vaikutusvalta, jota käytämme kumpikin omassa maailmassamme, tuo mukanaan yhtä suuren eettisen vastuun.