Datateknologiens Utvikling

Blaise Pascal og matematikk på 1600-tallet

Charles Babbage og differensialmaskinen

Den analytiske maskinen - Babbage sitt storverk

Lady Ada, hertuginne av Lovelace og programmering

George Boole and logisk algebra

Hermann Hollerith og hullkortmaskinen

Alan Turing og den teoretiske datamaskinen

KONRAD ZUSE og rele-datamaskinene hans

John Atanasoff og oppfinnelsen av datamaskinen

John von Neumann og EDVAC-rapporten

FORTRAN: det første programmeringsspråket

John McCarthy og LISP: Funksjonell programmering

Kristen Nygård og Ole-Johan Dahls SIMULA-språk

Niklaus Wirth og programmeringsspråket PASCAL

PROLOG og logisk dataprogrammering

Edsger Dijkstra og strukturert programmering

MODULA-2: Forbedret PASCAL?

Datavirus er ikke å spøke med

Etiske og juridiske sider ved datateknikken

ERMA og bankautomatisering av sjekkbehandlingen

SABRE-systemet og transaksjonsprosesser

MONTE CARLO simulering og statistikk

Alan Kay, SMALLTALK, objektorientering og vindusgrensesnitt

BASIC: det første interaktive programmeringsspråket

 

Blaise Pascal og matematikk på 1600-tallet.

Blaise Pascal var en fransk matematiker, fysiker og ikke minst, religiøs tenker og grubler. Han levde i Normandie fra 1623 til 1662 og var uten tvil en av verdens beste hjerner på 1600-tallet. Moren hans døde mens han ennå var et spebarn og faren flyttet da til Paris og tok på seg selv å oppdra og undervise Blaise og hans to søstre. Da sønnen, Blaise, var blitt 12 år, innså faren at det ikke lenger var mulig å 'holde skjult' matematikken fra gutten, som hungret etter å lære alt som han kunne komme over.

Allerede som 16-åring skrev Blaise Pascal en avhandling med tittelen Treatise on Conic Sections (avhandling om kjeglesnittflater) som vakte mye oppsikt. Den lanserte blant annet det berømte Pascals teorem om heksagonale mangekanter. Teoremet sier at for en sekskant som er innskrevet i et kjeglesnitt, ligger de tre skjæringspunktene for forlengelsene av to og to motstående sider på en rett linje. Med andre ord, allerede som 16-åring drøftet og analyserte Blaise Pascal matematiske og geometriske problemer på samme nivå som da-tidens største vitenskapsmenn og matematikere.

Pascal var en som tidlig i utviklingen arbeidet med det som vi i dag kjenner som sannsynlighetsregning, en viktig del av matematikken. Mange er kjent med koeffisientene i binominalfunksjonen som ofte oppstilles i en såkalt Pascals talltrekant, hvor hvert tall er summen av de to tallene som står diagonalt over.

Blaise Pascal korresponderte med mange av datidens fremste matematikere, blant andre Fermat. Det er hevdet at i sin brevveksling med Fermat har Pascal i vesentlig grad bidratt til grunnlaget for sannsynlighetsreg ningen. Hans arbeider over sykloiden er også bemerkelsesverdig ved at han tok i bruk metoder som svarer til integralregningen, som offisielt ble 'oppfunnet' først mange årtier senere.

Men det var ikke bare matematiske problemer som opptok ham. Pascal skrev mye om andre vitenskapelige problemstillinger også, blant annet en avhandling om vakuum. Den ble riktig nok ikke publisert, men den har vist at han var en av de første til forstå og finne matematiske uttrykk for de fysiske forhold som vi finner i en hydraulisk presse, en dampsylinder, en injeksjonssprøyte og liknende. Pascal er også velkjent for sitt arbeid med å utvikle et mer pålitelig og fysisk riktig barometer. Historien forteller at han fraktet sitt barometer opp til toppen av fjellet Puy-de-Dôme og fant at lufttrykket der var lavere enn ved foten av fjellet. Av dette sluttet han at et barometer kan brukes som høydemåler.

I datateknisk forbindelse er Blaise Pascal kanskje mest kjent for sin oppfinnelse av en mekanisk regnemaskin som over et titall år kom i over 50 forskjellige utgaver. Det var en oppfinnelse som han ikke helt greide å perfeksjonere, slik at den egentlig aldri ble et salgbart produkt. I sin regnemaskin benyttet Pascal en rekke tannhjul som i et gammeldags mekanisk vekkerur, hvor hjulene svirret rundt og visere pekte på tallverdier etter som brukeren sveivet og sveivet.

Hans store bidrag var en måte å overføre mentetallene på, fra tallkolonne til neste, slik vi gjør det ved manuell addisjon. Tidligere regnemaskiner hadde krevd at alle mentetallene ble lagt til for hånd etterpå. I Pascals addisjonsmaskin brukte han også en vekt som ble utørst og falt ned mot en pinne hver gang mentetallet skulle overføres.

Pascals regnemaskiner led alle av en og samme alvorlige svakhet: det var bare Blaise som kunne reparere dem når noe klikket. Ellers så kunne de regne ut lange addisjoner og subtraksjoner omtrent like fort som de beste kontoristene som var ansatt for å utføre slike regneoperasjoner.

Kontoristene, på den annen side, så for seg denne maskinen som en alvorlig konkurrent. En dag ville den kanskje ta arbeidet fra dem. Mange søkte å overbevise folk om hvor upålitelige slike regnemaskiner var. På den bakgrunn kan vi si at Pascals mekaniske regnemaskiner egentlig ikke passet inn i samtiden.

I de senere år av sitt liv ble Blaise Pascal svært religiøs og samlet all sin energi i arbeid med teologiske problemer. Han skrev en rekke bøker om dette, særlig om det er mulig for mennesket å finne ut om Gud eksisterer. Pascal ble svært godt kjent i sin samtid. Han ble berømt for sine tanker og sin sterke overbevisning om at fakta må gå foran fornuft og teori i all forskning og studium av naturen. Pascal stolte selv aldri helt og fullt på det som bare var teori, men over alt søkte han forankring i fakta.

Tilbake til toppen

Charles Babbage og differensialmaskinen

Charles Babbage var en engelskmann som levde fra 1791 til 1871. Han er blitt kalt 'datamaskinenes far'. På hans tid var vitenskapen svært mye opptatt av problemene de hadde i utregning og tabellering av matematiske funksjoner som naturlige logaritmer, kvadratrøtter og liknende. Allerede i 1624 hadde Briggs utgitt sin (Briggske) logaritmetabell over tall mellom 1 og 20.000. Alle utregninger var gjort for hånd, av personer 'utvalgt på grunn av sin store flid, nøyaktige regneevne og omhyggelighet i alt de foretok seg' som det het. Regnemestrene ble betegnet med det engelske ordet 'computor' - et uttrykk som først i 1940-Drene ble overført til de datamaskinene som vi i dag bruker til å regne ut tabellverdier og liknende.

Tall ble regnet ut for hånd, skrevet ned med fjærpenn og blekk i høytidelige protokoller. Selv etter mange og iherdige anstrengelser for å sjekke verdiene, inneholdt de likevel regnefeil og (senere) mange trykkfeil. Ofte var det høyst nødvendig å utgi en errata-liste (feil-liste) som kunne bli like lang som den tabellen det gjaldt. Først da Charles Babbage i 1827 til 1831 utga sine sju-sifrede logaritmer for alle heltall mellom 1 og 108.000, ble påliteligheten tilstrekkelig. Babbage sin tabell ble holdt for å være de mest nøyaktige helt frem til 1914. Selv innså han tidlig at utregningene kunne mekaniseres, slik at tallene slapp å måtte skrives ned mellom hver regneomgang. De måtte kunne overføres mekanisk fra plass til plass uten at det oppstod feil. Han utarbeidet et detaljert forslag til hvordan en slik mekanisk regnemaskin kunne bygges. Utgangspunktet var differansemetoden hvor hver tabellverdi er en 'fortsettelse' eller 'påbygging' av den foregående. Vi benytter noe liknende når vi skal regne ut heltallspotenser, eksempelvis ved å sette 37 4 = 37 3 * 37 = (37 2 * 37) * 37 osv.

Forslaget hans var en mekanisk regnemaskin som benyttet suksessive polynomiske approksimasjoner som fremgangsmåte. En slik maskin krevde et omfattende arrangement av tannhjul for å 'holde' differanser av forskjellige ordener. Den måtte ha et komplisert system for overføring av mentetallene, også negative slike, mellom de ulike tellemekanismene. Aritmetikken var basert på desimaltallsystemet, med ett omløp av tannhjulene hver gang tallet 10 ble passert. Regnemaskinen ble av Babbage gitt navnet Differansemaskinen (eng. The Difference Engine). Den var et dampdrevet mekanisk uhyre som må ha virket skremmende på datidens folk.

Babbage begynte arbeidet med den i slutten av 1820-Drene, parallelt med at han fullførte sin store logaritmetabell. Han skisserte en rekke detalj-løsninger for tannhjulene, menteoverføringsmekanismene og addisjons- og subtraksjonsfunksjonene. Maskinen skulle kunne regne ut logaritmer med 29 desimalers nøyaktighet og trykke disse med en skrivemaskin slik at tallene ikke ble feilleses eller feilskrevet av dem som betjente maskinen. Han la frem planen sine for den engelske regjering, sterkt støttet av en rekke fremstående vitenskapsmenn og forretningsfolk på den tiden.

Regjeringen ble svært imponert av det godt gjennomarbeidede forslaget og anså en slik pålitelig tabellregnemaskin ville være en stor fordel for en nasjon som England. Den bevilget derfor pengene som skulle til, og Babbage satte i gang byggingen i 1829. Men hva Babbage ikke hadde tatt med i planene sine, var vanskene med å fremstille alle presisjonstannhjulene som trengtes. De måtte lages for hånd, ved omhyggelig filing av støpte deler, noe som tok svært lang tid. De første delene var ferdige i 1832, etter tre års hardt arbeid. Da var regjeringen trøtt av å vente og stoppet finansieringen. Babbage var også blitt utålmodig. Folkene hans og utstyret de hadde til disposisjon, var ikke tilstrekkelig for å gjøre jobben. Han forstod kanskje også at differansemaskinen egentlig ikke var så god som han opprinnelig hadde trodd den ville bli. Nye ideer og bedre innsikt gjorde vel sitt til at han droppet videreføringen.

Han hadde lært mye av differansemaskinprosjektet, særlig om begrensningene i konstruksjonen, og hadde funnet en vei til å oppnå vesentlige forbedringer. Det som en dag plutselig hadde stått helt klart for ham var programmeringen og programflytkontrollen som han ikke hadde tatt tid til å tenke gjennom tidligere. Hvordan skulle maskinen selv kunne evaluere sine resultater? På hvilke måter kunne maskinen endre rekkefølgen eller arten av regneprosessene, avhengig av de resultatene den hadde oppnådd? Hvordan kunne den bli selvstyrende og ikke minst, generelt anvendelig? Babbage så i tankene hvordan han kunne lage en mye mere avansert regnemaskin. Hans nye ide var å lage hva kan kalte en mekanisk analysemaskin (eng. The Analytical Engine). Den skulle inneholde de nye ideene og utnytte alle de utspekulerte mekanismene han hadde konstruert og testet for differansemaskinen.

Tilbake til toppen

Den analytiske maskinen - Babbage sitt storverk

I Drene 1834 til 1837 utviklet Charles Babbage sine ideer i detalj. Han bygget på erfaringene med regneverkene og menteoverføringsmekanismene fra differansemaskinen, og fant frem til et helt nytt prinsipp: data måtte lagres uavhengig av hvor de ble bearbeidet. Han måtte konstruere mekaniske innretninger som ville gjøre det mulig å flytte tall mellom lagringsstedet og bearbeidningsplassen uten feil underveis. Igjen henvendte han seg til den engelske regjering og til finansfolk for å få penger til å fullføre prosjektet. Men ikke uventet, regjeringen følte seg litt lurt av Babbage; han hadde jo ikke fullført den første maskinen han hadde fått penger til. Babbage hadde vist dem at han kunne gjennomføre et prosjekt og den avslo derfor enhver støtte. En gruppe finansmenn derimot, syntes at den nye ideen var løfterik, særlig fordi Babbage selv villig innrømmet hvor han hadde tatt feil i første runde. Det ble derfor skaffet til veie nok penger til at han kunne starte igjen.

Babbage sin nye maskin, analysemaskinen, (eng. The Analytical Engine) var bygget opp rundt fem nye konsepter som skulle vise seg å være uhyre viktige og som vi i dag lett gjenkjenner og aksepterer som sentrale i enhver datamaskin: (1) eget innlesningsutstyr, (2) en sentral aritmetisk prosessor, (3) et eget kontroll- og styresystem, (4) internt datalager, og (5) egne utskrivingsenheter. Som drivkraft for en slik stor og kompleks maskin tenkte han seg en passende dampmaskin. Den ville kunne utføre de mange mekaniske tannhjuls-drevne funksjonene på en lett og effektiv måte.

Charles Babbage hadde allerede i midten av 1830-Drene kommet frem til en kompleks, men fullt gjennomtenkt mekanisk innretning. Analysemaskinen hans lot seg programmere slik at data ble systematisk lest inn og lagret, deretter hentet inn og prosessert automatisk etter et gitt program i den aritmetiske enheten. Mellomverdiene ble holdt lagret internt og gjenkalt under bearbeidningen, og når de endelige resultatene forelå, ble de sendt ut (trykket) i form av en tabell eller liste. Dette maskinkonseptet tillot at programflyten kunne gjøres avhengig av beregningsresultatene. Han oppnådde dette ved at flere av maskinens tannhjul var utstyrt med følere som signalerte når de stod i posisjon 'null'. Disse signalene, som svarte til nåtidens maskininstruksjon 'Branch on Zero', kunne han bruke til å endre instruksjonsrekkefølgen. Med andre ord, han oppnådde de samme effektene som vi gjør med instruksjoner, som IF ... THEN, WHILE ... DO ..., CASE 1 ... osv. Babbage hadde lenge innsett at dette tillot omfattende rekursive programfunksjoner, noe som i seg selv ledet til dataavhengig prosesseringsrekkefølge.

Alle variable som trengtes i regneprosessene, satt lagret i analysemaskinens datalager. Det bestod av tannhjul som ble brukt på samme måte som i differansemaskinen. Men i den analytiske maskinen utførtes ikke regneprosessene direkte på lagerplassen. I stedet ble tallverdiene som stod lagret mekanisk, 'kopiert' til en sentral regnemølle, den sentrale prosessor. Kopieringen ble styrt av et hullkort, kalt et variabel-kort, og sikret at hver enkelt variabel kunne adresseres uavhengig av hverandre. Regneprosessene ble styrt av såkalte operasjonskort som også var hullkort. Når resultater eller mellomverdier var oppnådd, ble disse kopiert tilbake til det mekaniske datalageret og holdt klar til neste omgang eller for senere utskriving. Vi vil si at Babbage sine operasjonskort var instruksjoner til prosessorsystemet og bestemte utføringen av databehandlingsoppgavene i registre og regneverk. Variabelkortene var lagerkontrollinstruksjoner som inneholdt en eller flere operandadresser for data som skulle hentes inn eller flyttes (kopieres) til lageret.

En av de som tidlig fattet interesse for og øynet dybden i det Babbage gjorde, var den prominente Lord Byron av England og hans datter, Lady Augusta Ada, gift med hertugen av Lovelace. Lady Lovelace var universitetsutdannet og meget intelligent. Hun forstod at konseptet med en styre- og kontrollenhet som dirigerte alle regneoperasjonene, var en av hovedsakene ved Babbages maskin. For henne var det logisk å klarlegge hvordan slike styreinstruksjoner burde bygges opp, både i prinsipp og praksis. Hun analyserte nøye hvordan viktige sekvenser best skulle arrangeres og hvilke forholdsregler som måtte tas for å sikre at alle regneprosessene ble riktig utført. Etter hva vi kjenner til i dag om hennes arbeid, må hun ha klarlagt i detalj hvordan den analytiske maskinen kunne brukes til en rekke ulike, omfattende regneoppgaver. Vi kan derfor si at Lady Ada Lovelace var den 'første' dataprogrammerer i historien.

