Wikipendium

History Compendium
Log in
This is an old version of the compendium, written Aug. 20, 2013, 3:22 p.m. Changes made in this revision were made by stiaje. View rendered version.
Previous version Next version

TDT4165: Programmeringsspråk

# Mini-mini-kompendium - basert på forelesninger, midtsemesterprøver og eksamensoppgaver
# SYNTAKSyntaks, SEMANTIKKsemantikk (OGog DSKL)
## Syntaks Syntaks omfatter tilatt struktur i et språk, vanligvis ved bruk av grammatikk. Makrosyntaks omhandler hvordan en gruppe tokens kan settes sammen til et program. Mikrosyntaks omhandler hvordan tokens blir bygd opp. ## Semantikk Hvordan elementene i syntaksen skal tolkes ved programutførelse. ## DSKL Forkortelse for Deklarativt Sekvensielt Kernel Language, kjernespråket. ## Abstrakt maskin for DSKL: Semantisk stakk: en stakk av semantiske utrykk(statements). Det øverste elementet er det neste som skal utføres. Semantisk utrykk(statement): består av et utrykk(statement) og et miljø(environment) E. Miljøet E er en mapping fra identifikatorer til variabler. Single Assignement store: inneholder alle variabler som har blitt deklarert og verdiene deres (for bundne variabler). ## Syntaktisk sukker Elementer i et programmeringsspråk som ikke har noen direkte funksjon/ikke tilføyer noe verdi til språket. - For DSKL: (eksempel fra eksamen 2010): _Tillate flere variabler å bli deklarert samtidig. Forklar syntaks og semantikk: endre fra <statement> ::= local <id> in <statement> end til <statement> ::= local { <id> }+ in <statement> end _The semantics is easily explained by translating into the kernel language: local X0 X1 ... XN in <statement> end _is translated to local X0 in local X1 in ... local XN in <statement> end ... end end ## Linguistisk abstraksjon -for DSKL Unntakshåndtering (exceptions) Unntak endrer beregningsmodellen til DSKL, for unntak kan ikke utrykkes ved grunnleggende DSKL. hvordan utvide DSKL for å støtte unntak: syntaks: <statement> ::= try <statement>1 catch <id>C then <statement>2 end <statement> ::= raise <id>R end Semantikk er forklart i henhold til den abstrakte maskinen: Ved semantiske utrykk med try og miljøet E, legg to semantiske utrykk på stakken: 1)catch ... 2) <statement>1., Begge med miljøet E. OBS! A semantic statement with catch ... is the same as the skip statement. Ved semantiske utrykk med raise, pop det semantiske utrykk til catch... oppstår. ## Datastrukturer Datastrukturer kan ha 6 ulike egenskaper: Stateless, stateful, Secure, insecure (or open), bundled og unbundled. Eksempel (eksamen 2010): Implementer en datastruktur som er stateful (, Secure og bundled). declare fun {Counter} C Increase Get in {NewCell 0 C} proc {Increase} Old in {Exchange C Old Old} {Exchange C _ Old+1} end fun {Get} Old in {Exchange C Old Old} Old end counter(increase:Increase get:Get) end Parametersending: - med referanse: Betyr at funksjonen opererer på minneadressen til det faktiske parameteret. Det krever at parameteret er en variable med en minneadresse, og ikke en verdi som er lagret i argumentkall-listen. - med verdi: Det lages en kopi av det faktiske argumentet, slik at verdien nå eksisterer på to forskjellige minneadresser. Funksjonen og bruker kun den nylig tildelte adressen, det er kun den adressen funksjonen vet eksisterer.
# DEKLARATIVITETeklarativitet
## Deklarativitet: I følge læreboka er en deklarativ programenhet tilstandsløs, uavhengig og deterministisk. samtidige program(concurrent programs) kan være deklarative. Oz dataflyt-variabler garanterer at variablene i en utførelse av programmet vil alltid bindes på samme måte. ## Observerbar deklarativitet: 1)At de tilgjengelige delene av en programenhet (interface), kan ikke bli brukt til å avgjøre om enheten er deklarativ. 2) Alle enkle bruk av en programenhet under oppsyn vil alltid gi samme output uavhengig av input.
# FUNKSJONELL OG HØYEREunksjonell og høyere-ORDENS PROGRAMMERINGordens programmering
## Høyere-ordens programmering Vil si å bruke funksjoner som første-klasses objekter/verdier. ## Prosedural abstraksjon Gir en gruppe av uttrykk et navn som kan bli brukt for å utføre dem. ## Generisitet Tar uttrykk ut av en prosedyre of bruker et argument for å kjøre vilkårlige argumenter i deres sted. ## Instantiering Å returnere en mer spesifikk prosedyre (en prosedyre med færre argumenter). ## Innebygging (embedding) Å lagre en prosedyre i en datastruktur. ## Tillukning(closure) En tillukning er en prosedyreverdi som består av prosedyredefinisjoner og miljøet hvor den ble definert.
# MESSAGE-BASED CONCURRENCY# Message-based Concurrecny
## Porter: -Sending til porter: For å sende en verdi til en port, bruk {Send Port value}. Når du sender noe til en port, blir strømmen som er assosiert med porten utvidet med verdien som ble sendt. Porten blir oppdatert til å bruke den nye, ubundne enden av strømmen. - utvidelse av DSKL for å støtte porter: Multiset av semantiske stakker: Hver semantisk stakk representerer en tråd. Multiset vil erstatte den enkle semantiske stakken. Muterbar store: Inneholder alle par av tildelte porter og deres nåverende strøm-ende.
# LAT EVALUERINGat evaluering
## Lat evaluering Verdien evalueres ikke før det faktisk trengs. Det betyr at verdien må bli spesifisert i henhold til noe som blir evalutert (f.eks en funksjon). Funksjonen må bli kalt for å beregne verdien første gang den trengs. Etter dette forblir verdien kjent. ## Ivrig (eager) evaluering Motstykket til lat evaluering. _Eksempel fra 2010: Gi et kodeeksempel som illustrerer forskjellen mellom de to: fun {Foo} {Show foo} 1 end fun lazy {Bar} {Show bar} 2 end fun {Baz} {Show baz} 3 end fun {Calc A B C} A + B + C end {Show {Calc {Foo} {Bar} {Baz}}} _Det vil vise: foo baz bar 6 Som demonstrer at verdien fra Bar-kallet kun evalueres når det faktisk trengs i en beregning, og de to andre kallene blir evaluert før Calc blir kalt.
  • Contact
  • Twitter
  • Statistics
  • Report a bug
  • Wikipendium cc-by-sa
Wikipendium is ad-free and costs nothing to use. Please help keep Wikipendium alive by donating today!