Nogle programmeringssprog er mere lige end andre

Størrelse: px
Starte visningen fra side:

Download "Nogle programmeringssprog er mere lige end andre"

Transkript

1 Nogle programmeringssprog er mere lige end andre Af Torben Mogensen, DIKU Der findes tusindvis af forskellige programmeringssprog, og der bliver dagligt designet nye. Men er der virkelig så stor forskel på forskellige sprog, og hvis ikke, hvorfor så i det hele taget lave nye sprog? Begyndelsen: Church og Turing Allerede inden der fandtes egentlige computere, var matematikere og logikere i gang med at definere modeller for automatiserede beregninger. De mest kendte af disse var englænderen Alan Turing ( ) og amerikaneren Alonzo Church ( ). De havde i 1930 erne udviklet hver deres model for automatiske beregninger: Turings model er kendt som turingmaskinen, og Churchs model som lambdakalkulen. Se tekstboksene på de følgende sider for detaljer om de to modeller. Hverken turingmaskinen eller lambdakalkulen var tænkt som forslag til fysiske beregningsmaskiner. Turingmaskiner kunne godt realiseres med datidens teknologi (hvis man ser bort fra strimlens uendelighed), men de var for bøvlede at bruge: Selv forholdsvis enkle beregninger såsom at lægge to tal sammen krævede ret komplicerede turingmaskiner. Lambdakalkulen var noget nemmere at bruge, men der var ikke nogen oplagt måde at lave en maskine, der kunne foretage beregninger i lambdakalkule. Både turingmaskinen og lambdakalkulen var primært designet som værktøjer til at filosofere over hvilke problemer, der i det hele taget kan lade sig gøre at løse med automatiske beregninger. Derfor var fokus i designet på at gøre det nemt at lave matematiske beviser for deres egenskaber uden det store hensyn til realiserbarhed eller brugbarhed til andre formål. Det blev for eksempel bevist, at det er muligt at definere matematiske funktioner, der ikke kan beregnes i disse to modeller for beregning. Når man har to så forskellige modeller for automatiske beregninger som turingmaskinen og lambdakalkulen, er det selvfølgelig interessant at vide, om de kan det samme, eller om den ene kan lave beregninger, som den anden ikke kan. Sammen med logikerne Stephen Kleene og J.B. Rosser beviste Church og Turing, at enhver beregning, der kan laves med en turingmaskine, også kan laves i lambdakalkulen og omvendt. Så hvis man skal filosofere over grænserne for automatiske beregninger, er det ét fedt, om man bruger turingmaskiner eller lambdakalkulen i sine tankeeksperimenter. Men hvad med andre modeller? Kunne det tænkes, at en helt tredje model for beregninger kunne mere end både turingmaskiner og lambdakalkule? 50 DATALOGISK INSTITUT

2 Alan Turing Alonzo Church Det mente Church og Turing ikke og formulerede derfor en hypotese, som i dag er kendt som Church-Turing-tesen: Enhver beregning, der kan laves som en mekanisk proces, kan også laves af en turingmaskine eller i lambdakalkulen. Derfor ville et bevis for, at en bestemt funktion ikke kan beregnes med en turingmaskine (eller i lambdakalkulen), med det samme bevise, at ingen mekanisk proces kan lave denne beregning. Church-Turing-tesen kan ikke bevises matematisk, da der ikke er nogen matematisk definition af, hvad en mekanisk proces er. Men tesen er generelt accepteret som sand, da ingen endnu har kunnet beskrive en mekanisk proces for beregning, som ikke kan eftergøres med en turingmaskine eller i lambdakalkulen. Et programmeringssprog såsom Java eller C er også en model for automatiske beregninger: Man beskriver en beregning som et program i sproget og kan efterfølgende lave beregningen på en computer. Så det er naturligt at spørge, om et givent programmeringssprog kan lave alle beregninger, der kan laves af en turingmaskine eller lambdakalkulen. I givet fald kaldes sproget for turingkomplet. Langt de fleste gængse programmeringssprog (for eksempel Java og BASIC) er turingkomplette og kan derfor bruges til at beskrive alle tænkelige automatiske beregninger. Så set ud fra et matematisk synspunkt kan det være hip som hap, hvilket programmeringssprog, man bruger til at programmere sin computer. Så hvorfor i det hele taget lave nye programmeringssprog? Langt de fleste gængse programmeringssprog (for eksempel Java og BASIC) er turingkomplette KØBENHAVNS UNIVERSITET 51

3 Turingmaskinen En turingmaskine består af fire komponenter: En uendelig lang strimmel af tegn, hvor hvert tegn kan være 0 eller 1. Et vindue til strimlen. I dette vindue kan man se et tegn på strimlen. Et tilstandsregister, der kan indeholde et tilstandsnummer. En aktionstabel, der for hver kombination af tilstanden og tegnet i vinduet giver en ny tilstand og en aktion, der kan være en af følgende fire: N: Erstat tegnet i vinduet med 0. E: Erstat tegnet i vinduet med 1. V: Ryk vinduet til venstre. H: Ryk vinduet til højre. l Tilstand E2 H1 2 H3 V2 3 H0 N3 Aktionstabel Man kan betragte strimlen som lageret i en computer og aktionstabellen som programmet. Ved starten af beregningen er alle tegn på strimlen nuller undtagen under og til højre for vinduet, hvor inddata til beregningen er repræsenteret som et endeligt antal nuller og ettaller, hvorefter strimlen igen kun indeholder nuller. Tilstandsregistret indeholder ved start tilstandsnummer 1, og man sætter derefter maskinen i gang med at lave skridt. Hvert skridt består i at gøre det, som aktionstabellen angiver. Når tilstandsregistret bliver 0, stopper maskinen, og uddata af beregningen ligger under og til højre for vinduet efterfulgt af nuller. Man kan repræsentere et tal n som n 1 ere efterfulgt af et 0, så en turingmaskine, der beregner summen af to tal, vil starte med en strimmel, hvor de to inddatatal m og n er repræsenteret som m 1 ere, et 0, n 1 ere og derefter 0 er på resten af strimlen. Ved afslutning vil strimlen indholde m+n 1 ere og ellers 0 er. Det kan man gøre med den aktionstabel, der er vist i billedet, hvor man slår op med den nuværende tilstand (1, 2 eller 3) og tegnet i vinduet (0 eller 1) og finder en aktion (N, E, V eller H) og en ny tilstand (0, 1, 2 eller 3). Først rykkes vinduet til højre indtil det 0, der adskiller de to tal. Det erstattes af et 1, og vinduet rykkes til venstre indtil 0 et før det første tal. Derefter rykkes vinduet en gang til højre, og 1 et udskiftes med et 0, hvorefter der rykkes endnu en gang til højre, og maskinen stopper. 52 DATALOGISK INSTITUT

