Visa version
Visa
< föregående
|
nästa >
Jämför
< föregående
|
nästa >
Föreläsningar
Vi 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 anvä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 begrepp 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 algoritmer som sedan kan specialiseras beroende på domän.
Processer, 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.
OTP - ramverket för större system
Ett språk är en sak men för att vara produktiv måste man ha ett ramverk med kompilatorer, maskiner, bibliotek, tillämpningar mm; OTP är det ramverk som används för större system i Erlang. Vi kommer att titta på några av de funktioner som erbjuds i OTP för att beskriva processer och händelsehanterare samt gå igenom vilka andra redskap som finns. OTP är en stor apparat som ni inte skall börja använda nu; ni skall dock känna till begreppen och vilken nytta de ger i större projekt.
Sammanfattning
En återblick på funktionell programmering och Erlang. Genom att implementera en meta-interpretator för ett funktionellt språk i Erlang ser vi dels hur enkelt det är att beskriva ett funktionellt språk, dels hur enkelt det är att gå från en definition av språket till en implementation.