Den här uppgiften går ut på att ni ska jämföra två olika
programspråk,
med tonvikt på hur väl de stöder abstrakta datatyper.
Ni ska implementera
en abstrakt datatyp i de båda språken och
använda implementationen
som utgångspunkt för en jämförelse mellan
språken.
Ni ska implementera den abstrakta datatypen mängd.Er
mängdska ha
följande funktioner:
Tips:
1. Även om en mängd egentligen är oordnad så underlättas
t ex equal om din underliggande
implementation är ordnad.
2. "godtyckligt" i beskrivningen av choose betyder inte
slumpartad (dvs att mängden ska välja
godtyckligt) utan att dukan välja
godtyckligt, t ex alltid det första bland dina ordnade element.
3. Leta upp DoA- och diskmatte-böckerna och repetera hur mängder
fungerar!
Ni ska göra en implementation i dels ett valfritt funktionellt språk (t ex
ML eller
Haskell) dels i ytterligare ett språk, valfri paradigm.
Se till att implementationerna
är så modulära och modifierbara
som möjligt (använd t ex abstype i ML). Försök
att
göra implementationen så oberoende som möjligt av vilken datatyp som ska
lagras
. Obs! Handledarna förbehåller sig rätten att endast
ge god handledning i
språk de har ett hum om. ;-)
Den viktigaste delen i rapporten är att ni ska jämföra de två
implementationerna
och diskutera språkens brister och möjligheter när
det gäller stöd för dataabst-
raktion och modularisering.
Rapporten skall också innehålla en beskrivning av
datatypens
representation, koden och några testexempel som visar att din
imple-
mentation fungerar.
Diskussioner kring följande punkter måste finnas med, men
det är bra
om ni kan komma med fler och mer uttömmande åsikter:
OBS! Det är diskussionen som är det viktigaste i
uppgiften, inte själva
implementationerna. Men implementationerna ska
naturligtvis ändå vara
korrekta och lättlästa. Förutom diskussionen ska rapporten innehålla
algoritmer
och systembeskrivning.
OBS! Skriv gärna ned dina synpunkter på laborationen i sig. Var
den svår/lätt?
Hur länge höll du på med den? Tycker du att den tog för
mycket/lite tid? Har du
lärt dig något när du gjorde den? Fick du den
hjälp du behövde? osv.
Laborationen ska utföras enskilt och vara inlämnad senast den 18/11 1999
kl. 12.00,
och vara godkänd senast den 21/1 2000.