Dimitry Solovyov - The imminent threat of functional programming
Upcoming SlideShare
Loading in...5
×
 

Dimitry Solovyov - The imminent threat of functional programming

on

  • 1,071 views

 

Statistics

Views

Total Views
1,071
Views on SlideShare
1,013
Embed Views
58

Actions

Likes
1
Downloads
5
Comments
0

4 Embeds 58

http://www.jug.lv 48
http://www.tumblr.com 8
http://jug.lv 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Dimitry Solovyov - The imminent threat of functional programming Dimitry Solovyov - The imminent threat of functional programming Presentation Transcript

    • The Imminent Threat of Functional Programming
    • Dimitry Solovyov‣ Haskell enthusiast and FP proponent‣ Heavy user of Underscore (FP library for JavaScript)‣ Former assistant teacher of FP course at TTI‣ Developer at Amber Games and Livesheets
    • dresdencodak.com
    • FUNCTIONALPROGRAMMING
    • In programming land,there are two kinds of problems
    • In programming land,there are two kinds of problems memory management
    • In programming land, there are two kinds of problemssequencing memory(aka do it in what order?) management
    • In programming land, there are two kinds of problemssequencing memory E D LV management(aka do it in what order?) SO
    • In programming land, there are two kinds of problems memory D *sequencing VE(aka do it in what order?) O L management S * Except for null pointer exceptions ;-)
    • In programming land, there are two kinds of problems ? memory D *sequencing VE(aka do it in what order?) O L management S * Except for null pointer exceptions ;-)
    • Sequencing in Java while cond stmt do stmt while condfor init cond step stmt for x : xs stmt
    • Sequencing in Ruby loop stmt while cond stmt until cond stmt stmt while cond stmt until cond for x in xs stmt xs each stmt n times stmt n upto m stmt n downto m stmt ...
    • Sequencing in Ruby loop stmt while cond stmtHow elegant! until cond stmt stmt while cond stmt until cond for x in xs stmt xs each stmt n times stmt n upto m stmt n downto m stmt ...
    • Imperative programming in a nutshell10 BEGIN20 DO SOMETHING3040 DO THAT OTHER THING GOTO 20 ✔INSTRUCTIONS RESULT
    • Declarative programming in a nutshellDear computer,I want a pony. MAGIC ✔DESCRIPTION RESULT
    • INSTANTSUCCESS
    • “ OO makes code understandable by encapsulating moving parts. FP makes code understandable by minimizing moving parts. ” -- Michael Feathers“Functional Programming in C++” http://goo.gl/aVSXX
    • Abstraction and reusability in FPAbsolutely abstract Category theory * ly reu sable High Exciting ly comp osable Mathematically proven Ex tremely fun to be composable * Check out Scalaz for CT in Scala Guava for other FP patterns in Java
    • + Some GoF pattern analogs provided at semantic level“Design Patterns in Haskell” http://goo.gl/T0Evt
    • You can get away without encapsulating in objects Data types fo rm r fo ed d ne in to ig s de operate on ImmutableCombinators data structures
    • You can get away without encapsulating in objects Data types fo rm r fo ed d ne in to ig s de operate on ImmutableCombinators data structures
    • You can get away without encapsulating in objects Data types Ready for the age of multicore fo rm r fo ed d ne in to ig s de operate on ImmutableCombinators data structures
    • Traits instead of inheritance Thesis: Inheriting state creates brittle software. Inheriting implementation tends to become useless over time.“Life without Objects” http://goo.gl/wlOyq
    • Traits instead of inheritance Thesis: Inheriting state creates brittle software. Inheriting implementation tends to become useless over time. A B Data type“Life without Objects” C Expected to behave like A, B, and C http://goo.gl/wlOyq
    • “ In the exclusive sense, functional means no side-effects. In the inclusive sense it means a programming style which composes functions in interesting ways. ” -- Martin Odersky“In Defense of Pattern Matching” http://goo.gl/HaKQD
    • Origin of the “functional style” LISP MLCommon Lisp Standard ML Scheme OCaml Dylan F# Racket Haskell Closure JVM Frege JVM Scala * JVM * (cough) Close enough.
    • LISP ML Dynamic Strong typesCode = data Type inferenceMetaproggin ADTs First-class functions Higher-order functions Pattern matching
    • LISP ML Dynamic Strong typesCode = data Type inferenceMetaproggin ADTs First-class functions Higher-order functions Pattern matching
    • Linus says: “Words are cheap, show me the code.”
    • Fake first-class functions in Javainterface Func<A, B> { B apply(A x);}static <A, B, C> Func<A, C> compose(final Func<A, B> f, final Func<B, C> g) { return new Func<A, C>() { public C apply(A x) { return g.apply(f.apply(x)); } };}
    • Fake higher-order functions in Java static <A, B> List<B> map(final Iterable<A> xs, final Func<A, B> f) { List<B> ys = new ArrayList<B>(); for (A x : xs) { B y = f.apply(x); ys.add(y); } return ys; } map
    • Fake higher-order functions in Java static <A, B> B fold(final Iterable<A> xs, final B init, final Func2<A, B, B> f) { B acc = init; for (A x : xs) { acc = f.apply(x, acc); } return acc; } fold
    • REFERENTIALTRANSPARENCY
    • How logic works x=1 y=2 x+y=3
    • in languages How logic works with side-effects x=1 y=2 x + y = 3** But only if the moon is still young! Otherwise the answer is 5.
    • Functional programming on the JVM en l fe d tio ss ar ia ef le ch n c o cy s nc cla sp nt es at er e- rol ct ns g an re in ur m att fu st- sid nt tr efe os p fir cl r Clojure ✔ ✔ ✔ ✘ ✘ Fantom ✔ ✔ ✔ ✘ ✘ Frege ✔ ✔ ✔ ✔ ✔ Java ✔ ✘ ✘ ✘ ✘ JRuby ✔ ✘ ✘ ✘ ✘ Kotlin ✔ ✔ ✔ ✘ ✔ Scala ✔ ✔ ✔ ✘ ✔
    • FP exploration checklist❏ Start learning a functional language: Scala, Clojure, or even Haskell❏ Get together @ Latvian FP Group: look for it on LinkedIn http://goo.gl/YhlJl❏ Talk to me! dimituri@gmail.com