När används funktionell programmering?

Programmeringsparadigm – grundläggande koncept

Eleanor Thomas

Senior Data Analytics Engineer

Tillämpningar av funktionell programmering

  • Maskininlärning, djupinlärning, artificiell intelligens
  • Analys och bearbetning av stora datamängder
  • Dataingenjörsapplikationer (t.ex. i Scala och Clojure)

Databearbetning

Programmeringsparadigm – grundläggande koncept

Exempel på funktionell programmering

def process_data(raw_data):
    processed_data = raw_data

    ... further processing steps here! ...

    return processed_data
  • Funktionen tar emot indata lagrad i raw_data
  • Funktionen skapar en ny variabel för utdata, kallad processed_data
  • Funktionen utför en konsekvent serie steg för att bearbeta datan
  • Funktionen returnerar processed_data
Programmeringsparadigm – grundläggande koncept

För- och nackdelar med funktionell programmering

FÖRDELAR

  • Rena funktioner är lättare att läsa och felsöka
  • Rena funktioner är lättare att testa
  • Färre oväntade bieffekter i koden
  • Rena funktioner är mycket återanvändbara mellan projekt
  • Olika funktioner kan köras parallellt för snabbare kod

NACKDELAR

  • Svårt att vänja sig vid paradigmet – kan kännas begränsande: "sidoeffekter" (att skriva till filer m.m.) är ofta precis det vi vill göra
  • Färre experter, verktyg och ramverk finns för funktionell programmering
  • Brantare inlärningskurva och färre utbildningsresurser
  • Hög minnesanvändning begränsar tillämpningarna
Programmeringsparadigm – grundläggande koncept

Funktionell programmering och deklarativ programmering

  • Funktionell programmering är en typ av deklarativ programmering
  • Deklarativ programmering: tala om för datorn vad som ska göras, inte hur
  • Funktionell programmering är bara en typ av deklarativ programmering
  • Programmeraren anger vilka funktioner som ska köras, inte de exakta stegen

Funktionell programmering är deklarativ

Programmeringsparadigm – grundläggande koncept

Nu kör vi en övning!

Programmeringsparadigm – grundläggande koncept

Preparing Video For Download...