Nyckelbegrepp inom funktionell programmering och programmeringsparadigm.

Här är ett svensk-engelskt lexikon med översättningar av mindre uppenbara begrepp inom Haskell, funktionell programmering och programmeringsparadigm.

Ett problem med terminologin i denna kurs är att matematiken och olika delar av datalogin inte har en gemensam terminologi. Det som kallas för funktion inom matematiken och Haskell har en mycket bredare definition bland C-programmerare och Pythonprogrammerare.  Det som kallas för polymorfism inom Java kallas inom programmeringparadigm för subtyping polymorphism och polymorfi är inom programmeringsparadigmen ett mycket bredare begrepp som innefattar operatoröverlagring (som är ett exempel på ad hoc polymorfi) och generics i java (som är ett exempel på parametrisk polymorfi).

Wikipedialänkarna används här för att ge ungefärlig koll på begreppet, men vi i lärarlaget rekommenderar att ni läser på dessa begrepp ordentligt i någon av kursböckerna och att ni reflekterar över vart och etts historia och hur de skiljer sig från andra liknande programmeringstermer.

Svensk term Engelsk term Fokus i kursen
abstraktion abstraction Links to an external site. Skippa S-expressions, specifikationer och databaser. Fokusera på (1) bitar, bytes, register, variabler, datatyper, algebraiska datatyper, klasser och objekt samt (2) rutiner, subrutiner, procedurer, metoder och rena funktioner.
algebraisk datatyp algebraic datatype Links to an external site. Skillnaden på kartesiska och rekursiva algebraiska datatyper. Record syntax.
ap-operatorn ap operator Links to an external site. Den ser ut såhär: <*>
applikativ funktor applicative functor Links to an external site. Läs på om denna som ett steg till att förstå monader.
beräkningsmodell model of computation Links to an external site. Fokusera på Turingmaskinen och Lambdakalkyl i period 3.
currying currying Links to an external site. Blanda inte ihop currying med partiell funktionsapplikation.
datastruktur data structure Links to an external site. List, Tuple (tupel) och Map
datatyp data type Links to an external site. Primitiva: Int, Integer, Char, String, Double, se även algebraisk datatyp och datastruktur.
evalueringsstrategi evaluation strategy Links to an external site. Call by... need, reference, sharing, value.
funktor functor Links to an external site. Ingår i monader, krav för högre betyg.
Harvard-arkitekturen Harvard architecture. Links to an external site. Hur skiljer den sig från von Neumann-arkitekturen?
högnivåspråk high level programming language Links to an external site. fokusera på abstraktioner och beräkningsmodeller
högre ordningens funktion higher-order function Links to an external site. map, foldl, lambda
lambdakalkyl Links to an external site. lambda calculus Links to an external site. abstraktion, applikation, konstant, variabel
lat evaluering lazy evaluation Links to an external site. Listor.
listomfattning list comprehension Links to an external site. Tillämpning av syntaxen.
lågnivåspråk low level programming language Links to an external site. fokusera på abstraktioner och beräkningsmodeller
monad monad Links to an external site. Två Links to an external site. bra Links to an external site. guider finns gratis, men bäst är att läsa en bok som Huttons Programming Haskell för att förstå detta centrala koncept för svårare Haskell. Ni behöver kunna använda monader i den betygshöjande labben F3.
mönsterpassning pattern matching Links to an external site. Tillämpa syntaxen.
oföränderlighet immutability Links to an external site. immutable binding, immutable object
partiell funktionsapplikation partial function application Links to an external site. Blanda inte ihop denna med currying. Det är separata begrepp.
polymorfism polymorphism Links to an external site. subtyping, ad hoc, parametric
referenstransparens referential transparency Links to an external site. Relevansen för kompilatorer.
rekursion recursion Links to an external site. base case, recursive call, tail recursion
ren funktion pure function Links to an external site. Exakt vilka bieffekter är relevanta?
svansrekursion tail recursion Links to an external site. Skillnaden mellan rekursion och svansrekursion är viktig.
Turingmaskin Turing machine Links to an external site. Att kunna följa med i en beräkning och inte att programmera en själv.
typsystem  type system Links to an external site. type safety, type checking
von Neumann-arkitekturen von Neumann architecture Links to an external site. Hur skiljer den sig från Harvard-arkitekturen? Vad menas med Stored program computer? Vad är flaskhalsen? Vilka delar ingår och hur samverkar de?
överlagring overloading (metod Links to an external site.) (operator Links to an external site.) Blanda inte ihop med termen nedan. Denna används när det finns en funktion/metod med samma namn men andra datatyper eller en annan uppsättning datatyper på parametrarna. Vissa språk stödjer operatoröverlagring.
överskuggning method override Links to an external site. Blanda inte ihop med termen ovan. Denna används vid polymorfism.

Viktiga paradigm i kursen:

Svenska Engelska Fokus
Imperativ programmering Imperative programming Links to an external site. Skilj på det imperativa paradigmet som innefattar assembler och den imperativa familjen som innefattar strukturerad, procedurell och objektorienterad programmering.
Litterär programmering Literate programming Links to an external site. Att dokumentera intentioner.
Strukturerad programmering Structured programming Links to an external site. if, for, while och funktionsanrop och (den numera valfria) begränsningen av goto.
Procedurell programmering Procedural programming Links to an external site. Scope, parametrar och lokala variabler.
Objektorienterad programmering Object oriented programming Links to an external site. Inkapsling, arv och polymorfism.
Deklarativ programmering Declarative programming Links to an external site. Den deklarativa familjen som innefattar funktionell och logisk programmering.
Funktionell programering Functional programming Links to an external site. Haskell
Logisk programmering Logic programming Links to an external site. Prolog
Samtidighet Concurrent programming Links to an external site. Trådar och processer.
Parallellprogrammering Parallel programming Links to an external site.  Granularitet på lås, deadlock, kapplöpning (race condition), futures, kanaler, immutability och rena funktioner.