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/

Ebe96461709771a430da9c7c58f9ae5f?s=128

David Majda

May 06, 2015
Tweet

Transcript

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

  2. INTRO

  3. None
  4. None
  5. None
  6. { time: "2015-05-03T09:29:15.000Z" space: "default", source_type: "metric", name: "response_time", value:

    134.675 }
  7. read … | ( batch :5 seconds: | reduce max('value')

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

    by host | @timechart; keep time, value | @logger ) read @timechart batch reduce keep @logger
  9. DEMO

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

  11. LOGIKA

  12. read status = 500

  13. read status = 500 or (status = 404 and url

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

    !~ …)
  15. Konjunktivní normální forma

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

    ∧ (a n,1 ∨ … ∨ a n,m(n) )
  17. read status = 500 or (status = 404 and url

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

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

    = 500 or url !~ …)
  20. ALGEBRA I

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

    m = max(x)
  22. { c: 3, s: 6, m: 3 } read …

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

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

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

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

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

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

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

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

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

    | reduce c = count(x) s = sum(x) m = max(x) (nic)
  32. Neutrální prvek

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

  34. None
  35. None
  36. None
  37. { c: 0, s: 0, m: -Infinity } read …

    | reduce c = count(x) s = sum(x) m = max(x) (nic)
  38. ALGEBRA II

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

  40. Elasticsearch Cassandra read … value > 0.95 | reduce c

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

    = count()
  42. Asociativita

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

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

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

    sigma
  46. None
  47. None
  48. Monoid

  49. Množina S, operace ⊕ : S ⨉ S → S

    ⊕ je asociativní na prvcích S V S existuje neutrální prvek vůči ⊕
  50. ALGEBRA III

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

  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:
  53. read time < :2015-04-01: - :1 day:

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

  56. None
  57. None
  58. None
  59. None
  60. None
  61. m 1 m 2 m 2 t d 1 d

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

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

    P vst
  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
  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
  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
  72. None
  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
  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
  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
  76. None
  77. None
  78. ANALÝZA

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

    batch 4 | reduce count()
  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 }
  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
  82. Infinitezimály

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

    < x
  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
  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
  86. TEORIE RELATIVITY

  87. None
  88. Minkowského metrika

  89. ds2 = c2dt2 - dx2 - dy2 - dz2

  90. ds2 = c2dt2 - dx2 - dy2 - dz2

  91. None
  92. None
  93. ZÁVĚR

  94. OTÁZKY?

  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
  96. POUŽITÉ OBRÁZKY http://commons.wikimedia.org/wiki/File:Torus.png http://commons.wikimedia.org/wiki/File:World_line.svg