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. |