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

Jak na mě vyskočila matematika

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

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/

Avatar for David Majda

David Majda

May 06, 2015

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