Що математика пов'язана з програмуванням? [зачинено]


89

Я тільки почав диплом з розробки програмного забезпечення. Зараз ми починаємо з базової Java та такої (так можна сказати знизу) - що добре, у мене немає досвіду програмування, окрім того, як знати, як робити "Hello World" на Java.

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

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


49
Програмування - це математика. en.wikipedia.org/wiki/Discrete_mathematics
SK-логіка

25
@Dave, тому я дав посилання в коментарі, а не як відповідь.
SK-логіка

7
@FiascoLabs, навіть більше того - структура мови та логіка також є піддоменами математики. Програмування - це не що інше, як прикладна математика.
SK-логіка

19
Що стосується спорідненої ноти, починати з Java не "прямо знизу".
Метт H

5
@ CharlesE.Grant, багато студентів з математики роблять те саме (і досі здають свої тести).
SK-логіка

Відповіді:


137

По-перше: я математик - професіонал (за те, що мені платять за те, щоб робити математику). Я не програміст. Я займаюся деяким програмуванням, але дуже точно з різновидом Cargo Cult (див. Перший коментар до https://tex.stackexchange.com/q/451/86 і моя відповідь) і нічого подібного, що могло б привести мене до цього сайт (дійсно, я зареєструвався тут, щоб опублікувати цю відповідь, побачивши посилання на нього в чаті TeX).

Підсумок моєї відповіді: Математика - це програмування .

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

Перш ніж продовжуватись, я повинен уточнити кілька речей. Є сфери математики, які безпосередньо стосуються програмування і пов'язані з оцінкою алгоритмів, класифікацією мов тощо. Я не кажу про них. Існує також програма, яка намагається перевести всю математику на формальну мову, яку можна оцінити за допомогою комп'ютера. Це трохи ближче до того, про що я говорю, але навіть так, щоб зосередитись на цьому, було б пропущено головну частину того, що я намагаюся сказати. Математика, якою я займаюся, та програмування, яке я роблю, майже повністю не пов'язані між собою. Зв’язок між ними знаходиться на іншому рівні.

З чого я хотів би почати - з коментаря до головного питання:

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

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

У цьому мені допомагає математика, коли я програмую:

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

  2. Перспектива Якби я міг вибрати лише одне, чого мали б навчитися всі мої студенти, це було б це: Можливість змінити свою точку зору, щоб відповідати проблемі. Ми зазвичай трактуємо це у лінійній алгебрі за допомогою формул, що змінюються (які призводять до жахливих матриць та жахливих ускладнень), але це набагато більше застосовано до цього. По суті, ідея полягає в тому, що тільки тому, що вам щось було представлено одним способом, це не повинно бути таким, як ви працюєте з цим. Це відокремлює погляд на саму річ від того, як вона була представлена. Це може бути надзвичайно практично: справа в тому, щоб зробити щось корисне чи ефективне. Якщо у мене є список векторів, і ефективніше зберігати їх як список x-координат і список y-координат, так і нехай буде .

  3. Форма проти функції, що спирається на вищезазначене; якщо річ може бути представлена ​​багатьма різними способами, тоді вже не справедливо говорити, що одна конкретна презентація - це річ. Повторно процитувати цю пісню: "Це не те, що ти є, це те , що робиш ", що має значення.

Я міг би продовжувати, але це ті, які спадають на думку.

Зараз, мабуть, багато (негативних) реакцій на те, що я писав до цього часу. Одне буде "Це не математика, це просто хороший сенс". (або поганий сенс), на який я посилаюсь на своє зауваження вище, погоджуючись з думкою, що "вся діяльність людини є формою математики". Іншим буде "Це не той тип математики, який має на увазі питання". Це майже напевно вірно, і тут я насправді маю набагато більше співчуття до людини, яка сказала: "Принаймні, я не торкався математики протягом 10 років". Він чи вона помиляються, звичайно, вони займаються математикою протягом 10 років, тому що коли вони писали програму, вони займалися математикою . Вони просто цього не усвідомлювали.

Я фактично використовую деякі "справжні математики" у своїх програмах. Нещодавно я зашифрував забавний дослідник 3D-форми, який використовував математику, щоб визначити проекції та інші перетворення, які мені довелося застосувати до своїх даних. Мене м'яко розвеселило, коли я фактично кодую кватерніони! Але звичайно, математика, якою займалася, була тривіальною порівняно з математикою, якою я займаюся, коли працюю. Це були речі "на звороті конверта". Цей тип математики, то я погоджуюся з думкою, що ти підбираєш її тоді, коли тобі потрібно, і якщо тобі потрібно щось складніше, ніж ти можеш знайти у Вікіпедії, то ти знайдеш справжнього математика, який би це зробив за тебе. Однак для того, щоб ви могли забрати його тоді, коли вам це потрібно, вам потрібно було чогось навчитися. Ця річ може бути не тим, що ви коли-небудь фактично використовуєте, але дізнавшись, що щось полегшує пошук того, що ви насправді використовуєте пізніше в житті. Так що це, де я НЕ згоден з Coder: вам потрібно вивчити деяку математику , якщо ви коли - небудь будете використовувати яку - або математику , і ви повинні вивчити його з математичної сторони (що не означає доведення теорем, до речі).

І так нарешті до "Математики - це програмування". Ви можете навчитися всім цим речам, будучи хорошим програмістом. І якщо ви навчилися цьому, математику ви знайдете набагато простіше, оскільки ви зрозумієте, що коли ми говоримо про вектор у векторному просторі, то це лише екземпляр класу, Vectorщо означає, що ми можемо робити все, що Vectorробить для цей приклад: додавання, віднімання, масштаб тощо. Ось чому я б хотів викладати математику програмістам. Але, виступаючи математиком, я б сказав, що першийз них, "Абстракцію", легше вивчити математику, ніж програмуванню, оскільки математика - це прагнення до абстракції. Кожного разу, коли ми бачимо якусь поведінку, ми завжди треніруємо: "Що це за те, що змушує його вести себе таким чином? Що робити, якщо я взяв іншу подібну річ, чи поводився би він так само? хіба мені доведеться втратити, щоб вона перестала так вести себе? " (Доведення цього до крайності призводить до «математики сорокаріччя» - пошук терміна). Але ми не робимо цього з (просто) об'єктами "реального світу" (якими б вони не були), ми робимо це з речами, які вже були абстраговані.

Це тривало досить довго, тому дозвольте мені закінчити один із класичних жартів математиків:

Математик та фізик взяли участь у семінарі за новою моделлю, що передбачає 24-мірний простір. Після цього вони обговорювали це, і фізик зауважив: "Це було справді важко. Я маю на увазі, як можна візуалізувати 24-мірний простір?" на що математик відповів: "О, це легко. Просто візуалізуйте n-мірний простір, а потім встановіть n = 24.".


Додано 2012-03-2

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

Однак я не впевнений, що зможу. Читаючи ці коментарі та інше, що є на цій сторінці, я можу лише прийти до висновку, що існує величезне непорозуміння щодо того, що насправді є математикою. Більше того, я не відчуваю себе достатньо компетентним, щоб пояснити це. На щастя, хтось уже зв'язав Плач Локхарта, тож я відкладу пояснення до цього. Хоча я міг би сказати це інакше (коли я виріс у науковому середовищі, я би робив більше уваги на експериментальній природі математики), я не думаю, що я міг би сказати це краще .

Я все ще думаю, що можу щось додати. А також непорозуміння щодо того , що математика є , є також нерозуміння щодо того , що «робити математику» означає. Я бачу дві майже суперечливі позиції:

  1. Математика - це рівняння та формули. Тож не потрібно її вивчати, оскільки існує Вікіпедія (це майже зворотня апокрифічна виклик Ейлера Дідро ).

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

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

Вище я назвав себе програмістом Cargo Cult. Б'юсь об заклад, що більшість із вас власноруч посміхнулася і подумала: "Ага так, я думаю, я знаю, як виглядають ваші програми тоді". Ви, мабуть, відчували себе трохи самодовольним і вищим (хоча я впевнений, що ви почували себе погано, коли почуваєте себе самовдоволеним та вищим).

Що я описав трохи вище, це вантажна математика вантажів.

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

Найголовніше, однак, це те, що ви повинні дізнатися це у математиків. Чому так? Ось аналогія. Мова, якою я найбільше володію, - це TeX. (Каже, це все, справді!). Тепер, припустимо, я хочу дізнатися трохи більше про TeX, і так трапляється, що Дон Кнут перебуває в місті і запропонував дати кілька навчальних посібників про TeX. Або я просто міг прочитати про це у Вікіпедії. А може, це Перл і Ларрі Уолл, або C # (це правильно?) І Джон Скіт. Цілком може бути, що ці люди не найкращі вчителі , але вони впевнені, що це компенсують у тій кількості, яку вони знають!

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

Існує середина між пошуком рівнянь у Вікіпедії та доведенням гіпотези Пуанкаре, подібно до того, - щоб посилатися на жалобу Локхарта - є середня позиція між "Я насправді не знаю багато про мистецтво, але я знаю, що мені подобається" і будучи Моне, і між "Де клавіша" БУДЬ-ЯК? " і будучи Дон Кнутом. Якщо ви все ще в університеті, то у вас є дивовижна можливість вчитися у людей, які є фахівцями в своїй області і які - чомусь - готові витратити свій час, пояснюючи це вам.


Іншим моментом, який я хотів трохи розширити, було те, чому, як програмісту, ви не повинні боятися вивчати трохи більше математики. Це не глибокі зв'язки, ані корисність. Це те, що ваша здатність програмувати комп’ютер може безпосередньо допомогти вам вивчити математику. Я хочу лише зазначити декілька.

  1. Розуміння змінних. Тому багато людей плутаються з простими твердженнями на кшталт "Нехай n є натуральним числом ...". Або "Нехай епсилон> 0". У математиці є місця, де важливо запам’ятати область змінної. Це все звичайне явище в програмуванні. Навчіться перекладати математичну заяву в програму, і вам буде набагато простіше відстежувати, що до чого.

  2. Характер доказування. Якщо ви коли-небудь писали тест або писали програму, яку повинен використовувати хтось інший, то ви розумієте суть доказів. Виконуючи це, ви повинні знати, що все, що додає користувач, ви можете з цим впоратися (вставте сюди обов'язкові посилання xkcd). Це все доказ! Демонстрація того, що все, що вводить "користувач / всесвіт", заява буде дотримана. Експерименталісти схиляться до "Якщо це працює за звичайних обставин, це правда", але програмісти знають, що завжди є той малюк, який спробує Alt + G + Shift + ÅØÆ, щоб побачити, що відбувається.

  3. СУХИЙ. Вибачте, що вам це порушено, але ми це вигадали, а не ви. Ми «не повторюємось» тисячоліттями. Тому я маю на своїх полицях копію елементів Евкліда, і це все ще корисно .

І є більше. Якби я знав трохи більше про програмування, я написав би книгу під назвою "Математика для програмістів", де метою було не викладання "Математики, яку повинні знати програмісти", а "математики, яку повинні знати всі, але оптимізованої для програмістів". . Але я, мабуть, ніколи не знаю достатньо про програмування, щоб написати його - якщо хтось не запропонує співпрацювати зі мною!


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


19
Це одна з найкращих відповідей, яку я коли-небудь читав на SE; До речі, є грандіозна книга "Математика для програмістів"; вона називається конкретна математика, і її співавтор написав автор TeX, Дональд Кнут. Я щойно отримав копію, і це фантастично. Я відчуваю себе твоїм зворотним; Я серйозно став до програмування, коли зрозумів, що найкращий спосіб (для мене) зрозуміти поняття на уроці математики - написати програму, щоб зробити це для мене. Звичайно, тоді я хотів використовувати програму замість того, щоб робити обчислення рота вручну, а мої вчителі математики не любили.
Джейсон Льюїс

Чувак, +100 за це.
Баррі Браун

2
Зареєстровано просто для підтвердження цього питання
лео

Саме так. Ви не можете добре програмувати без тієї аналітичної думки, що вас вчить математика.
Лабораторії Фіаско

1
Чи є хороша книга з математики програмування (дивлячись на програмування математично)?
qed

27

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

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


6
1) Немає нічого поганого з одиночними, 2) алгоритмічна теорія інформації, формальні мови та денотаційна семантика безпосередньо стосуються тих простих речей, які вас чомусь турбують (вони не так важливі для програмування загалом).
SK-логіка

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