For Babbage gikk det imidlertid ikke så bra. Gjennomføringen av analysemaskinprosjektet sviktet på grunn av vanskeligheter med å oppnå den nødvendige finmekaniske presisjonen i alle konstruksjonsdetaljene. Han kom også flere ganger i finansielle vanskeligheter og var i perioder tvunget til å innstille utviklingsarbeidet. I 1837 gav han opp, bitter og skuffet over at han ikke hadde fått gjennomført sine store planer. På sine eldre dager mottok han likevel mye hyllest for sin innsats. Han ble hedret som en pioner, en fremsynt oppfinner, en førsterangs konstruktør, en stor statsmann osv. I memoarene sine som ble utgitt i 1860-Drene, beskrev han erfaringene med utviklingen av de to maskinene med forholdsvis lett lynne.

Tilbake til toppen

Lady Ada, hertuginne av Lovelace og programmering

Lady Augusta Ada Byron het hun ved fødselen i London i 1815. Hun var datter av Englands største romantiske poet som var adlet med navnet Lord Byron. Hun var født inn i et hjem som var sterkt preget av farens troløshet, og allerede to måneder gammel ble hun tatt med av moren, Lady Annabelle Byron, til et separat hjem. Der vokste Lady Ada opp uten farens nærvær. Moren var den som ga henne en god oppdragelse og en grundig skolering, med mye matematikk.

Allerede som ung dame viste Augusta Ada at hun var 'annerledes' enn de andre unge sosietetsfrøknene i London. Hun mislikte den overfladiske selskapeligheten og alt fjaset med å stadig opptre i fineste stas. Hun samlet seg heller om vitenskapelige interesser. Et viktig innslag var et besøk hun avla på London-museet 'The Mechanics Institute' i 1833, da hun var 18 år gammel. Der fikk hun se en demonstrasjon av Charles Babbage sin første maskin, 'The Difference Engine'. Det var en mekanisk regnemaskin som benyttet differansemetoden til å regne ut kompliserte matematiske funksjoner som trigonometriske tabeller, logaritmer og potensverdier.

Lady Augusta Ada Byron ble sterkt interessert i denne regnemaskinen og søkte å bli kjent med oppfinneren, noe som ledet til et langvarig vennskap mellom de to. Det var i forbindelse med Charles Babbage sin neste mekaniske oppfinnelse, 'The Analytical Engine', at Lady Ada skulle få sin største innflytelse. Babbage sin oppfinnelsen var nemlig en programmerbar mekanisk regnemaskin, og det ble Lady Ada som utviklet en metode for å programmere den. Hun viste hvordan en matematisk funksjon kunne gjennomføres. Dette var det første dataprogrammet i verden og har ført til at hun i senere år er blitt omtalt som 'den første programmerer'.

Lady Augusta Ada giftet seg med Lord William Lovelace og fikk tittelen Lady Lovelace (hertuginne av Lovelace). Men selv som hustru og mor var hun mer interessert i matematikk og regnemekanismer enn i de mer hjemlige syslene. Selvsagt gjorde den gode økonomien i deres husholdningen at hun egentlig ikke trengte å bruke mye av sin tid til huslige ting - tjenerstaben tok seg av det. Hertug Lovelace innså også at Lady Ada var mer intellektuelt interessert og utrustet enn en vanlig husmor. Han støttet henne derfor i det arbeidet hun tok på seg for å assistere Charles Babbage i utviklingen av analysemaskinen hans.

I 1842 oversatte Lady Ada til engelsk en avhandling som var skrevet på italiensk av Luigi Menabrea, en italiensk vitenskapsmann. Menabrea var en av Charles Babbage mange utenlandske kontakter og en av hans beste venner. Han hadde skrevet mye om den nye analytiske maskinen på måter og i ordelag som viste en enestående innsikt i og forståelse for det som for samtiden stod som et mekanisk mysterium. Lady Ada sin oversettelse var svært omhyggelig gjort og fikk en enorm betydning. Hun sørget for å forklare alle de nye tekniske uttrykkene, hun klarla detaljene i omhyggelig uttrykte fotnoter, hun føyde til en lang liste med eksempler og henvisninger og hun bearbeidet stoffet slik at det fikk en enhetlig og ordentlig struktur.

Oversettelsen hennes ble publisert i 1843 med tittelen 'The Sketch of the Analytical Engine' (Skisse av den analytiske maskin). Den ble særdeles godt mottatt og alle kritikerne roste Lady Ada for hennes arbeid og ikke minst for hennes utfyllende bemerkninger. Uttrykksformen hennes er blitt stående som et slående eksempel på gode formuleringer. Blant annet er hun kjent for å ha skrevet: 'Den analytiske maskinen vever algebraiske mønstre på samme måte som Jacquard-vevstolen vever blomster- og løvmønstre [i damask-silke].' Hertuginne Ada døde av livmorkreft bare 36 år gammel. Selv om hun døde så ung, fikk hun mye utrettet. Hun ble og er fortsatt velkjent for sitt arbeid, ikke minst for hennes skrifter og avhandlinger om programmeringen av Charles Babbage sin berømte analytiske maskin.

Da det amerikanske forsvarsdepartementet (DoD) i 1970-Drene ønsket å få utviklet et standardisert programmeringsspråk for alle militære og offisielle datamaskinprogrammer, var det klart at språkets navn ville bli viktig for en generell aksept. Et typisk militært navn som DOD-1 eller liknende, ville neppe ha mye markedsappell. Forsvarsdepartementet anmodet da arvingene etter Lady Lovelace om tillatelse til å kalle opp det nye programmeringsspråket etter Hertuginnen. Denne tillatelsen ble gitt, og det nye ADA språket lansert. ADA er et språk som i første rekke er laget for å oppnå alle de funksjoner som militære applikasjoner krever av innebygde datamaskiner, slike som inngår i avanserte våpensystemer, men også i industrielle sanntids-baserte kontrollsystemer. ADA er også et programmeringsspråk som i stor grad bygger videre på den utviklingen som programmeringsspråkene FORTRAN, COBOL og PASCAL hadde begynt.

Tilbake til toppen

George Boole and logisk algebra

Opprinnelsene til datateknologien er mange og vidt spredte, og det er ofte vanskelig å verdsette hver enkel pioners bidrag og betydning på en nøktern måte. Men en pioner som klart var en av de aller viktigste i denne sammenheng var George Boole. Boole var en selvlært mann som allerede i forholdsvis ung alder satte seg som mål å lære seg matematikk. Han vokste opp i forholdsvis sparsommelige kår i forrige århundres England, og nådde slike matematiske høyder at den store matematiker og filosof Bertrand Russell skrev om ham: "Ren matematikk ble oppdaget av George Boole i hans arbeid som ble utgitt i 1854".

Det Bertrand Russell her viser til er en tynn liten bok som kom ut i London i 1848, med tittelen "Matematisk analyse av logikk" som ledet til Booles hovedverk i 1854, med overskriften "En undersøkelse av lovene for tenking, på hvilke er bygget opp de matematiske teorier for logikk og sannsynlighet". I disse to arbeidene har Boole vist hvordan det er mulig å gi presise matematiske formuleringer for logiske slutninger. Dette vidtrekkende og viktige bidraget ble imidlertid liggende ufordøyd og ubrukt i over seksti Dr, inntil det ble brakt frem igjen i 1913 i boken som Whitehead og Russell forfattet, Principia Mathematica.

Det George Boole skrev om i sine to arbeider, dekket mange aspekter av logikkens lære. Det var i første rekke utviklingen hans av en egen algebra for å uttrykke og behandle logiske sammenheng, som er verd å nevne i vår sammenheng. Den såkalte Boolske algebra ligger til grunn for den formelle måten vi i dag analyserer og syntetiserer logiske kretser på, slike som inngår i all datamaskinkonstruksjon. I sine skrifter uttalte Boole at hensikten med hans algebra var: "han ... ønsket å finne måter som tilsvarer de symbolske uttrykk vi benytter i aritmetikk." I sin algebra brukte Boole et system med vilkårlige symboler for variable, eksempelvis x, y og z for å representere ting eller tilstander. For disse variable gjelder noen få logiske operasjoner som kan utføres, og som han betegnet med + og *. Han satte for eksempel, at dersom a og b er slike ting eller tilstander, så vil også a + b være det samme. Boole utviklet først de generelle reglene som gjelder rekkefølgen av logiske operasjoner. Vi kjenner diss som lover:

x + y = y + x

x * y = y * x

(x + y) * z = x * z + y * z

Disse lovene svarer bra til de som gjelder i algebra, med ett unntak: x 2 = x * x = x. De ting eller tilstander som Booles algebra skal behandle, kan være når sagt hva som helst. For eksempel, dersom x betyr 'tingen' student, y står for 'tilstanden' kvinne og z representerer 'tilstanden' gift, vil den logiske kombinasjonen x * y stå for <både> student <og> kvinne, dvs. kvinnelig student, likeledes vil x * z vil være det samme som <både> student <og> gift, mens y * z betyr gifte kvinner. Med andre ord, tegnet * står for kombinasjonen <både> a <og> b, det som vi kaller OG-funksjonen.

Hadde vi derimot skrevet x + y ville dette hatt den logiske betydningen <enten> student <eller> kvinne, og på tilsvarende måte, x + z ville vært det samme som <enten> student <eller> gift mens kombinasjonen y + z vil ha meningen <enten> kvinne <eller> gift. Dermed kan vi skrive x + y * z for å uttrykke kombinasjonene <enten> student <eller> gift kvinne. På samme vis vil x * y + z stå for <enten> gift student <eller> kvinne. Selv innså Boole svært tidlig at dersom et større hele var summen av deler, måtte det også gå an å splitte et større begrep opp i sine enkeltheter. Han skrev at dersom x er alle de lysene vi ser på himmelen, og hvor y av disse er stjerner og z er planeter, da er x = y + z eller z = x - y. Dette siste uttrykker at planetene er alle lyspunktene på himmelen minus stjernene. Med andre ord, det er en logisk subtraksjon som gir oss dette.

En av de første som innså mulighetene for å bruke George Booles logikk var Claude Shannon, en forsker, senere professor ved M.I.T. Shannon var blitt kjent med Booles algebra og så mulighetene for å utvikle en passende versjon som kunne bestemme tilstandene (signalveiene) i såkalte relebrytekretser (eng. Switching Circuits). Allerede i 1938 publiserte han en artikkel som definerte hvordan enkle relekretser skulle forstås, uttrykkes i en algebra, forenkles og syntetiseres. Artikkelen var basert på hans doktoravhandling avlagt året før. Med Shannons relealgebra er det mulig å konstruere komplekse binære logiske kretser som virker som vipper, tellere, logiske OR-porter og ELLER-porter, IKKE-porter osv. Shannon viste således at med enkle kretser, basert på George Booles algebra, er det mulig å bygge opp komplekse aritmetiske og logiske funksjoner, nettopp slike som inngår i en datamaskin.

Tilbake til toppen

Hermann Hollerith og hullkortmaskinen

Et viktig skritt forover i datateknologiens utvikling ble tatt i USA i slutten av 1880-årene. Bakgrunnen var den amerikanske grunnloven som påbyr folketelling hvert tiende år. Denne folketellingen ligger blant annet til grunn for fordelingen av represententer ved valget til den amerikanske Kongressen. Den har derfor stor politisk oppmerksomhet og avgjør i enkelte tilfeller hvilket parti som får flertall i Kongressens Hus eller i Senatet. Databehandlingen etter folketellingen i 1880 tok over sju Dr, noe som klart var altfor lenge å vente for politikerne. Kongressen utlyste derfor en stor konkurranse om bedre, raskere og mere effektive midler for å behandle folketellingsresultatene. For å avgjøre konkurransen ville det bli holdt en prøvetelling i St. Louis, Missouri, i 1887. Alle interesserte firmaer ble invitert til å delta.

Det meldte seg flere til dette, men kun tre systemer ble funnet verdige til å prøves i Missouri. Det første var noe som ble benevnt Hunt's System; nummer to var en tabuleringsmåte kjent og beskrevet under navnet Pidgin's Method. Det tredje var en elektromekanisk tabuleringsmaskin laget av Hermann Hollerith. Ved prøvetellingen i St. Louis var resultatene ganske overbevisende. Hunt's System brukte 55 timer på databehandlingen, mens Pidgin's Method gjorde den unna på 44 timer. Hermann Holleriths tabuleringsmaskin, derimot, gjorde det hele på 5 timer og 30 minutter og vant en klar og overlegen seier.

Holleriths maskin var en videreføring av ideer hos Charles Babbage. Data ble lagret på hullkort, noe som Hollerith kom på etter å ha sett Jacquard-vevstolens mønsterstyring samt Charles Babbages bruk av hullkort for instruksjoner og variable. Hollerith var utdannet ved Columbia School of Mines. Fra professor W.P. Trowbridge der fikk han kjennskap til det amerikanske folketellingsproblemet, dvs. databehandlingen som tok over sju år å fullføre. Den omfattet ikke bare opptellingen av antallet personer i landet, men bestod like mye i sortering og tabulering av opplysninger om folks arbeid og levekår, industri og økonomi, landbruk og liknende. Det var analysen av slike data som tok så lang tid, og som det ikke fantes noen enkle og effektive midler for.

1882 hadde Hollerith arbeidet et år som instruktør (amanuensis) i mekanikk ved M.I.T. i Cambridge, Massachusetts. Han dro derfra til Washington DC hvor han fikk en stilling i Patentstyret. Ikke lenge etter søkte han selv om patent på en metode for å samle og bearbeide statistiske data. Han var klart overbevist om at han kunne bygge et system av maskiner som kunne håndtere store datamengder, alt fra innsamling, lagring og sortering til tabulering av resultatene. I et brev til en venn skrev han mange år senere hvordan han var kommet frem til den besnærende måten han valgte å samle inn data på: En av de tingene som hjalp meg mye i dette, var at en tid før jeg flyttet vestover, tenke mye på ideen med å lagre og bearbeide data ved hjelp av å klippe huller i et kort, slik som jernbanebilletter klippes.

På samme måten som togkonduktøren klipper huller i billetter, kunne folketellerne klippe huller i opptellingskortene. De kunne bruke ett kort pr. person og klippe hull for alle de tingene som passet. Hollerith utarbeidet et tellesystem hvor hullkortene ble sendt gjennom en enkel elektromekanisk sorteringmaskin. Hvert kort som var klippet et valgt sted, ble skilt fra alle de som ikke var klippet. Med dette kunne han lett 'telle opp' de som hadde hull, dvs. de kortene som svarte til positive svar for akkurat det spørsmålet.

Holleriths første hullkortmaskiner var enkle sorteringsmekanismer. Ved hjelp av elektriske kontakter som 'følte' der hvor det kunne være klippet et hull, var det mulig å slutte en elektrisk krets, dvs. sende strøm gjennom hullet og dermed få et signal som styrte hvor kortet gikk videre, til den ene av mange oppsamlingsbinger. Med andre ord, alle kortene med et gitt hull endte i samme binge. Andre kort gikk i andre binger. Selve databehandlingen ble utført ved at kortene ble sortert en rekke ganger og hver gang talt opp, slik at alle individuelle kategorier ble behørig identifisert og tabulert.

Dette systemet virket svært bra, det var robust og pålitelig. Med litt omtanke lot mange detaljer og nyanser som inngikk i datamengden, seg lett skille fra. Ved å telle opp slike fraskilte kort kunne opptellingsekspertene regne ut sine statistiske måltall og få frem alle de oversiktene som opptelllingen hadde gjort mulig. Hollerith holdt seg lenge til slike enkle sorterings- og tabuleringsmetoder. Tabuleringsmaskinen hadde 40 tallskiver, hver med en viser som ble flyttet et hakk frem for hvert kort som passerte inn i den tilsvarende bingen. Med en slik tabuleringsmaskin var det mulig å behandle store mengder data nærmest helautomatisk. Gjentatte sorteringer og opptellinger ble brukt for å utføre statistiske beregninger og lete i store datamengder.

Det var med disse maskinene at Hollerith utførte folketellingen i 1890; den tok litt over seks uker. Tallet på mennesker i USA og hullkort klippet og sendt gjennom Holleriths maskiner var 62.622.250.

Tilbake til toppen

Alan Turing og den teoretiske datamaskinen

Alan M. Turing er en av datateknologiens mest gåtefulle skikkelser. Han ble født i London i 1912, gikk på den eksklusive private skolen Sherbourne og studerte videre ved det kjente King's College i Cambridge. Dette gav ham en utdanning som raskt førte ham inn i de beste vitenskapelige sirkler i England. Den åpnet også dører for ham i USA, hvor han studerte en tid ved Universitetet i Princeton, New Jersey, under den kjente matematikeren Alonzo Church og datapioneren John von Neumann. I 1937, i en alder av 26 Dr, skrev Alan Turing hva som i ettertid er blitt stående som hans mest briljante arbeid, avhandlingen "Om beregnbare tall, med en applikasjon innenfor 'Bestemmelighetsproblemet'"

