lauantai 5. marraskuuta 2011

Kaksi kuolemansyntiä.

Laiskuus


Funktionaalisella ohjelmoinnilla viitataan usein klassisiin "funktionaalisiin" kieliin kuten LISPiin tms, joissa perusideana on se, että esimerkiksi ekspliisiittisiä silmukoita ei ole, vaan kaikki tehdään rekursion avulla. Rekursiivisuus määritelmissä ja käsitteissä on jotain, jonka ilmaisuvoimaa mielestäni ei riittävästi hyödynnetä peruskurssien ja matemaattisten formulaatioiden ulkopuolella. Puhumattakaan siitä, että sitä käytettäisiin tietojenkäsittelyn tai ohjelmistojen ulkopuolella. Imperatiiviseen paradigmaan panostetaan hyvin paljon tiettyjen käytännön ja osin historiallistenkin syiden vuoksi. Esimerkiksi jonkinlainen kansanviisaus sanoo, että rekursio on kallista, ja siksi se tulee korvata silmukkarakenteilla. Tässä on tietysti jotain perääkin, mutta en puutu nyt siihen.

Todellinen olennainen eroavaisuus funktionaalisen ja imperatiivisen paradigman välillä tulee kuitenkin esiin vasta, kun laiska evaluaatio otetaan mukaan. Ilman laiskaa evaluaatiota, funktionaalinen ohjelma on viimekädessä aina semantiikaltaan palautettavissa hyvin suoraviivaisesti imperatiiviseksi ohjelmaksi. Tietenkään viimekädessä mitään eroa ei saada aikaan ihan johtuen siitä, että alla oleva koneisto on "vain" Turing-vahva, ja mikäli Church-Turingin-teesi hyväksytään, ei mitään periaatteellista eroa olisi edes periaatteessa mahdollista toteuttaa millään ilveellä.

Ero kuitenkin on, koska jos meillä on laiska evaluaatio, voimme ilmaista asioita tavoilla, jotka muutoin olisivat mahdottomia. Ero ei näytä merkittävältä, mutta on sitä. Otan esimerkiksi Haskell-kielen, joka käyttää laiskaa evaluaatiota. Voimme esimerkiksi tehdä jotain seuraavankaltaista:
let x = [1,2..]
take 10 [i | i <- x]
Tämä tuottaisi tulokseksi listan, jossa on luvut 1 -- 10. x yllä ei siis varsinaisesti ole lista, jossa on kaikki positiiviset kokonaisluvut, vaikka sen voi sellaisena ymmärtääkin. Tosiasiassa se on funktio, joka mahdollistaa kaikkien näiden alkioiden laskemisen. Laiska evaluaatio tarkoittaa, ettemme yritäkään laskea niitä ennen kuin arvoja todella tarvitaan. Siksi jälkimmäinen komento todella suoritetaan. Ilman laiskaa evaluaatiota, olisimme ikikieriössä ensimmäisellä rivillä.

Ilmaisu mahdollistaa äärettömistä rakenteista puhumisen, ja kaikenlaisen (numeroituviin) äärettömyyksiin nojaavan laskennan, kunhan äärettömyyteen ei koskaan tarvi oikeasti mennä minkään yksittäisen arvon laskemiseksi. Voimme siis esimerkiksi vallan hyvin määritellä äärettömän "tietorakenteen", ja hakea sieltä minkä tahansa yksittäisen arvon, kunhan emme yritä suorittaa operaatiota, joka vaatisi niiden kaikkien läpikäymisen.

Laiska evaluaatio mahdollistaa huomattavasti voimakkaamman abstraktion kuin perinteisempi lähestymistapa. Tämän vuoksi monet opiskeluaikaiset kaverinikin jossain vaiheessa hurahtivat aivan täysin Haskellin kaltaisista kielistä. Itse perehdyin siihen vasta tänä vuonna, joten olin jo ikäni vuoksi turvassa voimakkaalta uskonnolliselta herätykseltä. Se on kuitenkin kieltämättä äärimmäisen kiehtova maailma.

Laiskan evaluaation idea on abstraktion suhteen erittäin hedelmällinen. Esimerkiksi BLAST käyttää laiskaa abstraktiota, so. mallin abstraktiotasoa muutetaan vain niiltä osin kuin on olennaista.