4 Lambdakalkulen Lambdakalkulen har navn efter det græske bogstav λ, som udtales lambda. Lambdakalkulen består af symbolske udtryk og regler for, hvordan man kan reducere udtryk til værdier ligesom regneregler beskriver, hvordan et regneudtryk kan reduceres til et tal. Et udtryk kan være en variabel. Vi bruger små bogstaver som fx. a, b, x og y til variable. Et udtryk kan have formen (M N), hvor M og N også er udtryk. Et udtryk kan have formen λx.m, hvor x er en variabel, og M er et udtryk, der kan indeholde variablen x. Det er endvidere et krav, at forskellige forekomster af λ skal efterfølges af forskellige variable. Fx. er udtrykket λx.λx.x ikke et lovligt udtryk, da de to forekomster af λ begge efterfølges af variablen x. Et udtryk af formen λx.m siges at være ækvivalent med et udtryk af formen λy.n, hvis M og N er ens, bortset fra at M bruger x alle de steder, hvor N bruger y, og omvendt. For eksempel er udtrykkene λx.(a x) og λy.(a y) ækvivalente. Der er kun én reduktionsregel i Lambdakalkule: Et deludtryk af formen (λx.m N) reduceres til et kopi af udtrykket M, hvori alle forekomster af x er erstattet med udtryk, der er ækvivalente med N. Hvis man uden videre erstatter alle forekomster af x med N, kan man overtræde forbuddet mod gentagne variable efter λ, men ved at bruge ækvivalente udtryk kan man undgå dette. For eksempel reduceres (λx.(x x) λy.y) til (λa.a λb.b), idet de to forekomster af x er erstattet med de til λy.y ækvivalente udtryk λa.a og λb.b. En normalform er et udtryk, der ikke kan reduceres med denne reduktionsregel. Programmer er vilkårlige udtryk, og værdier er udtryk i normalform. Man kører et program P med inddata D ved at reducere udtrykket (P D) til normalform. Man kan repræsentere naturlige tal som værdier i Lambdakalkule på følgende måde: 0 repræsenteres som udtrykket λx.λy.y, 1 som λx.λy.(x y), 2 som λx.λy.(x (x y)), 3 som λx.λy.(x (x (x y))) og så videre. Vi kan definere et program P, som beregner N N, hvor N er et naturligt tal, som P = λn.(n n). Vi kan for eksempel køre P med repræsentationen af tallet 2 som inddata: (λn.(n n) λx.λy.(x (x y)) (λa.λb.(a (a b)) λc.λd.(c (c d))) λb.(λe.λ f.(e (e f )) (λg.λh.(g (g h)) b)) λb.(λe.λ f.(e (e f )) λh.(b (b h))) λb. λf.(λi.(b (b i)) (λj.(b (b j)) f)) λb. λf.(λi.(b (b i)) (b (b f))) λb. λf.(b (b (b (b f)))) hvor pile angiver reduktioner. Bemærk, at vi flere gange omdøber udtryk for at undgå forbuddet mod gentagelse af navne efter λ. Det resulterende udtryk er, som forventet, ækvivalent med repræsentationen af 4. KØBENHAVNS UNIVERSITET 53

5 Hvornår er et sprog bedre end et andet? Når to programmeringssprog begge er turingkomplette, er de som sagt på en måde lige gode: De kan beregne de samme ting. Hvis man vil diskutere, om et programmeringssprog er bedre end et andet, må man derfor i de fleste tilfælde bruge andre kriterier end hvilke beregninger, det er muligt at lave i sprogene. Der har været mange forskellige forslag til sammenligningskriterier for programmeringssprog. Her er nogle af de mest almindeligt brugte kriterier: Også runer findes i skandinaviske varianter. Rosettastenen, som stammer tilbage fra de gamle Egypen, viser, at man allerede i oldtiden anvendte forskellige sprog til at formidle det samme budskab. 54 DATALOGISK INSTITUT

6 Programmers størrelse: Hvis et program i et sprog A altid kan omskrives til et kortere program i sproget B, er B et bedre sprog. Hastighed: Hvis et program i et sprog A altid kan omskrives til et hurtigere program i sproget B, er B et bedre sprog. Nemhed: Hvis det for alle beregninger er nemmere at lave et program til beregningen i sproget B, end det er i sproget A, så er B et bedre sprog. Men der er også problemer med alle disse kriterier: Størrelse: Man kan bevise, at hvis både A og B er turingkomplette sprog, så kan alle tilstrækkelig store programmer i sproget A omskrives til programmer i sproget B, som højst er en smule større. Med andre ord er det kun for små programmer, at der kan være en væsentlig forskel på, hvor meget tilsvarende programmer fylder i de to sprog. Endvidere kan det være umuligt at afgøre, om et givent program er det mindst mulige program til at lave en given beregning i et givent sprog. Hastighed: Et programmeringssprog kan implementeres på forskellige computere på mange forskellige måder, så hastigheden af programmer i sproget er afhængig dels af implementeringsmetoden for sproget og dels af den computer, sproget er implementeret på. Man kan derfor ikke give noget almengyldigt mål for, hvor hurtigt et program er. Man kan allerhøjst sige, at på denne specifikke maskine med denne specifikke implementering af de to sprog, kører dette specifikke program i sproget A hurtigere end dette specifikke tilsvarende program i sproget B. Og selv når man gør tidsforbruget veldefineret ved at fastlægge sprogets implementering og maskine, er det, ligesom det er umuligt at bevise, at et program er det korteste til at lave en bestemt beregning, også umuligt at vise, at et specifikt program er det absolut hurtigste til en bestemt beregning. Nemhed: Hvor nemt det er at skrive et program, er en meget subjektiv sag: Én programmør kan synes, at det er nemmere at skrive programmer i sproget A, mens en anden kan synes, at det er nemmere at skrive i sproget B. Så man kan ikke lave et objektivt mål for nemhed. Man kan lave studier af udvalgte menneskers erfaring med forskellige programmeringssprog, men resultatet af et sådant studie vil altid afhænge af de udvalgte mennesker deres uddannelse, kultur og personlighed. Der vil derfor altid være masser af forbehold, når man skal sammenligne programmeringssprog. Ikke desto mindre finder man mange diskussioner, hvor folk prøver at overbevise andre om deres personlige favoritsprogs overlegenhed uden at lave de nødvendige forbehold. Man ser fx. ofte udsagn som C er et hurtigere sprog end Java, Det er nemmere at skrive programmer i Javascript end i C, Programmer i Perl er kortere end programmer i Java og så videre. Men den slags påstande kan man ikke bruge til noget de siger mere om de personer, der laver udsagnene, end om de sprog, udsagnene omhandler. KØBENHAVNS UNIVERSITET 55

7 Det betyder dog ikke, at man overhovedet ikke kan sammenligne turingkomplette programmeringssprog: Hvis man laver passende forbehold, kan man godt sige, at et sprog under disse specifikke forbehold opfylder et bestemt kriterium bedre end et andet. Man kan for eksempel vælge en bestemt computertype og de mest udbredte implementeringer af udvalgte programmeringssprog til denne computertype og sammenligne programmer, der er skrevet af erfarne programmører med henblik på at løse specifikke problemer enten med det kortest mulige program eller i kortest tid. Så kan man godt sige, at i denne kunstige situation var programmerne i det ene sprog typisk kortere eller hurtigere end programmerne i det andet sprog. Hvis man gør lignende forbehold klart, kan man også forsøge at designe et sprog, der udmærker sig på en særlig måde under disse specifikke forbehold. Men det er meningsløst at sammenligne eller designe programmeringssprog uden at have gjort sig klart, hvilke forbehold man har taget, og hvilke kriterier sammenligningen eller designet laves under. Et svagt sprog kan have fordele, som turingkomplette sprog ikke har Svage sprog Et sprog, der ikke er turingkomplet, kan pr. definition ikke lave alle tænkelige automatiske beregninger, og man kan derfor kalde det et svagt sprog. Umiddelbart kunne man tro, at det er meningsløst at bruge svage programmeringssprog, når der findes så mange stærke (turingkomplette) sprog. Men et svagt sprog kan have fordele, som turingkomplette sprog ikke har: Det kan være umuligt at bevise korrekthed af programmer i turingkomplette sprog, men man kan lave svage sprog, hvor det altid er muligt automatisk at afgøre, om et program overholder en given formel specifikation. Det kan være umuligt at give øvre grænser for tids- og pladsforbrug for programmer i stærke sprog, men svage sprog kan garantere, at køretid og plads er begrænsede. Det kan være meget nemmere at implementere et svagt sprog effektivt, end det er at implementere et stærkt sprog effektivt. Det kan for eksempel gælde, hvis man vil køre programmer på højparallelle computere. Der kan også være tilfælde, hvor der kendes effektive metoder til at lave beregninger inden for et bestemt problemområde, men hvor disse metoder er meget komplicerede. I denne situation kan man lave et sprog, der kun kan bruges til dette problemområde, men hvor implementeringen af sproget sørger for, at de effektive metoder altid bruges, uden at programmøren behøver at bekymre sig om det. Derfor er der en stigende tendens til, at der bliver designet stærkt specialiserede svage sprog. Det, man taber i fleksibilitet og beregningsstyrke ved at bruge et svagt sprog, vinder man på andre områder: sikkerhed, garantier for ressourceforbrug, bedre effektivitet og så videre. Man kan i reglen godt opnå den samme sikkerhed, effektivitet og ressourcegaranti i et turingkomplet sprog, men det vil kræve, at der for hvert enkelt program laves bevis for disse egenskaber, hvor et svagt sprog kan garantere dette for alle programmer, der kan skrives i dette sprog. Man kan groft sagt sige, at et svagt sprog er for dovne programmører: En omhyggelig programmør kan lave et lige så godt eller bedre program i et turingkomplet sprog, men det kræver ofte meget mere arbejde både at skrive programmet og efterfølgende at vise, at programmet opfylder de stillede krav. 56 DATALOGISK INSTITUT

8 Man kan sammenligne svage og stærke sprog med værktøj: Man kan ikke save med en skruetrækker, og man kan ikke skrue skruer i med en sav, men man kan begge dele med en schweizerkniv. Men hvis man skal skrue en skrue i, så er det nemmere at bruge skruetrækkeren end schweizerkniven, og hvis man skal save, er det nemmere at bruge saven end schweizerkniven. Det, man mister i HTML er et eksempel på et svagt sprog, der har fået stor anvendelse. KØBENHAVNS UNIVERSITET 57

9 fleksibilitet med de specialiserede værktøjer, vinder man i brugbarhed til specifikke opgaver. Og hvor sammenligning af turingkomplette sprog kræver en masse forbehold og subjektivitet, kan man ofte lave uforbeholdne sammenligninger mellem svage sprog: Man kan vise, at et sprog A kan lave flere beregninger end et sprog B, eller at et sprog A kan give flere garantier om programmers opførsel end et sprog B. Herunder er nogle eksempler på svage sprog med beskrivelser af de fordele, man opnår ved at sætte begrænsninger i sprogenes beregningsstyrke, og de ting, man mister ved at sætte disse begrænsninger. Eksempel på, at cyklisk afhænghed er umulig i regneark: Cellen A1 kan ikke indeholde formlen =B1+1, samtidig med at cellen B1 indeholder formlen =A1+1. Regneark Regneark såsom Microsofts Excel og Open Office Calc er også programmeringssprog: Man kan beskrive beregninger og få dem udført automatisk. De mest avancerede regneark har efterhånden fået så mange faciliteter, at de er turingkomplette, men i grundformen er de ikke: Hver celle kan indeholde enten et tal, en formel eller en tekst. Formler kan bruge indholdet af andre celler til at beregne en værdi for sin egen celle, men det er ikke tilladt at have cykliske afhængigheder mellem formlerne. For eksempel kan cellen A1 ikke indeholde formlen =B1+1, samtidig med at cellen B1 indeholder formlen =A1+1, for ingen af disse formler kan beregnes, før man kender værdien af den anden celle. Manglen på cykliske afhængigheder sikrer, at beregningen kan ske hurtigt: Uanset hvor mange celler der ændrer indhold, behøver man kun at genberegne hver formel én gang for at få det færdige resultat forudsat, at man regner formlerne i den rigtige rækkefølge. Denne rækkefølge kan man også finde i forholdsvis kort tid, så hele genberegningsprocessen er hurtig (forudsat, at de enkelte formler ikke tager lang tid at beregne). Denne garanti for hurtig beregning vil man ikke have i et turingkomplet sprog. Man kan ikke sige, at regneark er specialiserede programmeringssprog: De bliver brugt til mange forskellige slags beregninger lige fra en skoles udflugtsbudget til styrken af en bropille. Fordelene ved regneark kan derfor ikke siges at stamme fra en indskrænkning af problemområdet men snarere en indskrænkning af kompleksiteten af de beregninger, der kan udtrykkes i regnearkene. Stærkt specialiserede sprog En anden måde at opnå fordele gennem svage sprog er at designe dem til at løse opgaver inden for et meget specifikt problemområde: Mange detaljer ved løsningen kan underforstås og behøver derfor ikke at beskrives eksplicit i programmerne, og man kan lave automatiske analyser af programmerne, så man kan få oplysninger om deres egenskaber. Et eksempel er sproget Troll: Det eneste, man kan programmere i Troll, er forskellige måder at kaste med terninger på og kombinere terningernes værdier til et enkelt tal. For eksempel vil programmet max 3d10 give resultatet af at kaste 3 tisidede terninger (3d10) og finde den største af de tre værdier (max). Da terningeslag er tilfældige, vil det samme program give forskellige resultater, hver gang det bliver kørt. Tre forskellige kørsler kan for eksempel give værdierne 8, 10 og 7. Hvis man gerne vil vide, hvilke resultater der er mulige, og sandsynlighederne for de forskellige resultater, kan man køre dette program mange tusind gange. Ved at tælle antallet af gange, hvert resultat forekommer, kan man estimere sandsynlighederne. Man får dog ikke eksakte sandsynligheder: Jo flere kørsler man laver, jo bedre bliver estimaterne, men man får aldrig helt præcise værdier. 58 DATALOGISK INSTITUT

10 Men man kan analysere programmet og finde eksakte sandsynligheder for alle udfald. For max 3d10 er de mulige udfald som følger: Udfald Sandsynlighed 0,1% 0,7% 1,9% 3,7% 6,1% 9,1% 12,7% 16,9% 21,7% 27,1% Denne analyse kan laves automatisk, men kun fordi Troll er et meget simpelt sprog. Hvis man havde brugt et turingkomplet programmeringssprog til at lave terningekastene med, så ville man ikke kunne lave analysen automatisk. Samtidig gør den stærke specialisering af sproget, at de fleste almindelige måder at bruge terninger på kan laves med meget korte programmer. Behandling af store datamængder Søgemaskinefirmaet Google har nogle af verdens største datacentre, hvor de gemmer informationer om alverdens hjemmesider og om de søgninger, der bliver foretaget gennem Googles søgetjeneste. Alle disse data er fordelt på flere tusind computere hver med deres egne lokale diske. For at sikre sig mod maskinnedbrud findes hver bid data på flere forskellige computere på forskellige dele af det netværk, der forbinder alle computerne. Når Google skal lave statistik over disse store datamængder, for eksempel for at finde de mest almindelige søgeord, skal beregningerne effektivt fordeles over mange tusind computere, og beregningerne skal laves, så de tager højde for, at nogle af computerne bryder sammen under beregningen noget, der sker, næsten hver gang der laves en større beregning. Det er meget komplekst at programmere denne slags fordelte beregninger i et almindeligt programmeringssprog, så Google har lavet deres eget sprog, Sawzall, til formålet. Et program i Sawzall består af to dele: en del, der beskriver en delberegning på en enkelt bid data i isolation fra de andre dele af data, og en del, der beskriver, hvordan de delresultater, der kommer ud af de individuelle delberegninger, kombineres til et samlet resultat. Kombineringsfunktionen skal kunne tage delresultaterne i en vilkårlig rækkefølge, uden at det ændrer det endelige resultat, og uden at kombineringsfunktionen behøver at huske store datamængder undervejs. Denne begrænsning medfører, at man ikke kan lave alle tænkelige beregninger i sproget, men til gengæld er man garanteret effektiv beregning: Fordi kombineringsfunktionen kan tage delresultater i vilkårlig rækkefølge, kan den tage dem, efterhånden som de bliver færdige, og den computer, der leverede delresultatet, kan sættes i gang med en ny delberegning. Og hvis en delberegning går galt, fordi den computer, der laver delberegningen, bryder sammen, kan man genstarte delberegningen på en anden computer. I dette tilfælde udnytter man egenskaber ved kombineringsfunktionen til effektivt at fordele beregningerne og kompensere for computersammenbrud. Det ville man ikke kunne garantere, hvis kombineringsfunktionen var skrevet i et turingkomplet sprog. Samtidig er et program i Sawzall meget kort i forhold til et tilsvarende program skrevet i et almindeligt turingkomplet sprog, da hele processen omkring fordeling af beregninger, kommunikation over netværk, håndtering af maskinnedbrud osv. er underforstået og ikke behøves at stå eksplicit i hvert Sawzallprogram. Det KØBENHAVNS UNIVERSITET 59

11 herunder viste program i Sawzall finder fordelingen af Googlesøgninger på bredde og længdegrad. Den anden linje beskriver kombineringsfunktionen: Man laver en tabel over bredde- og længdegrader (lat og lon) og lægger delresultaterne sammen (sum). De tre sidste linjer beskriver behandling af de enkelte deldata: Inddata (input) er data om en enkelt søgning. Derefter udtrækkes positionsinformation ud fra IP-adressen, og man sætter et ettal ind i tabellen ved denne position. Ordet emit angiver, at det er det delresultat, der sendes videre til kombineringsfunktionen. proto querylog.proto queries_per_degree: table sum[lat: int][lon: int] of int; log_record: QueryLogProto = input; loc: Location = locationinfo(log_record.ip); emit queries_per_degree[int(loc.lat)][int(loc.lon)] <-1; Tabellen queries_per_degree kan vises som et billede: Antallet af forespørgsler fra et bestemt sted vises som farven i et billedpunkt: Jo mørkere punktet er, jo flere forespørgsler. Et billede svarende til forespørgslerne i et døgn i august 2003 er vist herunder. Reversible sprog En egenskab, som et svagt sprog kan have, men som et turingkomplet sprog ikke har, er reversibilitet: Evnen til at køre et program baglæns, så man fra uddata kan finde det inddata, der giver dette uddata. Reversibilitet kræver, at der for hvert muligt uddata kun er et muligt inddata, der giver dette uddata. Så et program, der som inddata tager to tal og som uddata giver deres sum, er ikke reversibelt der er mange forskellige inddata, der giver samme uddata. Men et program, der som inddata tager to tal og som uddata giver både deres sum og deres differens, kan være reversibelt: Hvis man kender uddata, er der kun ét muligt inddata, for hvis a = x+y og b = x y, så er x = (a+b)/2 og y = (a b)/2. 60 DATALOGISK INSTITUT

12 Billed The Tower of Babel, Pieter Bruegel, Kunsthistorisches Museum, Vienna. Historien om Babelstårnet illustrerer mangfoldigheden af sprog. KØBENHAVNS UNIVERSITET 61

13 I et reversibelt programmeringssprog kan man kun skrive reversible programmer, og man kan implementere sproget på en reversibel computer: en computer, der kun kan lave reversible beregninger En konsekvens af termodynamikkens anden lov er, at en reversibel computer kan laves, så den bruger mindre energi end en ikke-reversibel computer. Så til formål, hvor lavt energiforbrug er vigtigt, kan reversible computere og sprog være interessante. Indtil videre er det dog fremtidsmusik, da energieffektive reversible computere endnu kun er på tegnebrættet. Tendensen går i retning af specialiserede sprog Men reversible sprog har en anden fordel. Ofte har man brug for at lave beregninger både forlæns og baglæns: Hvis man for eksempel komprimerer data til en kompakt form, vil man gerne kunne genskabe det oprindelige data, så man laver i reglen to programmer: et til at komprimere data og et andet til at genskabe det originale data fra det komprimerede. Hvis man skriver komprimeringsprogrammet i et reversibelt sprog, behøver man ikke at skrive det andet program: Man kan bare køre komprimeringsprogrammet baglæns i stedet. I de reversible programmeringssprog, der findes i dag, kan det dog være vanskeligere at skrive dette ene program, end det vil være at skrive de to indbyrdes omvendte programmer. Det kan bemærkes, at reversible beregninger er en forudsætning for kvantecomputere, der udnytter kvantemekanikkens superpositionsbegreb til at lave beregninger på mange værdier samtidig. De beregninger, der kan laves på en kvantecomputer, er dog kun en delmængde af alle reversible beregninger. Opsummering Der findes tusindvis af forskellige programmeringssprog. De fleste kan beregne det samme: alle beregninger, der kan automatiseres. Det kan blandt andet være svært at sige, at et sprog er bedre end et andet, uden at specificere en meget præcis kontekst for sammenligningen. Der kan være grunde til at bruge programmeringssprog, der ikke kan beregne alting: Begrænsningerne kan give andre fordele såsom ressourcegarantier, analyserbarhed og parallel beregning. Der kommer hele tiden nye programmeringssprog til, og tendensen går i retning af specialiserede sprog. Og selv folk, der ikke betragter sig som it-arbejdere, vil i stigende grad bruge simple programmeringssprog såsom regneark eller stærkt specialiserede sprog. Læs mere Alan Turing og turingmaskiner: Alonzo Church og lambdakalkulen: Troll: Sawzall: Reversible beregninger: 62 DATALOGISK INSTITUT

14 TORBEN ÆGIDIUS MOGENSEN Torben Ægidius Mogensen har siden 1994 været lektor og siden 2007 studieleder på Datalogisk Institut på Københavns Universitet. Torben er ph.d. fra 1989 og har modtaget en undervisningspris fra Det Naturvidenskabelige Fakultet i Han har desuden været med til at akkreditere uddannelser i Estland. Torben har bl.a. skrevet lærebogen Basics of Compiler Design (2000, 2010), som han anvender i sin undervisning inden for samme område på DIKU. Som en del af APL-gruppen (algoritmer og programmeringssprog) arbejder Torben med automatisk programanalyse og -transformation, oversættere og domænespecifikke sprog. Af udvalgte artikler kan nævnes: Troll: A Language for Specifying Dice-Rolls, ACM Symposium on Applied Computing 2009, Semi-Inversion of Functional Parameters, Partial Evaluation and Program Manipulation 2008, og Linear-Time Self-Interpretation of the Pure Lambda Calculus, Journal of Higher-Order and Symbolic Computation KØBENHAVNS UNIVERSITET 63

15 Den digitale revolution fortællinger fra datalogiens verden Bogen er udgivet af Datalogisk Institut, Københavns Universitet (DIKU) i anledning af instituttets 40 års jubilæum med bidrag fra forskere tilknyttet instituttet. Redaktion: Tariq Andersen, phd-studerende, Jørgen Bansler, professor, Hasse Clausen, lektor, Inge Hviid Jensen, kommunikationsmedarbejder og Martin Zachariasen, institutleder. Forsidemotiv: Foto af skulptur af Alan Turing, basegreen lokaliseret på flickr.om/photos/basegreen Oplag: 1000 eks. Grafisk design og produktion: Westring + Welling A/S ISBN: Datalogisk Institut Citater er tilladt under creative commons. 2 DATALOGISK INSTITUT

Computeren repræsenterer en teknologi, som er tæt knyttet til den naturvidenskabelige tilgang.

Computeren repræsenterer en teknologi, som er tæt knyttet til den naturvidenskabelige tilgang. Den tekniske platform Af redaktionen Computeren repræsenterer en teknologi, som er tæt knyttet til den naturvidenskabelige tilgang. Teknologisk udvikling går således hånd i hånd med videnskabelig udvikling.

Læs mere

Den digitale verden er i dag en del af de fleste menneskers dagligdag. Når mennesker bruger

Den digitale verden er i dag en del af de fleste menneskers dagligdag. Når mennesker bruger Menneskers omgang med den digitale teknik Af redaktionen Den digitale verden er i dag en del af de fleste menneskers dagligdag. Når mennesker bruger deres mobiltelefon, ser tv, søger oplysninger på Wikipedia,

Læs mere

Den digitale revolution

Den digitale revolution datalogisk institut københavns universitet Den digitale revolution fortællinger fra datalogiens verden DIKU 1970 2010 Den digitale revolution fortællinger fra datalogiens verden Datalogisk Institut, Københavns

Læs mere

Gennem de sidste par årtier er en digital revolution fejet ind over vores tidligere så analoge samfund.

Gennem de sidste par årtier er en digital revolution fejet ind over vores tidligere så analoge samfund. Den digitale verden et barn af oplysningstiden Af redaktionen Gennem de sidste par årtier er en digital revolution fejet ind over vores tidligere så analoge samfund. Den elektroniske computer er blevet

Læs mere

Simulering af stokastiske fænomener med Excel

Simulering af stokastiske fænomener med Excel Simulering af stokastiske fænomener med Excel John Andersen, Læreruddannelsen i Aarhus, VIA Det kan være en ret krævende læreproces at udvikle fornemmelse for mange begreber fra sandsynlighedsregningen

Læs mere

Matematikken i kunstig intelligens Opgaver om koordinerende robotter

Matematikken i kunstig intelligens Opgaver om koordinerende robotter Matematikken i kunstig intelligens Opgaver om koordinerende robotter Thomas Bolander 2. juni 2018 Vejledning til opgaver Opgave 1 kan eventuelt springes over, hvis man har mindre tid. De resterende opgaver

Læs mere

Matematikken i kunstig intelligens Opgaver om koordinerende robotter LØSNINGER

Matematikken i kunstig intelligens Opgaver om koordinerende robotter LØSNINGER Matematikken i kunstig intelligens Opgaver om koordinerende robotter LØSNINGER Thomas Bolander 25. april 2018 Vejledning til opgaver Opgave 1 kan eventuelt springes over, hvis man har mindre tid. De resterende

Læs mere

Programmering, algoritmik og matematik en nødvendig sammenblanding?

Programmering, algoritmik og matematik en nødvendig sammenblanding? Programmering, algoritmik og matematik en nødvendig sammenblanding? Oplæg til IDA møde, 29. november 2004 Martin Zachariasen DIKU 1 Egen baggrund B.Sc. i datalogi 1989; Kandidat i datalogi 1995; Ph.D.

Læs mere

Simulering af stokastiske fænomener med Excel

Simulering af stokastiske fænomener med Excel Simulering af stokastiske fænomener med Excel John Andersen, Læreruddannelsen i Aarhus, VIA Det kan være en ret krævende læreproces at udvikle fornemmelse for mange begreber fra sandsynlighedsregningen

Læs mere

Grundlæggende køretidsanalyse af algoritmer

Grundlæggende køretidsanalyse af algoritmer Grundlæggende køretidsanalyse af algoritmer Algoritmers effektivitet Størrelse af inddata Forskellige mål for køretid Store -notationen Klassiske effektivitetsklasser Martin Zachariasen DIKU 1 Algoritmers

Læs mere

Rolf Fagerberg. Forår 2013

Rolf Fagerberg. Forår 2013 Forår 2013 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: DM536 og DM537 Timer: 50% forelæsninger, 50% øvelser Forudsætninger: DM536 og DM537 Eksamenform: Skriftlig eksamen: Timer: 50% forelæsninger,

Læs mere

Baggrundsnote om logiske operatorer

Baggrundsnote om logiske operatorer Baggrundsnote om logiske operatorer Man kan regne på udsagn ligesom man kan regne på tal. Regneoperationerne kaldes da logiske operatorer. De tre vigtigste logiske operatorer er NOT, AND og. Den første

Læs mere

De rigtige reelle tal

De rigtige reelle tal De rigtige reelle tal Frank Villa 17. januar 2014 Dette dokument er en del af MatBog.dk 2008-2012. IT Teaching Tools. ISBN-13: 978-87-92775-00-9. Se yderligere betingelser for brug her. Indhold 1 Introduktion

Læs mere

Gennemsnit og normalfordeling illustreret med terningkast, simulering og SLUMP()

Gennemsnit og normalfordeling illustreret med terningkast, simulering og SLUMP() Gennemsnit og normalfordeling illustreret med terningkast, simulering og SLUMP() John Andersen, Læreruddannelsen i Aarhus, VIA Et kast med 10 terninger gav følgende udfald Fig. 1 Result of rolling 10 dices

Læs mere

Matricer og lineære ligningssystemer

Matricer og lineære ligningssystemer Matricer og lineære ligningssystemer Grete Ridder Ebbesen Virum Gymnasium Indhold 1 Matricer 11 Grundlæggende begreber 1 Regning med matricer 3 13 Kvadratiske matricer og determinant 9 14 Invers matrix

Læs mere

Formler, ligninger, funktioner og grafer

Formler, ligninger, funktioner og grafer Formler, ligninger, funktioner og grafer Omskrivning af formler, funktioner og ligninger... 1 Grafisk løsning af ligningssystemer... 1 To ligninger med to ubekendte beregning af løsninger... 15 Formler,

Læs mere

Regneark hvorfor nu det?

Regneark hvorfor nu det? Regneark hvorfor nu det? Af seminarielektor, cand. pæd. Arne Mogensen Et åbent program et værktøj... 2 Sådan ser det ud... 3 Type 1 Beregning... 3 Type 2 Præsentation... 4 Type 3 Gæt... 5 Type 4 Eksperiment...

Læs mere

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2015 Forår 2015 Dagens program 1 2 3 4 5 Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Deltagere: BA i Datalogi BA i Software

Læs mere

Noter til Perspektiver i Matematikken

Noter til Perspektiver i Matematikken Noter til Perspektiver i Matematikken Henrik Stetkær 25. august 2003 1 Indledning I dette kursus (Perspektiver i Matematikken) skal vi studere de hele tal og deres egenskaber. Vi lader Z betegne mængden

Læs mere

Rolf Fagerberg. Forår 2012

Rolf Fagerberg. Forår 2012 Forår 2012 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: DM502 og DM503 Timer: 50% forelæsninger, 50% øvelser Forudsætninger: DM502 og DM503 Eksamenform: Skriftlig eksamen: Timer: 50% forelæsninger,

Læs mere

Omskrivningsregler. Frank Nasser. 10. december 2011

Omskrivningsregler. Frank Nasser. 10. december 2011 Omskrivningsregler Frank Nasser 10. december 2011 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Indhold 1 Introduktion

Læs mere

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur (struktur opbygget af et endeligt antal enkeltdele) blandt mange mulige. Eksempler:

Læs mere

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2015 Forår 2015 Dagens program 1 2 3 4 5 Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Deltagere: BA i Datalogi BA i Software Engineering BA i Matematik-Økonomi BA i Anvendt Matematik BA

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Introduktion til kurset Rolf Fagerberg Forår 2019 1 / 20 Hvem er vi? Underviser: Rolf Fagerberg, Institut for Matematik og Datalogi (IMADA) Forskningsområde: algoritmer

Læs mere

Kursusindhold: Produkt og marked - matematiske og statistiske metoder. Monte Carlo

Kursusindhold: Produkt og marked - matematiske og statistiske metoder. Monte Carlo Kursusindhold: Produkt og marked - matematiske og statistiske metoder Rasmus Waagepetersen Institut for Matematiske Fag Aalborg Universitet Sandsynlighedsregning og lagerstyring Normalfordelingen og Monte

Læs mere

Fagårsplan 10/11 Fag: Matematik Klasse: 7.ABC Lærer: Henrik Stillits. Fagområde/ emne

Fagårsplan 10/11 Fag: Matematik Klasse: 7.ABC Lærer: Henrik Stillits. Fagområde/ emne Fagårsplan 10/11 Fag: Matematik Klasse: 7.ABC Lærer: Henrik Stillits. Fagområde/ emne Matematiske færdigheder Grundlæggende færdigheder - plus, minus, gange, division (hele tal, decimaltal og brøker) Identificer

Læs mere

Oprids over grundforløbet i matematik

Oprids over grundforløbet i matematik Oprids over grundforløbet i matematik Dette oprids er tænkt som en meget kort gennemgang af de vigtigste hovedpointer vi har gennemgået i grundforløbet i matematik. Det er en kombination af at repetere

Læs mere

Introduktion til DM507

Introduktion til DM507 Introduktion til DM507 Rolf Fagerberg Forår 2017 1 / 20 Hvem er vi? Underviser: Rolf Fagerberg, IMADA Forskningsområde: algoritmer og datastrukturer 2 / 20 Hvem er vi? Underviser: Rolf Fagerberg, IMADA

Læs mere

Skriftlig Eksamen Diskret Matematik (DM528)

Skriftlig Eksamen Diskret Matematik (DM528) Skriftlig Eksamen Diskret Matematik (DM528) Institut for Matematik & Datalogi Syddansk Universitet Tirsdag den 20 Januar 2009, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger, notater etc.) samt brug

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Rolf Fagerberg. Forår 2014