10
@dave: небезпека цього методу полягає в тому, що хтось може відхилити вас від розумної, обґрунтованої позиції, заявивши дико відрізняється, як би не було дурним. Прийняття середніх значень не є корисною заміною для оцінки аргументів.
Майкл Боргвардт

4
@ SK-логіка: Чи можливо, що ви двоє просто говорите про різні уявлення про те, що саме є "Singleton"? Мені здається, що SK-логіка говорить про абстрактну ідею мати лише один екземпляр певної сутності в системі, який іноді є саме тим, що потрібно. На жаль, ця абстрактна концепція тісно поєдналася з жахливо поганими деталями реалізації загальнодоступного статичного методу, оскільки книга GoF подала це як приклад того, як можна отримати доступ до такого Singleton.
Майкл Боргвардт

5
Будь ласка, не більше Тема обговорення щодо Singtons
mattnz

20

Математика та програмування пов'язані двома способами.

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

Другий спосіб, пов'язаний з математикою та програмою, полягає в тому, що програмування використовується для вирішення математичних задач. Це важливо, оскільки багато проблем "звичайного життя" насправді можуть бути перероблені як математичні задачі, а потім вирішуються (можливо, приблизно) на комп'ютері. Такі теми будуть певною мірою відображатися майже в усіх ваших курсах, особливо в курсах з дискретної математики та математичного моделювання.


Математика не може допомогти вам гарантувати, що ваша програма знайде відповідь. Це було б вирішенням проблеми зупинки, що неможливо.
DeadMG

6
@DeadMG Для довільних програм це неможливо. Дана програма в деяких випадках може бути доведена, що вона припиняється або не припиняється.
Люк Дантон

6
@DeadMG, Це поширене непорозуміння проблеми зупинки. Проблема зупинки не говорить про те, що ви не можете довести, зупиняється чи ні певна програма, вона говорить про відсутність єдиного алгоритму чи доказів, які можна застосувати до всіх програм, щоб вирішити, припиняти чи ні. Див., Наприклад, en.wikipedia.org/wiki/Halting_problem та programmers.stackexchange.com/questions/125882/… .
Чарльз Е. Грант

Аааа. Моя помилка, значить. Дурне заблокування голосування ... якщо ви зможете відредагувати свою публікацію, щоб я не міг її зняти?
DeadMG

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

12

Два конкретні приклади, коли математична освіта важлива для інформатики:

1) Реляційні бази даних, де використовується реляційне обчислення .

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

Реляційна алгебра може запропонувати наступні кроки для отримання телефонних номерів та назв книжкових магазинів, які постачають деякі зразки книги:

Join book stores and titles over the BookstoreID.
Restrict the result of that join to tuples for the book Some Sample Book.
Project the result of that restriction over StoreName and StorePhone.

Реляційне обчислення формулює описовий, декларативний спосіб:

Get StoreName and StorePhone for supplies such that there exists a title BK with the same BookstoreID value and with a BookTitle value of

Деякі книги зразків.

Реляційна алгебра та реляційне числення по суті є логічно рівнозначними: для будь-якого алгебраїчного вираження існує еквівалентний вираз в обчисленні, і навпаки. Цей результат відомий як теорема Кодда.

Наступна область - штучний інтелект (AI) та машинне навчання .

Для прикладу того, як вони використовуються, подивіться на клас udacity CS 373: ПРОГРАММУВАННЯ РОБОТИЧНОЇ АВТОМОБІЛІ .

Опис: Цей клас, який викладає один з провідних експертів у галузі AI, навчить вас основних методів штучного інтелекту, включаючи: імовірнісний висновок, комп'ютерне бачення, машинне навчання та планування, все з акцентом на робототехніку. Широкі приклади програмування та завдання застосовуватимуть ці методи в контексті побудови автомобілів, що керують самостійно. Ви отримаєте шанс відвідати через відео провідні науково-дослідні лабораторії в цій галузі та познайомитись із вченими та інженерами, які будують автомобілі для самостійного керування в Стенфорді та Google.

Передумови: Викладач візьме на себе ґрунтовні знання з програмування, все програмування буде в Python. Знання ймовірності та лінійної алгебри будуть корисними.

ТИЖДЕНЬ 1:

Основи вірогідності локалізації автомобіля з фільтрами частинок

ТИЖДЕНЬ 2:

Гауссі та безперервна ймовірність Відстеження інших автомобілів за допомогою фільтрів Kalman

ТИЖДЕНЬ 3:

Обробка зображень та машинне навчання Пошук об'єктів у сенсорних даних

ТИЖДЕНЬ 4:

Планування та пошук Визначення куди їхати за допомогою пошуку A * Пошук оптимальних маршрутів із динамічним програмуванням

ТИЖДЕНЬ 5:

Керує керуванням кермом і швидкістю за допомогою PID

ТИЖДЕНЬ 6:

З'єднання все це Програмування автомобіля на самому керуванні

ТИЖДЕНЬ 7:

Підсумковий іспит, перевіряючи свої знання


Я думаю, що це підпадає під сферу ШІ, але більшість людей мають на увазі цей пиріг на небі, коли цей термін використовується. У будь-якому випадку, майже будь-яка програма, що імітує реальний світ, майже завжди потребує певної форми більш досконалої математики. Також будь-яка система з датчиками майже завжди вимагає певної форми передової математики.
Данк

11

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

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


Я згоден. Я дуже багато розвиваю на підприємстві і не відчував себе необхідністю використовувати багато вдосконаленої математики, хоча це, безумовно, добре знати, оскільки це однозначно може допомогти. Я б сказав, що кожен програміст мав взяти принаймні обчислення 1. Інші типи програм можуть використовувати такі речі, як перетворення Фур'є, статистичні моделі та 3D-програмування, часто використовують матриці.
Макотосан

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

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

9

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

Наприклад, обидва надзвичайно логічні. Якщо ви будете дотримуватися одного і того ж набору кроків або тієї ж формули, ви завжди матимете однаковий результат. Наприклад, 1+1завжди буде дорівнює 2, а set a = 1кошти aзавжди будуть дорівнює 1 (поки ви не встановите його на щось інше)

Ще один приклад - необхідність мислити просторово. З математики я виявив, що мені часто доводиться тримати цифри в голові і візуалізувати, що я роблю. В якості простого прикладу, я б зламатися математичні проблеми , так що - то подобається 13x13стає 13x10 + 13x3, що набагато простіше мій мозок працювати, і мені потрібно стежити , що 13x10=130 + 13x3=39, таким чином 130+39 = 169. Ця ж здатність візуалізувати щось непомітне або розбити проблему на більш дрібні проблеми часто застосовується до програмування.

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


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

5

Я думаю, на сьогоднішній день вас вивчали елементи числення та деякої тригонометрії . І ви називаєте це математикою. Це як називати пару ніг «людиною».

Обчислення мало спільного з програмуванням і більш тісно пов'язане з фізикою та технікою. Вам знадобиться фізика для ігрових двигунів та обчислення для статистичного аналізу . (Статистичний аналіз приводить до збільшення кількості робочих місць, які зручно визнати)

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

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

Пройдіть Алгебру 101 та Логіку 101 , вивчіть історію Паскаля, Лейбніц, (так, він майже вигадав обчислення, зрозумів це на півдорозі неправильно, сперечався з Ньютоном, поки все не почало мати майже сенс - і все-таки задумали предмет бінарного кодування) та Беббідж і багато ваших сумнівів ущухнуть. (ваше визначення математики буде назавжди змінено)


4

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

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


4

Тут я розповім вам практичні речі, де я стикався з математикою при вирішенні деяких обчислювальних задач (особливо в домені Інтернет):

  1. Пошукові системи використовують пошук числення для пошуку даних.
  2. Матрична факторизація може бути використана для багатьох матеріалів, таких як Аналіз почуттів.
  3. Вам потрібно знати обчислення, підсумки для з'ясування складності коду, який ви пишете.
  4. Ймовірність широко використовується в пошуку та пошуку ймовірнісної інформації
  5. Теорема Naive Bayes використовується в прогнозній аналітиці.
  6. Вам потрібно знати такі речі, як гіперплан тощо для концепції під назвою SVM, яка знову використовується в машинному навчанні для вирішення проблем категоризації.
  7. Вам потрібно зрозуміти ентропію для того, щоб робити речі з обробки природних мов.
  8. Латентний семантичний індексація / аналіз основних компонентів, використовуваний пошуковими системами, значною мірою спирається на матричну алгебру. і так далі ......

3

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

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

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

Звичайно, в програмуванні першокурсника ви, ймовірно, дізнаєтесь про арифметику вказівника. Ви будете писати короткі програми, щоб проілюструвати цю концепцію та ваше розуміння того, як воно спонукає ваш комп'ютер підкорятися вашій волі. Однак дізнання про те, як працює арифметика вказівника в рефераті, не принесе вам користі у використанні покажчиків у реальній програмі. Коли настане час взяти в оману 10К рядків коду та внести деякі зміни в арифметику вказівника, вам потрібно буде вміти міркувати на дуже абстрактному рівні, приймаючи стратегічні рішення, щоб збалансувати різні проблеми щодо того, як вплинуть ваші зміни. код.

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

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

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


Особливо мені подобається частина "як це знає більшість з нас". Це складність, яку я бачу при читанні більшості відповідей тут: "ліва рука" не знає, що робить "права рука".
Петля пробілу

Я думаю, "ліва рука не знає, що робить права", підсумовує це. ОП заявила, що він "починає знизу" з Java. Програмування на Java ніби як побудувати що - то з болтів і пиломатеріалів з господарського магазину, на відміну від обробки цих болтів і роблячи живі дерева та деревини (що було б більше схоже на програмування на асемблері)
рисової муки Печиво

2

Математика описує (скажімо) кубічне рівняння.

Алгоритм описує, як розв’язати це кубічне рівняння.

Побудова цього (або будь-якого) алгоритму способом, який може бути виконаний машиною, є програмуванням .

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

Хороший програміст може не бути (насправді, часто це не так) хорошим математиком, і навпаки. Вони є окремими ідентифікованими навичками.


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

2

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

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

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

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


2

Два приклади, які одразу приходять на думку:

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

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


1

З точки зору програмістів: Математика - це підмножина програмування.

Математика, що застосовується в програмуванні:

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

Програмування без математики:

Якщо ви це робите println("Hello World"), то факт, що деяка математика використовується для обчислення положення на екрані, довжини рядка тощо, дійсно здебільшого не має значення.

Використання програмування для математики:

Реалізація математики та фізики мовою програмування робить можливими такі речі, як комп'ютерне проектування.


Існує перетин речей, які пов'язані як з математикою, так і з програмуванням. Не є належним підмножиною іншого. Якби ви знали більше MATH, знали б це. Давайте намалюємо веннову діаграму і подивимось, чи зможемо ми знайти предмет у кожній області. Алгебра пов'язана з математикою та програмуванням. Принципи об'єктно-орієнтованого програмування не є суто пов'язаними з математикою, але є абстракціями, оскільки математика - це абстракція. Дискретна математика неймовірно корисна програмістам, як і статистика. Обчислення рідко з'являється для більшості програмістів, ще ніколи для мене в 30 років.
Warren P

0

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

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

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

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

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


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

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

З точки зору навчання, обов'язково мати математичний фон, інакше інше не буде навчання.
Ім'я

Розв’язувачі - це дуже велика проблема з математичною областю, яка може змусити розуміти математику, яка займається ними. Я не кажу , що немає жодного математичних понять , які беруть участь в програмуванні, але , як @DeadMG зазначив у своїй відповіді, є багато дуже практичні аспекти процесу , де математика не дає абсолютно ніякої допомоги.
Blrfl

1
@Birfl, DeadMG - це трохи невідомо (і майже завжди помиляється). Математика завжди допоможе у всіх "м'яких" областях. Психологія сильно базується на математиці. Соціологія ще більш математична. А в разі проектування систем, вам краще не торкатися її без дуже хорошого фону в семантиці (що з дискретної математики). У програмуванні немає жодних аспектів, які не є математичними. GUI-дизайн та кодування CRUD включені.
SK-логіка

0

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

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


0

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

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

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

Це означає, що вам не обов'язково потрібно вчитися математиці, а потім вивчати програмування. Це абсолютно справедливо, щоб вивчити програмування, а потім підібрати деяку передову математику. Я почав кодувати ще до того, як я коли-небудь ступив всередину класу Calc або Trig, і зробив просто чудово. Коли я почав вивчати розширену математику, я виявив, що кодування дійсно допомогло мені, оскільки я міг вивчити тему більше, змінюючи змінні у швидкому сценарії, ніж міг із ручкою та папером.


Вам неодмінно потрібно знати свою триггерну та векторну математику для ігор.
Алан Б

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

0

Я аж ніяк не експерт з математики! Я добре справився з HS Geometry, що було для мене логікою. Я вважаю програмування та геометрію дуже схожими. Булева логіка дуже добре пов'язує мене з геометричними доказами.

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

Я дуже прихильний до ідеї бути хорошим програмістом, у якого є друг (або колега / консультант), який є хорошим математиком.

Очевидно, якщо ви благословлені мати обидва набори навичок, біжіть з ним!


0

Проста відповідь; Математика робить вас швидкими . Звичайно, ви можете переглядати свої проблеми кодування у Google / se / wikipedia, але зробити достатню кількість математики вам не потрібно . Вірите чи ні, правильно тренований людський мозок швидше, ніж Google . Більше того, чим більше математики ви знаєте, тим швидше ви зможете зрозуміти результати, які дає вам google / se / wiki, і тим менше вам знадобиться детально зрозуміти, що вам кажуть люди. У процесі вирішення завдань програмування ви все одно закінчите вивчати математику, але якщо зосередитись на математиці, це буде набагато ефективнішим процесом.

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

Трохи складніша відповідь - Коли математики та програмісти використовують слово "рішення" (для проблем, тобто не рівнянь - тобто не "коріння") - вони означають майже те саме. Навчання розв’язуванню математичних задач допомагає навчитися розв’язувати задачі програмування.

BTW - і жодних злочинів, не призначених ні для кого - той, хто каже, що він / він хороший програміст, але він ненавидить математику - великий брехливий брехун. Що сталося, це те, що вони відмовились від формальної математики поганим інструктором з коледжу чи коледжу, і з тих пір вони відчувають, що вони "недобрі в математиці". Кожен, хто не має інвалідності у навчанні (тобто будь-хто, хто здатний вивчити мову ОО), здатний на все, що стосується числення Софомора.


0

Дії математики та 99% програмування мають дуже мало спільного. Математика не потрібна, щоб бути чудовим програмістом. Я пройшов декілька курсів з математики на рівні коледжу, включаючи, але не обмежуючись ними, елементами лінійної алгебри І числення I, II, III та кількох інших.

Я був інженером програмного забезпечення більше 10 років і мені рідко потрібно було використовувати щось більше, ніж основну математику. Є деякі винятки, де потрібна математика: як графіка та інші сфери. Але 99% програмного забезпечення та інженерії програмного забезпечення не вимагає математики. Це вимагає логічного мислення, алгоритмів, ООП, функцій, розкладаються проблеми тощо.


0

1) Коли ви вивчаєте програмування, ви натрапите на технічний жаргон (тобто алгоритм). Для аналізу алгоритму треба уявити про природу поліноміальних, логарифмічних та експоненціальних функцій.

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

---> Математика для інформатики

---> Кодування матриці: лінійна алгебра через програми інформатики .

Для початківців я відчуваю, що динамічні набрані мови, як python/ schemeє першими найкращими мовами для програмування. Мови, введені статично, як Java/ C++не найкраще починати. Програми для відкритих курсів, опубліковані в "MIT / UOC-Berkeley / Stanford", можуть допомогти вам краще, ніж звичайні навчальні програми коледжу. Упевнений, ви!!!


-1

Я особисто сказав би, це залежить від рівня програмування, який бере участь. Моделі даних та кореляційні зв’язки між ними, алгоритми програмування. Наприклад: щоб написати програму, яка видає "Hello World", я не бачу вимоги до ознайомлення когось із вищою математикою. Рівень математичної участі залежатиме від рівня складності проблеми, яку потрібно вирішити програмно.


-2

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

Спочатку я навчився Pick (мертвій системі) з нуля (наодинці з паперовою документацією та зразками),
... після C, C ++ для розваги та Java для роботи.

Як ви розповідали про це, я можу сказати, що вивчення цієї мови не є математичною проблемою (навіть якщо основна / мінімалістична алгебра вам допомагає), а логічною .

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

Тож якщо вам подобається мова, виберіть проект Java, вивчіть узорний дизайн, UML, зрозумійте JVM та як ним користуватися з Bigloo та Scala, зрозумійте знову і знову протягом 10 000 годин.

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

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

В іншому випадку експериментуйте іншим способом.

З найкращими побажаннями
Клод


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

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

-2

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

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

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

Деякі посилання на програмування як математику, а слідство не знає, про що ви говорите:

Програма - докази: логіка 19 століття та обчислення 21 століття

Програми - це докази: моделі та типи в обчисленні лямбда

Стаття про листування у Вікіпедії Кері-Говарда

Про незвичайну ефективність логіки в інформатиці

Нерозумна ефективність логіки

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

Що стосується того, що говорити інакше і бути максимальним "IP" для грошей:

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


6
-1 для ad hominem наприкінці.
Чарльз Е. Грант

@charles ad hominem проти кого? Оригінальний плакат? Я думаю, що питання про патенти є проникливим (навіть якби це можна було б краще сформулювати).
gcbenison

@gcbenison, "Той, хто каже, що програмування - це не математика ... або має мотив", - це класична атака ad hominem: я не повинен відповідати на ваш аргумент, тому що ви погана людина. Мені це дратувало, тому що я не думаю, що програмування є математикою, і я думаю, що патенти на програмне забезпечення - це гидота. У мене є MS з прикладної математики, хоча чи я знаю, про що я говорю, це, безумовно, відкрито для дискусій.
Чарльз Е. Грант

@ коментатори: спасибі Я використовую, щоб ігнорувати цю поведінку, тому що вони є самопрогнозованими злиднями, покладеними на інших. --- до Брюса Едігера: відображення знаку сумніву.
кл-р

@ cl-r: Я думав про дуже конкретні приклади, такі як анти-Linux кампанія ШОС та nature.com/news/… Якщо ми, як програмісти, дозволяємо юристам визначати математику на користь юриста, то ми робимо всю цивілізацію великою послугою .
Брюс Едігер

-2

Математика - це все, що стосується програмування. Наприклад, в ігровому програмуванні потрібно використовувати математику для фізики і робити менше всього. Для переміщення х позиції гравця в Java ви могли б зробити int x = x + speed * deltaTimeчи int x = x - speed * deltaTimeАле ви могли б сказати, що це основні математики так дозволяє перейти на більш просунуті речі. Існує алгоритм оцінювання шахістів під назвою Алгоритм Ело.

Це пояснений алгоритм Ело

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

Це не магія, це важка робота і хороша математика.


-4

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

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

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

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

Зараз я знаю математичні речі, так що я можу поговорити з математичними фоновими програмістами з усіма відмінностями журналу та іншими елементами, але лише з тієї причини, щоб вони не знепритомніли. Тому що цей матеріал марно займає 99,9% часу, і коли він є, його можна вивчити в 1000 разів ефективніше з точки зору програмістів.

Хек, програмістам потрібно не менше 5 років, щоб освоїти мову програмування + рамки + кращі практики. Чому на землі вони повинні навчитися доводити теореми? Учні математики займаються математикою, програмісти запускають такі речі, ось так воно має працювати.


8
Дитина каже своїй мамі, що йому не потрібно математика, тому що він виросте і стане мільйонером у бейсболіст. Його мама каже йому: «Вам потрібно математика, щоб порахувати мільйони».
Nav

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

2
@ jmort253: Вивчення математики не робить вас логічно мислячою людиною. Це або щось, що провідна у вашому розумі, чи ні. Я ненавиджу математику ще зі школи, але я дуже логічна людина. Програмування - це не математика, я займаюся програмуванням систем протягом 10+ років, і я можу це сказати зі 100% впевненістю, і ви можете розраховувати на ще меншу математику, коли ви займаєтесь веб-розробкою або адміністрацією SQL. Ваше завдання - не розробляти нові математичні теорії, ваше завдання - налагодити роботу з використанням обмежених ресурсів ремонтом, використовуючи найбільш ефективні алгоритми та контейнери.
Кодер

2
@Nav: Кожна людина має сенс в базовій математиці, аж до рівнянь з x і y. Але рахувати свої мільйони - це зазвичай те, що роблять бухгалтери та юристи, тому що в противному випадку ви пропустите якийсь державний закон, який повинен щось робити з декларацією та втрачає все в будь-якому випадку. Ви повинні бути достатньо розумними, щоб зрозуміти, що відбувається, але як тільки ви переконаєтесь у чомусь, вигідніше використовувати спеціалізовані сервіси, які будуть робити речі для вас правильно, швидко та вчасно, поки ви будете підтримувати форму у спортзалі, щоб зберегти це важко зароблене перше 5 місце.
Кодер

10
Математика - це не процес розв’язування рівнянь. Якщо єдиною математикою, яку ви коли-небудь бачили, є математика, яку викладали в школі, ви ніколи не бачили фактичної математики .
doppelgreener
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.