Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Die Essenz der Programmierung

Die Essenz der Programmierung

Talk about the essence of programming: composition of functions. Concepts from functional programming and category theory.

From the INNOQ-event, September 2019.

Slides in German.

Ludvig Sundström

September 12, 2019
Tweet

More Decks by Ludvig Sundström

Other Decks in Programming

Transcript

  1. S E P T E M B E R 2

    0 1 9 I N N O Q J u b i l ä u m s e v e n t i n K ö l n D i e E s s e n z d e r P r o g r a m - m i e r u n g
  2. L u d v i g S u n d

    s t r ö m C o n s u l t a n t I N N O Q D e u t s c h l a n d G m b H l u d v i g . s u n d s t r o e m @ i n n o q . c o m
  3. S t o c k h o l m ,

    S c h w e d e n
  4. • H a s k e l l • C

    l o j u r e • E r l a n g
  5. • H a s k e l l • C

    l o j u r e • E r l a n g • S c a l a
  6. • H a s k e l l • C

    l o j u r e • E r l a n g • S c a l a • e t c .
  7. λ

  8. λ F u n k t i o n a

    l e P r o g r a m m i e r u n g
  9. λ F u n k t i o n a

    l e P r o g r a m m i e r u n g ( F P )
  10. U p p s a l a , S c

    h w e d e n
  11. • S t e h e n w i r

    v o r e i n e f u n k t i o n a l e R e v o l u t i o n o d e r i s t e s n u r H y p e ?
  12. N i c h t e i n T a

    l k ü b e r …
  13. I n d i e s e r T a

    l k : • G r u n d p r i n z i p i e n i n P r o g r a m m i e r u n g • B e i s p i e l e m i t F P
  14. I n d i e s e r T a

    l k : • G r u n d p r i n z i p i e n i n P r o g r a m m i e r u n g • B e i s p i e l e m i t F P • D i e T h e s e : F u n k t i o n a l e S p r a c h e n l a s s e n u n s u n s e r e I d e e n b e s s e r a u s d r ü c k e n
  15. I n d i e s e r T a

    l k : • I n s p i r a t i o n e n v o n B a r t o s z M i l e w s k i P h i l i p W a d l e r G a b r i e l G o n z a l e s E d w a r d K m e t t
  16. I n d i e s e r T a

    l k : • W a s i s t E l e g a n t e r C o d e ? • W a s b e d e u t e t P r o g r a m m i e r e n ? • W a s i s t d i e E s s e n z d e s P r o g r a m m i e r e n s ?
  17. • P r o g r a m m i

    e r s p r a c h e n s i n d e n t w i c k e l t w o r d e n u m m e n s c h l i c h e P r o b l e m e z u l ö s e n • S p i e g e l t s i c h u n s e r e m e n s c h l i c h e D e n k s t r u k t u r i n d e n P r o g r a m m i e r s p r a c h e n w i e d e r ?
  18. D i e E s s e n z d

    e r P r o g r a m m i e r u n g
  19. • W i r h a b e n V

    o r s t e l l u n g e n u n d I d e e n ü b e r d i e W e l t • W i r d r ü c k e n s i e d u r c h C o d e a u s
  20. • W i r g e b e n u

    n s M ü h e m o d u l a r e , l o c k e r v e r b u n d e n e , z u s a m m e n s e t z b a r e A b s t r a k t i o n e n z u b a u e n
  21. • W i r g e b e n u

    n s M ü h e m o d u l a r e , l o c k e r v e r b u n d e n e , z u s a m m e n s e t z b a r e A b s t r a k t i o n e n z u b a u e n • W i r m a c h e n d a s , w e i l w i r u n s e r e P r o g r a m m e v e r s t e h e n w o l l e n
  22. • W i r g e b e n u

    n s M ü h e m o d u l a r e , l o c k e r v e r b u n d e n e , z u s a m m e n s e t z b a r e A b s t r a k t i o n e n z u b a u e n • W i r m a c h e n d a s , w e i l w i r u n s e r e P r o g r a m m e v e r s t e h e n w o l l e n → E l e g a n t e r C o d e h e i ß t n u r ” E i n f a c h z u v e r s t e h e n ”
  23. • W i r v e r s t e

    h e n C o d e , w e n n w i r n u r ü b e r e i n e h a n d v o l l S a c h e n d e n k e n m u s s
  24. • W i r v e r s t e

    h e n C o d e , w e n n w i r n u r ü b e r e i n e h a n d v o l l S a c h e n d e n k e n m u s s . • W e n n d a s P r o b l e m z u g r o ß i s t , t e i l e n w i r e s u n d l ö s e n d i e T e i l e r e k u r s i v
  25. • W i r v e r s t e

    h e n C o d e , w e n n w i r n u r ü b e r e i n e h a n d v o l l S a c h e n d e n k e n m u s s . • W e n n d a s P r o b l e m z u g r o ß i s t , t e i l e n w i r e s u n d l ö s e n d i e T e i l e r e k u r s i v • E s i s t d i e e i n z i g e S t r a t e g i e m i t d e r w i r P r o b l e m e l ö s e n k ö n n e n
  26. • K o m p o s i t i

    o n i s t d i e E s s e n z d e r P r o g r a m m i e r u n g u n d v o n P r o b l e m l ö s u n g i n g e n e r e l l
  27. • K o m p o s i t i

    o n i s t d i e E s s e n z d e r P r o g r a m m i e r u n g u n d v o n P r o b l e m l ö s u n g i n g e n e r e l l • W i e l e r n e n w i r ü b e r K o m p o s i t i o n ?
  28. K a t e g o r i e n

    t h e o r i e ( a b e r n i c h t v i e l T h e o r i e )
  29. K a t e g o r i e n

    t h e o r i e • M a t h e m a t i k →F P
  30. K a t e g o r i e n

    t h e o r i e • M a t h e m a t i k →F P • I n t e r a k t i o n e n w i c h t i g , n i c h t D e t a i l s
  31. K a t e g o r i e n

    t h e o r i e • M a t h e m a t i k →F P • I n t e r a k t i o n e n w i c h t i g , n i c h t D e t a i l s • B e k a n n t a u s O O : m e t h o d s , m e s s a g e p a s s i n g , d a t a h i d i n g e t c
  32. K a t e g o r i e n

    t h e o r i e • M a t h e m a t i k →F P • I n t e r a k t i o n e n w i c h t i g , n i c h t D e t a i l s • B e k a n n t a u s O O : m e t h o d s , m e s s a g e p a s s i n g , d a t a h i d i n g e t c • S t r u k t u r e n t s t e h t d u r c h K o m p o s i t i o n u n d a l s P r o g r a m m i e r e r s i n d w i r i n S t r u k t u r i n t e r e s s i e r t
  33. E i n e K a t e g o

    r i e f ü r P r o g r a m m i e r e r 1 . O b j e k t e → T y p e n 2 . P f e i l e → F u n k t i o n e n 3 . K o m p o s i t i o n → F u n k t i o n e n k o m p o n i e r e n E i n e T h e o r i e d e r E s s e n z d e r P r o g r a m m i e r u n g !
  34. J e t z t e t w a s

    n u t z b a r e s
  35. W a s i s t m i t r

    i c h t i g e P r o g r a m m e ? 1 . G l o b a l S t a t e 2 . S i d e E f f e c t s 3 . E x c e p t i o n s 4 . P r o m i s e s 5 . M u l t i T h r e a d i n g 6 . e t c …
  36. W i r m o d e l l i

    e r e n k o m p l e x e Z u s t ä n d e d u r c h ” B e r e c h n u n g s k o n t e x t e ” : 1 . O p t i o n a l : w o B e r e c h n u n g e n f e h l s c h l a g e n k ö n n e n 2 . L i s t s : w o m a n m e h r a l s e i n R e s u l t a t h a b e n k a n n 3 . I O : w o ” s i d e - e f f e c t s ” p a s s i e r e n k ö n n e n W i r r e d e n i m m e r n o c h ü b e r p u r e F u n k t i o n e n u n d a b s t r a h i e r e n ü b e r d e n K o n t e x t !
  37. F u n k t o r • I s

    t e i n e A b b i l d u n g z w i s c h e n z w e i K a t e g o r i e n • W i r b e n u t z e n e s , u m i n a n d e r e n K o n t e x t e n z u a r b e i t e n • L ä s s t u n s e i n e ” n o r m a l e ” F u n k t i o n i n e i n e n n e u e n K o n t e x t s e t z e n
  38. -- Function put in a context -- ^^^^^^^^^^^^ fmap ::

    Functor f => (a -> b) -> (f a -> f b)
  39. fmap :: Functor f => (a -> b) -> (f

    a -> f b) -- Each type that wants to be a functor implements fmap in -- its own context
  40. • F : M u s s i c h

    w i r k l i c h H a s k e l l u n d d i e K a t e g o r i e n t h e o r i e b e n u t z e n , u m L i s t e n u n d O p t i o n a l e a b z u b i l d e n ? … ? • A : N e i n , a b e r w i r k ö n n e n e t w a s d a r a u s l e r n e n
  41. E r k a n n t n i s

    s e a u s d e m F u n k t o r • A b s t r a h i e r t E l e m e n t e u n d d e n K o n t e x t s e l b s t • W i r k ö n n e n p u r e F u n k t i o n e n u n d g a n z e P r o g r a m m e w i e ( e v e n . l e n g t h ) u n g e ä n d e r t i n u n t e r s c h i e d l i c h e n K o n t e x t e n a u s f ü h r e n
  42. • E s i s t w i e e

    i n ” C o n t a i n e r ” d e m d e r I n h a l t e g a l i s t • E s i s t n u r w i c h t i g , d a s s m a n d e n I n h a l t m i t F u n k t i o n e n m a n i p u l i e r e n k a n n • I m U n t e r s c h i e d z u I n t e r f a c e s i n z . B . J a v a , i s t d e r F u n k t o r n i c h t a n d i e e x p l i z i t e n O b j e k t e g e b u n d e n
  43. Z u s a m m e n f a

    s s u n g • D e r e i n z i g e W e g , w i e w i r P r o b l e m e n l ö s e n k ö n n e n , i s t d i e T e i l u n g i n k l e i n e r e P r o b l e m e • K a t e g o r i e n t h e o r i e i s t d i e L e h r e v o n K o m p o s i t i o n . E s i s t e i n e a b s t r a k t e m a t h e m a t i s c h e T h e o r i e , a b e r e s g i b t i n P r o g r a m m i e r u n g v i e l e s i n n v o l l e A n w e n d u n g s f ä l l e • F u n k t o r i s t e i n B e i s p i e l a u s d e r K a t e g o r i e n t h e o r i e , d e r d e n K o n t e x t a b s t r a h i e r t u n d l ä s s t u n s a u f d i e K o m p o s i t i o n f o k u s s i e r e n
  44. D a n k e ! F r a g

    e n ? L u d v i g S u n d s t r ö m l u d v i g . s u n d s t r o e m @ i n n o q . c o m � + 4 9 1 5 1 6 1 1 8 1 2 7 0 � @ l u d v i g S u n d s t r m w w w . i n n o q . c o m i n n o Q D e u t s c h l a n d G m b H K r i s c h e r s t r . 1 0 0 4 0 7 8 9 M o n h e i m a . R h . G e r m a n y + 4 9 2 1 7 3 3 3 6 6 - 0 O h l a u e r S t r . 4 3 1 0 9 9 9 B e r l i n G e r m a n y L u d w i g s t r . 1 8 0 E 6 3 0 6 7 O f f e n b a c h G e r m a n y K r e u z s t r . 1 6 8 0 3 3 1 M ü n c h e n G e r m a n y c / o W e W o r k H e r m a n n s t r a s s e 1 3 2 0 0 9 5 H a m b u r g G e r m a n y i n n o Q S c h w e i z G m b H G e w e r b e s t r . 1 1 C H - 6 3 3 0 C h a m S w i t z e r l a n d + 4 1 4 1 7 4 3 0 1 1 1 A l b u l a s t r . 5 5 8 0 4 8 Z ü r i c h S w i t z e r l a n d