onsdag 8. desember 2010 Julekalender
Alan Turing er et av de mest kjente navnene fra datamaskinens barndom. Den engelske matematikeren hadde stor betydning for utviklingen av informatikkfaget, spesielt knyttet til formaliseringen av hva en algoritme er for noe. Gjennom andre verdenskrig jobbet han med å bygge maskiner som kunne knekke tyskernes koder, og han var også opptatt av kunstig intelligens - han var en av de aller første som brukte uttrykket “computer intelligence”. Turing var en skikkelig nerd, og fortjener selvfølgelig en plass i adventskalenderen.
Det hører også med til historien at Alan var homofil, og at han ble straffeforfulgte for dette i 1952 – homoseksualitet var forbudt i Storbritania på den tiden. Han aksepterte hormonbehandling som et alternativ til fengsel. I 1954 tok han sitt eget liv.
De tre tingene Alan er mest kjent for er Turingmaskinen, Turingkompletthet og Turingtesten.
En Turingmaskin er en veldig enkel, teoretisk maskin som manipulerer symboler på en tape-remse etter et sett med regler. Turing beskrev maskinen i 1937, og kalte den da “a(utomatic)-machine”.
Turingmaskinen er ikke ment å være praktisk teknologi, men et tankeeksperiment som er nyttig for å forklare/studere hvordan en datamaskin fungerer. Selv om den er enkel kan Turingmaskinen simulere logikken i en hvilken som helst datamaskinalgoritme, og gjennom å studere modellen – slik jeg måtte gjøre da jeg studerte kompleksitetsteori på Universitetet i Bergen – kan man få en dypere informatisk innsikt.
Et sett med datamanipulerende regler (instruksjonssett, programmeringsspråk) kalles Turingkomplett om det kan simulere en Turingmaskin. I praksis betyr dette at reglene/språket kan brukes til å beregne svaret på vilkårlige kalkulasjoner.
Jeg har nevnt dette konseptet to ganger allerede i denne adventskalenderen. I luke 2 sa jeg at Babbage sin analytiske maskin ville ha vært den første Turingkomplette maskinen.., hvis den hadde blitt fullført. Og i luke 6 fortalte jeg at Konrad Zuse sin Z3 maskin var verdens første, Turingkomplette maskin som var programmerbar.
For å være Turingkomplett er det tilstrekkelig å ha en eller annen form for avgjørelser knyttet til programflyt – f.eks. “if” og “goto” – og ha muligheten til å endre verdien i vilkårlige minnelokasjoner. Alle språk vi normalt kaller programmeringsspråk er Turingkomplette, mens ting som regulære uttrykk og markup-språk (XML, json etc.) ikke er det.
“A computer would deserve to be called intelligent if it could deceive a human into believing that it was human.”
Turingtesten er en slags selskapslek for to mennesker og en maskin. Den kan bli brukt for å demonstrere maskinens intelligens. En menneskelig “dommer” sitter og snakker (via et tekst-grensesnitt) med ett annet menneske og en datamaskin – og begge forsøker å svare som et menneske ville gjort. Hvis dommeren ikke klarer å si helt klart hvem som er maskinen og hvem som er mennesket, så har maskinen bestått testen.
Turing introduserte denne testen i 1950 i publikasjonen Computing Machinery and Intelligence. I årene som fikk Turingtesten stor betydning, og den er et viktig konsept innenfor filosofien om kunstig intelligens.