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

Jak na mě vyskočila matematika

Jak na mě vyskočila matematika

Potřebuje programátor vysokoškolskou matematiku? Když jsem nastupoval do Jutu jako návrhář a implementátor programovacího jazyka, myslel jsem si, že ji využiji zhruba stejně jako ve své předchozí práci – vůbec. Rychle se ale ukázalo, že jsem se mýlil. Matematika na mě vyskočila hned na několika místech a já si rychle osvěžoval pojmy jako neutrální prvek, afinní prostor nebo dimenzionální analýza. V přednášce bych rád ukázal, kde všude jsem na matematiku při své práci nečekaně narazil a co všechno bych udělal špatně, kdybych jí nerozuměl.

Přednášku je možno chápat jako malý příspěvek do diskuze na témata „Potřebují programátoři vysokou školu?“ a „Kolik matematiky a další teorie by se na programátorských VŠ mělo učit?“

Předneseno na pražském Ruby srazu.

Detaily:
http://srazy.info/prvni-streda-ruby-on-rails/5420
https://www.facebook.com/events/1618055091803470/

David Majda

May 06, 2015
Tweet

More Decks by David Majda

Other Decks in Programming

Transcript

  1. Jak na mě vyskočila
    MATEMATIKA
    David Majda
    Praha, 6.5.2015

    View Slide

  2. INTRO

    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 … | (
    batch :5 seconds: | reduce max('value') by host | @timechart;
    keep time, value | @logger
    )

    View Slide

  8. read … | (
    batch :5 seconds: | reduce max('value') by host | @timechart;
    keep time, value | @logger
    )
    read
    @timechart
    batch reduce
    keep @logger

    View Slide

  9. DEMO

    View Slide

  10. LOGIKA
    ALGEBRA I
    ALGEBRA II
    ALGEBRA III
    ANALÝZA
    TEORIE RELATIVITY

    View Slide

  11. LOGIKA

    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. Konjunktivní normální
    forma

    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)
    (nic)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  32. Neutrální prvek

    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)
    (nic)

    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. Asociativita

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  46. View Slide

  47. View Slide

  48. Monoid

    View Slide

  49. Množina S, operace ⊕ : S ⨉ S → S
    ⊕ je asociativní na prvcích S
    V S existuje neutrální prvek vůči ⊕

    View Slide

  50. ALGEBRA III

    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. Afinní prostor

    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. Dimenzionální analýza

    View Slide

  68. v = s / t
    η = P
    výst
    / P
    vst

    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. ANALÝZA

    View Slide

  79. emit -from 0
    | batch 2 | reduce count()
    | batch 4 | reduce count()

    View Slide

  80. emit … | batch 2 | reduce count() | batch 4 | reduce count()
    { time: 0 }
    { time: 1 }
    { time: 2 }
    { time: 3 }
    { time: 4 }
    { time: 5 }
    { time: 6 }
    { time: 7 }
    { time: 8 }
    { time: 2, count: 2 }
    { time: 4, count: 2 }
    { time: 6, count: 2 }
    { time: 8, count: 2 }
    { time: 4, count: 2 }
    { time: 8, count: 2 }

    View Slide

  81. emit … | batch 2 | reduce count() | batch 4 | reduce count()
    { time: 0 }
    { time: 1 }
    { time: 2 }
    { time: 3 }
    { time: 4 }
    { time: 5 }
    { time: 6 }
    { time: 7 }
    { time: 8 }
    { time: 2, count: 2 }
    { time: 4, count: 2 }
    { time: 6, count: 2 }
    { time: 8, count: 2 }
    { time: 4, count: 2 }
    { time: 8, count: 2 }
    < 2
    < 2
    < 2
    < 2
    ≤ 4
    ≤ 4

    View Slide

  82. Infinitezimály

    View Slide

  83. ε > 0
    ∀x ∈ R, x > 0: ε < x

    View Slide

  84. emit … | batch 2 | reduce count() | batch 4 | reduce count()
    { time: 0 }
    { time: 1 }
    { time: 2 }
    { time: 3 }
    { time: 4 }
    { time: 5 }
    { time: 6 }
    { time: 7 }
    { time: 8 }
    { time: 2, count: 2 }
    { time: 4, count: 2 }
    { time: 6, count: 2 }
    { time: 8, count: 2 }
    { time: 4, count: 2 }
    { time: 8, count: 2 }
    < 2
    < 2
    < 2
    < 2
    ≤ 4
    ≤ 4

    View Slide

  85. emit … | batch 2 | reduce count() | batch 4 | reduce count()
    { time: 0 }
    { time: 1 }
    { time: 2 }
    { time: 3 }
    { time: 4 }
    { time: 5 }
    { time: 6 }
    { time: 7 }
    { time: 8 }
    { time: 2 - ε, count: 2 }
    { time: 4 - ε, count: 2 }
    { time: 6 - ε, count: 2 }
    { time: 8 - ε, count: 2 }
    { time: 4 - ε, count: 2 }
    { time: 8 - ε, count: 2 }
    < 2
    < 2
    < 2
    < 2
    < 4
    < 4

    View Slide

  86. TEORIE
    RELATIVITY

    View Slide

  87. View Slide

  88. Minkowského metrika

    View Slide

  89. ds2 = c2dt2 - dx2 - dy2 - dz2

    View Slide

  90. ds2 = c2dt2 - dx2 - dy2 - dz2

    View Slide

  91. View Slide

  92. View Slide

  93. ZÁVĚR

    View Slide

  94. OTÁZKY?

    View Slide

  95. KAM DÁL?
    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
    http://en.wikipedia.org/wiki/Infinitesimal
    http://en.wikipedia.org/wiki/Minkowski_space

    View Slide

  96. POUŽITÉ OBRÁZKY
    http://commons.wikimedia.org/wiki/File:Torus.png
    http://commons.wikimedia.org/wiki/File:World_line.svg

    View Slide