Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Tillståndslös programmering devlin 2011

742 views

Published on

Presentation jag höll på DevLin 2011 om hur det är att gå över från att utveckla objekt- (klass)orienterat till att utveckla i funktionella språk exemplifierat med erlang.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Tillståndslös programmering devlin 2011

  1. 1. Tillståndslösprogrammering Erlang skådat från en överlöpare Måns Sandström, Adaptiv
  2. 2. My future is so brightI got to wear shades...
  3. 3. “Man behöver tänka i timmar utan att kunna skriva enrad, men när man sedan löser problemet vet man attman gjort det på rätt sätt.” - Anonym kollega
  4. 4. Be rational! Get real! i πIf you understand the joke, I have bad news for you... Math Geek
  5. 5. TDD - omöjligt!
  6. 6. Före Efter
  7. 7. Huh!?
  8. 8. Men är det svårare än OO?
  9. 9. “Absolut!” -Anonyma kollegor
  10. 10. ~50 designmönster Null Trådsäkerhet SOLID-principerna DDD OO i ett nöt...Datastrukturer och beteende i ett Arv - använd bara för klasser utan tillstånd BDD
  11. 11. ~10 designmönster (5 från OO-världen) Rekursion och svansrekursion Immuterbart tillstånd Monader FP i ett nöt... AckumulatorerDatastrukturer separerade från beteende Högre ordningens funktioner
  12. 12. Onaturligt designtänk!Svårt att representera en verksamhet. Få designval, idiomen styr.
  13. 13. Be rational! Get real! i πIf you understand the joke, I have bad news for you... Math Geek
  14. 14. X=X+1
  15. 15. Vadårå!?X=X+1
  16. 16. Vadårå!? Omöjligt!!!X=X+1
  17. 17. X2 = X + 1
  18. 18. :DX2 = X + 1
  19. 19. :D Behövs vanligtvis inte.X2 = X + 1
  20. 20. TDD?
  21. 21. Dependency injection
  22. 22. Testalgoritm för rekursiv lösning1. Avslutningsvillkor2. Ankomma till avslutningsvillkoret3. Startläge
  23. 23. Testalgoritm för rekursiv lösningCool! Funkar nog för mig med 1. Avslutningsvillkor 2. Ankomma till avslutningsvillkoret 3. Startläge
  24. 24. Testalgoritm för rekursiv lösningCool! Funkar nog för mig med Öhh, ja. 1. Avslutningsvillkor 2. Ankomma till avslutningsvillkoret 3. Startläge
  25. 25. Cloudberry
  26. 26. Title (one line describing the story) Narrative:As a [role]I want [feature]So that [benefit] Acceptance Criteria: (presented as Scenarios) Scenario 1: TitleGiven [context]  And [some more context]...When  [event]Then  [outcome]  And [another outcome]...
  27. 27. Title (one line describing the story) Narrative:As a [role]I want [feature]So that [benefit] Acceptance Criteria: (presented as Scenarios) Scenario 1: TitleGiven [context]  And [some more context]...When  [event]Then  [outcome]  And [another outcome]...
  28. 28. Given
  29. 29. Hoho!
  30. 30. Given-When-Then är ettsidoeffektsorienterat sätt att utveckla programvara.
  31. 31. Det var han som började!
  32. 32. Dessutom finns detsidoeffekter i Erlang
  33. 33. (
  34. 34. Monader...
  35. 35. me: Ok, jag tänker förklara monader på DevLin.:) Alla IT-konferenser med självaktining har någon som förklarar monader. Jag tar gärna på mig den dumstruten.Niklas: :D nice  "de är typ shell pipes". klart. ;) -Saxat ur chat med Niklas Lindström
  36. 36. me: om jag skulle säga att en monad är en process som kan ackumulera state för att sedan exekvera en funktion när lämpligt state uppnåtts. Skulle du fortfarande säga att du känner mig då?  -Saxat ur chat med Niklas Lindström
  37. 37. )
  38. 38. Därför finns inga nyckelord i Cloudberry
  39. 39. Vilket också gör den oberoende av i18n
  40. 40. Then = When(Given)
  41. 41. git://github.com/msa/cloudberry.git
  42. 42. ?
  43. 43. ?
  44. 44. √?
  45. 45. √?
  46. 46. × √ ?
  47. 47. × √ ?
  48. 48. × √× ?
  49. 49. × √ TDD omöjligt!× ?
  50. 50. × √ × TDD omöjligt!× ?
  51. 51. Tack!Måns Sandström

×