×Закрыть

Навіщо програмісту математична база та які розділи знадобляться на практиці

Мене звати Олександр Катруша, я працюю Senior Engineering Manager у компанії Innovecs. Я закінчив магістратуру кафедри прикладної математики КПІ у 2003 році, але сьогодні навряд чи візьму складну похідну, не згадуючи вже про диференціальні рівняння чи перетворення Лапласа. Втім маю дещо сказати про користь математики для інженерів.

Для програмування

Виконуючи кожен рядок коду, ми використовуємо набагато більше математики, ніж може здаватися. Адже з математично-шовіністичної точки зору програмування-у-малому — це її підрозділ. Машини Тюрінга, формальні граматики та числення предикатів, алгоритми та структури даних, реляційна алгебра як основа відповідних баз даних, теорія категорій та лямбда-числення у функціональних мовах, теорія множин і теорія об’єктів як основа ООП та багато інших математичних дисциплін — це теоретичне серце програмування.

Так, колеги, коли ви пишете код — ви займаєтеся математикою, хоча наше покоління щасливо стоїть на плечах гігантів: учених, електронників, програмістів, а тому може дозволити собі перейматися прикладними та комерційно цікавими задачами, не думаючи про абстракції математичних теорій і не вигадуючи власних граматик, алгоритмів, компіляторів, процесорів, бібліотек, СУБД й операційних систем.

Неперервна математика добре моделює фізичний світ. Матан, теорія ймовірностей, лінійна алгебра, функан, ТФКЗ, диференціальні рівняння — без них неможливо змоделювати обтікання профілю крила повітрям чи розподіл тепла всередині процесора. На жаль, наша промисловість не генерує достатньо платоспроможного попиту на такі послуги, і їх рідко віддають на аутсорс. Тому більшість проєктів в ІТ-індустрії працює з базами даних, текстовими та бінарними файлами, іншими структурами, що належать до царини дискретки.

Алгоритмічне мислення притаманне всім Homo sapiens, тому програмування середнього рівня можна навчити й гуманітарія чи людину без вищої освіти. Проте рано чи пізно спеціаліст без відповідної підготовки зіткнеться зі своєю «стелею» складності. Небагато пересічних програмістів може пояснити теоретико-множинну сутність left outer join та правильно порахувати кількість записів у його результаті. А брак розуміння декартового вибуху при запитах у базу вряди-годи призводить до величезних проблем із перформансом чи, наприклад, до спроб використання NoSQL баз даних для аналітики.

Так, на наш вік роботи з клепання сайтів і прикручування фреймворків має вистачити для заробітку на хліб із маслом. Якщо ж ви прагнете самореалізації у розв’язанні справді цікавих і складних задач та певного кар’єрного зростання, то маєте оперувати абстракціями та відповідним математичним апаратом.

Спробуйте написати свій компілятор, СУБД, 3Д-моделер, трейдинговий бот, обробник сигналів томографії, контролер бойового дрона, алгоритми криптозахисту чи пошуку таксі у великому місті без застосування математики.

З-поміж прикладів математично містких задач, з якими я стикався: алгоритми українського стандарту цифрового підпису, що базується на еліптичних кривих, операції з матрицями при обробці сигналів сканера зубних і вушних протезів, обчислення рангу гравців у покер залежно від початкової комбінації карт і результату гри, математична аналітика ефективності рекламних кампаній.

Звичайно, у наших аутсорсингових реаліях не так багато задач, для яких потрібно знати теорію з підручника. Але ж і в «найфаангішових» ФААНГах науковою роботою займається чи не один відсоток спеціалістів, всі інші — цілком «галерною» інженерною реалізацією напрацьованих моделей.

Логіки, формальні мови, лінійна алгебра, матан, теорія множин, теорія графів, теорія алгоритмів, теорія складності, теорія ймовірностей та комбінаторика — ось неповний список should, якщо не must have для професійного програміста.

Для мислення

Вчорашнім і сьогоднішнім студентам важко побачити зв’язок між роками, витраченими на математичні теорії, та їх зарплатою чи кар’єрною ланкою в ІТ-індустрії за кілька років після випуску. Вони помічають сотні вакансій на Java, .NET та Angular і одиниці, де згадується математика.

Погоджуюся, що не варто інвестувати забагато часу та сил у дисципліни, які найімовірніше вам не знадобляться. Однак досвід роботи з високими абстракціями, логічне та критичне мислення — чи не найголовніший результат математичної освіти. Якщо ви любили уявляти собі нескінченновимірний простір Гілберта чи доведення теореми про нерухому точку на лекціях з функану, ви з легкістю розберетеся в задачах нині трендового машинного навчання, що є, по суті, оптимізацією у багатовимірному просторі.

Як сказав про одного зі своїх учнів великий математик Гільберт: «Він став поетом — для математики в нього бракувало уяви». І ця уява працює далеко за межами наукових чи технічних задач — це вміння оцінити проєкт, змоделювати або побудувати бізнес, архітектуру рішення, процес CI/CD, потік задач у Kanban чи поведінку партнерів із перемовин, вміння швидко розбиратися у нових парадигмах і мовах програмування та предметних галузях.

Математика впорядковує розум. Чи є щось більш практичне у нашій роботі, ніж щоденне застосування класного мислення?

Для світогляду

Найменш прикладний і формалізований, проте найцікавіший аспект. Свого часу величезне враження справили на мене теореми Геделя. Наша викладачка дискретної математики, нині покійна професорка Тетяна Архипівна Таран, дозволила собі такий філософський висновок з них: «На питання „Чи існує Бог?“ можна відповісти „Так“ чи „Ні“, водночас обидві відповіді можуть бути правильними». Адже у будь-якій достатньо повній формальній теорії, як показав Гедель, є істине твердження, яке неможливо довести у межах її самої. Свого часу це відкриття зробило революцію у математиці та загалом у науці. Виявилося, що спроби цілком формалізувати все навколо приречені на невдачу через саму сутність математики.

Важко збагнути всю глибину цих тверджень на другому курсі інституту. З життєвим досвідом помічаєш, що це стосується багатьох цікавих і важливих питань. Чому неможливо ухвалити закони про виконання законів? Чому неможливо автоматизувати роботу суддів чи законодавців? Чому не дуже працюють смартконтракти чи системи KPI у бізнесі? Чому неможливо винайти єдино правильне релігійне чи філософське вчення? Чому наука нічого не доводить? Чому неможливо написати універсальну програму, яка буде писати програми? Чи можливо створити сильний штучний інтелект на фон-нейманівських машинах? Який зв’язок між генетичним кодом і творами Баха? The truth is out there — інтерпретувати істинність у формальних системах може тільки людина (чи радше людська, поки що, свідомість).

Для зацікавлених переконливо рекомендую книги наших видатних сучасників: The Emperor’s New Mind Роджера Пенроуза, більш популярну і не менш захопливу Gödel, Escher, Bach Дугласа Гофстедтера та Mind and Nature: A Necessary Unity від культового Грегорі Бейтсона.

Теорія ігор також видавалася занадто абстрактною та незрозумілою під час навчання. А от кілька років тому на одному подиху передивився відповідний курс Єльського університету на Coursera. Чудове викладання, професорська англійська та життєві приклади. Це дало непогане розуміння складності та динаміки взаємодії покупця та продавця, гравців за гральними столом, воїнів на полі бою, менеджерів під час перемовин чи партнерів у стосунках. Крім того, це допомогло швидше ідентифікувати ігрові ситуації у житті та ухвалювати більш адекватні рішення щодо стратегії поведінки та своїх цілей у них.

Розглянемо більш нагальне питання. Яка ймовірність того, що людина хвора на К., якщо тест був позитивний, у популяції хворіє близько одного відсотка людей, а точність тесту становить 99% для істинно позитивних результатів і 95% для істинно негативних? За відсутності інших визначних симптомів правильна відповідь — 17%, а не 99%, як може здатися на перший погляд. Тобто позитивний тест підвищує ймовірність хвороби з 1% до всього лише 17%, навіть за такої високої точності! Надзвичайно контрінтуїтивне та водночас важливе під час пандемії знання.

Воно дає змогу не робити передчасних висновків та аналізувати всі можливі причини певних подій. Це приклад застосування баєсівського мислення, яке є одним із базових понять сучасної когнітивної науки та машинного навчання. Згодом починаєш бачити його майже скрізь: в інституті репутації, аналізі гіпотез про поведінку користувачів сайту, ухваленні рішення за відгуками на фейсбуці, до якого ресторану чи лікаря йти.

Математика відкриває багато таємниць фізичного та платонівського світу навколо і всередині нас. Тож любіть і вчить математику — це не тільки хліб, тренування вашого мислення та світогляду, а й неабияке естетичне задоволення.

👍НравитсяПонравилось56
В избранноеВ избранном24
Подписаться на автора
LinkedIn

Похожие статьи




Підписуйтесь: iTunes | Google Podcast | YouTube


Лучшие комментарии пропустить

Так, колеги, коли ви пишете код — ви займаєтеся математикою

суцільна неправда.
коли ми пишемо — ми не займаємся ані філологією., ані тим більш лінгвистикою.

Небагато пересічних програмістів може пояснити теоретико-множинну сутність left outer join

нехай краще пояснить дивлячись план запиту — як він те збирається віддавати у прод

А брак розуміння декартового вибуху

який ще вибух — у ОРМів немає ніякого вибуху. а те що вибухає тра різати на сервіси

Логіки, формальні мови, лінійна алгебра, матан, теорія множин, теорія графів, теорія алгоритмів, теорія складності, теорія ймовірностей та комбінаторика — ось неповний список should, якщо не must have для професійного програміста.

покажіть на яких співбесідах це питають :)

Яка ймовірність того, що людина хвора на К., якщо тест був позитивний, у популяції хворіє близько одного відсотка людей, а точність тесту становить 99% для істинно позитивних результатів і 95% для істинно негативних?

найміть статистика.

Спробуйте написати свій компілятор, СУБД, 3Д-моделер, трейдинговий бот, обробник сигналів томографії, контролер бойового дрона, алгоритми криптозахисту

який відсоток вакансій — в цілому світі — складають такі проекти?

Математика відкриває багато таємниць фізичного та платонівського світу навколо і всередині нас

тим що всередені нас — займається не математика, а цариця гуманітарних наук — філософія і її різноманітні практичні варіанти, як наприклад — наукова методологія.

Звісно що математика — цікава штука. і корисна. але у статті — суцільне перебільшення її корисності для програміста, хоча б суто тому що за озвученний рівень знання — програмістам майже ніде, ні в якому домені не доплачують :)
а от за софт скіли наприклад — значто швидше доплатять.

Програмування — це інженерія, а не наука.
Поставити Гільберта майстром цеху — кому в голову такє прийде?
А у таких статтях натякають що буде велика з того користь виробництву.

Так, колеги, коли ви пишете код — ви займаєтеся математикою

А когда пишете коменты в коде — литературной критикой

Виконуючи кожен рядок коду, ми використовуємо набагато більше математики, ніж може здаватися.

Делая каждое движение мы используем больше физики, чем нам может показаться.
Всем срочно зубрить физику раздел «механика», без неё не сможете двигаться.

Працював я в одній команді де пиляли advanced analytics — кластерінг, форекастінг, трендлайнс і таке інше. Ознайомився з тим, що робить команда і питаю — ви ж знаєте, що у мене і з математикою і статистикою ніяк взагалі, для чого саме мене найняли? І мені кажу — тебе найняли як програміста, ніхто тебе до математики і статистики не пустить і близько — у нас для цього є математики і дата-саєнтісти.

Ну тобто, що воно за кластерінг і які вони бувають розібрався щоб розуміти, що і для чого робимо взагалі, але уся жорстка математика як і перевірка результатів імплементації була на інших дисциплінах.

С одной стороны — математика безусловно нужна. С другой — она совершенно ненужна, с учетом нынешних реалий.
Потому что когда ты пытаешься создать ту самую математическую модель архитектуры проекта, заказчик пучит глаза и тараторит как заведенный: аджайл, хелм, кубернетес, клауд.
Если бы математика была действительно важна, то все миллионеры имели бы ученые степени по математике — уж что-то, а деньги считать надо уметь, верно?
Нет, нифига это не верно! Намного проще их заработать и нанять за гроши какого-то человека, который знает математику и умеет считать.

Так что — да, безусловно математика для программистов нужна, особенно если разрабатывается какой-то игровой движок. И да, математика безусловно бесполезна, если надо сдвигать поля в форме на два пикселя и повышать доход компании на миллионы долларов.

150 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Такс, ну математика це класно. З цим я згоден безперечно.

Але це лиш половина заголовку.

Там було сказано про які розділи найбільше корисні.
Покишо я бачу лиш де-не-де згадки формату поміж іншим.
Вимагаю список в пріоритетному порядку

На вскидку у повсякденні — геометрія, тригонометрія, вся дискретна математика (у тому числі коли пишеш UI через canvas
на javascrip із чартами і т.і.) численніі методи, ленійна алгебра. Я про AI/ML в загалі мовчу.

На вскидку у повсякденні — геометрія, тригонометрія, вся дискретна математика

у повсякденні ... — домен назвіть :)

у тому числі коли пишеш UI через canvas
на javascrip із чартами і т.і.

для цього тра тригонометрія? ну добре — шкільної не хватить?

про домен
навіть у геймдеві і то питаннячко, наскільки оте все тра.
для 2D — там її майже не буде.
для 3D — так, буде.

Я про AI/ML в загалі мовчу

у домені AI/ML.

тобто, як і всюди:
програміст тим краще буде створювати програму, чим краще він розуміє домен.
хоча б тому що розуміє мову замовників «без сурдоперекладу»

але тоді програмісту треба вчити всі ті області — де використовується ПЗ
а то ж да, захоче у NASA для супутників писати, а там — численні методи, які треба оптимізувати під дуже смішне залізо, тіпа — BAE RAD750 processors clocked at up to 200MHz. It has 256MB of RAM and 2GB of SSD. As we near 2020, the RAD750 stands as the current state-of-the-art, single-core space-grade processor. ... the price tag on the RAD750 is around $200k ...
Причому оптимізація буде — як би ото запхати таблиці Брадіса для розрахунків...

Ещё раз скажу — у нас это чисто культурный феномен, имхо.

Если ты умеешь брать интегралы, но смотришь на теорему Гаусса-Остроградского, уравнения Максвелла или множители Лагранжа с выражением лица WTF? то ты просто обученная макака, а не человек, знакомый с азами матана.

И так к любому разделу математики. В школах учат какой-то мутной херне, а не математике (да, исключения есть, но основном это так), а потом этот стиль a la russe уже метастазами проникает и в университеты, где убивает остатки здравого смысла. Формируется какое-то нелепое преклонение перед самыми тривиальным алгебраическими манипуляциями и в обществе формируется миф о важности этих якобы сакральных знаний, хотя там нет ни то чтобы никакой сакральности, но и минимальных знаний.

Mejdu stilem «à la russe» i «à la française» (t.e. à la Bourbaki), mne kajetsa, 4to perviy yavlyaetsa men’shym zlom.

ну смотря о чем речь :)

l’amour à la russe — меня бы такое заставило задуматься: «ну нафиг»

Працював я в одній команді де пиляли advanced analytics — кластерінг, форекастінг, трендлайнс і таке інше. Ознайомився з тим, що робить команда і питаю — ви ж знаєте, що у мене і з математикою і статистикою ніяк взагалі, для чого саме мене найняли? І мені кажу — тебе найняли як програміста, ніхто тебе до математики і статистики не пустить і близько — у нас для цього є математики і дата-саєнтісти.

Ну тобто, що воно за кластерінг і які вони бувають розібрався щоб розуміти, що і для чого робимо взагалі, але уся жорстка математика як і перевірка результатів імплементації була на інших дисциплінах.

Какая неожиданность, оказывается специалисты которые занимались всю жизнь одной темой лучше делают, чем те кто по чуть-чуть нахватались)))

Так же в PrimeSense. Математики писали алгоритмы распознавания человека или жестов, а программисты потом их код доводили до ума (насколько было возможно).

С одной стороны — математика безусловно нужна. С другой — она совершенно ненужна, с учетом нынешних реалий.
Потому что когда ты пытаешься создать ту самую математическую модель архитектуры проекта, заказчик пучит глаза и тараторит как заведенный: аджайл, хелм, кубернетес, клауд.
Если бы математика была действительно важна, то все миллионеры имели бы ученые степени по математике — уж что-то, а деньги считать надо уметь, верно?
Нет, нифига это не верно! Намного проще их заработать и нанять за гроши какого-то человека, который знает математику и умеет считать.

Так что — да, безусловно математика для программистов нужна, особенно если разрабатывается какой-то игровой движок. И да, математика безусловно бесполезна, если надо сдвигать поля в форме на два пикселя и повышать доход компании на миллионы долларов.

таке враження, що більшість коментуючих вайтішники з манікюрних салонів

Та ні, наприклад, я трохи шарю в архітектурі. А Ви?

Дякую. Я шарив в математиці.

І результат?
Математик пішов в менеджмент, а хімік пише код.
Де кореляція?

Такое впечатление, что вторая половина — отрицает факт существования айти за пределами бэкенд разработки

І виявити те просто — 20 хвилин на співбесіді. Можу допомогти, з простими питаннями з названого у топіку. За так. Тільки з умовою — всіх ваших програмістів що не пройдуть -ви звільняєте.

Ооо — я навідь знаю кого звільнять з такими умовами. Щось тут токсинами запахло.

Якими ще токсинами. Проста «перевірка» на те — а самі адепти вірять в свої лозунги, чи ні.

Бо я думаю що насапред за незнання математики яка «вкрай потрібна програмісту» будуть звільняти досвідчених. Бо вони давно закінчили вуз

Хочеться почути про такий експеремнт, або питання на співбесідах від авторів подібних статей.

А то виходить — той що рекламує тібетьські пігулкі — сам лікується у звичайних лікарів та приймає оту жахливу отруту від фармацевтів

Дякую. Досить двох запитань.У більшості випадків друге- для очистки совісті.

Круто! Все що потрібно знати з математики вміщується в одне питання, і саме головне — ваши програмісти пройшли таку перевірку

Однозначно плюсую.
Математика розвиває мислення і уяву. Крім того, якщо програміст хоче вирости, йому без математики не обійтися. Хоча, вагную наліт критиків, які скажуть, що це не так, то зразу скажу, можливо в умовах проєктів в Україні того дійсно не треба. Наразі...

якщо програміст хоче вирости

Скільки топ-менеджерів Глобал Лоджіка зараз добре знають математику?

скотолоджик скорее антипример. эта контора мир вперёд не двигает и двигать не будет

эта контора мир вперёд не двигает

Простите, а зачем его куда-то двигать?

и вправду, цель аутсорса не в этом. и чего это я романтизирую ....

Цель любого бизнеса — заработать деньги, продавая что-то. Не знаю, чего вы там себе нафантазировали.

сколько бизнесов и было и сколько подняли?

Типовий коментар типового українського офшорного гребця — вирости для якого означає тільки стати погоничем. Бажано чим повищого рівня.
ДумайТЕ.

вирости для якого означає тільки стати погоничем.

Зарплата топ-менеджмента ВСЕГДА на порядки выше зарплат ЛЮБЫХ гребцов.
Даже тех, кто перерешал весь литкод с закрытыми глазами одной рукой.
Очень странно этого не понимать.

Зарплата топ-менеджмента ВСЕГДА на порядки выше зарплат ЛЮБЫХ гребцов.
Даже тех, кто перерешал весь литкод с закрытыми глазами одной рукой.

от зараз обідно трохи :(

Погонщики становятся топ-менеджерами примерно как и гребцы — чуть чаще чем никогда. Обычно погонщики становятся просто старшими погонщиками, и редко зарабатывают больше породистых гребцов

Я и не говорю про погонщиков. Я говорю про топ-менеджмент. К «успешному успеху» по сути 2 пути.
1. Собственный стартап, который реально позволяет разбогатеть его фаундеру чуть реже, чем никогда.
2. Топ менеджмент, в который что гребцы, что погонщики пробиваются чуть чаще, чем никогда.

А що для Вас вирости? Написать пет проект, отримать +500 за рік від погонича, і працювать надалі на нього?

’embedded C++ tech lead / arch’ мене питає, що таке вирости?? В моєму розумінні, якщо людина має такі лички, то вже б мала самостійно прийти до того, що таке ’вирости’. Що вирости навіть в аутсорсі має різні значення. Про продуктові компанії підказати? Про стартапи?
Хоча згоден, що в переважній більшості аутсорсингових компаній в Україні кар’єра, це гребець -> погонич. І там математики скоріше за все не потрібно. З іншого боку одне із значень ’вирости’, це як вибратися за межі такої примітивної схеми, якщо вона не влаштовує.

Про продуктові компанії підказати? Про стартапи?

Підкажіть, коли знаєте.
В сусідній темі як раз про стартап було dou.ua/forums/topic/32643

Логіки, формальні мови, лінійна алгебра, матан, теорія множин, теорія графів, теорія алгоритмів, теорія складності, теорія ймовірностей та комбінаторика — ось неповний список should, якщо не must have для професійного програміста.

Я правильно понимаю, что все программисты в вашем Innovecs разбираются во всех перечисленных областях математики? А если не все, то, получается, в Innovecs работают непрофессиональные(по мнению их Senior Engineering Manager) программисты?

Навряд чи, це така собі ідеальна картина у моїй уяві.

это вы ща список для условного ШАДа привели?

А вы сами на данный момент сколькими из перечисленных вами дисциплин владеете?

8/10 вчив у інституті, інші почитував самостійно. Залежить, звичанйо, від вашого видначення «володіти».

«Владеть» это, очевидно, уметь применить на практике в работе. Сколько из этих дисциплин вы можете использовать в работе прямо сейчас?

Очевидне для вас може бути зовсім неочевидним для інших...

Теорію множин важко уявити в роботі — хоча ті самі джойни в SQL — що як не операці над множинами? Теорія ймовірностей, комбінаторика — в геймінгу прямо зараз.
Матан, лін. аглебра — базові дисципліни. Хоча операції на матрицях, наприклад, у 3Д скануванні (не в моїй роботі, але знаю тих, хто використовує).

Формальні логіки і мови — напряму ні, якщо не пишете свій компілятор чи мову програмування. Але допомагає розуміти як працює компілятор та як дебажити код, наприклад. Чи читати нотації Бекуса-Наура.

Ну, і я не працюю 100% програмістом зараз.

Я не спрашиваю где можно применить тот или иной раздел математики. Мой вопрос был — сколько из перечисленных вами дисциплин лично вы можете применить в работе вот прямо сейчас, если вдруг понадобится? Вот приходит, например, задача в команду и вы такой «а, так если тут определить эйгенвекторы на правильно выбранном гильбертовом пространстве, то работы будет в два раза меньше». Или «смотрите, модель описывается вот такой системой диффур, вот вам тасочка имплементировать численный метод для ее решения».

Еще раз, я не спрашиваю _занимаетесь_ ли вы таким. Мой вопрос — ваш текущий уровень владения математическими дисциплинами позволит ли вам в случае чего решать подобного рода задачи?

Мой вопрос был — сколько из перечисленных вами дисциплин лично вы можете применить в работе вот прямо сейчас, если вдруг понадобится?

я на це питання наче і відповідав.

Мой вопрос — ваш текущий уровень владения математическими дисциплинами позволит ли вам в случае чего решать подобного рода задачи?

Скажімо так, мій поточний рівень володіння дозволить за економічно більш-менш обгрунтований час згадати теорію, розібратися та вирішити ці задачі. Або, в ролі менеджера знайти відповідних людей, поставити задачу та проконтролювати виконання.

мій поточний рівень володіння дозволить за економічно більш-менш обгрунтований час згадати теорію, розібратися та вирішити ці задачі

любий програміст може написати любу програму

питання ж було — як часто ви те робите в своїй роботі
згадуєте теорію та вирішуєте ці задачі

Або, в ролі менеджера знайти відповідних людей, поставити задачу та проконтролювати виконання.

звісно що краще звернутится до фахівців з математики, коли треба метематика, а не до програмістів, які її забули бо не користуються нею у своєї повсякденної роботі :)

а про контроль — то взагалі цікаво — ви особисто перевіряєте математичні розрахункі?
як часто те робите?

Понял. Вы писали, что закончили примат КПИ примерно 18 лет назад. Сколько времени в месяц в среднем вы выделяете на то, чтобы поддерживать должный уровень знаний по перечисленным вами математическим дисциплинам?

Важко сказати. В середньому, може кілька годин. І в принципі не з метою підтримки, а більше з цікавості чи для конкретної задачі.

По несколько часов на каждую из 8 дисциплин или несколько часов всего?

Теорію множин важко уявити в роботі — хоча ті самі джойни в SQL — що як не операції над множинами?

знавець операцій над множинами може швидко себе перевірити:
leetcode.com/problemset/database

а зазвичай — на сторінці у вікипедії вже написано набагато більше чим треба.
і там нема ніяк про те, що зазвичай операція джойна у SQL то обхід колекцій, з порівняннам по вказаному логічному виразу

Теорія ймовірностей, комбінаторика — в геймінгу прямо зараз.

так. але зазвичай те все приходить як частина бізнес-логіки, а не розробляється програмістом.
програмісту навіть буде заборонено змінювати ці алгоритми.

Але допомагає розуміти як працює компілятор

щоб розуміти те — краще подивитися на рівень нижче. у асемблер, або байт код.
тоді так, може допомогти дебажити код.

Чи читати нотації Бекуса-Наура

точно для цього тра мати математичну освіту, щоб вміти їх читати?

ну от наприклад
скільки часу треба щоб навчити дорослу людину прочитати опис:
dev.mysql.com/...​refman/8.0/en/select.html

Вибачте, не розумію, до чого ви ведете чи що хочете довести. Чи можна програмувати, не знаючи математики? Звісно можна, як я і пишу в статті.

Вибачте, не розумію, до чого ви ведете чи що хочете довести.

до того що не тільки програмісти, а зазвичай і ті хто пише такі статті — НЕ займаються математикою :)

Чи можна програмувати, не знаючи математики?

а можна програмувати не знаючи сольфеджио?
Звісно можна.
Але кращи знати сольфеджио. Це розвиває фантазію, розуміння різних видів нотатків, а як доведеться писати обробку звука — допоже

Вчить сольфеджио!

НЕ займаються математикою :)

Я наче і не стверджував, ща займаюсь. Вчив, цікавлюсь, інколи застосовую.

Я наче і не стверджував, ща займаюсь

... які розділи знадобляться на практиці ...
тобто ви особисто — не займаєтесь математикою на практиці.
звідки тоді знаєте що тра програмісту у практиці?

... колеги, коли ви пишете код — ви займаєтеся математикою ...
тобто пишите код, завдяки математиці скільки годин в день? ну той що піде в прод.

та як дебажити код

а багофіксінгом — займаєтесь?

тобто ви особисто — не займаєтесь математикою на практиці.

Займаюсь, небагато.

тобто пишите код, завдяки математиці скільки годин в день? ну той що піде в прод.

Мав на увазі, що програмування засноване на математиці і завдяки ній і існує. Коли ви чи я пишемо код, то її безпосерденьо використовуємо (хоча б у вигляді формальної граматики).
Якщо ви зрозуміли по-іншому — то вибачайте.

а багофіксінгом — займаєтесь?

звичайно

Мав на увазі, що програмування засноване на математиці і завдяки ній і існує.

А людина — заснована на генетиці та біохімії. Тому, коли люди розмножуються — то безпосередньо використовують ці дві науки, разом з математикою та механікою.

Тобто, вчити генетику та біохімію не потрібно? Достатньо просто розмножуватись?

Тобто, вчити генетику та біохімію не потрібно? Достатньо просто розмножуватись?

Думаю, відповідь можуть дать Ваші предки. Якби вони спочатку вчили біохімію — Вас би не було.

Тобто, вчити генетику та біохімію не потрібно? Достатньо просто розмножуватись?

тобто щоб розмножуватись — тра вчити генетику та біохімію?

Мав на увазі, що програмування засноване на математиці

взагалі то — ні :) саме програмування не засновано на математиці.
і існувало б і без неї. ви просто історію розвитку програмування неуважно читали.

Користування інструментом і його створення — це зазвичай зовсім різні речі, види діяльності.
Так і вивчення, та вдосконалення інструменту на вимогу — користувачів.
Господиня на кухні навряд чи знає ази металоведення, та не займається виплавкою каструль.

Коли ви чи я пишемо код, то її безпосерденьо використовуємо

ні. коли ми пишемо код — ми насамперед використовуємо те що Хомскі (Noam Chomsky) називав граматичним інстинктом та логіку.
Перевіряється просто — дитину можна навчити писати код — причому вона має поганеньки оцінки навіть з шкільної математики.

Для того щоб потім цей юнак розібрався з протоколом http — йому теж не треба знати оте все
Щоб написати код на мейнстрім мові — йому теж треба знати не математику — а правила описані у всякіх Clean code, патерни, і т.і.

і перевіряється це все, як вже писав просто:
питаннями на співбесідах де питають — важливе, те що дає можливість оцінити навички — програмування

як би математика була такою навичкою — були б питання з неї.

але те що я бачу по дітях, коли показую як запропрограмувати вирішення вправи з підручника математики(ой як вони в перший раз жахаються, коли їм показую — у вас такий підручник?) — причому не знаючи математичного рішення — то бачу витаращені оченята: «математики не знаю — а завдання — вирішує!»

хоча б у вигляді формальної граматики

граматичні правила вчать і у школі.
але користування мовою — не потребує навіть їх знання, як в школі і знають — чим більше дитина читає — тим менше вона робить помилок.

і думаю кожен дивувався, коли вчив іноземну мову — скільки речей про власну мову він і не знав.

звичайно

ну тоді добре, може колись матиме час та бажання, та розкажете — як ви кожен день фіксаєте баги за допомогю математичної бази.

я ще таких статей не зустрічав, буде — бомба!

Якщо спір по значення термінів займатись / використовувати, то так, «використовуємо» скоріше, ніж «займаємось». Можете вважати моє «займатись» літературною гіперболою.

але користування мовою — не потребує навіть їх знання

Коростивання мовою програмування — потребує, чи не так?

я ще таких статей не зустрічав, буде — бомба!

Та отож, коментаторів, на жаль, багато більше за авторів.
Дякую за розмову.

то так, «використовуємо» скоріше, ніж «займаємось»

і не використовуємо.

Коростування мовою програмування — потребує, чи не так?

не так.
я навіть зустрічав статті євангелістів Haskell — де вони переконували що вам не треба теоркат!

Та отож, коментаторів, нажаль, багато більше за авторів.

то так :) коментарі легше писати ніж статтю :)

Дякую за розмову.

шкода, але не вийшла.
я ж не один рік допитуюсь у авторів таких статей.
поки відповідь не второпав.
мабуть тра вчити те ще вони написали :)

звідки тоді знаєте що тра програмісту у практиці?

З досвіду інших програмстів та менджерів.

З досвіду інших програмстів та менджерів.

А ті інші не наважились тут писать про математику. Чомусь. Може, не мають часу за практичними справами. Або передбачили результат.

Так, коментарів набагато більше за авторів, на жаль)

Ви б хотіли, щоб ніхто не коментував?

Хотів, аби більше писали статей. А коментувати — будь ласка. Більше трафіку мені :)

Тоді в статті буде [0; 1] комент в середньому, мабуть.

З досвіду інших програмстів та менджерів.

ну тоді я не програміст.
бо не чув і не читав про такий загальний досвід програмістів — кожен день я використовую щось з ...
інколи звісно буває, коли на експертах хочуть зекономити...

але щось не пам’ятаю ані у фаулерів, ані в усяких «програміст прагматик» — нічого з названного вами.
вони теж не програмісти.

менджерів

це мабуть жарт. а менеджери звідки такі вправні у математиці??

бо не чув і не читав про такий загальний досвід програмістів — кожен день я використовую щось з ...

Якщо вам важко відрізняти «існує» від «для всіх», то можна почитати про квантори, це у математиці.

Всього найкращого.

Якщо вам важко відрізняти «існує» від «для всіх»

мені неважко зрозуміти відсутність раціональних аргументів у тих хто записав себе в вивчавших рафіновану раціональність під назвою — математика :)

Культурная проблема эта — чудовище, раскармливающее само себя: ученики узнают о математике от учителей, а учителя — от своих учителей, и непонимание и неприятие математики нашей культурой поддерживается бесконечно. Хуже того, бесконечная поддержка этой псевдоматематики с упором на точную, но неосмысленную манипуляцию с символами, создает свою культуру со своими ценностями. Адепты ее получают громадную самооценку от своих успехов. Меньше всего они хотят слышать о том, что математика в первую очередь — чистые творчество и эстетика. Многие выпускники университетов, которым десяток лет говорили, что у них талант к математике, с ужасом осознают, что к настоящей математике у них нет никакого таланта, и что на самом деле их талант следовать указаниям, и только. А математика — это не следование указателям, это расстановка указателей.
...
Почему мы не хотим, чтобы наши дети научились математике?

Пол Локхард «Плач математика»
(... защитил диссертацию в университете Коламбия в 1990 г., и был сотрудником Института математических исследований (MSRI) в Беркли и профессором в университете Брауна (шт. Род-Айленд) и в университете Калифорнии в Санта-Круз ...)

Вот только эта цитата относится к тому чем занимаются современные учёные-математики. В зависимости от глубины программы университетского курса он на 90-100% состоит из того что было известно 100 лет назад. Так что ваша цитата относится к перечисленному в статье примерно также как к курсу школьной арифметики

Вот только эта цитата относится к тому чем занимаются современные учёные-математики.

эта работа, «Плач математика» — математика о предаствлениях о математике широкими народными массами. которые, по его мнению, математика — в корне неверны.
(там еще в предисловии:
После нескольких лет преподавания математики в университете Пол решил вернуться в школу и учить детей. В 2000 г. он нашел работу в школе св. Анны, где, по его словам, «счастлив преподавать настоящую математику самым подрывным образом».)

она о том что умение нажимать кнопки на калькуляторе — это не занятия математикой, и даже не знание математики.

она о том что например, ...
загуглил, первая ж ссылка «Решение квадратных уравнений»
Квадратные уравнения изучают в 8 классе, поэтому ничего сложного здесь нет.
Пусть дано квадратное уравнение ax^2 + bx + c = 0. Тогда дискриминант — это просто число D = b^2 — 4ac.

Эту формулу надо знать наизусть. Откуда она берется — сейчас неважно.
(конец цитаты)
... математика как раз в этом — неважно.
а «знать наизусть» — это не математика, а А-БА-БА-ГА-ЛА-МА-ГА

так же как те кто сталкивался знает — на курсах для вайтинишников обычно НЕ учат программированию. и в итоге даже в джуны не возмьешь, чел как был до, так и после остался вне профессии программиста.

Так что ваша цитата относится к перечисленному в статье примерно также как к курсу школьной арифметики

цитата к тому что работающий за компьютером человек — обычно не занимается программированием.
как и геймер — не програмист в геймдеве.

тьмы людей, и программисты в частности — используют достижения математики в своей профессиональной деятельности.
при этом — нифига не смысля в математике, как и геймеры — в аффинных преобразованиях и шейдерах

из свежего, о пользе математики
Понадобилось бизнесу чтобы система
Распределяла между X потребителями Y ресурса, по правилам:
Потребители отсортированы по критерию n
Каждому последующему потребителю ресурса меньше чем предыдущему
Чтобы было справедливо: крайне важно
Чтобы было красиво: очень надо

Услышали молодые да задорные, «вчера» с вуза
Да это ж гладкая функция получится!

Ок, говорю, делайте, раз глаза горят
Недели полторы мурыжили, гаусом мучили, получили функцию!
Даю бекендеру.
Первые ж прогоны на реальных данных:
Когда ресурса Y много бизнес забраковал — несправедливо!
Вторые прогоны когда ресурса мало — некрасиво!

Еще неделя пошла — понатыкали коэффициентов, NaNы поотлавливали, ну-у-у, сказал бизнес, не очень справедливо, не очень красиво, но ладно, приемлимо.

Появилось у меня время, полез я в тот код, смотрел, смотрел, да и выкинул нафик.
И написал двухпроходное распределение на чистой арифметике. Почти чистой. Один из эвристических коэфициентов был основанием логарифма.
Показал бизнесу — О! справедливо и красиво!

А то, хмыкнул я себе, знаю я вашую математику, логарифм — великая штука!
Сколько раз в жизни выручал, чтобы за день, два сделать

Потом еще подобное ж попросили, но времени не было, поэтому пришлось сразу самому делать.
Итого за пару дней в сумме. там еще великую математическую мудрость пришлось добавить — адаптивный сдвиг средней величины на основе нескольких средних. и логарифм конечно есть, а как же без него, очень удобная штука.
Плавали, знаем как математикой бизнес удовлетворять.

Учите математику — неделями будете делать!

(на Радио-т как-то Умпутун рассказывал, как замучила их штатная экономистка, увидев в алгоритме некоторый изъянчик. День просидели, не смог отбиться что ерунда это. Оказалось в итоге, что при некотором виде обработки, разница будет пара десятков центов на миллиардных суммах. Раз в году, в отчете для какого-то федерального регулятора. У одного из клиентов. Аналогичный которому когда-то на такое сказал — регулятор в курсе, у нас расхождение было в пару десятков долларов, и поэтому мы просто платили тыщу баксов по этой графе, всегда, да и все)

Понадобилось бизнесу чтобы система
Распределяла между X потребителями Y ресурса, по правилам:
Потребители отсортированы по критерию n
Каждому последующему потребителю ресурса меньше чем предыдущему

 Не особо понятная задача. Убывание обратное экспоненте — да как раз логарифм в тему umath.ru/calc/graph/?&func=ln(x). Но корень квадратный по идее тоже в тему umath.ru/...​alc/graph/?&func=sqrt(x) Можно подробности по «гладкой функции» ?

Не особо понятная задача

что ж в ней непонятного?
надо просто формализовать понятия «справедливо» и «красиво»

во втором случае конечно я приврал, и описал окончательную реализацию.
через несколько недель работы моей первой в проде, выяснилось, что в некоторых случаях потребители жалуются «сурово как-то»
так что ТЗ изменилось(не поверите, оно всегда меняется), и пришлость подумать и учесть новое требование:
«и чтобы несурово»

но и еще правда: бизнес, зная муки в первом случае предлагал потратиться и привлечь эксперта, математика какого-нить.
удалось убедить, дать мне «пару дней». не для понтов, просто ситуация что при реализации «формулы» внешнего эксперта математика придется мучиться, корячиться на реальных данных — на моем скромном программерском опыте — типичная.

Поэтому и история от Умпутуна вспомнилась, очень родная(хотя где я, а где он, с их продуктом обслуживающим клиентов связанных с фондовой биржей).
Везде так, в моем домене — ПО для бизнеса.

Это ж математика (из моей коллекции):
— Чистая математика — это такой предмет, где мы не знаем, о чем мы говорим, и не знаем, истинно ли то, что мы говорим. (Бертран Рассел)
Математика представляет собой собрание выводов, которые могут быть применены к чему угодно. (Бертран Рассел)
(иллюстрация из современности:
Десятимерная теория струн на более привычных масштабах должна, естественно, сводиться к известной и ОЧЕНЬ хорошо проверенной физике элементарных частиц. Но, как выясняется, способов такого сведения существует по меньшей мере 10^100, хотя не исключено, что и 100^500(стопицот), а то и вовсе бесконечность. При этом каждая из получившихся четырёхмерных теорий описывает свой собственный мир, который может быть похож на реальность, а может и принципиально отличаться от нее)
— Математика — это единственный совершенный метод водить самого себя за нос. (Альберт Эйнштейн)

Но корень квадратный по идее тоже в тему

пробовал, не прижился. логарифм лучше и понятней.

И завершу афоризмом из моей коллекции, почему математика слаба в бизнес-логике:
— В математике нет символов для неясных мыслей. (Анри Пуанкаре)

Формализуйте все же
«плохая программа»
а потом возьмитесь за
справделиво, красиво, сурово

и просто обычные чаяния пользователей.

Можно подробности по «гладкой функции» ?

нельзя. даже не из-за «NDA»
а из-за кучи работы:
надо предоставить бизнес требования
надо предоставить наборы данных
надо показать одну реализацию и вторую
надо рассказать, показать, что в изначальном подходе сразу настораживало, попахивало фейлом, а что во втором обеспечивает гарантированную стабильность удовлетворяющего результата, и на каких общих идеях для подобных случаев базируется второй подход

и тогда, может быть, будет понятно о чем я.
но думаю все равно будет холивар, потому что адепты математики слабы в — философии математики. хотя сами то настоящие математики, давно задаются вопросом
там почему же эта абстрактная хрень так удобна при описании мира вокруг? (в теистическую эпоху они отвечали себе на этот вопрос — Потому природа написана языком математики. Но эпоха постмодерна разрушила это наивное представление)
адепт не задается такими вопросами — для него математика это догма, написанная на скрижалях Завета
а с догматиками бессмысленно дискутировать.

Как там у Ницше было
Для крепких лбов лучший аргумент — кулак

Математика с практической точки зрения это набор абстракций и инструментов для работы с ними. Если кто-то пытается забивать гвозди отверткой, то тут проблема явно не в отвертке

А если кто-то использует шуруповерт, о котором математики не рассказывают?

Если сократить то выйдет
Нужно делать как нужно, а как не нужно — не нужно делать.

Виконуючи кожен рядок коду, ми використовуємо набагато більше математики, ніж може здаватися.

Делая каждое движение мы используем больше физики, чем нам может показаться.
Всем срочно зубрить физику раздел «механика», без неё не сможете двигаться.

Понимание основ механики очень даже полезно для понимания, например, основ рукопашного боя.

Любой чемпион рукопашного боя не имеет в рукопашном бою шансов, против, например, медведя. Который никогда не изучал ни физику, ни анатомию.

чемпион рукопашного боя не имеет в рукопашном бою шансов, против, например, медведя

Внєзапно www.youtube.com/...​l=KyokushinLegendFighters. Мотай на 3:45.

Простите, а медведь вообще был в курсе, что с ним дерутся?:))
А вот когда мишка сам решает подраться, это выглядит чуть иначе (с 1:00).
youtu.be/myfNtsaFmro

Понимание основ механики также полезно для эфективного применения холодного оружия вроде рогатины, топора или арбалета, изготовления этого самого оружия а также капканов и других ловушек, при помощи которых шансы победить медведя значительно возрастают.

Ни понимание основ механики, ни навыки изготовления рогатин и арбалетов не нужны и не помогут, если сениорская зарплата позволяет сделать разрешение и купить дробовик 12-го калибра, сводя шансы медведя к разряду «miracle».

С дробовиком против медведя... ещё бы предложили с... в общем написать на него )))

Выглядит со стороны как реклама препода прикладной математики, и ничего что Кнут написал «Конкретную математику» именно для таких случаев. Cупер каноническая книга для школьников, которые хотят в программирование — можно читать уже с 8-9го класса.

Це якого саме препода?

Скорее как реклама математики от препода математики...
Не, я конечно умею в эти всякие ваши полиэдральные трансформации на решётках в Гильбертовом пространстве, и рассматриваю ML тоже как сугубо оптимизационную задачу... опус по теме короч, и со всем согласен. Просто удивился что не упомянули канонический труд.

Я не препод, але чом би й ні, не прорекламувати...
Кнута так, важливе доповнення, але сам не читав :/

Я бы ещё добавил комбинаторику.

наче є:

теорія ймовірностей та комбінаторика — ось неповний список should

А, точно, я поиском по слову «комбИнаторика» не нашёл. Тексты обычно читаю «по диагонали», как и в этот раз.

Почитал, поностальгировал о студенческих годах, пошел крудошлепить дальше.

Дякую що ви написали цю статтю. Фраза «математика не потрібна в програмуванні» вже відверто набридла, іньша справа що математика це зовсім не та «спортивна екзікуція» яку ми пам’ятаємо зі школи чи перших курсів універу де чомусь задавали вирішувати по 300 інтегралів. Не кожен може стати олімпійським чемпіоном — але фізкультурою може займатися кожен.

Ну на первых курсах обычно базовые матан и линейка, ничего такого

Почему-то в постсоветских странах все так носятся с математикой для нематематиков. Царица наук же.

Не быть идиотом — это не значит непременно понимать теорему Стокса.

Карго-культ времён ликбеза какой-то.

В любой инженерной дисциплине используется тот или иной математический аппарат. Если вы им не владеете — то либо сами приходите к нему в ходе практики с само образованием — либо творите нечто не совсем грамотно спроектированное. И вот ваша программа из за вновь изобретенных наивных алгоритмов вроде сортировки пузырьком и т.п. работает крайне медленно и при том потребляет всю доступную память. Да и код настолько сложен как и мышление его породившее — т.е. коллеги не могут его сопровождать т.е. эффективно быстро вносить нужные изменения и дополнения и исправлять ошибки. Ну а из информатики мы знаем что «математика наиболее точная форма представления информации».