Det var i denne avhandlingen han lanserte sin teori om en universell teoretisk datamaskin som etter hans tid er blitt velkjent under betegnelsen Turing-maskinen. En Turing-maskin er egentlig et abstrakt matematisk konsept som vi kan forestille oss i form av en elektronisk datamaskin. Fordi Turing-maskinen er et slik abstrakt konsept, uten praktiske begrensninger, er det mulig å bruke det til å undersøke og tenke igjennom en rekke teoretiske problemstillinger.

Turing-maskinen, slik Alan Turing selv beskrev den og forestilte seg den, består av en samling med logiske funksjoner som styrer lesing og skriving av data på et uendelig langt lagringsbånd. Avhengig av hva maskinen har utført og informasjonen den har lest, utfører den logiske analyser og sjekker oppstilte betingelser før den flytter lagringsbåndet et eller flere hakk den ene eller andre veien. Dette er egentlig en svært enkel datamaskin. I prinsippet har Turing bevist at den kan utføre en hvilken som helst prosedyre. Det er nettopp denne enkle konstruksjonen, med en logisk kjerne og et uendelig langt lagringsbånd, som gir teoretikerne et egnet, elegant verktøy til å analysere og bevise matematiske sammenheng. Særlig gjelder dette innenfor de matematiske problemstillingene som har med hva som kan og ikke kan beregnes.

Da England kom med i den andre verdenskrig i september 1939, ble Turing vervet til tjeneste i forsvaret. Han ble bedt om å arbeide for den britiske utenrikstjeneste i dets hemmelige kryptoanalytiske avdeling. Det var en gruppe som hadde som mål å tyde kodene som skjulte tyske militære meldinger. Innen kort tid ble Turing, sammen med mange andre av Englands fremste matematikere, satt til å knekke den kjente tyske Enigma-koden.

Gruppen satset på å benytte elektroniske instrumenter til dette, basert på datateknisk innsikt som blant andre Alan Turing mente var nyttig. Resultatet var en stor, men primitiv analysemaskin som fikk navnet Colossus. Med den greide de etter et par års hardt arbeid å knekke Enigma-koden og lese oppfangede militære meldinger. Dette gav etter sigende de allierte muligheten til å få kjennskap til tyske militære planer, fange opp ordrer sendt til felten og styrkemeldinger som kom tilbake til hovedkvarteret i Tyskland. Turing sitt arbeid under krigen var så viktig at det fortsatt blir holdt hemmelig. Men for sine mange bidrag fikk han ordensutnevnelsen 'Order of the British Empire' som ble overrakt ham av kong George VI like etter krigen.

I Drene etter krigen arbeidet Turing i London hvor han deltok blant annet i utviklingen av en av Englands første elektroniske datamaskiner, ACE. I 1948 flyttet han til Manchester til en stilling ved Universitetet der. Han fortsatte å forske på matematiske og datatekniske problemer. Et spørsmål som opptok ham mye, var samlet i de enkle ordene: Kan en datamaskin tenke?" Arbeidet med dette endte med en dypttenkende artikkel som kom i 1950 med tittelen "Datamaskiner og intelligens". Artikkelen er grunnen til at Turing er blitt kalt far til fagområdet 'kunstig intelligens' (eng. Artificial Intelligence). Det var Turings oppfatning at datamaskiner på lengre sikt kunne tenke, ved hjelp av avanserte maskinvarer og spesialiserte dataprogrammer. For å klarlegge om dette noen gang blir oppnådd, foreslo han en 'prøve' som siden er kjent som "The Turing Test".

- En nøytral person stiller så mange spørsmål som han ønsker og om hva som helst, til to mottakere som holdes skjult for ham. Den ene er et menneske, den andre en datamaskin.

- Spørsmålene besvares enten av mennesket eller av datamaskinen; hvem av dem som gjør det velges vilkårlig og spørsmålsstilleren vet ikke om det mennesket eller datamaskinen som svarer ham.

- Dersom spørsmålsstilleren, etter en lang rekke spørsmål, ikke kan identifisere hvilke svar som kom fra mennesket og hvilke som kom fra datamaskinen, må vi innrømme at datamaskinen har en intelligens eller kan tenke på samme måte som et menneske.

Turing døde i sitt hjem i 1954, 42 år gammel. Mye av forskningen i kunstig intelligens i dag dreier seg om spørsmål som Alan Turing var den første til å stille, for over 40 år siden.

Tilbake til toppen

KONRAD ZUSE og rele-datamaskinene hans

Det er ikke mye de fleste vet om Konrad Zuse og hans pionerarbeid med datamaskiner, et arbeid som fikk sin start tidlig på 1930-tallet i Tyskland. Hans arbeid fikk heller ikke noen stor innflytelse på andres tenkemåter eller løsningsprinsipper. Likevel er Konrad Zuse en viktig pioner i datateknologiens utvikling, fordi han lyktes i å bygge en digital datamaskin lenge før andre. Men Zuse arbeidet helt atskilt fra resten av verden, både på grunn av Hitler-tidens politiske atmosfære og senere, på grunn av den andre verdenskrigens isolasjon.

Konrad Zuse ble født i 1910 i Berlin, men vokste for det meste opp i Braunsberg i Øst-Preussen, det som nå er den polske byen Braniewo, mellom Gdansk og Kaliningrad. Han var tidlig i ungdommen opptatt med dette å løse vanskelige regneoppgaver, og han spekulerte mye på om det var mulig å lage mekanismer og maskiner som gjorde slikke jobber lettere. Med regnestav og mekaniske addisjonsmaskiner kunne han utføre elementære aritmetiske operasjoner, men det å gjennomføre en serie utregninger, gjerne slike hvor resultatet av en utregning bestemte inngangsverdien til den neste, det var det ikke lett å få til.

Zuse sine første forsøk skjedde i 1934-1935 mens han ennå var student. Han tenkte da at for hvert problem som skulle løses kunne han lage et regneskjema med rubrikker for alle tallene som skulle regnes ut. Et skjema gav god oversikt og var lett å tilpasse de enkelte formål, og var dertil lette å bruke. Slike grafiske flytdiagrammer var det forholdsvis lett å lage, i alle fall for enklere regneoperasjoner som kun krevde serier med multiplikasjoner, addisjoner, divisjoner osv.. En av hans grunntanker i dette arbeidet var å finne de beste plasseringer for hvor tallene skulle sitte i skjemaet, slik at regneoperasjonene ble utført stort sett mest på nære naboer'. Et tall som ble brukt flere plasser hørte ikke hjemme noe sted. Derfor tenkte han seg en slags heisekran som grep over hele skjemaet, hentet tall der hvor de stod lagret og plasserte dem der de trengtes for neste skritt i regneprosessen. Dette var egentlig kimen til hans forsøk på å mekanisere regneprosessene.

I 1935 var Konrad Zuse var ferdig utdannet sivilingeniør i konstruksjonsteknikk og ble ansatt i flyfabrikken Henschel i Berlin. Hans første oppgaver gikk ut på å analysere komplekse vingestrukturer, noe som krevde løsing av store ligningssett. Dette var nøyaktig det han hadde strevd med tidligere, arbeid som krevde mekaniserte hjelpemidler. Han fant han rask ut at det var to problemer som overskygget alt annet: (1) hvordan skal en mekanisk menteoverføring gjøres uten at noe går galt for alle tenkelige addisjoner, og (2) hvordan skal multiplikasjon best utføres? Menteproblemet var det som Charles Babbage hadde strevd med 100 år tidligere, å sikre at addisjoner som 999999 + 1 = 1000000 eller 111111 + 1 = 1000000, lyktes. I begge disse må menteverdien flyte mot venstre inntil den blir addert til tallet i siste sifferposisjon. Den klassiske måten å mekanisere multiplikasjon på, er ved gjentatte addisjoner. En mer elegant måte, men vesentlig vanskeligere å få til, er å foreta multiplikasjon via delprodukter som adderes. En tredje måte er basert på store multiplikasjonstabeller, en løsning som Zuse klart innså han ikke kunne få til med de midlene han rådde over.

I løpet av sin utdanning hadde Zuse lært mye matematikk, mekanikk og teknisk tegning, men lite om elektrisitet og tallteori. Likevel valgte han å satse på binære tall i alle sine regneenheter. Det binære tallsystemet er enerådende i dagens datateknologi; Zuse valgte å benytte det fremfor desimale tall. Det er jo nærliggende å tro han må ha studert nøye de mekaniske bordregnemaskinene som firmaet eiet, som jo alle var basert på desimaltall. Det var i slutten av 1936 at Zuse for alvor begynte å bygge en datamaskin. Han arbeidet om kveldene hjemme i stuen hos foreldrene, til dels med god hjelp fra sin venn Helmut Schreyer.

Det første problemet de forsøkte å løse var datalagringen. Den tenkte de å få til ved å skyve tynne stålpinner ut og inn gjennom hull i en tykk plate. Når en pinne stakk ut på ene siden, var det en '0'; stakk den ut på andre siden var det en binær '1' som stod lagret der. Zuse tenkte seg en stor lagerplate med tusener av slike pinner og en traversheisekran som skjøv dem inn eller ut etter regneprosessene. En annen traverskran gikk på samme måten over hele flaten og 'følte' hvilken vei pinnene stod, dvs. lese dataverdiene. Dermed kunne Zuse konstruerte et mekanisk datalager, ordnet med 16 bit lange binære ord og med noen tusen ords lagringkapasitet. Det å bygge en brukbar aritmetisk enhet var mer komplisert. Zuse hadde lenge trodd at han skulle få problemer med multiplikasjon, men ble svært overrasket da han oppdaget at i det binære tallsystemet er multiplikasjon ikke vanskeligere enn addisjon. Sammen med sin venn bygget han den første aritmetiske enheten i 1938 og fikk den til å samordne sine dataord med det som var lagret i datalagringssystemet de hadde bygget året før. Men dessverre virket ikke alt godt nok til at maskinen kunne brukes til virkelige utregninger.

Lagringsystemet virket bra nok, men de mekaniske aritmetikkløsningene var ikke pålitelige nok og langt fra raske nok. De trengte en bedre løsning enn den de hadde valgt og arbeidet videre. Zuses venn var utdannet elektroingeniør og var ganske overbevist om at de kunne finne denne bedre løsningen ved å bruke elektriske telefonreleer som virket upåklagelig i hundretusener av operasjoner i de automatiske sentralene. Dette ble gjort og datamaskinen deres stod ferdig og virket som den skulle i 1941. Den ble imidlertid fullstendig ødelagt under et alliert flyangrep på Berlin i slutten av den andre verdenskrigen. Med det gikk tapt den første europeiske binære datamaskinen. En senere versjon, Zuse nr. tre, er utstilt på det tekniske museet i Zurich.

Tilbake til toppen

John Atanasoff og oppfinnelsen av datamaskinen

Hvem fant opp datamaskinen? Det er et vanskelig spørsmål, som mange har gått rettens vei for å få avgjort. Klart er det i alle fall at viktige bidrag kom helt fra antikkens kinesiske kuleramme, den såkalte Abacus, fra Charles Babbage som konstruerte en dampdrevet 'analysemaskin' på 1830-tallet og fra Lady Auguste Ada, hertuginne av Lovelace, som skrev det vi nå innser var det første dataprogrammet i verden. Likevel, hvem fant opp den moderne elektroniske datamaskinen? Var det John Atanasoff og Clifford Berry med sin ABC-Computer eller var det John Mauchley og J. Presper Eckert som bygget ENIAC-maskinen? Var det John von Neumann med sine klart formulerte konsepter om organisasjon, funksjonalitet og arkitektur av en datamaskin som var oppfinneren? Eller var det tyskeren Konrad Zuse som vitterlig hadde en mekanisk datamaskin i full virksomhet i 1930-Drenes Berlin?

Historien om datamaskinens oppfinnelse var lenge lite påaktet, inntil det ble reist sak om den i USA i slutten av 1960-Drene. Saken dreide seg om patentrettigheter og krav om lisensavgifter i store summer. Striden i retten stod mellom Sperry Rand Corporation som sa de eide alle rettigheter, og Honeywell Inc. som nektet å akseptere dette og ikke ville betale. Rettsaken begynte med at Sperry Rand viste til at de var de rettmessige eiere av det banebrytende og patenterbare arbeidet som var nedlagt i ENIAC og dens etterfølger, UNIVAC. De hadde derfor rett til å kreve lisensavgifter for sine mange patenter.

Det var allment godtatt i de første ti-årene etter andre verdenskrig at John Mauchley og J. Presper Eckert var oppfinnerne av den moderne elektroniske datamaskinen, ENIAC. Den stod ferdig i Philadelphia i 1946. ENIAC var en elektronisk datamaskin som inneholdt alle de enheter vi med rette kan identifisere som viktige deler av et moderne system: sentral prosessor, internt datalager, inn- og utlesningsutstyr, egen kontrollsystem. ENIAC hadde også vakt stor oppmerksomhet da den ble lansert med mye PR, særlig fordi de militære styrkene i USA så på den som et revolusjonerende verktøy for å regne ut ballistiske tabeller (over kanonprosjektilers flukt gjennom luften).

Sperry Rand hadde kjøpt alle ENIAC-patentene i 1951. De mente derfor de kunne kreve lisensavgift fra alle som ønsket å lage og selge elektroniske datamaskiner. Mange store firmaer i USA hadde startet slik produksjon of fant å måtte brye seg for lisenskravet. Honeywell Inc. var også i ferd med å lage datamaskiner, men de mente det var urimelig å måtte betale lisens i all fremtid for det de anså for å være et sett med urimelige patenter. De begynte derfor å grave i historien for å finne hvem som egentlig var datamaskinens oppfinner.

Svaret var John Atanasoff som sammen med sin assistent Clifford Berry hadde bygget en fungerende elektronisk datamaskin-prototyp i 1939, fulle sju år før ENIAC. Atanasoff sin datamaskin, som han kalte ABC-maskinen, inneholdt et elektronisk internlager som i prinsippet svarer til de som inngår i dagens personlige datamaskiner. Den var utstyrt med elektroniske kretser for å utføre aritmetiske operasjoner som addisjon og subtraksjon, og den hadde et kontrollsystem som tillot styring av regneprosessene etter et dataprogram. Med andre ord, det var en elektronisk datamaskin som fungerte lenge før det ble liv i ENIAC.

Honeywell fant også ut at John Mauchley hadde besøkt Atanasoff i flere dager i juni måned 1941 og hadde da fått se alle Atanasoffs tegninger og beregninger. Det var ikke tvil om at mange av Atanasoffs ideer endte opp i konstruksjonsdetaljene av ENIAC. Retten var enig i dette. Den fant det bevist at Atanasoff med sin ABC-maskin hadde påvirket utviklingen av ENIAC i en slik grad at Atanasoff måtte ansees å være den egentlige oppfinneren. Mauchley og ENIAC hadde 'lånt' ideene fra ABC-maskinen. Sperry Rand sine mange patenter ble derfor funnet ikke gyldige.

John Atanasoff var en ung professor ved Iowa State University og Clifford Berry hans assistent. De to hadde eksperimentert med forskjellige kretser og mekanismer inntil de hadde funnet frem til en metode som virket bra. Den første datamaskinen deres var på størrelse med et skrivebord, men den kunne bare utføre noen enkle aritmetiske operasjoner. Likevel, den viste i hvilken retning det var best å fortsette. I 1942 hadde ATANASOFF og Berry klar sin andre maskin-prototyp. Den var en klar spesialisert videreføring av den første ABC-maskinen.

Til John Mauchleys forsvar kan vi si at det er svært alminnelig at forskere ved universiteter åpent og villig deler sine resultater og sin innsikt med hverandre. At Mauchley dro nytte av Atanasoffs ideer og erfaring er derfor ikke uvanlig eller klanderverdig. Vi kan også si at Atanasoff selv ikke gjorde noe for å oppnå 'eier-rettighetene' for sine ideer, for eksempel ved å publisere dem i et vitenskapelig tidsskrift. Både Atanasoff og Berry ble innkalt til militærtjeneste i 1942 og sluttet av sine prosjekter på det tidspunktet. John Mauchley, på den annen side, søkte det amerikanske krigsdepartementet om støtte til sitt ENIAC-prosjekt, noe han fikk. Han kunne derfor fortsette arbeidet sitt gjennom hele den andre verdenskrig. Han hadde 'tenkt gjennom' hva som egentlig krevdes av et fullgodt datasystem, og han så sine tanker akseptert og gjennomført senere i konstruksjonen av UNIVAC-datamaskinene, de direkte etterfølgere etter ENIAC.

Tilbake til toppen

John von Neumann og EDVAC-rapporten

John von Neumann var en brilliant matematiker, fysiker, logiker og datamaskin-konstruktør. Mange historier er med Drene blitt fortalt om denne enestående intelligente personen som løste problemer med utrolig fart og som hadde slik en fantastisk hukommelse. Hukommelsen benyttet han ikke bare til å forbedre sine matematiske kunnskaper. Han lærte seg utenat en rekke bøker og kunne gjengi dem ord for ord mange år etterpå. John von Neumann ble født i Ungarn i 1903, som eldste sønn av en velstående bankmann. Han begynte tidlig på sin skolegang, og allerede som 11-Dring startet han i den videregående skolen. I skolen lærte han alt det som matematikklæreren kunne undervise i, og måtte få spesialundervisning av en universitets-professor. Da han var 19 år gammel, ble hans første vitenskapelige artikkel publisert og med den ble han plutselig anerkjent som en profesjonell matematiker. Fra det tidspunkt var hans livsløp nærmest klarlagt: han ble en av verdens fremste matematikere av den universelle klassen. Von Neumann kunne nemlig boltre seg like godt både i teorienes og anvendelsenes verden innen da-tidens matematikk.

John von Neumann dro til USA under nazistregimets første tid i Tyskland. Der fikk han en stilling som konsulent for de militære styrkene fordi han som fysiker og matematiker visste og forsto så mye om vanskelige hydrauliske fenomener. Da den andre verdenskrig brøt ut og USA kom med i krigen, ble von Neumann vervet til å delta i det store Manhattan-prosjektet som skulle utvikle atombomben. Heldigvis for ham og oss ble von Neumann tidlig kjent med en av pionerene som arbeidet med å utvikle den første elektroniske datamaskinen i verden, ENIAC. Den personen het Herbert Goldstine og han introduserte von Neumann til de tusen problemene som måtte løses før en virkelig datamaskin var oppnådd. Konstruksjonen av en helt ny type matematikk-maskin var noe som virkelig fengslet von Neumann, og han fikk snart bruk for all sin innsikt i matematikk, fysikk og logikk i dette arbeidet. Et av hans store bidrag var noe så enkelt som ideen at det dataprogrammet som styrer hva som skjer i en datamaskin, er også en samling data og kan derfor lagres og behandles på samme måte. Inntil da hadde nemlig all programmering bestått av en omstendelig omkobling av de elektriske ledningene som forbandt de forskjellige delene av datamaskinen.

Ifølge von Neumanns ide skulle en datamaskin styres av data som ble lest inn på samme måte som de data som det skulle regnes noe med. Dette var noe som krevde en egen type organisering av delene i datamaskinen. Det måtte skilles klart mellom de som foretok innlesing, lagring, prosessering og utlesning. Hver funksjon måtte få sin beste løsning. Denne atskillelsen og spesialiseringen førte til å datamaskinen ble svært mye raskere og mere effektiv. Alle ideene sine samlet han i en rapport som er blitt stående som et eksempel på klar tenking og systematisk problemløsning. Og det er en av grunnene til at vi minnes von Neumann og hans enkle ide, slik at datamaskinene er blitt så suksessfulle og nyttige som de er.

I dag snakker vi derfor om en von Neumann-maskin eller von Neumann-arkitektur når vi har med en ordinær datamaskin å gjøre. De vi bruker som personlige datamaskiner og arbeidsstasjoner er alle organisert og operert etter von Neumanns prinsipp. På mange vis er denne 'standard'-løsningen på samme tid også blitt en slags tvangstrøye som vi ikke slipper ut av. Mange teoretikere har lett etter konstruksjonsløsninger som ville føre oss vekk fra det som er blitt kalt 'von Neumanns flaskehals' - en arkitektur hvor samtlige funksjoner flyter gjennom de samme Drene.

Endringene som teknologi og videreutvikling har ført med seg de femti Drene som er gått siden von Neumann skrev sin rapport, har imidlertid ikke overflødiggjort hans forslag. Datamaskinene er blitt stadig raskere og mer allmenne i anvendelse, og de har fått finere og mer spesialiserte komponenter i sitt elektroniske indre. Men den grunnleggende arkitekturen - organisasjonsformen og virkemåten - er fortsatt slik som von Neumann klarla den i 1946-1947.

John von Neumann døde av kreft i 1957, bare 54 år gammel. Kanskje kreften skyldtes hans arbeid med strålingsfarlige materialer under Manhattan-prosjektet, hvem vet? I sitt relativt korte, men produktive liv oppnådde han å få utført svært mye godt arbeid. Mye av den han huskes best for, er hans evne til å innse hva som var den fysiske årsaken til observasjonene i laboratoriet. Med sin analytiske legning og matematiske innsikt kunne han formulere det i presise matematiske uttrykk slik at andre kunne dra nytte av det.

Tilbake til toppen

FORTRAN: det første programmeringsspråket

I 1954 samlet I.B.M. en produktutviklingsgruppe med John Backus som leder. Backus var en ung mann med gode lederegenskaper, og gruppen hans fikk som oppgave å utvikle et egnet språk eller kodingssystem som for å programmere de nye datamaskinene firmaet var begynt å produsere. Det var innenfor tekniske og vitenskapelige felter der var et behov for et godt programmeringsspråk. I.B.M. hadde gjort ferdig stormaskinen Modell 704, som skulle bli den viktigste og kraftigste 'arbeidshesten' i mange år fremover. Til den trengtes et språk eller en metode for å oversette tekniske formler og vitenskapelige ligninger til maskinspråk.

Backus var en ingeniør med store teoretiske kunnskaper i datidens datamaskiner og god erfaring med maskiners virkemåter. Han samlet om seg en gruppe personer som han mente kunne bidra til spesifikasjonen og utviklingen av et slik produkt. På det tidspunkt fantes det ikke noe sånt som programmering som yrke. Datateknologien var i sin første utviklingsfase og få hadde innsett at maskinene trengte å kunne programmeres på en brukervennlig måte. For Backus var det derfor en oppgave å finne de rette folkene for utviklingen. Han valgte å søkte etter ingeniører og andre som forstod sjakk, fordi han mente de ville ha de beste forutsetningene for logisk tenking og systematisk utvikling. En annonse i storavisen New York Times brakte flere søkere, blant dem den amerikanske sjakkmesteren og den franske lokale sjakkmesteren på Rivieraen.

Et av målene for det nye programmeringsspråket var at det skulle resultere i kjørbar maskinkode som var 'minst like god' som den skrevet av en spesialist. For visse applikasjoner ble det sogar fablet om at FORTRAN-kompilatoren skulle gi enda bedre kode; den skulle generere såkalt 'perfekt maskinkode'. I realiteten ble imidlertid resultatene noe mindre enn ønsket. Det viste seg nemlig at FORTRAN-koden gjerne var noe ustrukturert i oppbygningen; den ble gjerne lengre enn de hadde håpet på, og ikke minst, den kjørte ikke så raskt som optimalt mulig. Men FORTRAN var den første virkelige høynivåspråk-kompilatoren og den representerte derfor en kjempemessig fordel for I.B.M. FORTRAN ble på kort tid en stor suksess på markedet.

Språket var i første omgang utviklet for en datamaskin som hadde et internlager med plass for 4096 36-bit lange binær-kodede ord. I tillegg var datamaskinen utstyrt med to magnetiske trommellagre for sekundærlagring og fire magnetbåndstasjoner for rask inn- og utlesing av data. To viktige landevinninger var oppnådd i denne første kompilatoren, og begge har fått vidtrekkende følger. De var (a) en metode for systematisk tyding av vilkårlige algebraiske uttrykk (formler og ligninger) og (b) en metode for automatisk analyse av hvordan kontrollflyten i et dataprogram er. Begge metodene inngår i moderne kompilatorer.

To problemer som FORTRAN-konstruktørene ikke helt maktet å løse i den tiden de hadde til disposisjon, var at kompilatoren ikke tillot såkalt 'blandet modus' aritmetikk (eng. Mixed Mode Arithmetic), dvs. at heltall og flyttall kan brukes om hverandre. Likeledes manglet den en god definisjonsmåte for å sikre at variabler fikk korrekte format og avgrensede talllområder. For eksempel tok det flere versjoner av FORTRAN før symbolske navn kunne benyttes for konstanter, og at numeriske eller alfanumeriske navn kunne inngå i adresseringen av kodelinjer og subrutiner. Det svært sentrale kontrollflyt-konseptet IF ... THEN ... ELSE ... ble ikke innført i FORTRAN før i 1977, etter påtrykk fra mange brukergrupper.

Den første kompilatoren krevde fem prosessomganger før den resulterende maskinkoden forelå ferdig formatert og klar for kjøring. Kompileringen ble utført via innlesning og utskriving av mellomversjoner på sekundærlageret eller magnetbåndene. Hver passering gjennom systemet bygget på at den foregående prosess en hadde gitt en feilfri mellomversjon. Den femte og siste passeringen leverte en maskinspråk-versjon med samtlige deler lenket sammen og kryssreferert på behørig måte. Med andre ord, det å kompilere et FORTRAN-program var omstendelig og tidkrevende oppgave. Til gjengjeld var resultatet svært ofte uhyre tilfredsstillende. Når ingen feil var gjort i dataprogrammet, ga kompileringen en pålitelig og effektiv maskinkode-versjon som kjørte godt og som ikke krevde noe som helst maskinspråk-innsikt hos brukeren.

John Backus sin prosjektgruppe gjennomførte utviklingen på to Dr. Arbeidet deres satte en høy standard for slike prosjekter. I ettertid har det vist seg at denne første kompilatoren oppnådde en svært høy objektkode-effektivitet, et nivå som få andre kompilatorer har kunnet oppnå. Ideen med å benytte en kompilator var på den tiden, i slutten av 1950-Drene, ikke godtatt som en selvfølge. Argumenter som ble brukt mot FORTRAN rangerte fra at brukeren 'mistet følingen' med det som foregikk i datamaskinen, til det at en kompilert kode aldri ble så god eller sammensveiset som en skrevet av en spesialist. Slike argumenter døde fort hen, da erfaringene med FORTRAN begynte å komme. Folk som underviste i FORTRAN-programmering erfarte at studentene til å begynne med rynket på nesen av denne måten å programmere på. Som regel fikk de raskt øynene opp for dets mange fordeler. Den kjente data-historikeren Jean Sammet har uttrykt det: "FORTRAN har sannsynligvis hatt større innvirkning på datateknikken enn noen annen enkeltstående utvikling innen programmeringsspråk".

Tilbake til toppen

John McCarthy og LISP: Funksjonell programmering

Programmeringsspråket LISP er egentlig like gammelt som pionerene FORTRAN og COBOL, men er vesentlig mindre kjent enn dem. LISP, som står for Liste Prosessering, ble utviklet ved M.I.T. i slutten av 1950-Drene av professor John McCarthy. McCarthy og studentene hans hadde allerede fra de fikk tilgang til de første datamaskinene, vært interessert i hva de kalte 'kunstig intelligens'. Med dette mente de å finne frem til måter å programmere en datamaskin slik at den viste noe som var former for intelligens.

I dette arbeidet med å programmere forskjellige former for 'intelligente' funksjoner, fant McCarthy tidlig ut at tradisjonelle programmeringsspråk ikke egnet seg. Programmeringsspråkene var altfor fastlåste og strikse i sin behandling av data. Det lot seg ikke gjøre å lage modeller av alle de funksjonene som var nødvendige for å kunne studere visse interessante intelligens-funksjoner. Særlig gjaldt dette simulering av elementer innenfor fagfeltet kunstig intelligens.

I prinsippet er de aller fleste programmeringsspråk likeverdige, dvs. de kan benyttes til å formulere ekvivalente beregningsforløp uansett hvordan språket er konstruert. For eksempel, en databehandlingsoppgave kan 'med like godt resultat' programmeres i BASIC som i PASCAL, FORTRAN eller COBOL, ALGOL eller PL/1. McCarthy fant at denne likheten ikke alltid var tilfelle, spesielt når det var snakk om å utvikle modeller av menneskers intelligente reaksjoner til visse problemstillinger.

Vi kan se dette i et eksempel. De fleste databaseprogrammer egner seg bra til å inneholde og gjenkalle store mengder tabulert og organisert informasjon, som vareslag, priser og kvanta. For å løse typiske problemer innenfor studier i kunstig intelligens er det imidlertid ikke kritisk med slike vel-definerte tabeller med data. I stedet kreves det en databaseform hvor informasjon ikke er klart kvantisert og klassifisert. I disse applikasjonene kreves det at den informasjonen som hentes ut er basert på dynamisk varierende forhold i det problemet som blir studert. Med andre ord, systemet må på mange vis 'lære seg' å finne frem de data som situasjonene krever.

Et slik system, som skal lære seg å bli bedre med tiden, må begynne med noen enkle antakelser om situasjonen det skal forholde seg. Over tid (med erfaringer) skal det selv videreutvikle disse antakelsene, dvs. vurdere hvilke antakelser som er 'bedre' enn andre og derfor mer å bygge videre på. Andre tidligere godtatte antakelser kan dermed bli nedvurdert og kanskje forkastet. På denne måten 'lærer' systemet seg hva som er viktig og hva som er mindre viktig, basert på de erfaringene det gjør. Moderne dataprogrammer som lærer å spille sjakk og til sist nå mesterklassen, er typiske eksempler på nåtidens systemer av denne typen.

For å kunne utvikle og programmere slike systemer, fant John McCarthy at de trengte et spesialisert språk og utviklet LISP. Programmeringsspråket LISP er konstruert med en fundamental enhet som kalles et atom som er på det laveste nivået. Atomet kan stå for et tall, et ord eller uttrykk eller det kan være en såkalt sannhet (eng. Truth), dvs. en antakelse som er prøvet og funnet korrekt. På det neste høyere nivå inneholder LISP et sett med lister. Listene kan være tomme eller fylt med data; de kan være av en hvilken som helst lengde og de kan inneholde alle former for informasjon, også andre lister.

En LISP prosedyre kan motta parametre på samme måte som i PASCAL, men mottar disse parametrene på en annen måte enn i PASCAL. I PASCAL må det være full overensstemmelse mellom antall og type for de parametrene som mottas og det som er definert i prosedyren. LISP derimot, vil godta en liste med forskjellige verdier for parametrene i prosedyren. Og siden lister er grunnstrukturen i LISP, er det mulig å sende en hel LISP prosedyre eller LISP program som parameter til en annen LISP prosedyre eller program eller endog til seg selv.

LISP er konstruert med såkalt bakvendt polsk (eng. Reverse Polish) struktur i kommandoene. En addisjonskommando som i et annet programmeringsspråk vil ha formen 2 + 3 vil i bakvendt polsk uttrykksform være Pluss 2 3. Dermed er det full fleksibilitet i hvor mange slike addisjoner vi vil utføre, fordi vi kan skrive Pluss 2 3 5 6 4 9 osv. Lister kan adderes på samme måte simpelthen ved å skrive deres navn, for eksempel Pluss Bankinnskudd Renter Lønn Tilbakebetalinger.

LISP er laget for å kunne skrive svært rekursive dataprogrammer, noe som gir det stor styrke som verktøy for å studere applikasjoner som de nevnte selv-lærende systemer. Fremgangsmåten kan forenklet sies å være å starte med en omfattende og komplisert, kanskje lite effektiv modell. Ved rekursjon blir modellen gradvis 'forenklet' og 'forfinet' inntil en effektiv og økonomisk modell er oppnådd. Det svarer til en høyere grad av sannhet i de antakelsene som da er resultatet av kjøringen.

Både PASCAL og MODULA-2 inneholder sterke rekursive programmeringsmuligheter, men i disse programmeringsspråkene er datastrukturene vesentlig mere begrensende enn i LISP, fordi formålet med disse språkene er først og fremst å sikre 'bedre' og 'sikrere' programmering.

Tilbake til toppen

Kristen Nygård og Ole-Johan Dahls SIMULA-språk

Et bemerkelsesverdig bidrag i utviklingen av programmeringsspråkene kom fra Norge i begynnelsen på 1960-tallet. Det var de to unge forskerne Kristen Nygård og Ole-Johan Dahl som utviklet et simuleringsspråk som de gav navnet SIMULA. Utviklingsarbeidet fant sted ved Norsk Regnesentral i Oslo. De to forskerne var primært ute etter å lage et språk som hadde visse egenskaper som manglet i andre språk på den tiden. Hensikten var å løse oppgaver i operasjonsanalyse (eng. Operations Research - OR). SIMULA ble derfor i stor grad preget av hva de mente var nødvendig for å utføre systemsimuleringer. En prototyp versjon av SIMULA ble første gang kjørt på en UNIVAC 1107 datamaskin i slutten av 1964.

