Skip to content
heben2 edited this page Feb 25, 2013 · 2 revisions

#Synopsis ##Problemformulering Vi har identificeret fire forskellige interessante problemstillinger, man kan koncentere sig om:

  • Komplet implementering af Moscow ML til Js.
  • Optimering af køretid ved, f.eks. rekursioner, af en delmængde af Moscow ML i Js.
  • Optimering af stakforbrug ved, f.eks. rekursioner, af en delmængde af Moscow ML i Js.
  • Brugervenligt interface til bibliotekskald fra Js i Moscow ML.

##Afgrænsning Vi vil afgrænse os til en af problemstillingerne, beskrevet i kapitel 1. Derudover vil vi lave tests for kvalitet (korrekthed) af alle problemstillinger, men ikke koncentrere os om tests, der ikke er aktuelle ift. problemstillingen. F.eks. vil vi ikke gå i dybden med tests for stakforbrug eller brugervenlighed, hvis vi arbejder med optimering af køretid.

##Læringsmål

  • Beskrive arkitekturen af Moscow ML frem til Lambda-sproget.
  • Analysere udfordringerne ved oversætelse af Moscow ML til Js.
  • Designe en oversættelse mellem det abstrakte Lambda-sprog til Js.
  • Implementere oversættelse af Lambda-sproget til Js ifølge designovervejelserne.
  • Lave eksperimenter.
  • Udføre eksperimenterne.

##Motivation Oversættelsen af Moscow ML til bytekode bliver sjældent og langsomt vedligeholdt, mens oversætteren til Js ofte bliver opdateret af mange forskellige instanser og i mange udgaver, hvilket gør at sproget hurtigere udvikler sig og bliver stærkere. Dette kan bl.a. ses på det store bibliotek, der følger Js. Ved at oversætte Moscow ML til Js kan man udnytte Js' store bibliotek og samtidig køre Moscow ML i browsere/på nettet. Derved får man også et typestærkt og dedikeret funktionelt sprog til browseren, hvor mange populære sprog i dag er typesvage og multiparadigme. Derudover vil vedligeholdelsen af Moscow ML-oversætteren potentielt set blive nemmere, end den er i dag, da man ikke skal koncentrere sig om at vedligholde bytekodedannelsen.

##Tidsbudget Vi har 16 uger i alt. Følgende tidsbudget er opstillet i en naturlig rækkefølge, men kan overlappe.

  • Synopsis og projektaftale.\Tid: 2 uger
  • Minimalløsning: Lave en minimal oversættelse mellem Moscow ML og Js, f.eks. af funktionen fibonacci.\Tid: 2 uger
  • Bestemme problemstilling og analysere og designe denne.\Tid: 1-2 uger
  • Starte dybdegående implementation.\Tid: 4 uger
  • Opførsel og udførsel af eksperimenter.\Tid: 2 uger
  • Analyse/diskussion af eksperimentresultater, samt eventuelle korrigeringer af designet/implementationen.\Tid: 2 uger
  • Rapport og gennemlæsning.\Tid: 2 uger

Clone this wiki locally