В любой инженерной дисциплине используется тот или иной математический аппарат

а программирование такая интересная штука, что есть частое, и считаю вполне оправданным — что это и НЕ инженерная дисциплина.
процесс разработки — так точно.

И вот ваша программа из за вновь изобретенных наивных алгоритмов вроде сортировки пузырьком

пользуйтесь развитой экосистемой. в которой со времен динозавров все это написано.

а если не написано — возьмите любое написанное и портируйте на свой ЯП

Да и код настолько сложен как и мышление его породившее

математика не занимается — мышлением

т.е. коллеги не могут его сопровождать

потому что код надо писать для — человеческого мышления.

откройте идеальный код на скале писанный хаскелистом — и попробуйте: эффективно быстро вносить нужные изменения и дополнения и исправлять ошибки

мы знаем что «математика наиболее точная форма представления информации».

тогда почему вы пишите на русском языке?

тогда почему вы пишите на русском языке?

далеко не только на русском. И если что то буквы которые вы сейчас читаете — получены из байтов переданных по сети и полученных от скан кодов клавиш клавиатуры. Эти самые байты (числа) кодируют положение символа букв в таблице кодировки UTF-8. Браузер и операционная система вместе с видео драйвером — когда малюют (растеризирует) вам этот символы на мониторе выбират функцию шрифта по номеру символа и выполняют задачу аппроксимации, чтобы символ на мониторе выглядел читабельно. Монитор в свою очередь логически описывается как матрица пикселей. Пиксель тоже 4-ре байта описывающий цвет в RGBA формате и т.д. и т.д.. Так что чтобы просто по флудить в интернете — математикам, электронщикам, программистам и всем философам и ученым начиная от Аристотеля с Архимедом пришлось изрядно пошевелить мозгами.

И если что то буквы которые вы сейчас читаете — получены из байтов переданных по сети

то есть когда мы пишем скажем тушью — то мы становимся химиками?
и если мы не знаем как изготовливается бензин — в бак его залить не получится, а уж тем более доехать с пункта А в пункт Б?
ну или ладно, когда в розетку что втыкаем — как же без того что бы перед этим не решить уравнения Максвелла?

Или мне рассказывать что такое — информация, и какая отдаленная у нее связь с носителем?

получены из байтов переданных по сети

так почему битами и не писать?

Так что чтобы просто по флудить в интернете

нужно знать русский язык, и иметь мысли в голове.
иначе — никакие байты в UTF-8 и пиксель тоже 4-ре байта описывающий цвет в RGBA не помогут.

Так поясните связь — информации которая содержится в сообщении и байтов с RGBA?

откройте идеальный код на скале писанный хаскелистом — и попробуйте: эффективно быстро вносить нужные изменения и дополнения и исправлять ошибки

Плохую программу можно написать на любом языке программирования.

что такое — плохая программа?
на языке математики пожалуйста, а не на русском.

Так целая дисциплина есть которая это описывает — Теория Алгоритмов ru.wikipedia.org/wiki/Теория_алгоритмов В общем RTFM wikimedia.org/...​fe364d240c445c36156541f36

Сможете применить теорию алгоритмов, например, к этому?
github.com/chromium/chromium

Сколько платите ? Я там просто бывал уже неоднократно по прошлой работе, ещё когда это был WebKit и один репозиторий с Apple, неблагодарное это дело :) А в целом есть статические анализаторы которые давно могут собрать автоматически нужные вам метрики из крайне большого объёма кода (информации) чтобы вы смогли их анализировать. Они в том числе могут анализировать сложность и отдельных функций и дизайна в целом и т.д. Можно конечно и «хаскелизмом» позаниматься и «доказать» что хаскель лучше плюсов и пощеголять этим над плюсовиками в их конференции но оставим это ...

да я не плачу. просто интересно, как потому этот анализ поможет.

Ну если вам «кажется» что код написан плохо, много операторов мешанина и т.д. — то вам не кажется, это профессиональная интуиция т.е. быстрый анализ мозгом на основе предыдущего опыта. Но в целом есть наука и математические методы которые могут доказать что так оно в самом деле и есть. Разные статические анализаторы созданы не на пустом месте, так же идет научный поиск в языках программирования и т.д. Кстати это можно использовать спокойно в бизнесе — чтобы предметно доказать с фактами начальству или клиентам что нужно переделать какую-то подсистему или что-то сделать с азиатскими коллегами и т.д. Не «ныть что код плохой» и «индейцы тупые» — а предметно числами доказать — что да плохой и да — тупые. Вообще когда есть числа предметно разговаривать значительно проще. Тут как объявлениями о работе «компенсация выше чем по рынку», вот мой вопрос — «выше» это конкретно сколько ? P.S. Да здравствует Аксиома Архимеда

А как утилиты оценивают сложность домена? Можно сказать, что наш вектор написан проще, чем Judy Array у индусов. Может, даже, индусов уволят, и посадят тебя писать их задачу. Где гарантия, что ты сможешь написать проще, чем они?

самое показательное того что математика не учит абстрактному мышлению это то как ее адепты ведут дискуссии.

они вообще не понимают(или делают вид что не поняли) о каких уровнях абстракций речь, когда им задаешь вопросы о применении математики в ежедневной работе программиста.

тоже самое с адептами функционального программирования.

Так, колеги, коли ви пишете код — ви займаєтеся математикою

А когда пишете коменты в коде — литературной критикой

а когда вбрасываете на доу — экзерсисы исполняете в эпистолярном жанре

Я займався популяризацією дотичної теми — теорії категорій для програмування. Й справді, твердження про те, що коли ми пишемо код — ми займаємося математикою доводиться теоремою Каррі-Говарда. Але чи це знання якось допомагає при написанні коду?

За років 5 власних роздумів та досвіду все ж таки думаю, що це реально не потрібно для 99% програмістів. Це прикольно, красиво і круто, але застосувати то все нормально можна лише на складних проектах (типу компіляторів, фреймворків чи чогось наукового).
Розуміння функторів та монад в рез-ті просто зводиться до інтуїтивного сприйняття колекцій та контекстів. І при веб-розробці особливої погоди не зробить.

Значно крутіше математика виконує свою роль при вивченні світу в рамках фізики. Ось там реально крута область застосування — розшарування, Ріманнові многовиди і т.п. Звісно і в програмуванні є цікаві штуки, але вони наразі більше про науку, аніж щоденну інженерну роботу: залежні типи (тут і гомотопії, і розшарування, і можливість програмувати диференціальний аналіз прямо в IDE), алгебраїчні типи та матаналіз побудований на них (звідси, такі структури як Zipper випливають).

З теорії категорій мені найлегше заходили праці William Lawvere (він навіть надіслав свою монографію бандероллю).

Але простого вступу для програмістів без когомологій і іншої мехматятіни я досі не бачив...

Ось, мій знайомий має крутий вступ. Дуже раджу!
bartoszmilewski.com/...​-programmers-the-preface

Lawvere — крутий! Його Conceptual Mathematics — це певно перша книга, яка мені гарно пояснила базово про ТК та топоси.

Круто!
Погоди, звісно, не робить. Особливо, коли бачиш на яку фігню марнуються гроші в ентерпрайз проектах.
Але припущу, що на архітектурному рівні людина, яка розуміє, напрклад, теоркат зробить, скажімо, декомпозицію предметної області на класи ООП або епіки / сторі набагто краще, що може дуже вплинути на долю проекту.