Nokså snart deretter, basert på de første erfaringene med SIMULA, fortsatte Nygård og Dahl å utvikle språket videre. De var ute etter å videreutvikle SIMULA til et mer generelt anvendelig programmeringsverktøy, med flere funksjoner og færre restriksjoner i applikasjonene. Dette arbeidet skulle ta flere Dr. Fremgangen kom til syne i en serie med stadig forbedrede SIMULA-versjoner. Disse versjonene ble gjort ferdige en for en, prøvd og vurdert og sammenlignet med andre språk på markedet. Den versjonen som stod ferdig i 1967 vakte en viss internasjonal oppmerksomhet, både for sin originalitet og sin gjennomprøvde pålitelighet.

I prinsippet bar SIMULA tydelige preg av å være en klar arvtaker etter ALGOL, særlig fordi Nygård og Dahl hadde valgt å beholde alle de viktigste bestanddelene i ALGOL, som blokk-strukturer og kjørekommandoer. Likevel, en av grunnene til Nygård og Dahls arbeid med SIMULA var å 'forbedre' brukertilpasningene, utover det som var bygget inn i ALGOL-språket. Det var nemlig slik at ALGOL manglet en av de mest nødvendige funksjonene for å utføre effektive simuleringer: muligheten til å kommandere 'stopp' eller 'pause' til en eller flere subprogrammer under simuleringen, for senere å kommandere disse subprogrammene til å 'fortsette', alt etter behov. Kravet var at slike stopp- og kjør videre ordrer skulle kunne benyttes uten at noe gikk galt under programkjøringen.

Slike subprogrammer (som ikke er å forstå som subrutiner) krevde spesielle kommandoer eller ko-rutinestyringer som de blir kalt. Dette bygger på det forhold at både de kalte subprogrammene og det programmet som kaller dem, egentlig er at likevektig status. Med andre ord, det som kaller og det som blir kallet har et gjensidig påvirkningsforhold. Dette noe abstrakte begrepet peker på en kommandoordning i SIMULA som står i sterk kontrast til den strengt hierarkiske ordningen som vi kjenner fra ordinære dataprogrammer, hvor det er en hovedpart som kaller andre parter som igjen kaller subrutiner og funksjoner. På dette viset er SIMULA ganske forskjellig fra for eksempel PASCAL eller FORTRAN.

Et av Nygårds og Dahls innovative fremskritt var et nytt konsept som ble lansert i SIMULA: dataklasse-begrepet. Grunntanken deres var at datastrukturer og de rutiner som påvirker datastrukturer hører sammen i klasser. Disse klassene opptrer i forskjellige øyeblikksversjoner (eng. Class Instances). Et program kan således inneholde en rekke forskjellige klasser og bruke disse fra tid til annen i ulike versjoner. øyeblikksversjonen av en gitt klasse kan være bestemt av lokale data, som for eksempel er statiske, dvs. de blir definert med de verdiene som gjaldt i det øyeblikk klasseversjonen ble opprettet. Data kan imidlertid også være kode som kjøres i det øyeblikket klasseversjonen blir kreert, noe som igjen kan initialisere visse datastrukturer i klassen. I retrospekt kan vi se at Nygård og Dahl allerede i 1960-Drene var ute med konsepter som har fått stor betydning.

Bidragene deres omfatter flere viktige konsepter og metoder som har funnet mange anvendelser og fått stor betydning. Dette gjelder særlig innenfor utviklingen av mange etterfølgende høy-nivå programmeringsspråk. Selv om de på 1960-tallet kanskje ikke selv innså rekkevidden av det som lå i det nye dataklasse-konseptet og denne tydningen av en klasseversjon, så har dette uten tvil vært av stor betydning i andre språks utvikling tjue år senere.

Konseptet med data-abstraksjon ble således lenge liggende i dvale. Først da amerikaneren C.A.R. Hoare i begynnelsen på 1980-Drene oppfattet de grunnleggende prinsippene og forstod betydningen av det hele, ble det fart i utviklingen. Nygårds og Dahls dataklasse-konsept er i dag videreutviklet og tatt i generell bruk i informasjonsteknologien.

Tilbake til toppen

Niklaus Wirth og programmeringsspråket PASCAL

Det er med god grunn mange har gitt Niklaus Wirth tilnavnet 'oppfinneren av strukturert programmering'. Wirth (uttales virt på norsk) er fortsatt overbevist om at det er den beste måten å programmere på. Han sier han 'oppfant' et bedre egnet programmeringsspråk for dette som han kalte PASCAL. PASCAL har i lang tid vært brukt til å undervise i programmering. Niklaus Wirth er ansatt ved den tekniske høgskolen i Zurich, ETH, som er et teknisk universitet på linje med de beste i datateknikkens verden, M.I.T. og Cal.Tech i U.S.A. Wirth har arbeidet i mange år med viktige problemer innenfor datateknikk og er verdenskjent som en av de ledende bidragsytere til moderne datateknikk.

Wirth var med på å utvikle flere varianter av programmeringsspråket ALGOL i slutten av 1960-Drene. ALGOL, som betyr Algorithmic Language på engelsk (algoritmisk språk på norsk), oppnådde stor utbredelse og bruk i Europa. Det ble også gitt en viss anerkjennelse i U.S.A, uten at språket vant noe nevneverdig plass der. ALGOL var først og fremst et programmeringsspråk som gjorde det mulig å benytte kontrollfunksjoner på et høyere nivå enn i dets forgjengere.

Før ALGOL var det vanlig å benytte såkalte GO-TO (gå til) kommandoer for å endre kontrollflyten i et program, en måte som hadde sin opprinnelse i det første høy-nivå programmeringsspråket FORTRAN utviklet i 1950-Drene. Niklaus Wirth og andre anså bruken av slike GO-TO-kommandoer ledet til spagetti-liknende programstrukturer. I slike er det praktisk talt umulig å se hva som foregår i et program eller hvor en feil ligger når det ikke virker som det skal. Som mange uttrykte det, 'å følge en enkel tilstand er som å prøve å se hvordan en enkel spaghetti-tråd snor seg gjennom andre på tallerkenen din.

Arbeidet med ALGOL viste at det var mulig å utvikle programmeringsspråk som hadde mange gode kontrollfunksjoner, slik at man kunne skrive dataprogrammer som var strukturerte og derfor oversiktlige og leselige. Men ALGOL bar også preg av at det var utviklet av en internasjonal komite, hvor mange forskjellige hensyn og interesser kjempet om å påvirke utviklingen. En versjon som kom i 1968 og fikk navnet ALGOL-68, ble således omtalt som et 'oppblåst og kompromiss-basert' forsøk på å lage et universelt programmeringsspråk. Mange i Europa mente ALGOL-68 konkurrerte med de nye kommersielle programmeringsspråkene som PL/1 som var kommet på markedet i U.S.A. utviklet og støttet av I.B.M.

Både ALGOL-68 og PL/1 er med god grunn blitt sammenliknet med en sveitsisk arme-kniv, en slik som inneholder et stor antall forskjellige redskaper, fra skruetrekkere og saks til syl og neglefil. Begge disse programmeringsspråkene inneholder nemlig en lang rekke funksjoner og verktøy, i en slik grad at begge er vanskelige å få oversikten over og derfor til dels farlige i bruk, på grunn av de mange konsekvensene alle funksjonene hadde i de forskjellige sammenheng som kunne oppstå.

Niklaus Wirth fant denne utviklingen lite tilfredsstillende. Han innså at det som i første rekke trengtes, var et konsistent og presist definert programmeringsspråk hvor alle kommandoer er entydige og oversiktlige. Språket han utviklet for dette, PASCAL, inneholder et relativt begrenset sett med nøkternt og godt organisert funksjoner som samlet gjør det mulig å skrive svært kraftige dataprogrammer, men som samtidig oppfordret programskriveren til å benytte prinsippene for strukturert programmering.

Disse prinsippene var enkle og grunnleggende: alle variable i et dataprogram skulle ha en fast 'type-klassifisering' (eng. Strongly Typed), dvs. gitt en tilhørighet i en klasse eller kategori. Dette krevde at samtlige kategorier med variable ble oppført først i et dataprogram slik at 'feil' i programmet ikke skulle oppstå, eksempelvis ved å forsøke å addere en variabel som var et tall og en variabel som inneholdt et navn. Slike 'feil' eller 'ulovligheter' var nemlig mulige i mange andre språk, noe som førte til de underligste resultater når de forekom. Ikke minst førte de til feil som var utrolig vanskelige å finne.

Med PASCAL skulle det være 'omtrent umulig' å gjøre slike tabber i et dataprogram. Niklaus Wirth kombinerte derfor mest mulig fleksibilitet og styrke med en rekke grunnleggende funksjoner i PASCAL. Sikkerheten sørget han for ved en rekke sterke gjerder mot alle de grøfter og hull en programmerer lett kan falle i. Wirth mente at med PASCAL ville selv en uvøren programmerer kunne skrive brukbare, endog sikre dataprogrammer. PASCAL ble derfor mye brukt i undervisningsøyemed og var lenge ansett som det 'beste' programmeringsspråket for å skrive strukturerte dataprogrammer. I senere år er objektorientering og vindusprogrammering kommet inn som viktige nye satsingsområder. Det har ført til at mange nå benytter språk som C og C++ i undervisningen i programmering i stedet for PASCAL.

Etter PASCAL-prosjektet videreførte Niklaus Wirth utviklingen i form av et nytt programmeringsspråk som han kalte MODULA-2. I dette programmeringsspråket har Wirth bygget ut mange av prinsippene fra PASCAL, i en slik grad at mange mener dette språket 'har gått for langt' og at det derfor er kun et språk for de mest avanserte eller rettroende. For sitt arbeid med programmeringsspråk er Niklaus Wirth blitt mye berømmet, blant annet ved at han i 1984 ble tildelt den prestisjetunge prisen fra ACM - the Association for Computing Machinery, med navnet The A. M. Turing Award, oppkalt etter Alan Turing.

Tilbake til toppen

PROLOG og logisk dataprogrammering

Litt forenklet kan vi si at logisk programmering vil si det å bruke en formell logisk uttrykksmåte for å omsette eller omskrive prosesseringsinstruksjoner og data til et format som vil bli forstått av en datamaskin. Såkalt predikat-kalkulus (eng. Predicate Calculus) er et eksempel på slike systemer som vi i dag med en fellesbetegnelse kaller logiske programmeringsspråk. Et dataprogram skrevet i et logisk programmeringsspråk er prosedyrefritt. Med det mener vi at dataprogrammet ikke spesifiserer hvordan noe skal gjøres, dvs. hvordan dataprogrammet skal oppnå de resultatene som vi ønsker å oppnå. I stedet beskriver et logisk dataprogram hvilken form resultatene skal ha. Med andre ord, det skal overlates til programmeringsspråket å finne de ønskede resultatene; brukeren trenger bare å vise formen på dem.

For å få til en slik logisk dataprogrammering, er det nødvendig å samle og gjøre tilgjengelige i programmeringsspråket alle de programvarefunksjonene som konstruktørene kan få samlet sammen i et system. Det neste som skal til er å definere et spesielt 'overføringsformat' som lar brukeren skal benytte for å meddele datamaskinen og programmeringsspråket hva det er han ønsker av resultater. Basert på dette 'ønskede resultatet' vil programmeringsspråket benytte visse utledningsteknikker (eng. Inference Techniques) for å finne frem til de relasjoner og datadefinisjoner som passer. Dersom programmeringsspråket finner (utleder) slike funksjoner, vil brukeren få de resultatene han søker å oppnå. I det motsatte tilfelle blir det tomgang - ingen resultater.

Det første programmeringsspråket som fulgte disse prinsippene ble utviklet i Frankrike i begynnelsen på 1970-tallet. Det var de franske forskerne Alain Colmerauer og Phillippe Roussel ved det store universitetet i Aix-Marseille som skapte språket PROLOG, med god hjelp av Robert Kowalski fra Edinburgh University. Navnet PROLOG har språket etter sigende fått fra ordene programmerings-logikk. Programmer skrevet i PROLOG består av en rekke relasjoner eller deklarasjoner (eng. Statements). Noen deklarasjoner kan benyttes til å uttrykke svært kompliserte sammenheng, slike blir gjerne ansett for å være 'tungt fordøyelige' og vanskelige fullt ut å evaluere. Andre er mye lettere å forstå og ryne dybden i.

Et av de mest populære applikasjonsområdene for PROLOG er innenfor kunstig intelligens, hvor akkurat den logiske programmeringen som PROLOG er basert på, passer godt til formålet. Anvendelsesformålene er imidlertid ofte såpass kompliserte og uoversiktlige at de deklarasjonene som benyttes gjerne blir svært kryptiske. Hittil har PROLOG-applikasjoner hvor det ikke foreligger mer eller mindre permanente og entydige relasjoner å benytte som basis for deklarasjonene, ikke gitt særlig gode resultater.

PROLOG har to slags deklarasjoner: fakta (eng. Facts) og regler (eng. Rules). I PROLOG er mor(Kari,Svein) en fakta-deklarasjon som sier at Kari er mor til Svein. Den inngår i databasen som PROLOG søker gjennom når det skal finne fakta og resultater som 'passer'. Den andre typen er regel-deklarasjoner som gir sammenheng mellom fakta, eksempelvis besteforeldre(x,z):­foreldre(x,y),foreldre(y,z). Regel-deklarasjonene inneholder ikke spesifikke fakta, men viser til slike sammenheng som gjelder generelt mellom fakta. Generelle regel-deklarasjoner kan tilpasses spesialtilfeller, for eksempel, fra besteforeldre-uttrykket ovenfor kan vi utlede deklarasjonen mor(<mors navn>,<sønns navn>) som svarer til det vi hadde tidligere, mor(Kari,Svein) samt det omvendte, sønn(<sønns navn>,<mors navn>) som ville gi oss sønn(Svein,Kari), dvs. Svein er sønn til Kari. Disse er 'utvidelser' av den viste 'opphav-avkom'-regelen.

Regel-deklarasjonen besteforeldre(x,z):­foreldre(x,y),foreldre(y,z) sier at vi kan utlede at x er en av besteforeldrene til z dersom x er en av foreldrene til y samtidig som y er en av foreldrene til z. Med andre ord, i PROLOG kan vi sammenfatte en rekke generelle forhold under slike regel-deklarasjoner. Og fra regel-deklarasjonene kan vi utlede sammenheng og konklusjoner blant fakta, slike som ikke er kjent på forhånd eller lette å uttrykke klart i en programmeringslinje. Vi kan for eksempel, spørre følgende: er far(Petter,Svein). Dette vil PROLOG svare på ved å søke gjennom de innleste regel- og fakta-deklarasjonene. Dersom PROLOG finner en slik samstemmighet, vil svaret bli positivt. Med andre ord, letingen fører til et svar: ja, det er sant (at Petter er far til Svein) eller nei, det er ikke tilfelle.

Det er mange som mener at logisk programmering er fremtidens måte å unngå alle problemene som vanlig programmering medfører. Vi tenker da på vanskelighetene med å utvikle feilfrie dataprogrammer og å kunne 'bevise' at de virker som de skal og gir korrekte svar. I dag har vi store problemer nettopp med å skrive pålitelige dataprogrammer, særlig når de omfatter flere enn en million kodelinjer. Store kommersielle dataprogrammer lider under nettopp dette. Vi har i dag ikke tilstrekkelig gode teknikker for å kvalitetssikre slike store applikasjoner. Resultatet er derfor at mange dataprogrammer ikke er 'feilfrie' eller 'sikre nok' overfor de anvendelsene vi benytter dem til.

Tilbake til toppen

Edsger Dijkstra og strukturert programmering.

Edsger Dijkstras navn er nesten ukjent utenfor datateknikkens verden, men der er det til gjengjeld høyt æret og respektert. For på samme måte som navn som Mozart, Beethoven og Hayden er sterkt knyttet kunsten å skrive klassisk musikk, er Dijkstras navn forbundet med kunsten å skrive gode dataprogrammer. Han er en av datateknologiens tenkere, med en lang rekke bidrag til både teori og praksis bak seg. I så måte har Edsger Dijkstra oppnådd å bli en pioner og en profet i sin egen tid.

