$30 off During Our Annual Pro Sale. View Details »

Mathematics, Surprisingly

Mathematics, Surprisingly

Do programmers need advanced mathematics? And what if they are designing and implementing a programming language? In the talk I will show where I needed mathematics in my work at Jut and how bad job I would have done without understanding it. You can think of this as a small contribution to a discussion about education of programmers and the role of mathematics and other theoretical subjects in it.

Presented at Rubyslava #52 (Data Science Edition).

Video: https://www.youtube.com/watch?v=7cThtM6Yk1A

Details:
http://lanyrd.com/2015/rubyslava-october/sdxdgc/
https://www.facebook.com/events/862212323886828/

David Majda

October 22, 2015
Tweet

More Decks by David Majda

Other Decks in Programming

Transcript

  1. MATHEMATICS
    SURPRISINGLY
    David Majda
    Bratislava · October 22, 2015

    View Slide

  2. INTRODUCTION

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. {
    time: "2015-05-03T09:29:15.000Z"
    space: "default",
    source_type: "metric",
    name: "response_time",
    value: 134.675
    }

    View Slide

  7. read … | (
    reduce -every :5s: max(value) by host | @timechart;
    keep time, value | @logger
    )

    View Slide

  8. read … | (
    reduce -every :5s: max(value) by host | @timechart;
    keep time, value | @logger
    )
    read
    @timechart
    reduce
    keep @logger

    View Slide

  9. DEMO

    View Slide

  10. LOGIC
    ALGEBRA I
    ALGEBRA II
    GEOMETRY & PHYSICS

    View Slide

  11. LOGIC

    View Slide

  12. read status = 500

    View Slide

  13. read status = 500
    or (status = 404 and url !~ …)

    View Slide

  14. read status = 500
    or (status = 404 and url !~ …)

    View Slide

  15. Conjunctive normal form

    View Slide

  16. (a
    1,1
    ∨ … ∨ a
    1,m(1)
    )



    (a
    n,1
    ∨ … ∨ a
    n,m(n)
    )

    View Slide

  17. read status = 500
    or (status = 404 and url !~ …)

    View Slide

  18. read (status = 500 or status = 404)
    and (status = 500 or url !~ …)

    View Slide

  19. read (status = 500 or status = 404)
    and (status = 500 or url !~ …)

    View Slide

  20. ALGEBRA I

    View Slide

  21. read … | reduce c = count(x)
    s = sum(x)
    m = max(x)

    View Slide

  22. { c: 3, s: 6, m: 3 }
    read … | reduce c = count(x)
    s = sum(x)
    m = max(x)
    { x: 1 }
    { x: 2 }
    { x: 3 }

    View Slide

  23. { c: 2, s: 3, m: 2 }
    read … | reduce c = count(x)
    s = sum(x)
    m = max(x)
    { x: 1 }
    { x: 2 }

    View Slide

  24. { c: 1, s: 1, m: 1 }
    read … | reduce c = count(x)
    s = sum(x)
    m = max(x)
    { x: 1 }

    View Slide

  25. { c: ?, s: ?, m: ? }
    read … | reduce c = count(x)
    s = sum(x)
    m = max(x)
    (nothing)

    View Slide

  26. { c: 0, s: ?, m: ? }
    read … | reduce c = count(x)
    s = sum(x)
    m = max(x)
    (nothing)

    View Slide

  27. { c: 0, s: ?, m: ? }
    read … | reduce c = count(x)
    s = sum(x)
    m = max(x)
    (nothing)

    View Slide

  28. { c: 0, s: 0, m: ? }
    read … | reduce c = count(x)
    s = sum(x)
    m = max(x)
    (nothing)

    View Slide

  29. { c: 0, s: 0, m: ? }
    read … | reduce c = count(x)
    s = sum(x)
    m = max(x)
    (nothing)

    View Slide

  30. { c: 0, s: 0, m: undefined }
    read … | reduce c = count(x)
    s = sum(x)
    m = max(x)
    (nothing)

    View Slide

  31. { c: 0, s: 0, m: undefined }
    read … | reduce c = count(x)
    s = sum(x)
    m = max(x)
    (nothing)

    View Slide

  32. Identity element

    View Slide

  33. e: ∀a(e ⊕ a = a ⊕ e = a)

    View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. { c: 0, s: 0, m: -Infinity }
    read … | reduce c = count(x)
    s = sum(x)
    m = max(x)
    (nothing)

    View Slide

  38. ALGEBRA II

    View Slide

  39. read … value > 0.95
    | reduce c = count()

    View Slide

  40. Elasticsearch
    Cassandra
    read … value > 0.95
    | reduce c = count()

    View Slide

  41. Elasticsearch
    Cassandra
    read … value > 0.95
    | reduce c = count()

    View Slide

  42. Associativity

    View Slide

  43. (a ⊕ b) ⊕ c = a ⊕ (b ⊕ c)

    View Slide

  44. count
    count_unique
    sum
    avg
    min
    max
    first
    last
    pluck
    percentile
    sigma
    mad

    View Slide

  45. count
    count_unique
    sum
    avg
    min
    max
    first
    last
    pluck
    percentile
    sigma
    mad

    View Slide

  46. View Slide

  47. View Slide

  48. Monoid

    View Slide

  49. Set S, operation ⊕ : S ⨉ S → S
    1. ⊕ is associative on elements of S
    2. S contains identity element under ⊕

    View Slide

  50. GEOMETRY
    &
    PHYSICS

    View Slide

  51. read time < :2015-04-01:

    View Slide

  52. Moment
    Duration
    :2015-04-01T20:05:27.034:
    :now:
    :3 weeks and 1 day ago:
    :20:05:27.034:
    :3s:
    :1 hour and 23 minutes:

    View Slide

  53. read time < :2015-04-01: - :1 day:

    View Slide

  54. N * D → D
    D * N → D
    N / D → N
    D / N → D
    D % N → D
    M + D → M
    D + M → M
    D + D → D
    M - M → D
    M - D → M
    D - D → D

    View Slide

  55. Affine space

    View Slide

  56. View Slide

  57. View Slide

  58. View Slide

  59. View Slide

  60. View Slide

  61. m
    1
    m
    2
    m
    2
    t
    d
    1
    d
    2

    View Slide

  62. N * D → D
    D * N → D
    N / D → N
    D / N → D
    D % N → D
    M + D → M
    D + M → M
    D + D → D
    M - M → D
    M - D → M
    D - D → D

    View Slide

  63. N * D → D
    D * N → D
    N / D → N
    D / N → D
    D % N → D
    M + D → M
    D + M → M
    D + D → D
    M - M → D
    M - D → M
    D - D → D

    View Slide

  64. N * D → D
    D * N → D
    N / D → N
    D / N → D
    D % N → D
    M + D → M
    D + M → M
    D + D → D
    M - M → D
    M - D → M
    D - D → D

    View Slide

  65. N * D → D
    D * N → D
    N / D → N
    D / N → D
    D % N → D
    M + D → M
    D + M → M
    D + D → D
    M - M → D
    M - D → M
    D - D → D

    View Slide

  66. N * D → D
    D * N → D
    N / D → N
    D / N → D
    D % N → D
    M + D → M
    D + M → M
    D + D → D
    M - M → D
    M - D → M
    D - D → D

    View Slide

  67. Dimensional analysis

    View Slide

  68. v = s / t
    η = P
    out
    / P
    in

    View Slide

  69. N * D → D
    D * N → D
    N / D → N
    D / N → D
    D % N → D
    M + D → M
    D + M → M
    D + D → D
    M - M → D
    M - D → M
    D - D → D

    View Slide

  70. N * D → D
    D * N → D
    N / D → N
    D / N → D
    D % N → D
    M + D → M
    D + M → M
    D + D → D
    M - M → D
    M - D → M
    D - D → D

    View Slide

  71. N * D → D
    D * N → D
    D / D → N
    D / N → D
    D % N → D
    M + D → M
    D + M → M
    D + D → D
    M - M → D
    M - D → M
    D - D → D

    View Slide

  72. View Slide

  73. N * D → D
    D * N → D
    D / D → N
    D / N → D
    D % N → D
    M + D → M
    D + M → M
    D + D → D
    M - M → D
    M - D → M
    D - D → D

    View Slide

  74. N * D → D
    D * N → D
    D / D → N
    D / N → D
    D % N → D
    M + D → M
    D + M → M
    D + D → D
    M - M → D
    M - D → M
    D - D → D

    View Slide

  75. N * D → D
    D * N → D
    D / D → N
    D / N → D
    D % D → D
    M + D → M
    D + M → M
    D + D → D
    M - M → D
    M - D → M
    D - D → D

    View Slide

  76. View Slide

  77. View Slide

  78. CONCLUSION

    View Slide

  79. QUESTIONS?

    View Slide

  80. WHERE NEXT?
    http://en.wikipedia.org/wiki/Conjunctive_normal_form
    http://en.wikipedia.org/wiki/Disjunctive_normal_form
    http://en.wikipedia.org/wiki/Identity_element
    http://en.wikipedia.org/wiki/Associative_property
    http://en.wikipedia.org/wiki/Monoid
    http://en.wikipedia.org/wiki/Affine_space
    http://en.wikipedia.org/wiki/Dimensional_analysis

    View Slide

  81. IMAGE CREDITS
    http://commons.wikimedia.org/wiki/File:Torus.png

    View Slide