Я только начал диплом в области разработки программного обеспечения. Прямо сейчас мы начинаем с базовой Java и тому подобного (поэтому, можно сказать, снизу вверх) - что хорошо, у меня нет опыта программирования, кроме знания того, как делать «Hello World» в Java.
Я продолжаю слышать, что математика имеет отношение к кодированию, но как это так? Какие общие примеры показывают, как математика и программирование сочетаются друг с другом или зависят друг от друга?
Я прошу прощения за мой вопрос расплывчато, я только начинаю получать грубое представление о мире, в который я вступаю, будучи студентом обезьяны кода ...
Ответы:
Прежде всего: я математик - профессиональный (в этом мне платят за математику). Я не программист. Я занимаюсь программированием, но совершенно определенно из разнообразия Cargo Cult (см. Первый комментарий на https://tex.stackexchange.com/q/451/86 и мой ответ) и ничего подобного, что обычно приводило бы меня к этому сайт (на самом деле, я зарегистрировался здесь, чтобы опубликовать этот ответ, увидев ссылку на него в чате TeX).
Резюме моего ответа: математика программирование .
Недавно я начал преподавать курс математики для нематематической группы студентов. Они были разделом программирования. Я думал, что это было фантастически! Наконец-то я смог научить математике людей, которые уже поняли основные идеи и у которых уже был элементарный инструментарий для выполнения математики. Я был невероятно разочарован, когда спросил, сколько из них действительно написали программу, и получил ответ где-то между 0 и 1.
Прежде чем я продолжу, я должен уточнить несколько вещей. Есть области математики, которые непосредственно связаны с программированием и связаны с оценкой алгоритмов и классификацией языков и тому подобное. Я не говорю о тех. Существует также программа, которая пытается перевести всю математику на формальный язык, который может быть оценен компьютером. Это немного ближе к тому, о чем я говорю, но даже если сосредоточиться на этом, будет не хватать основной части того, что я пытаюсь сказать. Математика, которую я делаю, и программирование, которое я делаю, почти полностью не связаны темой. Связь между ними находится на другом уровне.
Я хотел бы начать с комментария к основному вопросу:
Да, это делает математику. Но «математика» - все еще полезное слово, потому что, как говорится в песне: «Дело не в том, что ты делаешь, а в том, как ты это делаешь». Я бы сказал, что занимаюсь математикой, когда подхожу к чему-то математически . Иногда это математика с «жестким ядром»: формулировка определений, доказательство теорем. Иногда это не так. Иногда он пишет маленькие глупые программы, чтобы мои дети могли выучить их написание слов.
В этом мне помогает математика, когда я программирую:
Абстракция Это, вероятно , самый важный навык передаваться от математики. Под этим я подразумеваю возможность убрать все ненужные вещи и сосредоточиться на важных свойствах.
Перспектива Если бы я мог выбрать только одну вещь, которую должны были изучить все мои ученики, это было бы так: способность изменить точку зрения в соответствии с проблемой. Мы обычно рассматриваем это в линейной алгебре с формулами изменения базиса (которые приводят к ужасным матрицам и ужасным осложнениям), но это гораздо более применимо, чем это. В глубине души, это идея, что только потому, что что-то было представлено вам одним способом, это не должно быть способом, которым вы работаете с этим. Это отделяет взгляд от самой вещи от того, как она была представлена. Это может быть чрезвычайно практично: все дело в том, чтобы сделать что-то полезное или эффективное, Если у меня есть список векторов, и более эффективно хранить их в виде списка x-координат и списка y-координат, пусть будет так .
Форма в зависимости от функции, ведущая сверху; если вещь может быть представлена множеством разных способов, то уже не справедливо будет говорить о том, что одна конкретная презентация - это вещь. Снова перевести цитату из этой песни: «Дело не в том, кто ты есть, а в том , что ты делаешь ».
Я мог бы продолжать, но это те, которые приходят на ум.
Теперь, вероятно, есть много (негативных) реакций на то, что я написал до сих пор. Один из них будет «Это не математика, это просто здравый смысл». (или плохой смысл), на который я ссылаюсь на свое замечание выше, согласное с мнением, что «вся человеческая деятельность является формой математики». Другой будет «Это не тот тип математики, который подразумевается в этом вопросе». Это почти наверняка верно, и здесь я на самом деле гораздо больше сочувствую человеку, который сказал: «По крайней мере, я не касался математики в течение 10 лет». Он или она не правы, конечно, они занимались математикой в течение 10 лет, потому что всякий раз, когда они писали программу, они занимались математикой . Они просто не осознавали этого.
Я на самом деле использую некоторые "настоящие математики" в своих программах. Недавно я написал забавный 3D-исследователь форм, который использовал математические расчеты для определения проекций и других преобразований, которые мне пришлось применить к моим данным. Я был слегка удивлен, обнаружив, что на самом деле кодирую кватернионы! Но, конечно, математика, которая была задействована, была тривиальной по сравнению с математикой, которую я делаю, когда работаю. Это был материал с обратной стороны. Этот тип математики, тогда я согласен с мнением, что вы поднимаете это, когда вам это нужно, и если вам нужно что-то более сложное, чем вы можете найти в Википедии, тогда вы найдете настоящего математика, который сделает это за вас. Однако для того, чтобы вы могли поднять его, когда вам это нужно, вам нужно кое- что выучить., Эта вещь может быть не тем, чем вы когда-либо пользуетесь на самом деле, но, узнав, что что-то облегчает понимание того, чем вы на самом деле пользуетесь в дальнейшей жизни. Так что это, где я не согласен с Coder: вам нужно выучить некоторую математику , если вы когда - либо будете использовать какую - либо математику , и вы должны изучить его с математической стороны (что не означает доказательство теорем, кстати).
И так, наконец, к «Математика это программирование». Вы можете научиться всему этому, будучи хорошим программистом. И если вы выучите эти вещи, вы найдете математику намного проще, потому что вы поймете, что когда мы говорим о векторе в векторном пространстве, то это просто экземпляр класса,
Vector
что означает, что мы можем делать все то, чтоVector
делает с этот экземпляр: сложение, вычитание, масштабирование и так далее. Вот почему я хотел бы преподавать математику программистам. Но, говоря как математик, я бы сказал, что первыйиз них «абстракция» легче изучать в математике, чем в программировании, потому что математика - это погоня за абстракцией. Всякий раз, когда мы видим какое-то поведение, наша тренировка всегда состоит в том, чтобы спросить: «Что это за вещь, которая заставляет ее вести себя таким образом? Что если я возьму другую вещь, которая была похожа, она будет вести себя таким же образом? Должен ли я потерять его, чтобы перестать так себя вести? " (Принятие этого до крайности приводит к «многоножке математике» - поиск термина). Но мы делаем это не с (просто) объектами "реального мира" (какими бы они ни были), мы делаем это с вещами, которые уже были абстрагированы.Это продолжалось достаточно долго, поэтому позвольте мне закончить с одной из классических шуток математика:
Добавлено 2012-03-2
Было довольно много комментариев к этому ответу, выражающих различные взгляды. Теперь они были удалены модератором при том понимании, что я постараюсь включить их (или ответить на них) в свой ответ.
Однако я не уверен, что смогу. Читая эти комментарии и остальную часть того, что на этой странице, я могу только прийти к выводу, что существует огромное недопонимание относительно того, что на самом деле является математика. Более того, я не чувствую себя достаточно компетентным, чтобы объяснить это. К счастью, кто-то уже связался с Плачем Локхарта, поэтому я отложу объяснение этого. Хотя я мог бы сформулировать это по-другому (поскольку я вырос в научной среде, я бы сделал больший акцент на экспериментальной природе математики), я не думаю, что смог бы выразить это лучше .
Я все еще думаю, что могу что-то добавить. А также недопонимания относительно того , что математика является , есть также недопонимание относительно того , что «делать математику» означает. Я вижу две почти противоречивые позиции:
Математика - это уравнения и формулы. Таким образом, нет необходимости изучать это, потому что существует Википедия (это почти противоположность апокрифическому вызову Эйлера Дидро ).
Математика о теоремах и определениях. Так что нет необходимости изучать его, так как программы никогда ничего не доказывают (что примерно так же заблуждение, как ... вставьте сюда любимую ошибку).
Хотя эти две позиции противоречат друг другу, они оказываются в одном и том же месте: нет смысла программисту изучать любую математику - и, несомненно, не математику! В конце концов, что они знают о чем-либо? Все, что действительно нужно знать программисту, можно найти в Википедии или украсть у кого-то еще.
Выше я описал себя как программист Cargo Cult. Бьюсь об заклад, у большинства из вас был частный хихиканье, и они подумали: «О да, держу пари, я знаю, как тогда выглядят ваши программы». Вы, вероятно, чувствовали себя немного самодовольными и превосходными (хотя я уверен, что вы чувствовали себя плохо из- за самодовольства и превосходства).
То, что я описал выше, это математика культа грузов.
Поэтому, когда я говорю, что вы должны немного изучить математику, чтобы понять, как работает математика, я говорю это точно по той же причине, что и вы, если бы вы увидели немного кода, который я написал: «Насколько легче ваша жизнь было бы, если бы вы прекратили вырезать и вставить код из StackOverflow и немного узнали бы о том, как это сделать правильно. "
Но самое главное, что вы должны учиться у математиков. Почему так? Вот аналогия. Язык, на котором я больше всего разбираюсь, это TeX. (Все сказано, правда!). Теперь предположим, что я хочу узнать немного больше о TeX, и так получилось, что Дон Кнут находится в городе и предложил дать несколько уроков по TeX. Или я мог бы просто прочитать об этом в Википедии. Или, может быть, это Perl и Ларри Уолл, или C # (это правильно?) И Джон Скит. Вполне возможно, что эти люди не лучшие учителя , но они наверняка восполнят это в той сумме, которую они знают!
И это то, что математики . Мы люди, которые пишут на реальном языке, а затем пишут библиотеки, которые вы используете. Конечно, вам не нужно знать, как доказать теорему - вы не собираетесь писать библиотеку! Но если вы немного знаете о том, как мы думаем, то это может помочь вам понять, почему мы написали библиотеку так, как мы это сделали, и если вы поймете, что она может помочь вам лучше использовать ее.
Существует золотая середина между поиском уравнений в Википедии и доказательством гипотезы Пуанкаре, точно так же, как - в отношении плача Локхарта - существует золотая середина между «я не очень разбираюсь в искусстве, но я знаю, что мне нравится» и быть Моне, и между "Где ключ"? " и быть доном Кнутом. Если вы еще учитесь в университете, у вас есть удивительная возможность учиться у людей, которые являются экспертами в своей области и которые по какой-то причине готовы тратить свое время, объясняя это вам.
Еще один момент, на котором я хотел бы остановиться подробнее, это то, что как программист вы не должны бояться изучать немного больше математики. Это не Глубокие Связи, ни полезность. Дело в том, что ваша способность программировать на компьютере может помочь вам в изучении математики. Я просто хочу упомянуть несколько.
Понимание переменных. Очень многих людей смущают простые заявления типа «Пусть n будет натуральным числом ...». Или «Пусть epsilon> 0». В математике есть места, где важно запомнить область действия переменной. Все это обычное явление в программировании. Научитесь переводить математическое утверждение в программу, и вам будет гораздо легче отслеживать, что к чему.
Природа доказательства. Если вы когда-либо написали тест или написали программу, которая будет использоваться кем-то другим, тогда вы понимаете суть доказательств. Когда вы делаете это, вы должны знать, что все, что пользователь вводит, вы можете иметь с этим дело (вставьте обязательную ссылку xkcd здесь). Это все доказательство! Демонстрация того, что независимо от того, что вставляет «пользователь / вселенная», утверждение будет выполнено. Эксперименталисты склоняются к «если это работает при нормальных обстоятельствах, это правда», но программисты знают, что всегда есть тот ребенок, который попробует Alt + G + Shift + ÅØÆ, просто чтобы посмотреть, что происходит.
DRY. Извините, что сломал это для вас, но мы это изобрели, а не вы. Мы «не повторяем себя» на протяжении тысячелетий. Вот почему у меня есть копия элементов Евклида на моих полках, и это все еще полезно .
И это еще не все. Если бы я знал немного больше о программировании, я написал бы книгу под названием «Математика для программистов», в которой целью было не учить «математике, которую должны знать программисты», а «математике, которую должен знать каждый, но оптимизированной для программистов». , Но я, вероятно, никогда не узнаю достаточно о программировании, чтобы написать его - если кто-то не предложит мне сотрудничество!
Я оставлю это там. Возможно, если бы я думал больше, я бы изменил то, что написал; надеюсь, я бы объяснил это лучше. Через несколько месяцев я могу даже не согласиться с его частями. Если кто-то хочет поспорить дальше или прокомментировать иначе, вероятно, лучше не делать этого в комментариях здесь. Вы знаете, где меня найти .
источник
Они не что тесно связаны между собой . Для программирования важно знать о математике, особенно о тех отраслях, которые относятся, например, к производительности алгоритма, но простой факт заключается в том, что не существует области математики, которая скажет вам, что синглтоны - ужасно плохая идея, например: или когда предпочитать наследование, а не композицию, или вам действительно понадобится эта гибкость, а не повторять себя и десятки других основных потребностей программирования.
Математика может быть в состоянии выразить то, что делает ваша программа, но она, безусловно, не может сказать вам наиболее приемлемый, понятный для человека, выполнимый способ сделать это.
источник
Математика и программирование связаны двумя способами.
Одним из них является то, что математика может быть использована для рассуждения о компьютерных программах. Он может помочь ответить на такие вопросы, как «Как изменится время выполнения моей программы при изменении входных данных?», «Гарантируется ли, что моя программа найдет ответ на мою проблему?», «Насколько эффективна моя программа? Msgstr "Как мне переставить программу, чтобы она работала быстрее или использовала меньше памяти?" Вы, как правило, освещаете такие темы в курсах старших классов по теории вычислений, разработке алгоритмов и разработке компьютерных языков.
Второй способ, которым связаны математика и программа, заключается в том, что программирование используется для решения математических задач. Это важно, потому что многие проблемы «обычной жизни» могут быть преобразованы в математические задачи и затем решены (возможно, приблизительно) на компьютере. Подобные темы будут в некоторой степени отображаться практически на всех ваших курсах, но особенно на курсах по дискретной математике и математическому моделированию.
источник
Два конкретных примера, где математическое образование важно для информатики:
1) Реляционные базы данных, где используется реляционное исчисление .
Следующая область - это искусственный интеллект (ИИ) и машинное обучение .
Для примера того, как они используются, взгляните на класс udacity CS 373: ПРОГРАММИРОВАНИЕ РОБОТИЧЕСКОГО АВТОМОБИЛЯ .
Описание: Этот класс, преподаваемый одним из ведущих экспертов в области искусственного интеллекта, научит вас основным методам искусственного интеллекта, включая: вероятностный вывод, компьютерное зрение, машинное обучение и планирование, все с акцентом на робототехнике. Обширные примеры программирования и задания будут применять эти методы в контексте создания самоуправляемых автомобилей. Вы сможете через видео посетить ведущие научно-исследовательские лаборатории в этой области, а также встретиться с учеными и инженерами, которые строят автомобили с автоматическим управлением в Стэнфорде и Google.
Предварительные условия: Инструктор примет глубокие знания программирования, все программирование будет на Python. Знание вероятности и линейной алгебры будет полезно.
источник
Для разработки научных приложений, программирования игр, систем реального времени, систем моделирования и подобных приложений математика действительно необходима. В конце концов, программирование использует математику и естественные науки для решения проблем. С другой стороны, для программирования приложения, которое собирает информацию о пользователях для регистрации их в вашей базе данных, не требуется никакого высокого уровня математики. Тем не менее, все программисты выиграют от теории базовых чисел, алгебры, теории базовых множеств и элементарного численного анализа.
Со стороны специалиста по математике, различные темы по математике (как и многие другие отрасли науки) могли бы значительно выиграть от программирования.
источник
Я думаю, больше всего на свете, это сходство используемого мыслительного процесса, что делает их похожими.
Например, оба чрезвычайно логичны. Если вы будете следовать одному и тому же набору шагов или той же формуле, вы всегда получите один и тот же результат. Например,
1+1
всегда будет равно2
, аset a = 1
значитa
всегда будет 1 (пока вы не установите его на что-то другое)Другой пример - необходимость мыслить пространственно. В математике я обнаружил, что мне часто приходится держать цифры в голове и визуализировать, что я делаю. В качестве простого примера, я бы сломаться математические проблемы , так что - то нравится
13x13
становится13x10 + 13x3
, что гораздо проще мой мозг работать, и мне нужно следить , что13x10=130 + 13x3=39
, таким образом130+39 = 169
. Та же самая способность визуализировать что-то невидимое или разбивать проблему на более мелкие проблемы часто применяется в программировании.Поэтому я чувствую, что, хотя вам не нужно иметь математические знания для программирования, где математика определяется как выполнение вычислений с числами, вам необходимо иметь такой же мыслительный процесс и понимание, что и при использовании математических задач.
источник
Полагаю, на сегодняшний день вас учили элементам исчисления и некоторой тригонометрии . И ты называешь это математикой. Это все равно что называть пару ног "человеком".
Исчисление имеет мало общего с программированием и более тесно связано с физикой и техникой. Вам понадобится физика для игровых движков и исчисление для статистического анализа . (Статистический анализ приводит к большему количеству рабочих мест, которые удобно признать)
Исчисление, для нас, больше касается связи программирования с реальным миром. Вычислительное исчисление - это ветвь, которая изучает, насколько плохо это отношение заходит так далеко. (спойлер: все идет очень плохо, но мы можем держать его под контролем бесконечно )
Тригонометрия - это сумасшедший джек в коробке, который появляется, когда вы меньше всего этого ожидаете, и от этого зависит анализ сигнала , генерация звука и многое другое.
Пройдите через Алгебру 101 и Логику 101 , изучите историю Паскаля, Лейбница, (да, он почти изобрел исчисление, наполовину ошибся, спорил с Ньютоном, пока все это не стало почти понятным - и все еще придумал понятие двоичного кодирования) и Бэббиджа и многие ваши сомнения исчезнут. (хотя ваше определение математики будет навсегда изменено)
источник
Программирование пересекает множество традиционных академических дисциплин.
Математика, особенно прикладная математика , важна для программирования, потому что многое из того, что мы просим от компьютеров, - это анализ чисел. Понимание численных методов и способов эффективного и правильного применения вычислений - это одна из тех вещей, которые ежедневно делают многие программисты.
источник
Здесь я расскажу вам практические вещи, где я столкнулся с математикой при решении некоторых вычислительных задач (особенно в области Интернета):
источник
Проблема с вашим вопросом заключается в том, что «математика» и «программирование» - это очень широкие и глубокие предметы, о которых можно узнать больше, чем кто-либо может освоить за всю жизнь (без преувеличения). Я лично имею степень магистра по математике. Во время учебы в университете мне казалось, что чем больше я учусь, тем меньше я знаю по сравнению со своими сверстниками; Я чувствовал, что с годами я стал менее умным. Когда я представил свою магистерскую диссертацию группе профессоров, даже большинство из них, казалось, были в значительной степени незнакомы с тем, что я изучал.
Кроме того, теперь я разработчик веб-приложений на основе базы данных. Если бы вы сравнили меня с кем-то, кто занимается программированием на языке ассемблера, вы могли бы думать о нас как о двух очень талантливых профессионалах, но у нас был бы совершенно другой опыт, даже если мы оба «программисты».
По мере продвижения в изучении высшей математики (за исключением начального исчисления) вы обнаружите, что математика прививает дисциплину для абстрактных рассуждений, которая хорошо вам пригодится при программировании. Я думаю, что эта дисциплина очень важна, потому что вы будете иметь дело с абстрактными проблемами во время программирования.
Конечно, в программировании новичка вы, вероятно, узнаете об арифметике указателей. Вы будете писать короткие программы, чтобы проиллюстрировать эту концепцию и ваше понимание того, как она управляет вашим компьютером, подчиняясь вашей воле. Однако изучение того, как работает арифметика с указателями в абстрактной форме, не поможет вам использовать указатели в реальной программе. Когда придет время вносить беспорядок в 10 000 строк кода и вносить некоторые изменения в арифметику указателей, вам необходимо уметь рассуждать на очень абстрактном уровне, принимая стратегические решения, чтобы сбалансировать различные опасения относительно того, как ваши изменения повлияют код.
Как программист, вы должны уравновесить «читабельность» вашего кода, производительность вашего кода, простоту использования полученных программ и многие другие проблемы. Вы должны быть в состоянии сделать очень абстрактные сравнения, чтобы сбалансировать эти проблемы друг с другом. Вы будете делать многие из этих сравнений каждый день. Я даже не начал о тайм-менеджменте. Вы будете абстрактно рассуждать о вероятности того, что что-то, что вы делаете, повлияет на вашу способность выполнять ваши задачи вовремя, и еще раз, вы будете ежедневно принимать множество решений, которые будут влиять на вашу работу.
Наконец, вы должны поддерживать свою философскую дисциплину, чтобы иметь возможность усваивать новые идеи и концепции, чтобы иметь возможность продолжать работу, когда старые методологии и практики выходят из употребления. Еще раз, вы должны будете иметь возможность оценить идеи и сделать абстрактное сравнение с тем, что вы уже знаете.
Короче говоря, программирование, как его знает большинство из нас, не имеет ничего общего с математикой, как это знает большинство из нас; но когда вы смотрите на это на абстрактном уровне, у них много общего.
источник
Математика описывает (скажем) кубическое уравнение.
Алгоритм описывает, как решить это кубическое уравнение.
Построение этого (или любого) алгоритма способом, который может быть выполнен машиной, является программированием .
Информатика - это анализ алгоритма - его теоретическая пространственно-временная эффективность, границы ошибок и т. Д. Это можно считать разделом математики. Однако обратите внимание, что информатика и программирование на самом деле не одно и то же. Если вы хотите быть хорошим программистом, важно иметь фундамент в области компьютерных наук, потому что это помогает вам лучше спроектировать и продумать алгоритмы, которые вы разрабатываете. Но это не требование.
Хороший программист может не быть (на самом деле часто не очень) хорошим математиком, и наоборот. Это отдельные идентифицируемые навыки.
источник
Я видел много вопросов на этих форумах в те годы, когда настоящая проблема заключалась в плохом математическом понимании автора. Например, любой, кто имеет хороший фундамент в алгебре, понимает, что вы не можете делить на ноль. Но я видел много вопросов, в которых автор не понимал этого и впоследствии не понимал сообщения об ошибке, которое в основном гласило: «Вы не можете делить на ноль». Я видел много вопросов, где было ясно, что автор не понимает основную логику. Я видел слишком много вопросов, где понятия булевой алгебры явно не поняты.
То, что вы не пишете математические доказательства или не решаете непосредственно уравнения, как в учебнике по математике, не означает, что вам не нужно понимать стоящие за ними концепции. Кстати, за долгие годы работы я никогда не сталкивался с плохим программистом, у которого было хорошее понимание математики.
В некоторых областях вы напрямую используете много математики, например, программирование игр, статистическое программирование, финансовое программирование, некоторые встроенные системы. В некоторых из этих случаев вам дают уравнения, которые вам нужны в требованиях, а иногда нет. Однако, даже если вам дано уравнение, для правильного перевода этих уравнений в программный код необходимо сначала понять это уравнение.
Хотя в базовом приложении CRUD вы можете обойтись чуть более, чем базовой алгеброй, большинство наиболее интересных проблем и более продвинутой работы связаны с математическим пониманием. Так почему же вы хотите ограничить себя с самого начала, не изучая математику?
источник
Два примера, которые сразу приходят на ум:
функции - идея применения преобразования к входным переменным для получения выходной переменной глубоко укоренилась в математике. Понятие передачи функции в качестве параметра другой функции тем более. Вообще понятие абстрактного мышления связано с программированием параллелей математики довольно тесно.
bitMasks - этот общий программный подход к решению проблем требует, по крайней мере, базового понимания булевой алгебры, чтобы даже понять концепцию.
источник
С точки зрения программистов: математика - это подмножество программирования.
Математика, применяемая в программировании:
При работе с коллекциями (массивами, списками, картами и т. Д.) В программировании вы имеете дело с реализацией математических абстракций в реальном мире.
Программирование без математики:
Если вы это сделаете
println("Hello World")
, то тот факт, что некоторая математика используется для вычисления положения на экране, длины строки и т. Д., В действительности не имеет значения.Использование программирования для математики:
Реализация математики и физики на языке программирования делает возможными такие вещи, как автоматизированное проектирование.
источник
Программирование обычно основано на модели, которая обычно является математической моделью.
Давайте рассмотрим пример создания ипотечного калькулятора. Для этого вам нужно знать, что представляет собой интерес, что такое сложный интерес и так далее. Если у вас нет понимания основополагающей математики, тогда кто-то другой должен предоставить вам эту информацию. Обычно это всё дело программиста. Вы всегда можете обратиться за помощью, хотя, если это необходимо.
Есть простые понятия в математике, которые широко используются в программировании. Например, выражения, уравнения, переменные, они глубоко используются в программировании. Если вы не понимаете этого в математике, возможно, вы не лучший программист.
Имея сильную математику, вы получите больше материала для моделирования вашей работы. Это в конечном итоге делает вас лучшим программистом. Например, вы можете нарисовать квадратное уравнение в одном из ваших проектов, таким образом, вы узнаете больше вещей только потому, что вы сильны в математике. Или вы пишете программу, чтобы найти площадь круга, чтобы дать вам больше опыта.
За свою короткую преподавательскую карьеру я обнаружил, что если учащиеся не имеют математического образования, они почти теряются при решении финансовой проблемы. Если они теряются в модели, изучение самого языка становится более сложным и, честно говоря, очень расстраивает.
источник
Теоретическая основа информатики (которая представляет собой нечто большее, чем просто программирование) имеет математическую природу. Все, от самого определения вычислимости до анализа и выражения алгоритмов и спецификаций языков программирования, основано на широком разнообразии математики. Смотрите эту страницу в Википедии, чтобы узнать, какая математика используется.
Большинству из них не обязательно знать, что все, что вы хотите сделать - это использовать код. Что касается прикладной математики, если вы не зайдете в область, требующую серьезных навыков вычисления чисел (детальное физическое моделирование, анализ сигналов, финансовый анализ и прогноз и т. Д.), Вы, вероятно, не будете использовать ничего более сложного, чем базовая алгебра на ежедневной основе.
источник
Это, честно говоря, зависит от того, какое программирование вы делаете.
Если вы создаете легкие веб-приложения с некоторой логикой, вам, вероятно, не нужны более сложные математические классы, которые требуются для получения многих степеней. Если вы работаете с вещами, которые немного загружают процессор, вам понадобится больше математики. Если вы работаете с какой-либо научной областью, вам действительно захочется держать ссылки на калькулятор под рукой.
Еще одно место, где вам понадобится математика, это если вы хотите писать игры. В ту секунду, когда вы захотите двигаться по диагонали, вам нужно будет начать делать некоторые осторожные вычисления, чтобы у вас не было символов, которые ускоряются при переходе к блоку к NE.
Тем не менее, вам не обязательно изучать математику, а затем изучать программирование. Это совершенно правильно, чтобы научиться программированию, а затем освоить некоторые сложные математические. Я начал писать код еще до того, как начал изучать классы Calc или Trig, и у меня все получилось. Когда я начал изучать продвинутую математику, я обнаружил, что кодирование мне действительно помогло, так как я мог больше изучать тему, меняя переменные в быстром сценарии, чем с ручкой и бумагой.
источник
Я ни в коем случае не эксперт по математике! Я хорошо справился с геометрией HS, что было для меня вполне логично. Я считаю, что программирование и геометрия очень похожи. На мой взгляд, логическая логика очень хорошо связана с геометрическими доказательствами.
Кроме того, есть такие мелочи, как знание того, что вы можете контролировать количество столбцов в строке, используя оператор модуля.
Я решительно поддерживаю идею быть хорошим программистом, у которого есть друг (или коллега / консультант), который является хорошим математиком.
Очевидно, что если вам повезло иметь оба набора навыков, бегите с ним!
источник
Простой ответ; Математика делает тебя быстрым . Конечно, вы можете google / se / wikipedia решить ваши проблемы с кодированием, но достаточно математики и вам не нужно . Хотите верьте, хотите нет, но правильно обученный человеческий мозг работает быстрее, чем Google . Более того, чем больше математики вы знаете, тем быстрее вы сможете понять результаты, которые дает вам Google / SE / Wiki, и тем меньше вам придется углубляться в детали, чтобы понять, что люди говорят вам. В процессе решения ваших задач программирования вы все равно будете учить математику, но если вы сосредоточитесь на математике, это будет гораздо более эффективный процесс.
Ваш вопрос отчасти напоминает рок-музыканта, который спрашивает, зачем им нужно формальное музыкальное образование. Можно ли быть успешным без этого? Конечно. Делает ли это вас гораздо более крутым, если вы все равно будете этим заниматься? Абсолютно.
Немного более сложный ответ - когда математики и программисты используют слово «решение» (для задач, то есть не для уравнений - то есть не для «корней») - они означают почти одно и то же. Обучение решению математических задач помогает вам научиться решать задачи программирования.
Кстати, - и без обид, предназначенных для кого бы то ни было - любой, кто говорит, что он / она хороший программист, но он / она ненавидит математику, является Большим Толстым Лжецом. То, что случилось, было, они были отключены от формальной математики плохим преподавателем или преподавателем колледжа, и с тех пор они чувствуют, что они "не хороши в математике". Любой, у кого нет проблем с обучением (т. Е. Любой, кто способен изучать ОО-язык), способен на все, вплоть до Sophomore Calculus.
источник
Действия по математике и 99% программирования имеют очень мало общего. Математика не обязана быть великим программистом. Я прошел несколько курсов по математике на уровне колледжа, включая, но не ограничиваясь, элементы линейного алгебры Исчисления I, II, III и некоторые другие.
Я был инженером-программистом более 10 лет, и мне редко приходилось использовать что-то большее, чем базовая математика. Есть некоторые исключения, где математика необходима: например, графика и другие области. Но 99% программирования и разработки программного обеспечения не требуют математики. Это требует логического мышления, алгоритмов, ООП, функций, разлагающихся задач и т. Д.
источник
1) Изучая программирование, вы столкнетесь с техническим жаргоном (т. Е. Алгоритмом). Для анализа алгоритма необходимо иметь представление о природе полиномиальных, логарифмических и экспоненциальных функций.
2) Основываясь на приложении для информатики, нужно иметь представление о дискретной математике и непрерывной математике, чтобы написать осмысленное решение. Можно понять больше об этом, пройдя такие курсы, как
---> Математика для информатики
---> Кодирование матрицы: линейная алгебра в приложениях информатики .
Для новичка я чувствую, что динамически типизированные языки вроде
python
/scheme
являются первыми лучшими языками для программирования. Языки со статической типизацией, такие какJava
/C++
не лучшие для начала. Opencourseware, опубликованный из "MIT / UOC-Berkeley / Stanford", может помочь вам лучше, чем обычная программа обучения в колледже. Бьюсь об заклад, вы!источник
Я бы сказал, что это зависит от уровня программирования. Модели данных и корреляции между ними, алгоритмы программирования. Например, чтобы написать программу, которая выводит «Hello World», я не вижу необходимости в ознакомлении кого-либо с высшей математикой. Уровень математического участия будет зависеть от уровня сложности проблемы, которая должна быть решена программно.
источник
Просто мой опыт, не более:
я не математик. Я не гений, просто автодидакт.
... и спустя много лет я понимаю, чем работаю с интуицией
Сначала я изучил Pick (мертвая система) с нуля (наедине с бумажной документацией и примерами),
... после C, C ++ для удовольствия и Java для работы.
Как вы уже сказали, я могу сказать, что изучение этого языка - не математическая проблема (даже если вам поможет базовая / минималистическая алгебра), а логическая .
Теперь многие инструменты (например, Eclipse) помогают и исправляют вас: вам нужно сосредоточиться на том, что вы хотите сделать , всего лишь с 52 зарезервированными словами ... и множеством библиотек, которые не работают.
Поэтому, если вам нравится язык, выберите Java-проект, изучите Pattern Design, UML, разберитесь в JVM и как использовать его с Bigloo и Scala, разберитесь снова и снова в течение 10 000 часов.
Опыт работы с Java дает вам хорошо оплачиваемую работу и долгое время в крупных промышленных проектах, и вы сможете переключиться на другую среду, потому что вы умеете говорить информативно , а не математически .
Если понимание языка (слов, значений, понятий и других скрытых логических наук, таких как семантика, онтология и т. Д.) Является хорошей целью для вашей человеческой личности, для всей вашей жизни, вы можете начать сейчас .
В противном случае, экспериментируйте по-другому.
С наилучшими пожеланиями,
Клод
источник
Кто-то чуть не ударил ногтем по голове выше. Программирование это математика. В частности, программирование - это раздел математической логики, называемый теорией вычислимости или теорией рекурсии.
Непосредственно участвуют другие отрасли математики, в частности, формальный язык и теория автоматов. Они помогают описать регулярные выражения, используемые при сопоставлении с образцом, и формальные грамматики, используемые для описания и анализа языков программирования.
Любой, кто говорит, что программирование не является математикой, либо не знает, о чем они говорят, либо имеет скрытый мотив, как максималист «Интеллектуальной собственности», который надеется получить прибыль, получив патент на алгоритм или какую-то другую базовую математическую программу. факт или открытие.
Некоторые ссылки на программирование как математику, и следствие, не зная, о чем вы говорите:
Программа Proofs: логика 19-го века и компьютерные технологии 21-го века
Программы являются доказательствами: модели и типы в лямбда-исчислении
Корреспондентская статья Карри-Ховарда из Википедии
О необычной эффективности логики в информатике
Необоснованная эффективность логики
Да, они имеют большое значение для «логической» части математической логики, но математика, как правило, признается несколькими аксиомами, и их логические следствия развиваются с помощью логики первого порядка.
Если говорить иначе и быть максималистом "IP" ради денег:
Как запатентовать алгоритм в США . Алгоритмы не являются патентоспособными, но патенты выдаются на алгоритмы, не называя их алгоритмами. Нетрудно найти в Интернете много материалов, которые либо указывают, либо пытаются объяснить это противоречие.
источник
Математика это все, что связано с программированием. Например, в программировании игры вам нужно использовать математику для физики и делать больше всего. Для перемещения х позиции игрока в Java вы могли бы сделать
int x = x + speed * deltaTime
илиint x = x - speed * deltaTime
Но вы могли бы сказать, что это основные математики так позволяет перейти на более продвинутые вещи. Существует алгоритм рейтинга шахматистов, который называется Алгоритм Эло.Если вы все еще думаете, что это просто, попробуйте это. Как рассчитать возраст кого-то, когда вам дают день рождения, месяц и год. Вычтите год рождения из этого года, а затем проверьте, меньше ли месяц, чем этот месяц, и не вычтите 1.
Это не магия, это тяжелая работа и хорошая математика.
источник
Хорошо, я, вероятно, получу массу голосов за это, но программирование и математика - две совершенно не связанные вещи. Кто-то может быть удивительным разработчиком, знающим только основы, такие как сложение, умножение и базовые логические операции.
Большинство разработчиков не решат ни одного уравнения в течение своей профессиональной карьеры, и такие вещи, как большие обозначения O, также могут быть поняты нематематическим способом. Вы просто думаете о чем-то, представляете, как в голове всплывают биты, и вуаля, вы можете сказать, что это за большой материал, если кто-то объяснит, что такое бревно и сила.
Иногда математика может сделать это простым, или это может заставить вас чувствовать гордость за то, что вы доказали что-то, поскольку вы можете расширить смысл программирования до математической области, назвав ее дискретной математикой и тому подобным, но изучив множество дифференциальных уравнений и интегралов, и как доказать это, ИМХО не совсем лучшая идея, что делать, если вы хотите преуспеть в качестве программиста.
По крайней мере, я не касался математики в течение 10 лет, у меня все время были споры с моими профессорами по математике, и когда мне была нужна математика для рендеринга в реальном времени, я изучал все с точки зрения программистов, без каких-либо доказательств каких-либо теорем, и для меня это было просто и легко понять по сравнению со всеми профессорами математики, которые вставали нам в голову комментарий: «Вы не можете быть хорошим программистом, если вы не знаете математику». Конечно, вы можете, просто!
Теперь я знаю математические вещи, так что я могу общаться с математическими программистами со всеми различиями журнала и прочим, но только по той причине, чтобы они не потеряли сознание. Потому что эти вещи бесполезны в 99,9% случаев, и когда они есть, их можно изучать в 1000 раз эффективнее с точки зрения программистов.
Черт, программистам нужно как минимум 5 лет, чтобы освоить язык программирования + фреймворки + лучшие практики С какой стати они должны научиться доказывать теоремы? Ученики по математике занимаются математикой, программисты запускают это, вот как это должно работать.
источник