Dijkstra ble født i Rotterdam i 1930, sønn til en apoteker. Alt som barn viste han en forkjærlighet for formalisering og ordensinndeling av det som opptok ham. Tanken var han skulle studere fysikk, men så fikk faren greie på at det skulle holdes et sommerkurs i programmering i Cambridge, England i 1950. Kurset var sannsynligvis det første i verden, helt i datateknikkens barndom. Edsger meldte seg på og ble fullstendig fengslet av hva han så: programmering var orden og formalitet satt i system. I ettertiden er han blitt en av verdens ledende bidragsytere til nettopp denne siden ved dataprogrammering.

Dijkstra kom inn i datateknikken på et tidspunkt den var i sin første rivende utvikling. De første høy-nivå programmeringsspråkene FORTRAN og COBOL var ennå på planleggingsstadiet. Praktisk talt alt av datidens dataprogrammer ble derfor skrevet i maskinspråk, uten formelle krav til gjenbruk, pålitelighet eller orden og struktur. En av hans grunnleggende analyser viste at dataprogrammer hvor GO-TO-type instruksjoner ble brukt, ofte utviklet seg til å bli en spagetti-liknende. Kontrollflyten bestod av utallige hopp frem og tilbake mellom forskjellige kodedeler som ikke fulgte hverandre i logisk rekkefølge og som ikke hadde noen formelt definert funksjon. Når et slikt dataprogram skulle modifiseres eller feil rettes, var dette nærmest umulig å gjøre for en som ikke hadde deltatt i utviklingen. Selv forfatterne hadde vanskeligheter å forstå hva dataprogrammet utførte og foreta endringer i det.

Et av Dijkstra sine sterkeste synspunkter var at GO-TO-type instruksjoner var en lite hensiktsmessig kontrollflyt-kommando. I stedet for GO-TO-instruksjonen burde vi bruke enkle iterative funksjoner som FOR I=1,100 DO ... eller såkalte IF ... THEN DO ..., dvs. sløyfer som på en klar og konsis måte viste hvordan kall ble gjort til andre deler av dataprogrammet. Dersom kontrollflyten ble uttrykt på slike måter ville et dataprogram på mange måter bli hva han kalte 'selv-domenterende'. Med det mente han at et slik strukturert dataprogram ville kunne leses, forstås og endres av en som ikke hadde sett det før (men som forstod å utføre programmering).

Foruten å ha gitt en lang rekke bidrag til teoretisk datateknikk har Edsger Dijkstra blitt kjent som en som ikke legger skjul på hva han mener. Mange historier berettes om hans klare, ofte sterke fordømmelser av hva han mener er dårlig praksis. Eksempelvis er hans bemerkning om programmeringsspråket COBOL ofte gjentatt: "Bruken av COBOL gjør hjernen til en krøpling; å undervise i COBOL bør derfor være straffbart!" Noe liknende uttalte han om programmeringsspråket PL/1 som han mente var like lite egnet: "Det er helt umulig for meg å forstå at vi skal kunne beholde oversikten over og forståelsen av være stadig større programmer (innenfor vår intellektuelle fatte-evne) når programmeringsspråket vårt - det som er vårt viktigste verktøy, merk det! - i skjær barokk kompleksitet allerede overgår vår intellektuelle fatte-evne". Med sin skarpe tunge er Dijkstra blitt litt av en guru i datateknikkens verden. Mange finner hans uttalelser og meninger rett på sak og føler at det nødvendig å si ting på en slik måte som han gjør det. Andre som kjenner programmeringsmetodikkens langsomme utvikling, mener at Dijkstras kritikk kun er etterpå-klokskap og derfor ubegrunnet.

Foruten sine mange forslag til en forbedret og mere formalisert programmeringsmetodikk, er Edsger Dijkstra også blitt kjent for sine arbeider innenfor området programkorrekthet. Dette er en anvendelse av matematikkens prinsipper for å 'bevise' at det et program utfører med de data det har, er korrekt under alle omstendigheter. Forskningen på dette feltet har gått langt i retning av å finne frem til uttrykksmåter i programmeringsspråkene som egner seg for slike matematiske prinsipper. I praksis vil dette si at det om ikke lang tid vil være mulig å bevise at et dataprogram gjør nøyaktig det som er spesifisert - og ingen ting utenom - og at det er absolutt feilfritt. En slik mulighet vil være svært nyttig, enten det er et databehandlingsprogram, flystyresystem eller medisinsk instrument som er feilfritt.

Tilbake til toppen

MODULA-2: Forbedret PASCAL?

Mange har undret seg over hvorfor Niklaus Wirth tok på seg å utvikle et programmeringsspråk nummer to, MODULA-2 etter at han hadde satset så mye på å skrive PASCAL. Utviklingen av et nytt språk er ingen lett oppgave. Det kan ikke gjøres på kort tid eller med begrenset innsats. Wirth er all ære verd for å ha tatt denne utfordringen og gjennomført den slik som han gjorde.

PASCAL var Niklaus Wirths elegante og gjennomtenkte respons til den oppblåste og 'unødig kompliserte' ALGOL-68 som kom 1968. ALGOL var resultatet av et utstrakt komitearbeid og bar preg av dette. I sammenlikning med ALGOL-68 hadde PASCAL mange fordeler. Dets klare og entydige regler vakte oppmerksomhet og interesse hos alle som underviste i programmering. Det gledet også alle de som hadde innsett at bedre kvalitet og større operativ sikkerhet kunne bare oppnås med et mer ordensrettet og strukturbasert programmeringsspråk.

PASCALs forgjengere hadde vært FORTRAN og COBOL, to av de første programmeringsspråkene som begge ble tatt i bruk tidlig på 1960-tallet. I begge disse er det ingen begrensning i hvordan kontrollflyten kan gå, via den velkjente GO-TO-instruksjonen. Med en ubegrenset adgang til å bruke GO-TO-kommandoer fører raskt til en spagetti-liknende kontollflyt som var vanskelige å lese og problematisk å finne feil i. Wirth var overbevist det var nødvendig å finne andre måter enn GO-TO-kommandoen til å dirigere kontrollflyt i et dataprogram. Han hadde også innsett at det måtte innføres klare restriksjoner i datatypene som ble brukt. Med dette som mål utviklet han PASCAL.

En uforutsett fordel ved PASCAL var at programmer ble selv-dokumenterende. Selv-dokumenterende vil si at koden kan leses praktisk talt som et dokument. Hver linje inneholder opplysninger som beskriver eller definerer de eksakte funksjoner som utføres. Hvert innrykk og avsnitt spesifiserer programløkker og endringer i den sekvensielle utførelsen. Med andre ord, et dataprogram skrevet i PASCAL gir et visuelt bilde av kontrollflyten, fra initialisering og definisjon av variable, til utførelse og avslutning.

Vi må spørre, dersom PASCAL var så godt, hvorfor ville Wirth da ta på seg jobben med å utvikle MODULA-2? Var det visse svakheter med PASCAL som han trengte å fjerne? Svaret er nei; PASCAL er fortsatt et godt programmeringsspråk som benyttes mye, både i undervisning og til å utvikle industrielle og kommersielle applikasjoner. Grunnene til Wirths arbeid er å finne i den raske utviklingen av datamaskiner som skjedde i 1970-Drene. Den førte med seg en sterk økning i bruken av terminaler og dataskjermer, noe som knyttet brukerne mye mer direkte til datamaskinen enn hadde vært mulig til da. Denne utviklingen gikk raskt videre, og vi fikk de personlige datamaskinene som dukket opp tidlig på 1980-tallet.

Utviklingen i 1970-Drene av minidatamaskiner (sammenliknet med de sentrale stormaskinene som inntil da hadde dominert markedet) førte til økte krav til brukergrensesnittet. Minidatamaskinene fikk stadig flere bruker-vennlige trekk. De tilbød brukeren enkle og effektive tekst-redigeringssystemer basert på skjermbilder, de lot ham ta med seg kode og data på disketter og de hadde lett tilgjengelige printere og plottere for utskriving av resultater. I lepet av noen få år førte dette til det vi i dag oppfatter som en arbeidsstasjon, et sted hvor en person kan få utført teknisk komplisert og omfattende arbeid med data.

Med utgangspunkt i det han så var i ferd med å skje, ønsket Niklaus Wirth å skrive et programmeringsspråk som 'passet inn' i situasjonen. Han hadde sett flere nye datamaskinprototyper som mer eller mindre baserte all bruker-kontakt på grafiske symboler. Det var disse som senere kom på markedet som Apple Computers og Macintosh-maskinene og som vi i dag oppfatter som vinduteknikker. Wirth hadde utviklet et eksperimentelt språk han hadde gitt navnet MODULA. I det var hensikten først og fremst å finne frem til bedre måter å modularisere, dvs. organisere store programutviklings-prosjekter på. Spesielt var han interessert i å gjøre det mulig å dele opp et større dataprogram i mange mindre enheter (moduler) og sikre at alle disse passet sammen og samlet virket som en helhet.

Dette mente Wirth han kunne oppnå dersom hver eneste modul ble utstyrt med et enkelt og entydig, detalj-spesifisert grensesnitt, slik at det aldri var tvil om hvordan og hvilke data som ble utvekslet gjennom det. Dette kan gjøres på mange måter; Wirth valgte å benytte en metode som han kalte 'import og eksport', dvs. data skulle mottas og resultater returneres i form av slike utvekslinger. Ingen modul skulle la andre få vite hva som ble utført internt, hvor de forskjellige funksjonene satt eller hvilke parametre de krevde. I Niklaus Wirth sin tankegang var dette en garanti mot ofte unødvendige komplikasjoner og tilsvarende uoversiktlige avhengigheter som mange tradisjonelle subrutinekallemåter og funksjonsbruk ofte førte med seg.

I MODULA-2 er disse prinsipper realisert. Ideene fra PASCAL er blitt kombinert med det nye modularitets-prinsippet. Resultatet er et programmeringsspråk som er mer når knyttet til maskinvarene enn PASCAL, ved at MODULA-2 tillater en svært nøyaktig og detaljert kontroll med alle maskinvarene når det er behov for dette; likevel tillater det en stor grad av abstraksjon. Med modularitets-prinsippet har Wirth gjort det mulig å programmere på en slik måte at 'alt på sin rette plass' er en slags grunnlov.

Tilbake til toppen

Datavirus er ikke å spøke med

Da dataviruset først ble funnet for en ti år siden, ble det sett på som en merkverdighet og et uskyldig påfunn. Lite visste vi den gang om den skade som slike påfunn kom til å føre med seg. Datavirus infiserer i dag både stormaskiner og personlige datamaskiner. De har påført eierne store omkostninger og mye ekstraarbeid i å gjenopprette systemene etter at et virus er påvist. Navnet virus er svært beskrivende for den måten hvorved et datavirus sprer seg gjennom et system slik at det blir en virkelig virusinfeksjon. Det svarer nokså bra til hvordan et virus kan påvirke oss mennesker. Spredningsmåtene er ganske varierte og graden av infeksjon kan være fra en lettere og kortlivet plage til et livstruende og virkelig alvorlig angrep.

På samme måte som et sykdomsbringene virus kan ligge inkubert kroppen vår i lengre tid, kan også et datavirus dorme i uker og Dr. Det våkner opp når en viss dato eller et antall er nådd og går til angrep. Angrepet kan variere i ødeleggende virkning fra en harmløs presentasjon av ord og bilder på skjermen til ondartede og omfattende slettelser av filer, endringer av data og fjerning av kontrollkoder og passord.

Saken er mange høgskoler og universiteter er i dag knyttet sammen i et verdensomspennende nettverk. Nettverket gjør det lett å la elektronisk post og data flyte fra sted til sted. Dette er høyst ønskelig, fordi slike utvekslinger av ideer, programmer og data hjelper utviklingen og styrker samarbeidet verden rundt.

Et av de verste tilfeller av datavirus-spredning fant sted for noen få år siden. En sivilingeniør-student på Cornell University i delstaten New York skrev et komplisert dataprogram som nå omtales som 'The Internet Worm' (Internet-makken). Programmet greide å åpne visse 'bakdører' (eng. Trap Doors) til nettverkets kontrollsystemer som studenten på ett eller annet vis hadde funnet opplysninger om. Natten mellom 2. og 3. november 1988 ble dataviruset sendt ut på nettet i U.S.A. og brakte det til en fullstendig stopp. Dataviruset var egentlig ikke et skadegjørende virus; dets funksjon var simpelthen å spre kopier av seg selv så vidt og bredt som mulig. Og dette oppnådde det på en overbevisende måte.

Virkningene var at praktisk talt alle nettverks-datamaskinene ble invadert og stoppet. Det kostet systemadministratorene og nettverksfolkene utallige timer arbeid med å få startet opp nettverket igjen og få alle datamaskinene til å virke som før. Studenten ble identifisert, stillet for retten anklaget for hærverk og dømt. Dommen vil for alltid gjøre det vanskelig for vedkommende å få en ansvarlig stilling som data-ingeniør.

Det finnes flere ting vi kan gjøre for å redusere farene for datavirus. Dersom det er absolutt nødvendig å sikre at en datamaskin ikke blir virus-infisert, kan vi oppnå det ved karantene, dvs. absolutt isolasjon fra verden utenfor. Dersom en datamaskin ikke er knyttet til en telefonlinje, en nettverkskanal eller en linje til en annen datamaskin, vil den ikke kunne bli infisert utenfra. Da er eneste muligheten for virus at en fil med kjørbar (eng. Executable) kode befengt med virus blir lastet inn i den. Og det kan skje fra en diskett, et magnetbånd eller et transportabelt platelager.

En slik beskyttelsesmetode er svært strikt og vil ofte vanskeliggjøre kommunikasjoner med andre. Men dersom en absolutt virus-fri situasjon skal kunne oppnås, er en slik isolasjon egentlig den eneste helt sikre måten. Vi kan oppnå noe av denne sikkerheten med såkalte 'brannmurer' (eng. Fire Walls) som er egne datamaskiner som skiller klart mellom en indre, sikker side og en ytre, usikker side som kan tilknyttes nettverk og telefonlinjer. I en slik brannmur-datamaskin er det ingen overføring av kjørbar kode mellom den ytre og indre siden; bare data kan overføres via en intern mellomlagring og virus-sjekking.

I dag benytter stadig flere brukere elektronisk post, fjerninnhenting av data, leting i distribuerte databaser, og ikke minst, disketter og magnetbånd for å transportere data ut fra og inn i datamaskiner. Hvordan kan vi sikre oss mot virusangrep under slike forhold? Der er dataprogrammmer som sjekker til stadighet om kjente virustyper finnes i være filer. Disse dataprogrammene kan gi oss en viss beskyttelse, særlig mot kjente virus-typer. I prinsippet er det også best å installere programvarer som vi vet kommer fra pålitelige leverandører. En enkel sikkerhetsforanstaltning er å prøve all slik ny programvare på en enkeltstående datamaskin hvor en eventuell virus ikke kan gjøre stor skade. Dette er en måte som de fleste bør bruke dersom de ønsker å dra nytte av såkalt 'fri programvare' fra uformelle kilder.

Den eneste virkelig sikre måten å unngå å få virus i dataprogrammene, er selvsagt å skrive alt selv. Dette er nok bare en teoretisk løsning for de aller fleste datamaskinbrukere. I stedet må vi ta alle de forholdsregler vi er i stand til. Etter som flere og flere virus-utviklere blir tatt og straffet og være systemkonstruktører finner nye og bedre veier å sikre mot virusinfeksjon vil farene være tilstede.

Tilbake til toppen

Etiske og juridiske sider ved datateknikken.

Det er ofte den stadig bedre og billigere maskinvaren som tiltrekker oppmerksomhet, enten i prangende annonser eller i tilbud fra leverandørene. Det er blitt sagt at en datamaskins ytelse dobles omtrent hver to år mens prisen holder seg på omtrent det samme. Med andre ord, etter to år vil en datamaskin selge for omtrent halve prisen av hva den gikk for da den først ble lansert. Mange kjøpere lar seg påvirke av de store ordene og den lave prisen.

Men en datamaskin trenger programvarer for å gjøre nytte for seg. Dette gjelder hva enn den skal benyttes til, enten det er tekstbehandling, utregninger eller generelle kontorfunksjoner. Det kreves en programvare for å få datamaskinen til å levere nyttige resultater. I dag er bruksområdene for personlige datamaskiner enormt mange. Programvarer gjør at datamaskinene kan håndtere nesten hver tenkelig menneskelig applikasjon, fra kunst og kultur til språk, kjerneforskning og astronomiske observasjoner.