Rolf Fagerberg. Forår 2014 Forår 2014 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: Format: Programmering og Diskret matematik I (forelæsninger), TE (øvelser), S (arbejde selv og i studiegrupper) Eksamenform: Skriftlig

Læs mere

Mandags Chancen. En optimal spilstrategi. Erik Vestergaard

Mandags Chancen. En optimal spilstrategi. Erik Vestergaard Mandags Chancen En optimal spilstrategi Erik Vestergaard Spilleregler denne note skal vi studere en optimal spilstrategi i det spil, som i fjernsynet går under navnet Mandags Chancen. Spillets regler er

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 20. april, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Elementær Matematik. Mængder og udsagn

Elementær Matematik. Mængder og udsagn Elementær Matematik Mængder og udsagn Ole Witt-Hansen 2011 Indhold 1. Mængder...1 1.1 Intervaller...4 2. Matematisk Logik. Udsagnslogik...5 3. Åbne udsagn...9 Mængder og Udsagn 1 1. Mængder En mængde er

Læs mere

Visualiseringsprogram

Visualiseringsprogram Visualiseringsprogram Programmering C - eksamensopgave Rami Kaddoura og Martin Schmidt Klasse: 3.4 Vejleder: Karl Bjarnason Roskilde Tekniske Gymnasium Udleveringsdato: 02-03-2012 Afleveringsdato: 11-05-12

