Symbolinen analyysi
Symbolinen analyysi on metateoria, kuinka käyttää tulkintoja symbolien välisten suhteiden ymmärtämissä. Symbolista analyysia voidaan tehdä tietokoneella automaattisten työkalujen avulla tai sitä voi tehdä ihminen.
Pohjan symboliselle käsittelylle loi 1930-luvulla Alonzo Church, jonka ansiosta syntyivät myös käsitteet laskettavuus ja lambda-kalkyyli sekä olennainen osa tietokoneen peruskonstruktiota . Lähdekoodin symbolinen käsittely tuli eri muodoissaan muotiin 1970-luvulla, jolloin tutkittiin symbolista suorittamista, symbolista evaluointia ja symbolista analyysia. Menetelmät olivat poissa muodista 20-30 vuotta, kunnes vuoden 2000 jälkeen uudestaan on pyritty tutkimaan ohjelmien suorittamista ajamatta niitä lopullisessa muodossaan. Churchin merkittävästä työstä huolimatta viime aikoihin asti on ollut epäselvää, mitä symbolinen käsittely ja analyysi itse asiassa ovat ja miten ne liittyvät ihmiseen tiedon tulkitsijana. Vasta vuonna 2008 pystyttiin ensimmäisen kerran linjaamaan ihmisen suorittama ja tarvitsema symbolinen tieto ja tietokoneen antama tuki. Alla kuvataan tämä periaate.
Kaikkien kielten perusyksikkönä on symboli. Kaikki formaalit esitykset, myös ohjelmistojen kuvaamisessa yleisesti käytetyt UML-kaaviot, koostuvat symboleista. Symbolit kuvaavat ohjekteja tai ilmiöitä. Objektien ymmärtäminen tapahtuu alimmalla tasolla tekemällä symbolien ja objektien välisiä tulkintoja. Symboli on Charles Peircen käsitteistössä erikoistapaus termistä merkki.
Analyysin määritelmän mukaan symbolinen analyysi on prosessi, jolla monimutkaisia rakenteita voidaan ymmärtämisen helpottamiseksi pilkkoa pienempiin osiin. Pilkkomisen lisäksi yleensä on tarkasteltavista symboleista tarpeen luoda horisontaalisia selityksiä (selitys) ja hierarkkisia käsitteitä (käsite). Peircen mukaan selitys saadaan aikaan päättelyllä. Näin tapahtuva (argumentointi) voi olla logiikasta riippuen deduktiivista (Deduktiivinen päättely), induktiivista (Induktiivinen päättely) tai abduktiivista (Abduktiivinen päättely).
Kehys symboliselle analyysille on seuraava http://www.symbolicAnalysis.net
Kuvataan tilannetta, jossa henkilö NN on palaamassa autolla kotiin tai menossa harrastuksiin tai töihin:
Kaikki asiat eivät ole yhtä yksinkertaisia mallinnettavia kuin äskeinen. Toisaalta aina ei löydy yhtä selkeitä indikaattoreita kuin liikennevalo. Erilaisia ääripäitä kuvaavat kaksi filosofian suuntausta: Vaikeuksia hahmottaa mihin kukin symboli todellakin viittaa, kutsutaan yhteisellä nimellä symbolin maadoittamisen ongelmaksi. Jos samalle symbolille tai symbolien joukolle on monta vaihtoehtoista tulkintaa, puhutaan monimerkityksellisistä ("ambiguous") tilanteista ("context").
Silloin kun täsmällinen objekti aina voidaan tunnistaa, voidaan symbolien välille määritellä formaaleja vuorovaikutuksia, esimerkiksi predikaattilogiikan keinoin. Ohjelmistoatomi on käsite, jonka avulla täsmällisiä objekteja voidaan luoda kytkemään muita objekteja yhteen
Seuraavassa autoilijan logiikka liikennevaloissa:
Tilat "Aloitus" ja "Lopetus" ovat kaaviossa vain havainnollisuuden vuoksi.
Yllä oleva tilataulu voidaan helposti ohjelmoida tietokoneelle täysin samanlaisena kuin miten ajajakin toimii. Kaikki ohjelmointikielet ovat keskenään Turing-vahvoja, joten samat asiat voidaan ohjelmoida eri kielillä. Ohjelmoitaessa Prolog on kuitenkin erityisen sopiva sen takia, että Prologin sisäinen semantiikka tukee suoraan tilakaavioiden ohjelmointia. Jokaiselle tilakaavion kentälle ja tekijälle löytyy kielestä suoraan soveltuva rakenne.
Symbolinen analyysi ohjelmien ymmärtämisen teoriana: