48
Functional Programming Ionut G. Stan - OpenAgile 2010

Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

  • Upload
    others

  • View
    51

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Functional Programming

Ionut G. Stan - OpenAgile 2010

Page 2: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Functional Programming

whatwhyhow

Page 3: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Functional Programming

whatwhyhow

Page 4: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

What is FP

a programming style

Page 5: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

What is FP

a programming styleconceptually derived from lambda calculus (1930s)

Page 6: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

What is FP

a programming styleconceptually derived from lambda calculus (1930s) not procedural programming

Page 7: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

What is FP

a programming styleconceptually derived from lambda calculus (1930s) not procedural programming functions as in mathematical functions

Page 8: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

What is FP

a programming styleconceptually derived from lambda calculus (1930s) not procedural programming functions as in mathematical functions math function: input completely determines the output

Page 9: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Imperative Programming

programming: telling a computer what to do

Page 10: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Imperative Programming

programming: telling a computer what to do imperative languages are leaky abstractions

Page 11: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Imperative Programming

programming: telling a computer what to do imperative languages are leaky abstractions also called von Neumann languages

Page 12: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Imperative Programming

programming: telling a computer what to do imperative languages are leaky abstractions also called von Neumann languages von Neumann architecture is about modifying the state of the computer

Page 13: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

von Neumann architecture

Page 14: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Imperative Programming

programming: telling a computer what to do imperative languages are leaky abstractions also called von Neumann languages von Neumann architecture is about modifying the state of the computer computation model in imperative languages reflects von Neumann architecture

Page 15: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Imperative Programming

programming: telling a computer what to do imperative languages are leaky abstractions also called von Neumann languages von Neumann architecture is about modifying the state of the computer computation model in imperative languages reflects von Neumann architecture imperative programming: what and how to do

Page 16: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

What is FP

a programming styleconceptually derived from lambda calculus (1930s) not procedural programming functions as in mathematical functions trying to plug the abstraction leak

Page 17: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

What is FP

a programming styleconceptually derived from lambda calculus (1930s) not procedural programming functions as in mathematical functions trying to plug the abstraction leaktell the computer what to do, not how

Page 18: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

What is FP

a programming styleconceptually derived from lambda calculus (1930s) not procedural programming functions as in mathematical functions trying to plug the abstraction leaktell the computer what to do, not howmutations not allowed (no variables, just identifiers)

Page 19: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

What is FP

a programming styleconceptually derived from lambda calculus (1930s) not procedural programming functions as in mathematical functions trying to plug the abstraction leaktell the computer what to do, not howmutations not allowed (no variables, just identifiers)no statements, just expressions (if/then/else is expression)

Page 20: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

What is FP

a programming styleconceptually derived from lambda calculus (1930s) not procedural programming functions as in mathematical functions trying to plug the abstraction leaktell the computer what to do, not howmutations not allowed (no variables, just identifiers)no statements, just expressions (if/then/else is expression) functions are deterministic and side-effect free

Page 21: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

What is FP

a programming styleconceptually derived from lambda calculus (1930s) not procedural programming functions as in mathematical functions trying to plug the abstraction leaktell the computer what to do, not howmutations not allowed (no variables, just identifiers)no statements, just expressions (if/then/else is expression) functions are deterministic and side-effect freefunctions are all we need to model computation

Page 22: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

What is FP

a programming styleconceptually derived from lambda calculus (1930s) not procedural programming functions as in mathematical functions trying to plug the abstraction leaktell the computer what to do, not howmutations not allowed (no variables, just identifiers)no statements, just expressions (if/then/else is expression) functions are deterministic and side-effect freefunctions are all we need to model computationexecution order is not guaranteed

Page 23: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Functional Programming

whatwhyhow

Page 24: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Why FP

easier to reason about programs

Page 25: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Why FP

easier to reason about programs

heisenbugs

Page 26: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Why FP

easier to reason about programs

heisenbugs race conditions

Page 27: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Why FP

easier to reason about programs

heisenbugs race conditions off by one errors

Page 28: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Why FP

easier to reason about programs

heisenbugs race conditions off by one errors objects trashing another object's internal state

Page 29: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Why FP

easier to reason about programs

Page 30: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Why FP

easier to reason about programseasier to parallelize

Page 31: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Why FP

easier to reason about programseasier to parallelizeprogram correctness proving

Page 32: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Why FP

easier to reason about programseasier to parallelizeprogram correctness provingcomposability results in greater and easier reuse

Page 33: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Just for fun - reuse in OO languages

"You wanted a banana but what you got was a gorillaholding the banana and the entire jungle." Joe Armstrong, creator of Erlang

Page 34: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Why FP

easier to reason about programseasier to parallelizeprogram correctness provingcomposability results in greater and easier reuse try out new perspectives

Page 35: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Functional Programming

whatwhyhow

Page 36: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Functional Programming

whatwhyhow (even in imperative languages)

Page 37: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

How to FP

avoid side-effects/mutation as much as possible

Page 38: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

How to FP

avoid side-effects/mutation as much as possibleat least keep them as private as possible in OO

Page 39: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

How to FP

avoid side-effects/mutation as much as possibleat least keep them as private as possible in OO treat variables as immutable (constants/final)

Page 40: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

How to FP

avoid side-effects/mutation as much as possibleat least keep them as private as possible in OO treat variables as immutable (constants/final) return values (output) based on params (input) only

Page 41: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

How to FP

avoid side-effects/mutation as much as possibleat least keep them as private as possible in OO treat variables as immutable (constants/final) return values (output) based on params (input) only play with a functional language

Page 42: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Functional Programming

whatwhyhowexample

Page 43: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Example

Page 44: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Example

Page 45: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Example

Page 46: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

 

"Conventional programming languages are growing ever more enormous, but not stronger. Inherent defects at the most basic level cause them to be both fat and weak: their primitive word-at-a-time style of programming inherited from their common ancestor -- the von Neumann computer, their close coupling of semantics to state transitions, their division of programming into a world of expressions and a world of statements, their inability to effectively use powerful combining forms for building new programs from existing ones, and their lack of useful mathematical properties for reasoning about programs."

John Backus, known for Fortran, Algol and BNF

Page 47: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Thank You

igstan.ro | [email protected] | @igstan

Page 48: Functional Programming - static.igstan.rostatic.igstan.ro/functional-programming.pdf · Functional Programming what why how. Functional Programming what why how. What is FP a programming

Questions?

igstan.ro | [email protected] | @igstan