Læs mere

Et udtryk på formena n kaldes en potens med grundtal a og eksponent n. Vi vil kun betragte potenser hvor grundtallet er positivt, altså a>0.

Et udtryk på formena n kaldes en potens med grundtal a og eksponent n. Vi vil kun betragte potenser hvor grundtallet er positivt, altså a>0. Konkrete funktioner Potenser Som udgangspunkt er brugen af potenser blot en forkortelse for at gange et tal med sig selv et antal gange. Hvis a Rskriver vi a 2 for a a a 3 for a a a a 4 for a a a a (1).

Læs mere

Hypotesetest. Altså vores formodning eller påstand om tingens tilstand. Alternativ hypotese (hvis vores påstand er forkert) H a : 0

Hypotesetest. Altså vores formodning eller påstand om tingens tilstand. Alternativ hypotese (hvis vores påstand er forkert) H a : 0 Hypotesetest Hypotesetest generelt Ingredienserne i en hypotesetest: Statistisk model, f.eks. X 1,,X n uafhængige fra bestemt fordeling. Parameter med estimat. Nulhypotese, f.eks. at antager en bestemt

Læs mere

Statistik i basketball

Statistik i basketball En note til opgaveskrivning jerome@falconbasket.dk 4. marts 200 Indledning I Falcon og andre klubber er der en del gymnasieelever, der på et tidspunkt i løbet af deres gymnasietid skal skrive en større

