Till KTH:s startsida Till KTH:s startsida

Visa version

Version skapad av Johan Montelius 2013-12-12 10:44

Visa < föregående | nästa >
Jämför < föregående | nästa >

Föreläsningar

sednaVi kommer att ha fjorton föreläsningar under kursens gång, dessa är inte obligatoriska men rekommenderade. Föreläsningarna kommer att diskutera och fördjupa aspekter som som kursliteraturen inte täcker.

Under kursens gång kommer presentationer att läggas upp.

Introduktion

Grunderna för funktionell programmering och grunderna för Erlang. Lambda-kalkyl och deklarativ semantik, beskriven med omskrivningsregler.

Erlang

Enkla program i Erlang, datatyper, mönstermatchning och hur man kan representera information.  Innan föreläsniongen skall ni ha sett de två första delarna i Erlang Solutions kurs:

  • Introduction to Erlang
  • Basic Erlang

Ni skall också ha läst kapitel 1 och 2 i Erlang Programming.

Rekursion I och II

Rekursion är kanske begreppet med högst tröskel inom funktionell programmering, idén är naturligtvis väldigt enkel men ställer till en del huvudbry till en början. Som komplement till dessa två föreläsningar finns Erlang Solutions föreläsningar:

  • Sequential Erlang

Under desa två föreläsningar kommer vi att gå igenom mycket av kapitel 2 i Erlang Programming from till och med "Recursion". Läs igenom delarna innan föreläsningarna.

Komplexitet

Vi tittar närmare på komplexitet och varför funktioner har den komplexitet de har. Eftersom funktioner på binära träd i många avseenden har bättre egenskaper än funktioner över listor, tar vi trädoperationer som exempel. Vi jämför även med motsvarande operationer för tupler och får förhoppningsvis en ökad förståelse för när man skall änvända var.

Moduler och undantag

Vi avrundar den funktionella delen av Erlang genom att gå igenom hur vi bygger upp våra program med hjälp av moduler, samt hur vi tar hand om fel som uppstår vid körning.  Läs igenom kapitel 3 i kursboken samt andra hälften av kapitel 7 "Records and macros" (records, skall vi hantera senare). Titta även på motsvarande presentationer från Erlang Solutions för att repetera de bregrepp som vi diskuterar.

Processer

Erlangs andra sida är att kunna beskriva kommuniserande processer på ett väldigt enkelt sätt. Vi diskuterar den så kallade actor-modellen och hur Erlang väljer att implementera den.  Läs kapitel 5, 6 och 7 i kursboken och se på föreläsningarna "Creating Processes and Message Passing" från Erlang Solutions.

Högre ordningens funktioner

Vi har sett det i beskrivningen av lambda-kalkylen och sett det skymta förbi i Erlang men vi skall nu gå igenom vad som menas med högre ordningens funktioner, hur vi skall evaluera dem och hur vi kan använda dem till att implementera generella algorithmer som sedan kan specialiceras beroende på domän.

Processer, uppdaterbara datastrukturer, asynkron och synkron kommunikation

Vi backar bandet lite, vad ör det egentligen vi håller på med - vad är det som processer ger oss som vi inte kunde göra i den funktionella världen? Är det mödan värt, kommer det bara med fördelar eller har vi släppt in djävulen?  Det är nyttigt att reflektera över vad vi kan göra med processer och vilka problem de har. 

Typsystem mm

Erlang är ett dynamiskt typat språk; typer kontrolleras under körning av program och inte under själva kompileringen. Detta medför att en hel del fel upptäcks först när programmet körs och resulterar i svårbegripliga felmeddelanden; varför kan inte kompilatorn kontrollera att vi använder rätt typer från början?

Läs resten av kapitel "Records and Macros" och kapitel "Types and Documentation" i kursboken.