Informatisk julekalender: Luke 4


lørdag 4. desember 2010 Julekalender

I luke 1, 2 og 3 har du møtt mannen bak den første, mekaniske kalkulatoren, oppfinneren av den første, programmerbare datamaskinen, og den aller første programmereren. Men det finnes én pioner som nok er enda viktigere for datamaskinens og programmeringens opprinnelse, og det er den engelske matematikeren og filosofen George Boole.

boole

Boole hadde oddsene mot seg; faren var skomaker, moren var tidligere tjenestepike, og med Englands rigide klassesystem skulle det normalt bety at han ikke ville kunne utrette noe særlig mer enn foreldrene hadde gjort. Men George hadde en sterk, indre drivkraft, et skarpt sinn, og en hjelpsom far som var interessert i vitenskap, matematikk og litteratur. George gav seg selv en utdannelse som normalt ville være forbeholdt overklassegutter, og studerte latin, gresk og matematikk. I 1849 ble Boole, takket være sin vitenskapelige innsats, den første professoren i matematikk ved Queen's Collage i Irland.

Booles bidrag til datamaskinens historie var et gjennombrudd i forståelsen av logikk. Han argumenterte for at logikk tilhørte matematikken, og ikke filosofien:

"We ought o loner to associate Logic and Metaphysics but Logic and Mathematics"

Gjennombruddet ble utviklet og presentert gjennom to bøker. Den første hadde tittelen The Mathematical Analysis of Logic, Being an Essey Towards a Calculus of Deductive Reasoning (1847). Den andre boken, som var mye større og mer ambisiøs, kalte han An Investigation of the Laws of Thought on Which Are Founded the Mathematical Theories of Logic and Probabilities (1854) – også kalt bare The Laws of Thought. Tittelen sier mye om hva Boole ønsket å få til: Den rasjonale menneskehjernen bruker logikk for å tenke. Hvis vi finner en måte å representere logikk ved hjelp av matematikk, så vil vi også ha en matematisk modell for hvordan hjernen fungerer!

Booles livsverk har ikke hatt noen stor betydning for vår forståelse av menneskehjernen. Til gjengjeld danner det grunnlaget for hvordan den moderne, digitale datamaskinen fungerer. Han oppdaget en måte å uttrykke logiske proposjoner i form av algebraiske uttrykk. Han kunne så utføre algebraiske operasjoner på symbolene i uttrykket, og hadde en 100% sikker metode for logisk deduksjon. Han reduserte rett og slett logikk til algebra. Til ære for oppfinneren kaller vi dette for bolsk logikk (boolean logic).

Bolsk algebra på to minutter

La meg forsøke meg på en rask forklaring av bolsk algebra gjennom et lite eksempel. Sett at du en dag går inn i en dyrebutikk og sier til dama bak disken: "Jeg vil ha en kastrert hankatt, enten hvit eller brun; eller en kastrert hunnkatt, sålenge den ikke er hvit; eller en hvilken som helst katt, sålenge den er svart." Litt sære kriterier kanskje, men kunden har alltid rett.

Katteselgeren har studert Boole, og setter raskt opp et uttrykk som definerer alle katter som tilfredstiller ditt krav:

(M x N x (W + T)) + (F x N x (1 – W)) + B

M er alle hankatter (male) og F er hunkatter (female), N er kastrerte katter (neutered), W står for hvit (white), T brun (tan) og B er alle svarte katter (black). Hun kan nå utføre det vi kaller for en bolsk test for å avgjøre om en gitt katt tilfredstiller kundens kriterier. Man bytter da ut alle symbolene med et tall: 1 hvis symbolet stemmer for katten, 0 hvis tallet ikke stemmer. For en brun ikke-kastrert hannkatt får vi følgende uttrykk:

(1 x 0 x (0 + 1)) + (0 x 0 x (1 – 0)) + 0

Og løser vi uttrykket ser vi at svaret blir 0, hvilket betyr at katten ikke passer for deg. Men så finner ekspeditøren en kastrert, brun hunnkatt, og da får vi følgende uttrykk:

(0 x 1 x (0 + 1)) + (1 x 1 x (1 – 0)) + 0

Som blir 1 – altså sant – og du har fått deg en herlig, ny katt. Det er også derfor vi utviklere kaller en variabel som kan ha to verdier – 0 eller 1, sant eller usant - for en boolean (eller bolsk variabel).

Så det var litt bolsk logikk på to minutter, noe en driver mye med når en programmerer. Og vi kan takke George Boole for å ha funnet opp noen ganske greie måter å håndtere det på. Dette har hatt så stor betydning at Boole i ettertid er blitt anerkjent som selve grunnleggeren av feltet informatikk (computer science).


comments powered by Disqus