Læs mere

Fig. 1 Billede af de 60 terninger på mit skrivebord

Fig. 1 Billede af de 60 terninger på mit skrivebord Simulation af χ 2 - fordeling John Andersen Introduktion En dag kastede jeg 60 terninger Fig. 1 Billede af de 60 terninger på mit skrivebord For at danne mig et billede af hyppighederne flyttede jeg rundt

Læs mere

dpersp Uge 40 - Øvelser Internetalgoritmer

dpersp Uge 40 - Øvelser Internetalgoritmer Øvelse 1 dpersp Uge 40 - Øvelser Internetalgoritmer (Øvelserne 4 og 6 er afleveringsopgaver) a) Hver gruppe får en terning af instruktoren. Udfør 100 skridt af nedenstående RandomWalk på grafen, som også

Læs mere

Her er et spørgsmål, du måske aldrig har overvejet: kan man finde to trekanter med samme areal?

Her er et spørgsmål, du måske aldrig har overvejet: kan man finde to trekanter med samme areal? Her er et spørgsmål, du måske aldrig har overvejet: kan man finde to trekanter med samme areal? Det er ret let at svare på: arealet af en trekant, husker vi fra vor kære folkeskole, findes ved at gange

Læs mere

Løsning af simple Ligninger

Løsning af simple Ligninger Løsning af simple Ligninger Frank Nasser 19. april 2011 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk:

