lauantai 12. toukokuuta 2001

On loogista käyttää puhekieltä vauvojen ohjelmointiin

sfnet.keskustelu.filosofia: Logiikka ja maailma

12.5.2001 3:30

Tuomas T Korppi kirjoitti:
Otanpas sittenkin. Tietyssä mielessä alkeellisten matematiikan totuuksien verifioinnit voidaan mieltää kokeina, mutta niiden ei tarvitse olla ulkoisilla objekteilla tehtyjä kokeita. Pelkät ajatuskokeet nimittäin riittävät. Voin kuvitella ottavani ensin yhden omenan ja sitten toisen, ja nämä edelliset kuvitteelliset omenat muodostavat mielessäni kahden kuvitteellisen omenan joukon. Voin myös kuvitella omenoiden tilalle mitä tahansa objekteja, ja ajatuskokeen tulos säilyy aina samanlaisena.

Tässä yhteydessä on mielestäni mielenkiintoista huomioida Curry-Howard isomorfismi, joka esittää vastaavuuden erilaisten logiikoiden ja tyypitettyjen ohjelmointikielten välille: tyypit vastaavat loogisia väitteitä ja oliot/ohjelmat, jotka ovat kyseistä tyyppiä, vastaavat ko. väitteen todistusta (polymorfiset tyypit kuvautuvat esim. toisen kertaluvun logiikkaan).

Tällöin käsittääkseni luokan rajapinta vastaa matemaattista teoriaa, jonka malleja ko. luokan toteutukset ovat. Jos esimerkiksi tyypin esittämä lause on ristiriitainen, ei sille voi olla yhtään toteutusta.

Koska tietokoneohjelmat voidaan ajaa hyvin konkreettisilla tietokoneilla ja todistusolioiden sisältämä informaatio palauttaa helposti "atomeiksi", voidaan mielestäni tällöin ajatella, että havaitsemamme "materiamaailma" sisältää ko. olion ja alkuperäisen loogisen väitteen voi tulkita abstraktiksi, osittaiseksi spesifikaatioksi kyseiselle "konkreettiselle objektille" - tavallaan abstrakti väite on kuin projektio ko. mallista - vapaasti lainaten Olli Mustosta: "Nuotit ovat soittajalle kuin kaksiulotteinen varjokuva koko musiikkiteoksesta ja tulkitsijan tehtävä on palauttaa tämä kolmiulotteinen olio tuosta osittaisesta informaatiosta".

Mielestäni voidaan havaita, että ohjelmointikielet muistuttavat monissa asioissa luonnollisia kieliä, jos ei tuijoteta liiaksi formaalia ja jähmeää syntaksia. Löyhästi voidaan ajatella, että ohjelman kirjoittaminen on "puhumista" tulkille ja esim. abstraktioita koodaamalla tiettyyn ohjelmaan kerros kerrokselta voidaan ajatella tulkin "oppivan" ko. asiaa lisää. Tulkki osaa sitten tulkita annetun ohjelman jonkinlaiseksi toiminnaksi tai laskennaksi. Tätä varten kielen tulkin pitää sisältää tietysti jokin primitiivinen joukko perusoperaatioita, joiden semantiikka on määritelty kielen ulkopuolella.

Jos sitten ajattelemmekin, että myös ihmiset ovat tällaisia "tulkkeja", joihin syötetään aisti-informaation (I/O) lisäksi luonnollista kieltä, joka on opetettu lapsesta lähtien suhteessa ihmisen pohja-ajatteluun (*), voidaan lennokkaasti todeta, että luonnollinen kieli ja sen ilmaisut ovat hieman vastaavanlaisessa yhteydessä rajapintoihin/loogisiin väitteisiin ja aivojen kytkentöjen muodostama ohjelma sisältää laajenevan "toteutuksen" noille rajapinnoille tai vastaavasti "todistuksen/mallin väitteelle". Koska pystymme myös "itse puhumaan itsellemme", on ajattelussamme tavallaan eri tasoja: Käytämme kieltä hyvin korkealla tasolla ja voimme puhua esim. matemaattisista olioista ja samaan aikaan oma mallimme tuolle lauseelle on konkreettinen, hermoverkkoon koodautunut ohjelma. Voisiko siis ajatella, että tietyin oletuksin myös "mentaalinen koe" on "konkreettinen"?

Edelliseen löyhästi liittyen on tietokoneiden rautapuolella mielenkiintoista kehitystä ollut ohjelmoitavien piirien käyttö yleisprosessoreiksi siten, että ajettava ohjelma ohjelmoisi piirille halutun ohjelman, minkä jälkeen kyseistä ohjelmaa voitaisiin suorittaa suoraan prosessorilla rinnakkaisina operaatioina ilman hakematta esim. uusia käskyjä erillisestä muistista. Voitaisiin siis ajatella, että ohjelmalogiikka ja muisti toteutettaisiin ainakin osittain yhdellä piirillä. Toisaalta tällainen laitearkkitehtuuri muistuttaa päältäpäin jo aika paljon hermosoluja ja niiden kytkentöjä...


(*) Todennäköisesti osittain geenien koodaamia, yksinkertaisia merkityksiä ja rakenteita tunteille ja sen semmoisille sekä kehittyvä hahmontunnistus/abstraktiomekanismi (arvaus: esim. erittäin löyhästi tyyliin [hahmo_n "muistuttaa" hahmo_m] → [hahmo_n == hahmo_m], [hahmo_n "yhtäaikaa tai lähekkäin spatiaalisesti" hahmo_m] → [hahmo_k = hahmo_m+hahmo_n] ja esim. satunnaisen hahmon lisääminen aisti-informaation perusteella) jne. Tällöin lapsi oppii ensin hahmottamaan visuaalisia muotoja "pikselimössöstä", äänteitä kohinasta ja taas edelleen näistä tiloja, sanoja jne. ja lopuksi voidaan päästä sinne tasolle, että tietty sanan ääntäminen liittyy esim. tietyn visuaalisen objektin läsnäoloon. Kannattaa myös huomata toinen pää eli output, jonne ilmeisesti myös syntyy symmetrisesti abstraktiohierarkiaa tyyliin: sano "äiti" = sano"äi"+sano"ti". plä plää..


 (Leonard Nimoy - Highly Illogical)
 

Ei kommentteja:

Lähetä kommentti