Ahneus


Aika-ajoin näkee debatin samasta kysymyksestä, johon Cowen myös tarjoaa osittaista vastausta. (via) Ottakaamme seuraavanlainen seuraamuseettinen tarkastelu: meillä on joukko erilaisia toimintamalleja, jotka antavat jonkinlaisen hyvin kattavan tulkinnan siitä, miten maailma toimii tietyissä tilanteissa, ja miten arvostamme lopputulosta. Sanotaan niitä nyt vaikka funktioiksi, vrt. funktionaalinen ohjelmointi yllä. Kukin funktio ottaa siis sisään jonkinlaisen kuvauksen maailmasta, ja antaa ulostulonaan arvion siitä, millainen maailma on toiminnan jälkeen, ja/tai käsityksen siitä, miten toivottava tämä kuvattu maailma on. Jos x on maailman tilan kuvaus ja f on toiminto, niin f(x) on maailman tila kuvauksen jälkeen. Jos g on arvostelmafunktio, niin g(x) on jokin käsitys maailman hyvyydestä tilanteessa x.

Meidän on siis valittava kokonaisesta joukosta funktioita sellainen f, että tilanteessa x, g(f(x)) maksimoituu. Näin yksinkertaistaen. Voimme kuitenkin todeta, että maailman tila ei yksinkertaisesti riipu siitä, mitä me teemme. On jokin kollektiivinen toiminto, joka ei (tässä abstrahoimme) riipu omasta valinnastamme. Tosiasiassa siis me valitsemme f:n siten, että g(h(f(x)) maksimoituu, missä h on se, mitä tapahtuu ja joka valitaan meistä riippumatta. Oletetaan lisäksi, että g(x) on muotoa c(x) + p(x), missä c(x) on kollektiivinen hyöty ja p(x) on henkilökohtainen hyöty (yksinkertaistaen).

Jos tiedämme, että c(h(f(x))) = c(f(x)) riittävän suurella tarkkuudella, niin meidän ei ole mitään mieltä laskea erikseen, mitä on c(h(f(x)), vaan me tiedämme, että p(h(f(x))):n maksimoiminen maksimoi funktion g(h(f(x))). On siis täysin mielekästä ja johdonmukaista kannattaa jotain sellaista politiikkaa "h", joka tuottaisi omalta kannalta erilaisen optimaalisen valinnan kuin nykyinen politiikka, ja silti maksimoida utiliteettia omalta kannaltaan. Esimerkkinä tästä voi siis olla, että joku kannattaa redistrinbutiivisempaa verojärjestelmää. Henkilö ei ole valmis maksamaan (vaikkapa) 1000 euroa vuodesssa enempää auttaakseen köyhiä, koska marginaalinen hyöty tästä köyhien auttamisen määrästä on vähäisempi kuin 1000 euron menetys. Sensijaan hän voi olla valmis kannattamaan 1000 euroa kireämpää verotusta köyhien auttamiseksi, koska maailma on "parempi" tuon 1000 euron menetyksestä huolimatta.

Väite, jonka mukaan olisi jotenkin moraalisesti täysin mätää suhtautua asiaan näin, on epärationaalinen ja perustuu tahalliseen väärinymmärtämiseen, jonka taustalla on poliittinen motiivi. Tällaisia argumentteja on toki muillakin kuin konservatiiveilla; olisin oikeastaan kiinnostunut lukemaan muita esimerkkejä näistä, jos lukijani ovat niitä jossain bonganneet. Itse olen nähnyt tämän argumentin vain konservatiivien esittämänä.

15 kommenttia:

adeus kirjoitti...

Työelämässä olen huomannut, että usealle rekursion käyttö on mahdottomuus. Siis sillä tasolla, että sen näkee luontevana ratkaisuna sitä kaipaaviin ongelmiin.

Markku kirjoitti...

Itse pidän rekursiota hyvänä asiana siksi, että se on usein vähemmän sotkuinen kuin vaihtoehdot. On helpompaa pysyä kärryillä algoritmin suoritusta mielessä pitäessä, jos se on rekursiivinen kuin että siinä on silmukkarakenteita.

Kumitonttu kirjoitti...

Siis mikä se kysymys nyt oikein oli? Pidänkö tonnin veronkorotusta parempana kuin että...?

Ari T kirjoitti...

Juu, esim. vapaamatkustajan ongelma on sinäänsä ihan hyvä syy. En näe esimerkiksi moraalista imperatiivia vaatia libertaareja olla käyttämättä valtion palveluja tai vasemmistoa lahjoittaa köyhille.

However, uskoisin, että tulonsiirtojen taustalla on paljon status signalointia ja kongitiivisia biaksia. OB:ssa oli yksi varsin mehukas esimerkki, mutta eiköhän näitä voisi keksiä lisääkin. Tietenkin tämän kaiken saman voi sanoa monista asioista poliittisen laidan tuolla puolen, mutta ukoisin, että kaivamalla analyysilla ihmisistä todelliset motiivit, tulonsiirtojenkin taustalla ei ole auttaminen vaan vaikkapa ahneus. Ihminen on kuitenkin melko itsekäs eläin, ja yleensä ei edes kovin tietoinen siitä.

En tosin näe kyllä mitään moraalista argumenttia, jonka perusteella voitaisiin vetää raja oikeudenmukaiselle tulojakaumalle. AI voisi periaatteessa aiheuttaa ns. malthusialaisen katastrofin. Olisi mielenkiintoista nähdä ns. kiväärikonservatiivien reaktio tässä tilanteessa, mutta näiden abstrakti ajattelukyky kyllä ei taida siihen riittää.

Tulonsiirrot käytännön politiikkana on kyllä niin monimutkainen kysymys, että ei taidat maailmassa bitit riittää sen analysoimiseen järkevästi. Yleensä on helpompi analysoida sitä osissa kuin kokonaisuutena. Enpä taida jaksaa nyt kirjoittaa siitä sen enempää, kun tappeluhan siitä tulee.

Tiedemies kirjoitti...

Niin, siis kyse on siitä, että on esitetty väite: Jos joku esittää, että "moraalisista" syistä KAIKKIEN pitäisi tehdä X, niin hänen pitäisi tehdä itse X riippumatta siitä, tekevätkö muut X.

Tässä oli esimerkkinä siis ihminen, jolla on kyllä riittävästi rahaa. Hän saattaa kannattaa veroa, jolla rahoitettaisiin jotain "hyvää", ja joka veisi häneltä 1000 euroa, vaikka ei olisikaan valmis vapaaehtoisesti maksamaan tuota 1000 euroa tämän "hyvän" puolesta.

Keskeinen väittely noissa linkeissä oli siitä, onko tämä jonkinlaista kaksinaismoraalia. Ei se ole.

Huomautan, että tässä ei sinänsä ollut kyse tulonsiirroista, vaan siitä, voidaanko nimittää kaksinaismoralismiksi tms. sitä, että kannattaa jotakin kollektiivista toimintaa, vaikka ei yksilönä olisi pelkästään omasta puolestaan osallistumaan.

veepee kirjoitti...

Esimerkki:

Nalle Wahlroos, jonka edustamasta maailmankuvasta sinällään en pidä, nostettiin taannoin (ehkä viime vuonna?) mediassa esiin liittyen hänen maataloustukiinsa. Hän ilmeisesti saa tukia niinkuin muutkin, mutta muista poiketen vastustaa politiikassa niiden jakamista. Tätä jotkut journalistit pitivät ristiriitaisena.

Olen kelaillut asiaa aika paljon sittemmin, koska se jollain epämääräisellä ja mielenkiintoisella tavalla kuvaa jotain omasta ajattelutavastani ja siitä millä lailla suuri yleisö on väärässä. Kiitos uuden näkökulman tarjoamisesta asiaan.

Samalla kun kannatan tässä asiassa Wahlroosin ajattelutapaa, vakkarikansanedustajani Tynkkynen puolestaan profiloituu usein nimenomaan esimerkeillä siitä, miten voi uida vastavirtaan ja tehdä elämästään vaikeaa periaatteiden vuoksi. Tämä on minusta hieman kiusaannuttavaa, joskin Tynkkysen hyväksi täytyy mainita että hän silti painottaa sitä että maailman pelastamisesta pitää nimenomaan tehdä kollektiivisilla ratkaisuilla helppoa ja hauskaa.

Tomi kirjoitti...

Veepee, Wahlroos sanoi, että hän vastustaa tukia, mutta nostaa jokaisen pennin mikä annetaan.
Tämä ei mielestäni ole kovin ristiriitaista. Moni esimerkiksi vastustaa korkeaa verotusta, mutta maksaa veronsa. Toki verojen maksamatta jättäminen on rikos.

Tiedemies kirjoitti...

Totta, Wahlroosin esimerkki on tarkalleen samanlainen, kiitos muistutuksesta.

Oikeastaan voidaan sanoa, että jos ihminen ei suhtaudu tarkalleen samalla tavalla Wahlroosin maataloustuen ja redistributiivisen verotuksen contra hyväntekeväisyyden "moraalisuuksiin", niin argumentaatio on ristiriitainen.

Se, että ihmiset ovat valmiita ottamaan saman argumentin yhdessä mutta sivuuttamaan sen toisessa paikassa, on jotenkin aivan käsittämättömän limaista.

Kumitonttu kirjoitti...

Kiitos selvennyksestä. Jos puhutaan puhtaasti tulontasauksesta tai elinkeinotuesta, on selvää että samat säännöt pätevät kaikille kansalaisille ja markkinaosapuolille. Sen sijaan, jos puhe on moraalista, vaatimuksia esittävien tulee itse elää vaatimansa moraalin mukaisesti.

Voihan billu, joka on myös tämänkertainen sanavahvari.

Tiedemies kirjoitti...

Sen sijaan, jos puhe on moraalista, vaatimuksia esittävien tulee itse elää vaatimansa moraalin mukaisesti.

Minusta ei ole mielekästä erotella näitä toisistaan. On lukuisia tilanteita, joissa on täysin moraalitonta toimia vallitsevan käytännön vastaisesti, vaikka pitäisi vallitsevaa käytäntöä moraalittomana sinänsä. Case in point, vasemmanpuoleinen liikenne. (En tiedä, miksi joku sen näkisi moraalisena kysymyksenä, mutta se ei ole olennaista)

Kumitonttu kirjoitti...

Toki olet oikeassa. Yritin ehkä hiukan oikoa mutkia, sillä kutsuin moraaliksi sitä perusperiaatetta, että ei tungeta nokkaa toisten asioihin, eli yksilönvapautta. Mutta, sehän ei todellakaan ole sama asia kuin moraali, kuten korjasit.

Ari T kirjoitti...

"Huomautan, että tässä ei sinänsä ollut kyse tulonsiirroista, vaan siitä, voidaanko nimittää kaksinaismoralismiksi tms. sitä, että kannattaa jotakin kollektiivista toimintaa, vaikka ei yksilönä olisi pelkästään omasta puolestaan osallistumaan."
Tajusin kyllä pointtisi, eikä minulla ollut siihen oikein mitään lisättävää. Olen ihan samaa mieltä kanssasi. Kommentoin vain tulonsiirtoja koska tämä oli mainittu ja liittyi aiheeseen.

Väitit, että olet nähnyt vain konservatiivien esittävän tämäntyyppisiä argumentointivirheitä. Minusta nämä on kyllä aika marginaalissa, mutta kyllä vasemmistosta näitä löytyy. Wahlroos on nyt yksi esimerkki, mutta kyllä olen libertaarien nähnyt saavan aika usein tämäntyyppisiä syytöksiä: "jos et pidä Suomesta, mikset muuta muualle?"

Esimerkiksi luonnosuojelu on ratkaistavissa ihan omistusoikeuksin (esim. Pentti Linkolan luonnonperintösäätiö), toki voidaan esittää miljoonia kollektiivisen toiminnan ongelmia, mutta tässä tapauksessa ns. ympäristöliike olettaa kätevästi tietenkin (tai ainakin jälkikäteen) vapauden olevan epätehokas ratkaisu. Tämä myös ohittaa meta-tason argumentin subjektiivisesta arvosta. Kuten sanoin, muiden rahoilla on niin helppo moralisoida, ja ostaa status-pisteitä.

Tiedemies kirjoitti...

Heinleinilla on yksi kirja (en muista mikä se oli), jossa kuussa kasvaneet (libertaarit) uudisraivaajat paheksuvat maan ihmisiä, koska nämä ovat "sosialisteja", kun vaativat että ilmaa pitäisi saada hengittää ilmaiseksi.

Viittaan tällä siis siihen, että kyllä, teoriassa negatiiviset vapaudet ja omistusoikeudet voivat kyllä viimekädessä ratkaista kaikki luonnonsuojelulliset ongelmat. Mutta aika iso osa näitä libertaareja periaatteita kannattavista ei ole valmiita viemään tätä tarkastelua näin pitkälle. Minä en ota asiaan sinänsä tässä yhteydessä kantaa, kunhan huomautan, että vapaus ei ole puhtaasti kvantitatiivinen juttu "enemmän on parempi", vaan joskus on välimalleja, jotka ovat huonompia kuin sitä enemmän tai sitä vähemmän vapautta.

Ari T kirjoitti...

"Heinleinilla on yksi kirja (en muista mikä se oli), jossa kuussa kasvaneet (libertaarit) uudisraivaajat paheksuvat maan ihmisiä, koska nämä ovat "sosialisteja", kun vaativat että ilmaa pitäisi saada hengittää ilmaiseksi."
Itävaltalaisilla on kirja, jossa puhutaan teiden yksityistämisestä, ja pari kertaa syytetään vastustajia sosialisteiksi. Ihan ok kirja silti. Näitä "no true capitalist" debatteja on jossain mielessä viihdyttävää seurata. Mutta en minä kiellä, ehkä teiden yksityistäminen lisäisi tehokkuuta ja toisi innovaatiota sinnekin, tai sitten ei. Sama juttu ylikalastamisen ja "sosialisoitujen" valtamerien kanssa (tästähän annettiin Nobel; globalisaatio "tuhoaa" nämä ns. paikalliset keinot yhteismaan ongelman ratkaisemiseksi). Ehkä mahdollista, en tiedä, mutta en toisaalta tuomitsekaan. Voi olla, että näitä kannattomilta libertaareilta ei löydy selkärankaa kannattaa järkeviä ratkaisuja, vaikka ne olisivat tehokkaita, ei tämä mitenkään yllätä. Ihmiset ovat heikkoja.

Transaktiokustannuksista ja muista syistä ilman tai informaation omistusoikeuksien soveltaminen on hankalaa, mutta minusta siitä ei seuraa automaattisesti että se ei koskaan ole tehokasta. Robin Hanson kirjoitti asiasta hyvin. Omistusoikeudet ovat historiallisesti kuitenkin monessa tapauksessa melko tehokas ratkaisu koordinaatio-ongelmiin.

Esimerkiksi IPR-kysymyksessä ei ole kyse paitsi informaation taloustieteestä, mutta kyse on myös miten nämä todennäköisesti valtion luomat instituutiot toimivat (regulatory capture, rent-seeking jne.). Kyse on enemmänkin suunnitellusta taloussosiaalisesta koneesta kuin jostain libertaarista ratkaisusta. Jos ajatellaan libertarismi lineaarifunktiona, en tiedä mihin kohti vaikka IPR tai negatiivinen vastuuvelvollisuus sijoittuu. Ehkä ne ovatkin sosialistien salajuoni, kysy itävaltalaisilta.

Joskus tekee mieli vain soveltaa itse ristimääni libertaarien partaveistä, eli se mikä maksaa vähemmän valtiolle on varmaan tehokkaampi.

Mitä nyt tulee tuohon ympäristö-kysymykseen vielä, niin se miten jokin homma voi pelata arkadianmäellä on ihan toinen asia miten se pelaa sitten käytännössä. Tiedän pari esimerkkiä omasta lähipiiristä tälläisestä ystävällisestä rent-seekingistä tai pikemminkin korruptiosta ympäristölakien osalta, mutta en nyt kerro siitä sen enempää. Natura-alueet ja pakkolunastuksetkin on kyllä vähän semmosta touhua.

"Minä en ota asiaan sinänsä tässä yhteydessä kantaa, kunhan huomautan, että vapaus ei ole puhtaasti kvantitatiivinen juttu "enemmän on parempi", vaan joskus on välimalleja, jotka ovat huonompia kuin sitä enemmän tai sitä vähemmän vapautta."
Niin no minä uskon hyvin pitkälti tehokkuuteen melkein minne se minut sitten viekin.

Tiedemies kirjoitti...

Niin no minä uskon hyvin pitkälti tehokkuuteen melkein minne se minut sitten viekin.

Word.