Læs mere

Mircobit Kursus Lektion 1

Mircobit Kursus Lektion 1 Mircobit Kursus Lektion 1 I denne lektie skal vi se nærmere på den lille mini computer kaldt microbit. Egentlig kræver det at man har en fysisk microbit men man kan også næsten lave det samme med den simulator

Læs mere

Kursusindhold: X i : tilfældig værdi af ite eksperiment. Antag X i kun antager værdierne 1, 2,..., M.

Kursusindhold: X i : tilfældig værdi af ite eksperiment. Antag X i kun antager værdierne 1, 2,..., M. Kursusindhold: Produkt og marked - matematiske og statistiske metoder Rasmus Waagepetersen Institut for Matematiske Fag Aalborg Universitet March 1, 2013 Sandsynlighedsregning og lagerstyring Normalfordelingen

Læs mere

i x-aksens retning, så fås ). Forskriften for g fås altså ved i forskriften for f at udskifte alle forekomster af x med x x 0

i x-aksens retning, så fås ). Forskriften for g fås altså ved i forskriften for f at udskifte alle forekomster af x med x x 0 BAndengradspolynomier Et polynomium er en funktion på formen f ( ) = an + an + a+ a, hvor ai R kaldes polynomiets koefficienter. Graden af et polynomium er lig med den højeste potens af, for hvilket den

Læs mere

SÅDAN BRUGER DU REGNEARK INTRODUKTION

SÅDAN BRUGER DU REGNEARK INTRODUKTION SÅDAN BRUGER DU REGNEARK INTRODUKTION I vejledningen bruger vi det gratis program Calc fra OpenOffice som eksempel til at vise, hvordan man bruger nogle helt grundlæggende funktioner i regneark. De øvrige

Læs mere

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Har en hvis lighed med divide-and-conquer: Begge opbygger løsninger til større problemer

Læs mere

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur blandt mange mulige. Dynamisk programmering Optimeringsproblem: man ønsker at finde

Læs mere

Appendiks 6: Universet som en matematisk struktur

Appendiks 6: Universet som en matematisk struktur Appendiks 6: Universet som en matematisk struktur En matematisk struktur er et meget abstrakt dyr, der kan defineres på følgende måde: En mængde, S, af elementer {s 1, s 2,,s n }, mellem hvilke der findes

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

Matematik, der afgør spil

Matematik, der afgør spil Artikeltype 47 Matematik, der afgør spil Sandsynlighedsregning vinder ofte. Kombinatorisk spilteori sejrer hver gang Mads Thrane Hvis du er træt af at tabe opvasketjansen i Sten Saks Papir eller Terning,

Læs mere

Allan C. Malmberg. Terningkast

Allan C. Malmberg. Terningkast Allan C. Malmberg Terningkast INFA 2008 Programmet Terning Terning er et INFA-program tilrettelagt med henblik på elever i 8. - 10. klasse som har særlig interesse i at arbejde med situationer af chancemæssig

Læs mere

Læs selv om LOGIK. Erik Bjerre og Pernille Pind Forlaget Pind & Bjerre

Læs selv om LOGIK. Erik Bjerre og Pernille Pind Forlaget Pind & Bjerre Læs selv om LOGIK Erik Bjerre og Pernille Pind Forlaget Pind & Bjerre Læs selv om LOGIK Erik Bjerre og Pernille Pind Forlaget Pind & Bjerre 2 Logik Sandt eller falsk? Lyver han? Taler hun sandt? Det ville

Læs mere

Michael Jokil 11-05-2012

Michael Jokil 11-05-2012 HTX, RTG Det skrå kast Informationsteknologi B Michael Jokil 11-05-2012 Indholdsfortegnelse Indledning... 3 Teori... 3 Kravspecifikationer... 4 Design... 4 Funktionalitet... 4 Brugerflade... 4 Implementering...

Læs mere

MODELSÆT 2; MATEMATIK TIL LÆREREKSAMEN

MODELSÆT 2; MATEMATIK TIL LÆREREKSAMEN MODELSÆT ; MATEMATIK TIL LÆREREKSAMEN Forberedende materiale Den individuelle skriftlige røve i matematik vil tage udgangsunkt i følgende materiale:. En diskette med to regnearks-filer og en MathCad-fil..

Læs mere

Funktionsterminologi

