Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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. read … | ( batch :5 seconds: | reduce max('value')

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

    by host | @timechart; keep time, value | @logger ) read @timechart batch reduce keep @logger
  3. (a 1,1 ∨ … ∨ a 1,m(1) ) ∧ …

    ∧ (a n,1 ∨ … ∨ a n,m(n) )
  4. { c: 3, s: 6, m: 3 } read …

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

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

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

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

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

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

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

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

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

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

    | reduce c = count(x) s = sum(x) m = max(x) (nic)
  15. Množina S, operace ⊕ : S ⨉ S → S

    ⊕ je asociativní na prvcích S V S existuje neutrální prvek vůči ⊕
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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 }
  29. 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
  30. 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
  31. 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