Deel I: Functionele Programmeertalen Hoofdstuk 5: Implementatie- technieken.

Slides:



Advertisements
Verwante presentaties

Advertisements

Inleiding in de statistiek voor de gedragswetenschappen Met ondersteuning van SPSS Guido Valkeneers.
FUNCTIES IN EXCEL Voorjaar Wat is een functie in Excel?  Een functie in Excel is een soort fabriekje  Je stopt er wat materiaal in  En komt een.

Lijsten in de -calculus Een lijst [E 1, E 2,..., E n ] kan in de -calculus voorgesteld worden als z.((z E 1 ) z.((z E 2 )... z.((z E n ) nil)...) met nil.
Deel I: Functionele Programmeertalen Hoofdstuk 4: Functioneel Programmeren.
Practica Computerlinguistiek Tekst en uitleg:
Excel, zin in een potje Zeeslag?
Reductiemachine Functionele talen en dus de -calculus, worden vaak geïmplementeerd door een reductiemachine. De elementaire stap is een reductie, en de.
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.
VBA en VBS Een introductie.
Conditionele expressie
Computervaardigheden Hoofdstuk 4 — Scripting (Let op: dit is enkel voor studenten Biologie.)
Hoofdstuk 6: Controle structuren
 - congruentie -regel:
Hogere-orde functies: herhaald patroon? Parametrizeer! product :: [Int]  Int product [ ]= product (x:xs)= 1 product xs x * and :: [Bool]  Bool and [
Les 2 Basisbouwstenen (deel 1)
1 Prof. Dr. Martine De Cock academiejaar Lambdarekenen.
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 3(1): Instructietypen (1)
1/1/ / faculty of Computer Science eindhoven university of technology 5B040:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 7(1): Flow of.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 5 Cees Witteveen.
Functies als Getallen Jan Martin Jansen.
Numerieke Natuurkunde
Inleiding Kennistechnologie §Hoofdstuk 7: Kennisrepresentaties 1: Eigenschappen en representatievormen §Hoofdstuk 8: Kennisrepresentaties 2: Eenvoud en.
-calculus.
Reguliere talen nReguliere grammatica: versimpelde Contextvrije grammatica nFinite-state Automaton: andere manier om een taal te beschrijven nReguliere.
Functioneel Programmeren Daan Leijen. Wat gaan we doen? 3 fundamentele principes van computatie Equationeel redeneren IO-monad GUI's in Haskell (wxHaskell)
Kansrekening. Inhoud Inleiding Inleiding Mogelijkheden noemen/toelichten Mogelijkheden noemen/toelichten Ondervonden problemen (en oplossingen) Ondervonden.
Woningfinanciering een inleiding
Hogere wiskunde Limieten college week 4
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
6.1 Inleiding HOOFDSTUK 6 METHODEN
P. 1 Vakgroep Informatietechnologie Scanf voorbeeld #include int main(void) { int i=-1,j=-1,k=-1,l=-1; int b; b=scanf("%d %d %d %d",&i,&j,&k,&l); printf("res=%d.
Deel I: Programmeertaal C 6. Arrays en Pointers
P. 1 Deel I: Programmeertaal C 4. Functies en Macro’s Prof.Dr.Ir. Filip De Turck.
Looking at Code Size and Performance Kevin Muys.  Hoe efficiënt is C++ vergeleken met C  Hoe beïnvloed C++ het benodigde geheugen  Oplossingen voor.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (1)
Presentatie vergelijkingen oplossen.
PHP & MYSQL LES 01 PHP BASICS. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 3: Werken met numerieke gegevens.
Sparkle een bewijssysteem voor Clean Maarten de Mol Katholieke Universiteit Nijmegen 11 januari 2002.
Inleiding in de statistiek voor de gedragswetenschappen
ABC formule Algemeen Voorbeeld: Herleid naar: Nu volgorde veranderen:
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
tircms02-p les 1 Operating Systems practicum
Functioneel programmeren Een snelle herhaling…. Functie-definitie static int kwad (int x) { return x*x ; } kwad x = x * x Haskell kwad :: Int  Int.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
Spreadsheets. Testen. Met spreadsheets.. |  Spreadsheet, het meest gebruikte (test) tool in de wereld …  Aan de slag: Spreadsheet PRA  Risico’s en.
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Beslissingen. Inhoud: Booleaanse expressies: wat? Booleaanse expressies: wat? Relationele en logische operatoren Relationele en logische operatoren De.
Code compressie in Embedded Systems Onno Kievit ET4074 Kwantitatieve aspecten van computer architectuur.
Theresialyceum. OriëntatieTheorievormingOntwerpplanExperimentVerwerkingRapportagePresentatie Onderzoekscyclus Experiment.
Grafentheorie Graaf Verzameling knopen al dan niet verbonden door takken, bijv:
Recursie…. De Mandelbrot Fractal De werking… De verzameling natuurlijke getallen… 0 ∞-∞
Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.
Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.
- copyright 2015 Natuurlijke getallen - 1 / NATUURLIJKE GETALLEN – 1 0, 1, 2, 3,…99,…
- copyright 2015 Breuken & rationale getallen - 1 /
IF() ELSE() LES 4: VOORWAARDEN. BOOL Een variabele die slechts 2 mogelijke waarden kan hebben: true(waar) of false(niet waar) duid je aan met bool bool.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Berekening van de Orde Van een Algoritme
Voorkennis: Kwadratische vergelijking oplossen
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
-calculus versus Scheme
Hoofdstuk 7: Handelsrekenen
Tellen met kaarten.
Tellen met kaarten.
Transcript van de presentatie:

Deel I: Functionele Programmeertalen Hoofdstuk 5: Implementatie- technieken

Voorstelling abstract concreet Constante N25 Operator B+ + Veranderlijke Vv f x Abstractie v M f x v M Constructor : x y :

Syntaxisboom + x *x ( x.x*x)(5+5)

Ingeblikte voorstelling

Oningeblikte voorstelling

Lazy uitvoering qTwee voorwaarden 4Argumenten van functies worden slechts geëvalueerd op het ogenblik dat men de waarde werkelijk nodig heeft (soms ook call by need genoemd) 4Argumenten van functies mogen ten hoogste eenmaal geëvalueerd worden

Lazy uitvoering qStrikte talen: ML en Hope qLazy talen: SASL, KRC, LML, Miranda, Orwell, Ponder, Haskell en Hugs

Zwakke hoofdnormaalvorm is, met F een veranderlijke, een gegevensobject, een ingebouwde functie, ofwel een -abstractie en zodanig dat FE 1 … E m geen  -redex is voor m  n Een -expressie is in zwakke hoofdnormaalvorm als en slechts als ze van de vorm

Zwakke hoofdnormaalvorm qGegevensobject: constante of constructor qGevolg: ZHN  : geen kopredices  Voorbeelden: v, 19,  3, y. x  3

Overzicht -expressie reductie van kopredices normale reductieorde zwakke hoofdnormaalvorm normaalvorm

Voorbeeld

Voorbeeld: normale reductievolgorde

Voorbeeld: reductie van kopredices

M3M3

Vier gevallen  M is een gegevensobject (constante, CONS-cel, enz) n  0: ZHN n  0: fatale fout  M is een ingebouwde functie met k argumenten k  n : ZHN k  n : kopredex  MM 1 … M k

Vier gevallen  M is een -abstractie n  0: kopredex  MM 1 n  0: ZHN  M is een veranderlijke n  0: ZHN n  0: fatale fout

Ruggengraadstapel

M3M3...

Reductie qArgumenten niet substitueren, maar verwijzingen gebruiken qApplicatieknopen worden vervangen door hun waarde

Graafreductie + x *x ( x.x*x)(5+5)

Graafreductie + x *x *

x *x *

Graafreductie x *

Het overschrijven van de redex

@ x ( x.x)(fa) @ fa 

De SECD-machine qS: de evaluatiestapel, gebruikt om de tijdelijke resultaten van het evaluatieproces bij te houden qE: de omgeving die de waarden van de veranderlijken bijhoudt qC: controlestapel met de continuaties qD: de dump die gebruikt wordt om gegevens te bewaren tijdens de oproep van een andere functie De virtuele machine met vier stapels,

qeen graaf qG-programma qexpressiestapel qeen controlestapel De G-machine Vier gegevensstructuren

Voorbeeld PUSH 1 ; dupliceer f MKAP ; maak f x PUSH 1 ; dupliceer f MKAP ; maak f (f x) SLIDE 1 ; gooi argument f weg

Voorbeeld f x f fx f f(fx)

68030 Code move.l (4,a6),-(a6) ; dupliceer f move.l (4,a6),-(a5) ; x move.l (a6)+,-(a5) ; f move.l AP,-(a5) ; typekenteken move.l a5,(a6) ; overschrijf "x" move.l (4,a6),-(a6) ; dupliceer f move.l (4,a6),-(a5) ; f x move.l (a6)+,-(a5) ; f move.l AP,-(a5) ; typekenteken move.l a5,(a6) ; overschrijf "f x" move.l (a6)+,(a6) ; overschrijf "f"

Voorbeeld

Optimale code move.l (a6)+,-(a5) ; x, en gooi "x" weg move.l (a6),-(a5) ; f move.l AP,-(a5) ; typekenteken move.l a5,-(a5) ; f x move.l (a6),-(a5) ; f move.l AP,-(a5) ; typekenteken move.l a5,(a6) ; overschrijf "f” ; met "f (f x)"

Compilatieschema GLOBSTART naam, n... UPDATE n+1 POP n UNWIND

Stapelorganisatie

Compilatie  Getallen PUSHINT getal  Combinatoren en ingebouwde functies PUSHGLOBAL naam  Veranderlijken PUSH verschuiving  Applicaties MN (Applicatieknoop) Code voor N Code voor M MKAP

Voorbeeld GLOBSTART kwadraat, 1 PUSH 0 ; push x PUSH 1 ; push x PUSHGLOBAL * ; push * MKAP ; maak * x MKAP ; maak (* x) x UPDATE 2 ; overschrijf redex POP 1 ; gooi "x" weg UNWIND ; zoek volgende redex

Voorbeeld GLOBSTART prog, 0 PUSHINT 5 PUSHGLOBAL + MKAP ; + 5 MKAP ; (+ 5) 5 PUSHGLOBAL kwadraat MKAP ; kwadraat ((+ 5) 5) UPDATE 1 ; overschrijf redex UNWIND ; zoek volgende redex

Voorbeeld BEGIN ; initialiseer PUSHGLOBAL prog ; vast beginpunt EVAL ; start de uitvoering PRINT ; print resultaat ; van stapel END ; einde van het programma

Code: detail GLOBSTART kwadraat, 1 PUSH 0 ; push x PUSH 1 ; push x PUSHGLOBAL * ; push * MKAP ; maak * x MKAP ; maak * x x UPDATE 2 ; overschrijf redex POP 1 ; gooi "x" weg UNWIND ; zoek volgende redex

Code: detail GLOBSTART *, 2 PUSH 1 ; push y EVAL ; reduceer naar ZHNV PUSH 1 ; push x EVAL ; reduceer naar ZHNV MULTIPLY ; voer de vermenig- ; vuldiging uit UPDATE 3 ; overschrijf redex POP 2 ; gooi de argumenten weg RETURN ; zoek volgende redex

Uitvoering van EVAL

Optimalisatie 1: combinatorsubstitutie GLOBSTART kwadraat, 1 PUSH 0 ; push x EVAL PUSH 1 ; push x EVAL MULTIPLY ; voer de vermenig- ; vuldiging uit UPDATE 2 ; overschrijf redex POP 1 ; gooi "x" weg UNWIND ; zoek volgende redex

Optimalisatie 2: resultaatrecuperatie GLOBSTART kwadraat, 1 PUSH 0 ; push x EVAL PUSH 0 ; push de waarde van x MULTIPLY ; voer de vermenig- ; vuldiging uit UPDATE 2 ; overschrijf redex POP 1 ; gooi "x" weg RETURN ; herstel dump

Optimalisatie 3: geheugenrecuperatie GLOBSTART kwadraat, 1 EVAL PUSH 0 ; push de waarde van x MULTIPLY ; voer de vermenig- ; vuldiging uit UPDATE 1 ; overschrijf redex RETURN ; herstel dump

Optimalisatie 4: combinatorsubstitutie GLOBSTART prog, 0 PUSHINT 5 ADD PUSHGLOBAL kwadraat MKAP ; kwadraat (+ 5 5) UPDATE 1 ; overschrijf redex UNWIND ; zoek volgende redex

Optimalisatie 5: constante expressies GLOBSTART prog, 0 PUSHINT 10 PUSHGLOBAL kwadraat MKAP ; kwadraat 10 UPDATE 1 ; overschrijf redex UNWIND ; zoek volgende redex

Optimalisatie 6: striktheid GLOBSTART kwadraat, 1 PUSH 0 ; push de waarde van x MULTIPLY ; voer de vermenig- ; vuldiging uit UPDATE 1 ; overschrijf redex RETURN ; herstel dump GLOBSTART prog, 0 PUSHINT 10 PUSHGLOBAL kwadraat MKAP ; kwadraat 10 UPDATE 1 ; overschrijf redex UNWIND ; zoek volgende redex

Staartrecursie GLOBSTART F,2..code voor E3..code voor E2..code voor E1 PUSHGLOBAL W MKAP UPDATE 3 POP 2 UNWIND

Staartrecursie: stapelbeeld

Voorbeeld GLOBSTART FAC,2 PUSH 0 ; n EVAL ; waarde van n PUSHINT 0 ; nul EQUAL ; gelijk ? JTRUE POSITIEF ; indien n>0 PUSH 1 ; a EVAL ; evalueer UPDATE 3 ; overschrijf redex van fac POP 2 ; argumenten van fac weg RETURN ; reeds in ZHN vorm dank ; zij eval

LABEL POSITIEF PUSH 1 ; a PUSH 1 ; n MULTIPLY ; n*a PUSH 1 ; n PUSHINT 1 ; 1 MINUS ; n-1 PUSHGLOBAL FAC ; fac (n-1) (n*a) SQUEEZE 3 2 ; overschrijf originele ; argumenten DISPATCH 2 ; staartrecursie Voorbeeld

Prestatienadelen van lazyness De uitdrukking zal herleid worden tot telop 1 (telop 2 (telop 3 [0])) [ ]

Oplossing: accumulator + striktheid