Funktionsterminologi Funktionsterminologi Frank Nasser 12. april 2011 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette

Læs mere

Kapitlet indledes med en beskrivelse af - og opgaver med - de tre former for sandsynlighed, som er omtalt i læseplanen for 7.- 9.

Kapitlet indledes med en beskrivelse af - og opgaver med - de tre former for sandsynlighed, som er omtalt i læseplanen for 7.- 9. Kapitlet indledes med en beskrivelse af - og opgaver med - de tre former for sandsynlighed, som er omtalt i læseplanen for 7.- 9. klassetrin: statistisk sandsynlighed, kombinatorisk sandsynlighed og personlig

Læs mere

EXCEL 2011 TIL MAC GODT I GANG MED PETER JENSEN GUIDE VISUEL

EXCEL 2011 TIL MAC GODT I GANG MED PETER JENSEN GUIDE VISUEL PETER JENSEN EXCEL 2011 TIL MAC GODT I GANG MED EXCEL 2011 TIL MAC VISUEL GUIDE 59 guides der får dig videre med Excel En instruktion på hver side - nemt og overskueligt Opslagsværk med letforståelig gennemgang

Læs mere

Plan. Markovkæder Matematisk modelling af kølængde, yatzy, smittespredning og partikelbevægelser. Materiale mm.

Plan. Markovkæder Matematisk modelling af kølængde, yatzy, smittespredning og partikelbevægelser. Materiale mm. Institut for Matematiske Fag Plan Markovkæder Matematisk modelling af kølængde, yatzy, smittespredning og partikelbevægelser Helle Sørensen Eftermiddagen vil være bygget om 3 4 eksempler: A. B. Random

Læs mere

Gruppeteori. Michael Knudsen. 8. marts For at motivere indførelsen af gruppebegrebet begynder vi med et eksempel.

Gruppeteori. Michael Knudsen. 8. marts For at motivere indførelsen af gruppebegrebet begynder vi med et eksempel. Gruppeteori Michael Knudsen 8. marts 2005 1 Motivation For at motivere indførelsen af gruppebegrebet begynder vi med et eksempel. Eksempel 1.1. Lad Z betegne mængden af de hele tal, Z = {..., 2, 1, 0,

Læs mere

Lad os som eksempel se på samtidigt kast med en terning og en mønt:

Lad os som eksempel se på samtidigt kast med en terning og en mønt: SANDSYNLIGHEDSREGNING Stokastisk eksperiment Et stokastisk eksperiment er et eksperiment, hvor vi fornuftigvis ikke på forhånd kan have en formodning om resultatet af eksperimentet Til gengæld kan vi prøve

Læs mere

Funktionsterminologi

Funktionsterminologi Funktionsterminologi Frank Villa 17. januar 2014 Dette dokument er en del af MatBog.dk 2008-2012. IT Teaching Tools. ISBN-13: 978-87-92775-00-9. Se yderligere betingelser for brug her. Indhold 1 Introduktion

Læs mere

Formativ brug af folkeskolens prøver årets resultater på landsplan Den skriftlige prøve i matematik med hjælpemidler, FP9 maj 2019

Formativ brug af folkeskolens prøver årets resultater på landsplan Den skriftlige prøve i matematik med hjælpemidler, FP9 maj 2019 Formativ brug af folkeskolens prøver årets resultater på landsplan Den skriftlige prøve i matematik med hjælpemidler, FP9 maj 2019 Skrevet af Klaus Fink på baggrund af oplysninger fra opgavekommissionen

Læs mere

University of Copenhagen. Notat om statistisk inferens Larsen, Martin Vinæs. Publication date: Document Version Peer-review version

University of Copenhagen. Notat om statistisk inferens Larsen, Martin Vinæs. Publication date: Document Version Peer-review version university of copenhagen University of Copenhagen Notat om statistisk inferens Larsen, Martin Vinæs Publication date: 2014 Document Version Peer-review version Citation for published version (APA): Larsen,

Læs mere

Turing og den universelle maskine

Turing og den universelle maskine Hilbert forestillede sig, undslipper ikke paradokserne: den fuldstændige formalisering er umulig. Reaktionerne var til at starte med stor forbløffelse. Logikkens og matematikkens fundamenter var pludselig

Læs mere

Afstande, skæringer og vinkler i rummet

Afstande, skæringer og vinkler i rummet Afstande, skæringer og vinkler i rummet Frank Villa 2. maj 202 c 2008-20. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Indhold

Læs mere

Introduktion til differentialregning 1. Jens Siegstad og Annegrethe Bak

Introduktion til differentialregning 1. Jens Siegstad og Annegrethe Bak Introduktion til differentialregning 1 Jens Siegstad og Annegrete Bak 16. juli 2008 1 Indledning I denne note vil vi kort introduktion til differentilregning, idet vi skal bruge teorien i et emne, Matematisk

Læs mere

DM517:Supplerende noter om uafgørlighedsbeviser:

DM517:Supplerende noter om uafgørlighedsbeviser: DM517:Supplerende noter om uafgørlighedsbeviser: Jørgen Bang-Jensen October 9, 2013 Abstract Formålet med denne note er at give en form for kogebogsopskrift på, hvorledes man bygger et uafgørlighedsbevis

Læs mere

Grundlæggende Algoritmer og Datastrukturer

Grundlæggende Algoritmer og Datastrukturer Grundlæggende Algoritmer og Datastrukturer Om kurset Grundlæggende Algoritmer og Datastrukturer Undervisningsformer Forelæsninger: 4 timer/uge (2+2). Øvelser: 3 timer/uge. Café. Obligatorisk program 13

Læs mere

Talrækker. Aktivitet Emne Klassetrin Side

Talrækker. Aktivitet Emne Klassetrin Side VisiRegn ideer 3 Talrækker Inge B. Larsen ibl@dpu.dk INFA juli 2001 Indhold: Aktivitet Emne Klassetrin Side Vejledning til Talrækker 2-4 Elevaktiviteter til Talrækker 3.1 Talrækker (1) M-Æ 5-9 3.2 Hanoi-spillet

Læs mere

Matematiske metoder - Opgavesæt

Matematiske metoder - Opgavesæt Matematiske metoder - Opgavesæt Anders Friis, Anne Ryelund, Mads Friis, Signe Baggesen 24. maj 208 Beskrivelse af opgavesættet I dette opgavesæt vil du støde på opgaver, der er markeret med enten 0, eller

Læs mere

Produkt og marked - matematiske og statistiske metoder

Produkt og marked - matematiske og statistiske metoder Produkt og marked - matematiske og statistiske metoder Rasmus Waagepetersen Institut for Matematiske Fag Aalborg Universitet February 19, 2016 1/26 Kursusindhold: Sandsynlighedsregning og lagerstyring

Læs mere

Afstande, skæringer og vinkler i rummet

Afstande, skæringer og vinkler i rummet Afstande, skæringer og vinkler i rummet Frank Nasser 9. april 20 c 2008-20. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her.

Læs mere

Tal og algebra. I kapitlet arbejdes med følgende centrale matematiske begreber: algebra variable. Huskeliste: Tændstikker (til side 146) FRA FAGHÆFTET

Tal og algebra. I kapitlet arbejdes med følgende centrale matematiske begreber: algebra variable. Huskeliste: Tændstikker (til side 146) FRA FAGHÆFTET I kapitlet skal eleverne arbejde med fire forskellige vinkler på algebra de præsenteres på kapitlets første mundtlige opslag. De fire vinkler er algebra som et redskab til at løse matematiske problemer.

Læs mere

Produkt og marked - matematiske og statistiske metoder

Produkt og marked - matematiske og statistiske metoder Produkt og marked - matematiske og statistiske metoder Rasmus Waagepetersen Institut for Matematiske Fag Aalborg Universitet February 11, 2016 1/22 Kursusindhold: Sandsynlighedsregning og lagerstyring

Læs mere

VisiRegn: En e-bro mellem regning og algebra

VisiRegn: En e-bro mellem regning og algebra Artikel i Matematik nr. 2 marts 2001 VisiRegn: En e-bro mellem regning og algebra Inge B. Larsen Siden midten af 80 erne har vi i INFA-projektet arbejdet med at udvikle regne(arks)programmer til skolens

Læs mere

ALMINDELIGT ANVENDTE FUNKTIONER

ALMINDELIGT ANVENDTE FUNKTIONER ALMINDELIGT ANVENDTE FUNKTIONER I dette kapitel gennemgås de almindelige regnefunktioner, samt en række af de mest nødvendige redigerings- og formateringsfunktioner. De øvrige redigerings- og formateringsfunktioner

Læs mere

Modellering med Målskytten

Modellering med Målskytten Modellering med Målskytten - Et undervisningsforløb i WeDo med udgangspunkt i matematiske emner og kompetencer Af Ralf Jøker Dohn Henrik Dagsberg Målskytten - et modelleringsprojekt i matematik ved hjælp

Læs mere

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528) Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM58) Institut for Matematik & Datalogi Syddansk Universitet Torsdag den 7 Januar 010, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger,

