My 7 Surprises in Clojure

My 7 Surprises in Clojure

Slides to my talk on :clojureD 2017

3997614cf9ef044e5f569318fbfc64d5?s=128

Michael Pershyn

February 25, 2017
Tweet

Transcript

  1. My 7 Surprises in Clojure Michael Pershyn 2017-02-25 @pershyn

  2. My way to clojure Autoit3 2005 6 7 8 9

    10 11 12 13 14 15 16 17 C# python clojure C++
  3. 3 Functional programming is fun. And it makes you better

    programmer.
  4. 4 Surprise 1. Total paradigm shift

  5. 5 It is possible to happily live without • Modifying

    mutable variables • Using assignments • Using (jump-) control structures • Conceptualising data structures word-by-word • Non-determinism caused by concurrent threads accessing mutable state • Boilerplate code
  6. 6 Space vs. Time

  7. 7 Identity vs State vs Mutable State

  8. 8 Surprise 2. Painless scale

  9. 9 Stop using lots of things • Low-level concepts of

    thread, mutex and semaphores • GIL Workarounds • Debuger to debug all the related issues, caused by mutable state and non-determinism. That was real pain.
  10. 10 So my expectations started to grow.

  11. 11 Surprise 3. Types.

  12. 12 Types, when you need them

  13. 13

  14. 14 Thank you, repl!

  15. 15 Refection warning, shall we do a type hint?

  16. 16 Hint an array of Hosts

  17. 17 Surprise 4. Patterns and inheritance

  18. 18 Surpise 5. Remember, laziness everywhere

  19. 19 Chunking the lazy sequences

  20. 20 Surprise 6. History

  21. 21 • Lisp 1959 • Actors 1973 • CSP (Communicating

    Sequential Processes) 1977 • ... History
  22. 22 Surprise 7. Big Data and more

  23. 23 The idea was to write 7. But good stuf

    didn‘t ft. • I was genuinely excited how well it works with big data • Cascalog & Storm ft perfectly with clojure • Solid base (JVM, Lisp, Libraries) • Rapid prototyping & robust production in same language • core.async • How powerful macros are • I probably stop here.
  24. 24 Dear Community, Thank You! You are awesome! Keep rocking!