Wikipendium

Share on Twitter Create compendium
Languages
  • English
+
Edit History
Tools
  • Edit
  • History
  • Share on Twitter

  • Read in English
  • Add language

  • Create new compendium
Log in
Table of Contents
  1. Installasjon
    1. Windows og Linux
    2. OS X
      1. Noob-versjon
      2. Pro-versjon
  2. Feilmeldinger
    1. OS-error
    2. Expression at Statement position
  3. Mini-mini-kompendium
  4. Syntaks, semantikk (og DSKL)
    1. Syntaks
    2. Semantikk
    3. DSKL
    4. Abstrakt maskin for DSKL:
    5. Syntaktisk sukker
    6. Linguistisk abstraksjon
    7. Datastrukturer
      1. Eksempel (eksamen 2010):
      2. Parametersending:
  5. Deklarativitet
    1. Observerbar deklarativitet:
  6. Funksjonell og høyere-ordens programmering
    1. Høyere-ordens programmering
    2. Prosedural abstraksjon
    3. Generisitet
    4. Instantiering
    5. Innebygging (embedding)
    6. Tillukning(closure)
  7. Message-based Concurrecny
    1. Porter:
      1. Sending til porter:
      2. Utvidelse av DSKL for å støtte porter:
  8. Lat evaluering
    1. Ivrig (eager) evaluering
      1. Eksempel fra eksamen 2010:
  9. Oppslagsverk
‹

TDT4165: Programmeringsspråk

Tags:
  • norsk
  • informatikk
  • datateknikk
+
Edit

Installasjon

Edit

Windows og Linux

Last ned og installer.

Edit

OS X

For å installere Oz på OS X, må du følge disse enkle steg.

Edit

Noob-versjon

  • Gå til http://www.aquamacs.org/
  • Last ned Aquamacs for Mac OS X
  • Gå til http://www.mozart-oz.org/download/view.cgi
  • Velg MacOS X Packages
  • Installer begge pakkene
  • Åpne Aquamacs for så å avslutte det igjen
  • Åpne Mozart og du er klar til å programmere Oz!
Edit

Pro-versjon

  • Gå til http://sourceforge.net/projects/mozart-oz/files/
  • Velg versjon 1 eller 2 og last ned den nyeste dmgfilen.
  • Installer denne pakken
  • Gå til Terminalen din og legg til i .bash_profile dette: PATH="/Applications/Mozart.app/Contents/Resources/bin:$PATH"
  • Bruk Mozart2.app i strengen over hvis du lastet ned versjon 2.
  • Lagre og skriv source .bash_profile i Terminalen
  • Du har nå en Oz-kompilator ved hjelp av funksjonen ozc.
  • Enkleste måten å jobbe på da er å bruke den editoren du foretrekker og så kjøre ozc -c <filnavn>.oz && ozengine <filnavn>.osf
  • Du har også en Oz-spesifikk emacs versjon som kan kjøres å kjøre oz. I dette programmet kompilerer du ved F10 O f. Hvis F10 eller fn+F10 ikke viser annen tekst, prøv fn+F10+cmd. Bytting av vinduer skjer ved ctrl+x o. Du kan lagre ved hjelp av ctrl+x s. Programmet avsluttes ved hjelp av ctrl-x ctrl-c.
Edit

Feilmeldinger

Edit

OS-error

Denne feilen er testet på Mac OS X. Noen ganger kan man være så uheldig å komme over en OS-error. Dette skjer ofte når man kjører et program som åpner tk.exe (du har altså brukt Browse i fortolkeren). Ikke avslutt tk.exe uten videre. Skulle du gjøre dette må du restarte hele programmet for å unngå denne feilen. En annen feil kan være at filen ligger i en mappe med æøå, unngå dette

Edit

Expression at Statement position

Denne feilen forekommer flere ganger. Stort sett er det fordi at du har flere if-setninger.

Bad:

if X then
X
end
if Y then
Y
end
X + Y

Good:

if X then
X
elseif Y then
Y
else
X + Y
end
Edit

Mini-mini-kompendium

Basert på forelesninger, midtsemesterprøver og eksamensoppgaver

Edit

Syntaks, semantikk (og DSKL)

Edit

Syntaks

Syntaks omfatter tillatt 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.

Edit

Semantikk

Hvordan elementene i syntaksen skal tolkes ved programutførelse.

Edit

DSKL

Forkortelse for Deklarativt Sekvensielt Kernel Language, kjernespråket.

Edit

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
En mapping fra identifikatorer til variabler.
Single Assignement store
inneholder alle variabler som har blitt deklarert og verdiene deres (for bundne variabler).
Edit

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
Edit

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.

Edit

Datastrukturer

Datastrukturer kan ha 6 ulike egenskaper: - Stateless - Stateful - Secure - Insecure (or open) - Bundled - Unbundled

Edit

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
Edit

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.
Edit

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 alltid vil bindes på samme måte.

Edit

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.

Edit

Funksjonell og høyere-ordens programmering

Edit

Høyere-ordens programmering

Vil si å bruke funksjoner som første-klasses objekter/verdier.

Edit

Prosedural abstraksjon

Gir en gruppe av uttrykk et navn som kan bli brukt for å utføre dem.

Edit

Generisitet

Tar uttrykk ut av en prosedyre of bruker et argument for å kjøre vilkårlige argumenter i deres sted.

Edit

Instantiering

Å returnere en mer spesifikk prosedyre (en prosedyre med færre argumenter).

Edit

Innebygging (embedding)

Å lagre en prosedyre i en datastruktur.

Edit

Tillukning(closure)

En tillukning er en prosedyreverdi som består av prosedyredefinisjoner og miljøet hvor den ble definert.

Edit

Message-based Concurrecny

Edit

Porter:

Edit

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.

Edit

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.

Edit

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.

Edit

Ivrig (eager) evaluering

Motstykket til lat evaluering.

Edit

Eksempel fra eksamen 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 printe ut:

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.

Edit

Oppslagsverk

Her er noen gode ressurser du kanskje vil få bruk for: - http://www.eecs.ucf.edu/~leavens/COP4020Spring12/running_oz.shtml - http://strasheela.sourceforge.net/strasheela/doc/Basics-1.html

Written by

theodorc ilsegv Stian Jensen Assios cristea kjersva MatsMoll Esso perod
Last updated: 5 years ago.
  • 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!