Når vi skal anskaffe en personlig datamaskin, tenker vi gjerne på den prisen som tilbudet omfatter: prosessor, dataskjerm, tastatur og mus, kanskje også en printer og et modem, dessuten noen kabler og muligens en vedlikeholdskontrakt. Mange kjøpere glemmer å investere i gode programvarer, det som skal til for å oppnå de resultatene som investeringen egentlig tar sikte på. Og mange brukere gjør dessverre også det uetiske: de mottar eller lager selv ulovlige kopier av programmer. Det er kjent at en rekke slike ulovlige kopier blir spredt blant brukere som lever under inntrykket at 'det skader jo ingen likevel'.

Det er mange grunner hvorfor vi ikke bør lage ulovlige kopier av programmer. Først og fremst gjelder at all slik kopiering simpelthen er uetisk og galt, fordi et program er egentlig et intellektuelt produkt på samme måte en oppfinnelse, en bok, en låt er det. Det er ikke lett å se at vårt samfunn vil frembringe mange slike kreative produkter i fremtiden, dersom være ideer skal stjeles og brukes av hvem som helst, uten at vi har noe igjen for det. Vi kan ikke vente at noen vil tilbringe to-tre år med å utvikle et avansert dataprogram dersom de ikke har noe igjen for strevet.

Dersom du har kjøpt et dataprogram som du er godt fornøyet med, skal du la dine venner og kollegaer få prøve det på din datamaskin. Det vil gi dem en sjanse til å forstå programmets virkemåte og evaluere hva det kan gjøre for dem. Det du ikke skal gjøre er å lage ulovlige kopier og gi disse bort. C gjøre det hindrer nemlig utviklerne i å få den belønningen de har rett på. Vi vet at dersom mange ulovlige kopier blir sendt rundt, vil ikke salgsinntektene være nok til å holde hjulene i sving og program-utvikleren vil måtte slutte. Og det vil bety at nye og forbedrede versjoner ikke vil bli utviklet i fremtiden, noe alle vil tape på i det lange løp.

Dersom den etiske siden ved ulovlig kopiering ikke er nok, så vil lovens lange arm en gang i fremtiden slå til. Mange moderne dataprogramutviklere satser sterkt på å benytte alle lovens midler for å stoppe ulovlige kopier fra å nå markedet. Dette gjelder i stor grad de massive illegale kopieringene som det er kjent foregår i den fjerne østen. Åndsverklovene i vårt land og andre land skal beskytte mot slike ulovlige kopier; likevel er det mange som kjøper slike 'billige' programvarer.

Beskyttelsen som skal sikre mot ulovlige kopier, er egentlig den samme som skal sikre mot ulovlige kopier av trykt materiell: bøker, magasiner og aviser. Nye lover er blitt vedtatt som tar for seg spesielle trekk ved programvarer, som skjermbilder, åpnings- og brukssekvenser, sikringssider osv. Etter hvert som lovens håndhevere blir mer og mer skolert i programvare-spørsmål, kan vi vente en innstramming i kontrollen med importerte dataprogrammer.

Det er også ventet at visse kontroller vil bli gjennomført i store og små firmaer, skolesystemer og institusjoner, for å sjekke om ulovlige programkopier er i bruk. Slike har allerede skjedd i Norge, da firmaet Hitec AS på Forus ble anklaget for å ha flere ulovlige dataprogrammer i bruk i sin virksomhet. Hitec AS ble imidlertid frifunnet for disse anklagene. Men dette viser at politiet og da særlig økokrim er stadig på jakt etter ulovlige dataprogramkopier.

Det er også mange grunner hvorfor du bør anskaffe dataprogrammene dine på lovlige måter. Nye programvarer leveres i dag med en brukermanual som beskriver hvordan dataprogrammet skal installeres og brukes på datamaskinen din. I tillegg vil brukermanualen fortelle hvordan du kan få best mulige resultater fra dataprogrammet.

Programvarepakken inneholder som regel også et registreringskort som ved innsending gjør deg en 'lovlig' bruker av dataprogrammet, samtidig som det sikrer deg informasjon i fremtiden om nye versjoner og gjør det mulig å kjøpe tilleggsdokumentasjon til en litt redusert pris. Ofte er det også gitt et telefonnummer som du kan ringe dersom det oppstår problemer under bruken av dataprogrammet. En slik gratis brukerstøtte som en telefonkontakt med en ekspert egentlig er, tilbys ikke de ulovlige brukerne av dataprogrammene. Den kan ikke benyttes av en som kun har ulovlige kopier.

Tilbake til toppen

ERMA og bankautomatisering av sjekkbehandlingen

I de første ti-årene etter andre verdenskrig skjedde det en enorm utvidelse av papirbaserte pengetransaksjoner i den vestlige verden. Det var den gang ikke tale om noen form for plast kredittkort, post- eller bankgiro. De fleste oppgjør ble foretatt ved betaling med sjekk som krevde mye håndtering, særlig i de land hvor personlige sjekker ble praktisk talt enerådende som betalingsmåte. Sjekker ble brukt for å gjøre opp praktisk talt alle private forpliktelser, fra dagligvareinnkjøp og restaurantregninger til husleie, strøm, telefon, og andre ukentlige betalinger, som forsikringspremier, avgifter, skatt og avdrag på lån.

En av de land hvor bruken av slike personlige sjekker tiltok i slik en grad at det ble et virkelig stort problem, var USA. Bank of America i del-staten California, var den gang allerede verdens største bank. Den var tvunget til å håndtere, dvs. lese, godkjenne, postere og sende til betaling, millioner av håndskrevne sjekker hver dag. Andre banker over hele landet var i samme situasjon. Kundene krevde at sjekkene deres ble håndtert i løpet av en eller to dager.

Når en personlig sjekk ankom til en bank, skjedde to ting: verifisering og bokførsel. Verifisering som gikk ut på å bestemme hvilken bank sjekken var trukket på, og fastlegging av beløpet som sjekken var på. Den gangs sjekker inneholdt ikke noen annen identifikasjon enn underskriften - dvs. det var ingen kontonummer eller navn og adresse til kunden trykket eller skrevet på blanketten, bare bankens navn og adresse. Det første skritt var derfor å sortere alle mottatte sjekker i to hauger: de som var trukket på banken selv, og de som var trukket på andre banker. Bokførselen av sjekkene skjedde også manuelt, men ved hjelp av en såkalt bokføringsmaskin. Hver sjekk ble postert på kundens konto ved følgende skrittvise fremgangsmåte:

1. Kundenes konto-kort ble hentet ut fra en arkivskuffe eller skap og satt inn i maskinen,

2. Kortet hans ble påtrykt den nye transaksjonen med sjekkens dato og beløp,

3. Balansen på kundens konto ble regnet ut og trykt på kortet,

4. Konto-kortet ble plassert tilbake i arkivet, og

5. Kundens sjekk lagt i hans individuelle sjekk-pose.

I 1950 tok ledelsen ved Bank of America de første skritt for å hjelpe på krisen som var under utvikling. Et felles prosjekt med Stanford Research Institute utenfor San Francisco ble startet, med sikte på å finne ut om de nye datamaskinene kunne brukes til bankformål, spesielt håndteringen av sjekker. Lite og intet kom ut av dette prosjektet. Det var alt for mange ubestemte faktorer til at noen løsning klart meldte seg. Prosjektet ble likevel vedtatt å skulle fortsette. Partene skulle sammen søke å finne frem til en datamaskinbasert løsning. Det ble raskt klart for dem at de måtte finne frem til en måte å gjøre sjekker maskin-lesbare (eng. Machine Readable). Uten en mekanisk prosessering ville det være håpløst å få til en effektiv systemløsning av problemet.

Det var fra første dag sagt fra Bank of America at et automatisk sjekklese-system måtte arbeide feilfritt og raskt, uten å endre noen av brukernes vante aspekter. Med andre ord, hva enn systemet ble til, så måtte det ikke endre noe av det som brukerne etter hvert var blitt så vant til at de ikke ville like noen forandring. Det gjaldt slike ting som måten å skrive beløpet på, tidfestingen av sjekken, signatur osv. Banken måtte således ikke lese noen av disse tingene feil, hverken det som stod skrevet på sjekkens forside eller bakside.

Med magnetisk lesbar skrift var det imidlertid mulig å gjøre en såpass liten endring i sjekkens utseende at mange slike innvendinger ikke var av betydning. For å være på den sikre siden vedtok imidlertid bankens styre at de først ville prøve metoden på reisesjekker. Reisesjekker er nemlig utstedt på faste beløp som er påtrykt med en viss skrifttype og størrelse. Dessuten har alle reisesjekker sammen størrelse og går derfor lett gjennom en felles lese-maskin. Disse prøvene falt svært heldig ut.

De gode resultatene bekreftet at den tekniske løsning var både pålitelig og praktisk. Bank of America satte derfor kreftene inn på å få bygd opp et 'ordentlig' sjekk-prosesserings-system i en av sine filialer. For å få gjennomført prosjektet innen rimelig tid ble det nødvendig å prioritere hvilke funksjoner som skulle komme først i rekkefølgen. Dette medførte en god del endringer i de opprinnelige planene, blant annet at det nye sjekklese-systemet skulle først og fremst være en datainnlesingsmaskin som overførte informasjon til selve bokholderiet hvor all kontobalansering foregikk. Selv om konstruktørene også hadde ønsket av sjekk-godkjenningen og dekningsverifiseringen skulle skje samtidig med innlesningen så ble dette foreløpig utsatt til senere. I sin endelige form fikk systemet navnet ERMA fra de engelske ordene Electronic Recording Machine Accounting. Den bestod av 8.200 radiorør, 34.000 dioder, fem innlesingskonsoller med elektroniske skriftlesere, to magnettrommellagre, en sjekksorteringsmaskin, en høg-hastighets linjeskriver sammen med den nødvendige elektriske kraftforsyning. I tillegg inneholdt systemet 12 magnetbånd-stasjoner som hver kunne ha et hjul med 800 meter magnetbånd. Totalt bestod systemet av omkring 25 tonn med utstyr fordelt over et gulvareal på omkring 400 kvadratmeter. Det ble offisielt tatt i bruk 22. september 1955 i San Francisco, California.

Tilbake til toppen

SABRE-systemet og transaksjonsprosesser

Plassreserverings-systemene for de største amerikanske flyselskapene, American Airlines og United Airlines, har klart hjulpet disse til å bli hva de er i luftfarten i dag. Reservasjonssystemene er på mer enn en måte eksempler på anvendelsen av informasjonsteknologi for å vinne konkurransemessige fordeler. Begge var tidlig ute og begge deltok på avgjørende måter i formuleringen og tilpassingen av programvarer og systemer for slike formål. Da de første datamaskinforsøkene ble foretatt tidlig i 1950-Drene, var det først og fremst for å redusere papirhåndteringsproblemet. Det viste seg fort at ennå viktigere var det å holde rede på passasjerenes navn. Da kunne systemet referere til alle med deres navn ved reservasjon, utsteding av billetter, innsjekking ved fly-avgang, og finne alternative reisemuligheter ved forsinket ankomst dersom vedkommende skulle fly videre osv.

Flyselskapenes reservasjons-systemer hadde egentlig sin tekniske opprinnelse i enkle elektro-mekaniske arrangement som mye minnet om standard systemer brukt i jernbaner og bussruter den gang. Men flyselskapene var mer enn andre transportører avhengig av svært korte responstider. Passasjerene stod ved skrankene på flyplasser over hele USA og ventet på å få vite hvordan de skulle komme videre. Det var ikke mulig å håndtere slike henvendelser på samme måte som jernbanene gjorde det, dvs. ved hjelp av telefon og bestillingslister ført med blyant på et sentralt kontor. Det var nødvendig med automatisk fjernhåndtering. De nye elektroniske datamaskinene var midlet for å få dette til og transaksjonsprosessering ble oppfunnet.

Flysete-reservasjon er en klar transaksjonsprosess som gjerne løper gjennom flere faser. I første omgang, når en passasjer ønsker å klarlegge en reisemulighet, vil reisebyrået lete i flyselskapets database for den tiltenkte dag og tid om det er plass ledig. Datateknisk er dette en lese-prosess som ikke krever annet enn delt tilgang til databasen. En rekke slike lese-prosesser kan kjøres samtidig, siden ingen av dem endrer antallet ledige seter.

Når en passasjer belegger ett eller flere seter ved en bestilling, skjer en skrive-prosess som endrer databasens innhold. Skrive-prosesser kan derfor bare kjøres når ingen andre skrive-prosesser er i ferd med å endre data på samme tid. Vanligvis kan lese-prosessene fortsette mens en samtidig skrive-prosess kjører og endrer data, fordi brukerne er innforstått med at data godt kan endres under lesingen (ventingen). Når en passasjer avbestiller sine plasser, vil det også skje med en skrive-prosess, gjerne samtidig med lesere, siden den øker antallet tilgjengelige seter og derfor ikke begrenser hva andre får tildelt.

I 1950-Drene ble de første magnettrommel-systemene tatt i bruk for å holde rede på slike flysete-databaser. Det første systemet ble installert på La Guardia-flyplassen i New York City i 1952 og det tilhørte American Airlines. Magnettrommel-lageret var automatisert slik at det var mulig å få svar på om det var ledige seter på en viss rute en gitt dato simpelthen ved å føre inn en kodet ruteplate, på størrelse med et hullkort, i en egen terminal som var tilkoblet magnettrommelen via en telefonlinje.

Med andre ord, et salgsted fjernt fra avreisepunktet kunne fastlegge med en enkel telefonoppringing fra fjernterminalen sin om det var plass ledig eller ei. Selve plassbestillingen måtte fortsatt skje via muntlig telefonbestilling til avreisestedets billettkontor. SAS var et av de flyselskapene som allerede i 1960-Drene benyttet et slikt system, med terminaler i alle de største byene i Skandinavia. Magnettrommelen i København var billettsentralen for samtlige ledige fly-seter på SAS-rutene.

Slike magnettrommel-løsninger gjorde det vesentlig lettere å ha nøyaktige tall for alle ledige flysetene. Men systemene tilfredsstilte ikke behovene for bedre PNR-informasjon. American Airlines ønsket seg et datamaskin-basert system som skulle holde rede på hver eneste plassbestilling som ble foretatt, automatisk overføre data til og fra bestillingsstedene i rutenettet sitt fra de enkelte salgskontorene og reisebyråene, trykke ut hver passasjers hans reiserute med alle data, og sist, men ikke minst, utstede individuelt trykte kort for å kontrollere passasjerene ved ombordstigningen. IBM fikk kontrakten først og fremst basert på de erfaringene firmaet hadde høstet under det store SAGE-prosjektet. Av tekniske grunner ble imidlertid det første systemet begrenset til PNR-lister, telekommunikasjon via telex og automatiserte plassreservasjonsfunksjoner. American Airlines kom til å måtte vente nesten 20 år før alle ønskene ble oppfylt.

Systemet fikk navnet SABER etter de engelske ordene Semi-Automatic Business Environment Research, og ble installert i 1961. Som hjerte i systemet var det to store IBM 7090 datamaskiner, hvor den ene utførte alle bestillingsoppgavene mens den andre stod som en fullt ut kjøreklar reservemaskin (eng. Warm Backup). Den ble også benyttet til å utføre visse mindre viktige funksjoner. Seks store magnettrommellagre inneholdt inntil 7.2 millioner tegn, med informasjon over antallet ledige seter, flyrutenes avgangs- og ankomsttider samt et stort lagringsområde for data for inntil 1100 forskjellige bestillings- og bekreftelseslister for flyselskapets egne salgskontorer samt for en god del sentrale reisebyråer.

Tilbake til toppen

MONTE CARLO simulering og statistikk

En av de aller tidligste databehandlingsmetoder for vitenskapelige formål bærer det noe egenartede navnet Monte Carlo simulering. Metoden sprang ut fra behovet for å få bedre nytte av statistiske mål og midler i forståelsen av grunnleggende fysiske forhold. Vi kan si at den ble skapt på basis av et lenge følt behov, for å rydde opp i et felt hvor numeriske metoder og statistikk hadde kommet til kort. Den verdenskjente matematikeren Stanislas M. Ulam fortalte i 1976 hvordan han første gang 'kom på' dette med å kombinere ulike databehandlingsmetoder i et system basert på en kontinuerlig strøm av vilkårlige tall som modell-stimulans og statistisk analyse som utgangsprosess. Han forteller blant annet:

Ideen ... kom til meg mens jeg satt og la kabal under min sykdom. ... Ideen fikk sin fulle form med alle tilhørende regler og prosedyrer som en skikkelig teori etter at jeg hadde foreslått den til Johnny von Neumann i 1946, i løpet av en av våre samtaler. Metoden svarer nært til det å legge kabal en rekke ganger, bare at den spilles med en datamaskin. Den krever, blant annet, tilgang til en generator av vilkårlige tall som har en gitt statistisk fordeling. Metoden svarer nært til det å legge kabal en rekke ganger, bare at den spilles med en datamaskin. Den krever, blant annet, tilgang til en generator av vilkårlige tall som har en gitt statistisk fordeling.