Але припущу, що на архітектурному рівні людина, яка розуміє, напрклад, теоркат зробить, скажімо, декомпозицію предметної області на класи ООП

ООП — не математика. це суцільна прикладна філософія. І головна теза ООП — людині без академічної освіти буде простіше розуміти ООП код, та його писати.

або епіки / сторі набагто краще

а якщо предметна область — суцільна бізнеслогіка, то нехай отой математик спочатку попрактиується у написанні юридичних документів, законопроектів

В корні ТК та ООП звісно просто лежить композиція-декомпозиція. Як і у вирішенні будь яких задач.

"

людина, яка розуміє, напрклад, теоркат зробить, скажімо, декомпозицію предметної області на класи ООП або епіки / сторі набагато краще

"
Але це твердження дуже сумнівне. Які підстави так говорити? Треба приклади.
Я поки що жодного не бачив. От наприклад, кому практично Profunctor Optics допомогла?

Просто припущення

Спасибо, интересная статья

Gödel, Escher, Bach

Цiкава

The Emperor’s New Mind

Як на мене то bullshit.

The Emperor’s New Mind
Як на мене то bullshit.

Досить сильна заява про книгу одно з навидатніших сучасних математиків )

Вiн, наче, фiзик. Й намагається спекулювати на тему в якiй не дуже компетентний, нiчого iстотного не кажучи в рештi по факту. Тож bullshit та марнування часу.

Він-то як раз математик більше. Але тісно співпрацював з Хокінгом, наприклад, так.
www.maths.ox.ac.uk/people/roger.penrose

мушу додати: як на мене, бо, може, просто — нічого не втямив.

V fizike on spezialist po teorii otnositel’nosti, a eto po suti Rimanova geometriya.

Звучить, як безпідставне твердження. Emperor’s New Mind одна з кращих книг, які я читав. А таких викладок доступних про ту ж Машину Тюрінга я ніде більше не зустрічав.

Populyarnie knigi Penrose’a nujno 4itat’ primerno, kak lekzii po fizike Feynmana. V etom svete on proyavlyaetsa lu4she vsego. Esli govorit’ pro bullshit, to eto bol’she otnositsa k poslednim rukopisyam Wolfram’a po fizike...

Так, колеги, коли ви пишете код — ви займаєтеся математикою

суцільна неправда.
коли ми пишемо — ми не займаємся ані філологією., ані тим більш лінгвистикою.

Небагато пересічних програмістів може пояснити теоретико-множинну сутність left outer join

нехай краще пояснить дивлячись план запиту — як він те збирається віддавати у прод

А брак розуміння декартового вибуху

який ще вибух — у ОРМів немає ніякого вибуху. а те що вибухає тра різати на сервіси

Логіки, формальні мови, лінійна алгебра, матан, теорія множин, теорія графів, теорія алгоритмів, теорія складності, теорія ймовірностей та комбінаторика — ось неповний список should, якщо не must have для професійного програміста.

покажіть на яких співбесідах це питають :)

Яка ймовірність того, що людина хвора на К., якщо тест був позитивний, у популяції хворіє близько одного відсотка людей, а точність тесту становить 99% для істинно позитивних результатів і 95% для істинно негативних?

найміть статистика.

Спробуйте написати свій компілятор, СУБД, 3Д-моделер, трейдинговий бот, обробник сигналів томографії, контролер бойового дрона, алгоритми криптозахисту

який відсоток вакансій — в цілому світі — складають такі проекти?

Математика відкриває багато таємниць фізичного та платонівського світу навколо і всередині нас

тим що всередені нас — займається не математика, а цариця гуманітарних наук — філософія і її різноманітні практичні варіанти, як наприклад — наукова методологія.

Звісно що математика — цікава штука. і корисна. але у статті — суцільне перебільшення її корисності для програміста, хоча б суто тому що за озвученний рівень знання — програмістам майже ніде, ні в якому домені не доплачують :)
а от за софт скіли наприклад — значто швидше доплатять.

Програмування — це інженерія, а не наука.
Поставити Гільберта майстром цеху — кому в голову такє прийде?
А у таких статтях натякають що буде велика з того користь виробництву.

Мені один синьйор написав алгоритм складності O(N^3).

А потім в продакшині приплила баржа на лям фунтів товару.

Розгрібали...

Для розуміння O(N^3) не треба знати оту купу що в статті.

Але так, то ваша справа — вимагайте на співбесідах знання фундаментальних речей з математики. Особливо від програмістів з досвідом, і буде все добре.

А те що у вас

А потім в продакшині приплила баржа на лям фунтів товару.

свідчить не про сіньора та математику, а про інши проблемы у проекті,куди більш серйозні аніж ляп одного програміста. Та ще й з О.

Якби то у трейдботі такий ляп привів до реальних збитків, то да, там може.
Звісно все буває, і тема свіжа є про чого тільки не буває. Але я справжню причину такого фейлу шукав би у інших місцях

І точно не в математиці

фундаментальних речей з математики

 До чого там математика? Просто знати, що під капотом, і як там вказівники переставляються. Седжвіка почитать — яка ж там математика.

То й кажу, в мому домені ці O трапляються коли людина не поцікавилась що там улюблений ORM натворив. Але навіть тоді таких катастрофічних наслідкив не буде.

Ну і захист від невірної арифметики — елементи з контрактного програмування та правила — існує тільки вірно та краш/throw new Exception, у невпевненому результаті — падай!

Бо ота баржа у реалі — значно гірше ніж гвалт операторів, гнів партнерів і т.і.

Теорія алгоритмів теж вважається розділом математики. І це дійсно один з небагатьох її розділів, що потрібні більш-менш всім програмістам (хоча б на рівні таких поверхневих речей, як розуміння O-нотації).

На самом деле из всей «теории алгоритмов» достаточно знать базовый набор алгоритмических сложностей и ситуации в которых они возникают. «Алогритмы и структуры данных» это уже фактически самостоятельная прикладная дисциплина, которую можно изучать с матапаратом школьника.
То есть даже мастер-теорему в явном виде можно не использовать, не говоря уж о более абстрактных вещах типа теоремы Геделя.

Согласен. Просто отметил, что этот базовый набор из теории алгоритмов также относится к математике, и поэтому говорить, что математика программисту вообще не нужна, не совсем верно.

Ну так даже базовая арифметика относится к математике, потому в том или ином виде математика нужна каждому украинцу. =) В основном же, когда обсуждают «математику для программистов» имеют ввиду calculus и выше.

А потім в продакшині приплила баржа на лям фунтів товару.

Розгрібали...

В мое время корованы грабили.

Мені один синьйор написав алгоритм складності O(N^3).
А потім в продакшині приплила баржа на лям фунтів товару.

Про мільон фунтів синьйора попереджали, чи мав здогадатися сам?

Він як сіньйор звачайно же має «знати і розуміти потреби бізнеса» і звичайно він особисто відповідає за свій код. І нагрузочне тестування це для лохів, класні сіньйори зразу пишуть готовий код для продакшена. То шо все за нього будуть манагери продумувати, у них немає часу на такі дурнички їм ще в гольф клюб встигнути треба і на бізнес попойку...

Мій досвід показує, що не-інженери про граничні випадки думати не хочуть (аж до агресивного спротиву). Підозрюю, що на питання синьйора «Який тут буде розмір вхідних даних?» відповідь була «Припустимо, що у 99% випадків буде не більше 10000». У деяких продуктах це означає, що в середньому після 100 операцій клієнт задаватиме питання «Чому?», а після 200 клієнта буде втрачено.

При этом нет ПМа на стороне программиста, нет ПО на стороне заказчика, и все по сраму

Подписаться на комментарии