Læs mere

3. klasse 6. klasse 9. klasse

3. klasse 6. klasse 9. klasse Børne- og Undervisningsudvalget 2012-13 BUU Alm.del Bilag 326 Offentligt Elevplan 3. klasse 6. klasse 9. klasse Matematiske kompetencer Status tal og algebra sikker i, er usikker i de naturlige tals opbygning

Læs mere

Oversættere Skriftlig eksamen onsdag d. 24. januar 2007

Oversættere Skriftlig eksamen onsdag d. 24. januar 2007 Københavns Universitet Naturvidenskabelig Embedseksamen Oversættere Skriftlig eksamen onsdag d. 24. januar 2007 Eksamenstiden er to timer. Opgavernes vægt i procent er angivet ved hver opgave. Den skriftlige

Læs mere

Kursusindhold: Produkt og marked - matematiske og statistiske metoder. Monte Carlo

Kursusindhold: Produkt og marked - matematiske og statistiske metoder. Monte Carlo Kursusindhold: Produkt og marked - matematiske og statistiske metoder Rasmus Waagepetersen Institut for Matematiske Fag Aalborg Universitet Sandsynlighedsregning og lagerstyring Normalfordelingen og Monte

Læs mere

Matematik samlet evaluering for Ahi Internationale Skole

Matematik samlet evaluering for Ahi Internationale Skole efter 3.klasse. e efter 6.klasse. e Skole efter 9.klasse. e indgå i dialog om spørgsmål og svar, som er karakteristiske i arbejdet med matematik (tankegangskompetence formulere sig skriftligt og mundtligt

Læs mere

Hvad er formel logik?

Hvad er formel logik? Kapitel 1 Hvad er formel logik? Hvad er logik? I daglig tale betyder logisk tænkning den rationelt overbevisende tænkning. Og logik kan tilsvarende defineres som den rationelle tænknings videnskab. Betragt

Læs mere

REDIGERING AF REGNEARK

REDIGERING AF REGNEARK REDIGERING AF REGNEARK De to første artikler af dette lille "grundkursus" i Excel, nemlig "How to do it" 8 og 9 har været forholdsvis versionsuafhængige, idet de har handlet om ting, som er helt ens i

Læs mere

Andengradsligninger. Frank Nasser. 11. juli 2011

Andengradsligninger. Frank Nasser. 11. juli 2011 Andengradsligninger Frank Nasser 11. juli 2011 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Indhold 1 Introduktion

Læs mere

Eleverne skal lave tre forskellige typer af svar på opgaven: Almindelige, vanskelige og smarte.

Eleverne skal lave tre forskellige typer af svar på opgaven: Almindelige, vanskelige og smarte. Åben og undersøgende julematematik Jul er jo en herlig tid, og jeg har givet mig selv den opgave at finde på en juleopgave, inden for hver af de seks typer af åbne og undersøgende aktiviteter, som jeg

Læs mere

ViKoSys. Virksomheds Kontakt System

ViKoSys. Virksomheds Kontakt System ViKoSys Virksomheds Kontakt System 1 Hvad er det? Virksomheds Kontakt System er udviklet som et hjælpeværkstøj til iværksættere og andre virksomheder som gerne vil have et værktøj hvor de kan finde og

Læs mere

Ugens emner. Regulære sprog og digitale billeder. Adressering af områder. Et alfabet. Dette billede: kan repræsenteres af en FA med 832 tilstande

Ugens emner. Regulære sprog og digitale billeder. Adressering af områder. Et alfabet. Dette billede: kan repræsenteres af en FA med 832 tilstande Ugens emner Regulære sprog og digitale billeder Digitale billeder og regulære sprog Regulære udtryk i Java og Unix Dette billede: Turing-maskiner [uddrag af Martin kap. 9-0] Church-Turing tesen, beregnelighed

Læs mere

Eksempel på den aksiomatisk deduktive metode

Eksempel på den aksiomatisk deduktive metode Eksempel på den aksiomatisk deduktive metode Et rigtig godt eksempel på et aksiomatisk deduktivt system er Euklids Elementer. Euklid var græker og skrev Elemeterne omkring 300 f.kr. Værket består af 13

Læs mere

Kursusindhold: X i : tilfældig værdi af ite eksperiment. Antag X i kun antager værdierne 1, 2,..., M.

Kursusindhold: X i : tilfældig værdi af ite eksperiment. Antag X i kun antager værdierne 1, 2,..., M. Kursusindhold: Produkt og marked - matematiske og statistiske metoder Rasmus Waagepetersen Institut for Matematiske Fag Aalborg Universitet February 9, 2015 Sandsynlighedsregning og lagerstyring Normalfordelingen

Læs mere

Vinkelrette linjer. Frank Villa. 4. november 2014

Vinkelrette linjer. Frank Villa. 4. november 2014 Vinkelrette linjer Frank Villa 4. november 2014 Dette dokument er en del af MatBog.dk 2008-2012. IT Teaching Tools. ISBN-13: 978-87-92775-00-9. Se yderligere betingelser for brug her. Indhold 1 Introduktion

Læs mere

Trekanter. Frank Villa. 8. november 2012

Trekanter. Frank Villa. 8. november 2012 Trekanter Frank Villa 8. november 2012 Dette dokument er en del af MatBog.dk 2008-2012. IT Teaching Tools. ISBN-13: 978-87-92775-00-9. Se yderligere betingelser for brug her. Indhold 1 Introduktion 1 1.1

Læs mere

Greenfoot En kort introduktion til Programmering og Objekt-Orientering

Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot er et computer-program, som kan benyttes til at skrive andre computer-programmer, i et programmeringssprog kaldet Java.

Læs mere

Noter til DM517 Beregnelighed

Noter til DM517 Beregnelighed Noter til DM517 Beregnelighed Jonas Nyrup 23. oktober 2011 Indhold 1 Et par noter 2 2 Regulære sprog 2 2.1 DFA................................. 2 2.1.1 Eksempler.......................... 3 2.2 NFA.................................

Læs mere

Løsning til eksaminen d. 14. december 2009

Løsning til eksaminen d. 14. december 2009 DTU Informatik 02402 Introduktion til Statistik 200-2-0 LFF/lff Løsning til eksaminen d. 4. december 2009 Referencer til Probability and Statistics for Engineers er angivet i rækkefølgen [8th edition,

Læs mere

Andengradsligninger. Frank Nasser. 12. april 2011

Andengradsligninger. Frank Nasser. 12. april 2011 Andengradsligninger Frank Nasser 12. april 2011 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette

Læs mere

LAMBDA- KALKULER. Fra. til funktionelle sprog

LAMBDA- KALKULER. Fra. til funktionelle sprog SYSTEMUDVIKLING PROGRAMMERINGSSPROG Fra LAMBDA- KALKULER til funktionelle sprog Grundlaget for funktionelle programmeringssprog blev skabt af en matematiker, før computeren var opfundet. Af Dan Mygind

Læs mere

4 Oversigt over kapitel 4

4 Oversigt over kapitel 4 IMM, 2002-09-14 Poul Thyregod 4 Oversigt over kapitel 4 Introduktion Hidtil har vi beskæftiget os med data. Når data repræsenterer gentagne observationer (i bred forstand) af et fænomen, kan det være bekvemt

Læs mere