Det er ikke kjent hvor metoden fikk navnet Monte Carlo; kanskje det skjedde som en språk, under et møte. Flere pionerer peker således på likheten mellom sjanse-spillet som ligger til grunn for metoden og pengespill-systemet i Monaco. Metoden store tidlige betydning skyldtes primært at den først fullt ut viste verdien av datakraft og data-analyser i grunnforskning og vitenskap, særlig i fysikk og da spesielt innenfor kjernefysikken. Allerede i 1946 og 1947, mens de første elektroniske datamaskinene ble utviklet, snakket fysikerne om å simulere gassfasediffusjonsprosesser for separasjon av uranium. De brukte navnet simulering (eng. Simulation) på det som er en måte å studere vanskelig observerbare eller risikofylte eksperimenter med fysiske effekter på. Den egnet seg særlig godt for å verifisere teoretiske konklusjoner og sjekke riktigheten av matematiske modeller.

Monte Carlo-metoden går som nevnt, ut på å stimulere en matematisk modell med en strøm av vilkårlige tall med en kjent fordeling. For hver slik stimulering gir modellen et unikt resultat. Etter en lang rekke forsøk vil resultatene utvise visse statistiske mål lar oss evaluere den matematiske modellens godhet eller de karakteristiske egenskapene for de underliggende prosessene. Med andre ord, Monte Carlo-metoden er en datamaskinbasert måte til systematisk å utføre en stor serie eksperimenter og samle inn statistikk. Som vitenskapelig og matematisk metode fikk Monte Carlo-metoden sitt virkelige gjennombrudd i 1948. Det skjedde på et symposium holdt i Los Angeles, hvor en rekke fremstående forskere foreslo forskjellige måter å frembringe vilkårlige tall med en gitt fordeling. Forslagene omfattet alt fra bruken av forberedte hullkort og beregnede tall til fysiske effekter som kunne brukes til genereringen, eksempelvis ruletthjul og terningkast. Et av forslagene var en matematisk metode som produserte vilkårlige tall med en relativt godt tilpasset fordeling.

I senere år har Monte Carlo-metoden kommet noe i bakgrunnen, forbigått av andre matematiske metoder og bedre eksperimentelle muligheter. I perioden fra 1950 til 1980 derimot, var Monte Carlo-metoden mye brukt, og det skal ha bli publisert over 3000 artikler som viser anvendelser av den. For mange er det nødvendig å skille mellom Monte Carlo-metoden og generell simulering, selv om begge begrepene innbefatter systematiske forsøk basert på en modell, enten matematisk eller empirisk. Det er ofte hevdet at et skille som her nevnt, er unødvendig. Monte Carlo-metoden kan ansees å være en av mange simulerings-metoder; i dette tilfelle er det snakk om en metode som i det vesentlige er rent statistisk. I et brev beskrev for eksempel, John von Neumann de karakteristiske nøytron-prosessene som skulle undersøkes ved hjelp av datamaskinen ENIAC den gang. Han benyttet følgende ord til å fortelle om denne spesielle applikasjonen:

Jeg er forholdsvis sikker på at problemet [beskrevet foran i brevet], i sin digitale form, er svært godt egnet for ENIAC. Om dette vil jeg ha mer å fortelle i når fremtid. Mitt nåværende (foreløpige) estimat er dette: Anta at et såkalt kritikalitets-problem krever at vi følger 100 primære nøytroner gjennom 100 kollisjoner (av de primære nøytronene eller deres etterkommere) for hvert primært nøytron. Med denne forutsetning bør det ta omkring 5 timer å løse ett slik kritikalitets-problem. Det er likevel mulig at mine tall (100 X 100) er unødig høye. En statistisk undersøkelse av den første løsningen som vi oppnår vil kunne klarlegge om dette er så. Dersom tallene kan gjøres mindre så vil løsningstiden bli tilsvarende kortere. Visse forberedende undersøkelser av den statistisk-digitale metoden kan og bør utføres manuelt.

Vi ser her at Professor von Neumann i detalj forestiller seg hvordan han kan bruke ENIAC til å løse en rekke prosess-tilstander som best kan beskrives som ikke-lineære og nært sammenkoblede. For dette vil han bruke ENIAC-datamaskinen og gå frem etter Monte Carlo-metoden.

Tilbake til toppen

Alan Kay, SMALLTALK, objektorientering og vindusgrensesnitt

De viktigste sidene ved programmeringsspråket SMALLTALK har sin opprinnelse i et doktorgradsarbeid utført i slutten av 1960-Drene. Det var arbeidet til Alan Kay som så tidlig viste veien til hvordan personlige datamaskiner tjue-tretti år seinere skulle bli effektive verktøy i de flestes arbeidsdag og nytte- og hyggegjenstander i våre privatliv. Datamaskinene som Kay definerte i sin avhandling, var imidlertid vesentlig sterkere enn hva som den gang fantes. Kay hadde nemlig forestilt seg en personlig datamaskin som kjørte minst en million instruksjoner i sekundet og som benyttet et internlager på flere megaord for prosesseringen. Med andre ord, han så for seg personlige datamaskiner som først i dag er blitt en realitet og tatt i bruk.

Kays mente at datamaskiner før eller senere kom til å bli brukt av alle, også de som ikke var datakyndige. Det var derfor nødvendig å utvikle mer effektive menneske-datamaskin grensesnitt. De måtte bli vesentlig bedre enn hva som var tilgjengelig. Etter Kays mening gikk behovet i retning av grensesnitt som var spesielt tilpasset menneskets arbeidsvaner og interaksjonsevner. Skulle en datamaskin brukes av en som ikke var datakyndig, måtte den først og fremst være 'vennlig' og 'hjelpsom', uten at Kay egentlig definerte hva som lå i dette. Han så for seg datamaskiner som i hovedsaken benyttet avanserte grafiske videoskjermteknikker og audiovisuelle virkemidler for å 'ledsage' brukeren i arbeidet hans og hjelpe ham til å utføre mest mulig godt arbeid .

Noen av Kays første grafiske konsepter kom fra et eksperimentelt språk som het LOGO, utviklet av Seymour Papert ved M.I.T. Papert søkte å forstå hvordan mennesket oppfatter informasjon i form av visuelle påvirkninger, og LOGO var et av hans verktøy. Med LOGO studerte Papert blant annet hvordan små barn oppfattet hva en datamaskin gjorde. På den måten søkte han å finne frem til hvordan informasjonsformidling via en dataskjerm bør utformes rent generelt, slik at den blir mest mulig optimal for de fleste formål.

Kay så i Papert sine resultater mange ting som han ønsket å utvikle videre. Blant disse var ideen med at datamaskinen på mange måter definerer en arbeidsplass. Den fremviser derfor ofte en god del av de hjelpemidlene som er typiske i så måte. Eksempelvis kan vi betrakte dataskjermen som et 'skrivebord' hvor det ligger mange papirer. Noen papirer er delvis skjult av andre; som regel er arket som ligger øverst det som har vår interesse i øyeblikket. Kay modellerte dette i form av ulike 'vinduer' på videoskjermen og hvor brukeren kunne utføre forskjellige ting med informasjonen i disse vinduene. Han kunne for eksempel, lese, redigere, fjerne og kopiere data, både ved tastetrykk og ved å ta på (peke på) deler av skjermen som var følsomme for berøring.

Etter doktorarbeidet sitt ble Kay ansatt i forskningssenteret til Xerox Corporation, i Palo Alto, California. Han fant der mange andre som var interessert i slike løsninger som han hadde arbeidet med og sammen videreutviklet de flere sentrale ideer. I 1972 var dette kommet så langt at en versjon som fikk navnet SMALLTALK ble kunngjort for firmaet og i den tekniske litteratur. SMALLTALK som nok fikk navnet sitt fra den opprinnelige barnevennlige LOGO-pakken ved M.I.T., var et fullverdig dataspråk som kjørte på en Xerox datamaskin.

I SMALLTALK-språket er delene av et program kalt objekter. De er utformet for å holde sammen og koordinere alle data og deres anvendelser. Denne samordningen av lokalt anvendte data og de operasjoner som kan utføres på disse, er blitt gitt betegnelsen 'metode'. Begrepet dekker primært de spesifikke måter som er definert for hvordan et objekt skal reagere, når det mottar en melding som er definert i metoden. Alle programmer skrevet i SMALLTALK inneholder derfor objekter som samarbeider ved å utveksle meldinger. Objektene kan være alt fra heltallige konstanter til omfattende og komplekse dataprogrammer. Under kjøringen av et SMALLTALK-program foregår derfor prosesseringen på den nevnte måten. Når definerte tilstander eller tilstandsendringer inntreffer, sender objektene meldinger til andre objekter. Meldingene krever at mottaker-objektene utfører visse tjenester, dvs. de gjør krav på at visse funksjoner blir utført på foreskrevet måte og så snart forholdene tillater det.

I SMALLTALK er objektene innordnet i visse abstraksjons-klasser (eng. Abstraction Classes). Dette er det samme som øyeblikks-versjonene av objektene i en slik klasse, slik de er på et gitt tidspunkt. Flere slike abstraksjonsklasser kan forekomme i et SMALLTALK program. Hvert objekt i SMALLTALK har forskjellige lokale data til disposisjon, avhengig av når dataverdiene ble 'frosset'. Disse inngår som en del av den generelle objektklassen. Med andre ord, den eneste forskjell som det kan være mellom to objekter innenfor samme klasse er de lokale variable, dvs. øyeblikks-verdiene da objektene ble formet.

Det er ikke tvil om at utviklingen av SMALLTALK har betydd enormt mye for vår forståelse av hvordan brukere best arbeider med datamaskinen. Kays konsept med vinduer og arbeidsplassen er i dag videreført i en rekke kommersielle produkter; først ute var Apple Computer Corporation med sitt Macintosh-system. I senere tid er det Microsoft Inc. sitt operativsystem WINDOWS og da den nyeste versjonen av det, WINDOWS 95, som har tiltrukket seg oppmerksomhet. Andre viktige programvare-produkter som også inneholder de typiske grafiske grensesnittene fra Kays SMALLTALK, er IBM sitt operativsystem for personlige datamaskiner, OS/2, samt tekstbehandlings-programmet WORDPERFECT 6.0 fra firmaet Word Perfect Corporation.

Tilbake til toppen

BASIC: det første interaktive programmeringsspråket

Det interaktive språket BASIC ble utviklet ved Dartmouth College i Hanover, New Hamshire, like etter at FORTRAN var blitt lansert. BASIC ble et motstykke, skrevet for å gjøre studentene kjent med og få dem til å nytte seg av datidens få, men store datamaskiner. Det var to professorer, Thomas E. Kurz og John G. Kemeny, som stod bak BASIC. Utgangspunktet deres lå faktisk i to forskjellige forhold: (1) storfirmaet General Electric Company hadde nylig gitt Dartmouth to store datamaskiner som kunne brukes via tilknyttede terminaler, og (2) ideen med et interaktivt programmeringsspråk var nettopp blitt introdusert. Det var særlig de gode erfaringene med det eksperimentelle språket JOSS som signaliserte dette. Både Kurz og Kemeny ønsket å utvikle et interaktivt programmeringsspråk. De satte seg som mål et generelt språk, som ikke var bundet til noen spesiell datamaskin eller tilrettelagt for et snevert applikasjonsområde, som forelå ferdig i 1964. Målsetningen var: BASIC skulle gi brukeren lettvint tilgang til egne filer og fellesbrukte dataprogrammer slik at han hele tiden følte han disponerte sin egen datamaskin, med alle tilhørende ressurser, (2) det skulle være enkelt å lære og lett å forstå slik at ingen ville finne det tok mye arbeid å ta det i bruk, og (3) systemet skulle gi brukeren så mye hjelp underveis som mulig, selv om dette medførte ekstra store belastninger på maskinvaren, stort forbruk av datakraft og mange spesielle operativsystem-funksjoner, dvs. det skulle være 'brukervennlig og behagelig' - to uttrykk som det for første gang ble lagt skikkelig vekt på i utviklingen av et programmeringsspråk.

BASIC ble et kommandolinje-basert språk, hvor alt som utføres er definert ved en ordsekvens. Sekvensen startet alltid med et verb, eksempelvis PRINT X eller SET X=10. De variable var identifisert med store bokstaver med om ønsket et enkelt siffer. De var enten flyttall eller heltall. Dobbel-indeksering var tillatt, hvor indeksene var angitt i parentes, for eksempel, B1(I,J) eller C(2,K). Hver kodelinje var nummerert og nummeret bestemte hvor linjen kom i rekkefølgen av linjer og tjente som adresse ved GOTO-type instruksjoner.

I sin opprinnelige utforming var BASIC et både konsist og kraftig programmeringsspråk. Det inneholdt alle de viktigste operasjonene som en student trengte for å kunne lese og skrive program- og datafiler, behandle alfanumeriske variable (strenger) og foreta de aller fleste aritmetiske operasjoner. Språket ble meget godt mottatt og spredte raskt til andre universiteter. Det fikk snart en omfattende og begeistret brukerskare over hele USA. Flere bøker ble skrevet om det, og store samlinger med program-eksempler ble gjort tilgjengelig. Vi kan si at for første gang i datamaskinens historie ble det gjort store anstrengelser for å hjelpe brukerne med å komme i gang med anvendelser. Det ble utgitt store program-kataloger som inneholdt en rekke raffinerte matematiske funksjoner og praktiske algoritmer for når sagt alle mulige beregnbare sammenheng. Den viktigste anvendelsen av BASIC fant derfor sted utenfor Dartmouth University.

Samtidig med at Dartmouth University lanserte BASIC så ble en rekke større og kraftige datamaskiner brakt på markedet, med sikte på å selge datakraft til industrielle og kommersielle brukere som ikke selv så seg i stand til å kjøpe en stor datamaskin. Perioden så fremveksten av en stor og egenartet industri hvor tidsdeling (eng. Time Sharing) at datakraften ble både omfattende og til dels svært lukrativt for selgerne av datakraft. En typisk bruker åpnet en konto hos en datakraft-leverandør. Når han trengte å utføre beregninger eller analysere data, benyttet han en telefon og et modem tilkoblet et fjernskriverkonsoll på sitt kontor. Datamaskinen kunne stå hvorsomhelst; den gav ham en forholdsvis stor datakraft i form av noen få millisekunder hvert sekund. I tillegg hadde han avtalt å kunne nytte en betydelig del av maskinens platelager for sine filer. Regningen kom en gang i måneden for bruken av datamaskintid og kiloord platelagerplass.

Den altoverveiende form for datalagring og program-oppbevaring var imidlertid ved hjelp av standard punsjet papirhullbånd rent lokalt. Det typiske fjernskriverkonsollet var alltid utstyrt med både papirhullbånd-leser og punsj. Innlesing og utskriving av programmer eller data skjedde således lokalt, med brukerens eget utstyr og belastet hans telefonregning. En typisk brukersesjon varte mindre enn en time og gav som oftest brukeren flere sjanser til å kjøre dataprogrammet sitt. Feilsøking og videreutvikling av programmene kunne enten skje direkte, mens han var tilknyttet datamaskinen, noe som var kostbart, eller ved å taste inn programmet og punsje et papirhullbånd uten å være koblet opp mot datamaskinen.

I historisk perspektiv var BASIC svært viktig: det demonstrerte klart hvilke muligheter vi har til å fordele datakraft mellom flere brukere som ellers ikke ville ha fått slik tilgang, det viste hvor viktig det er å konstruere programmer som er enkle å forstå og lette å lære og det gjorde det klart at ordene 'brukervennlig' og 'behagelig i bruk' kan bli gitt en fullverdig mening. BASIC er i Drene siden 1964 blitt videreutviklet og adaptert for en utrolig lang rekke ulike datamaskiner. I dag er språket i sin mest moderne drakt fullt på høyde med andre generelt anvendte programmeringsspråk, eksempelvis PASCAL, både når det gjelder utnyttelse av datakraft og for å utvikle og utføre komplekse aritmetiske og logiske operasjoner på alle mulige filformater og for alle typer datastrukturer, ned til de enkelte bit. Språket er forenklet ved at linjenummerering og linjesammenfatting ikke lenger er nødvendig. Strukturering og fleksibel modulinndeling er lett å bruke. Det har gode og klare feilmeldinger og gir detaljerte opplysninger om hvilke operasjoner som er tillatt.

Tilbake til toppen