Ранее на этом сайте обсуждалось взаимосвязь между математикой и программированием, а также то, является ли одно подмножеством другого и т. д.
В моем недавнем изучении программирования я обнаружил, что мне все больше и больше хочется, чтобы я лучше разбирался в математике. Вы все знаете сценарий, когда книги по программированию начинают что-то обобщать математическим способом («Следовательно, мы можем сказать это для всех <some single letter>, <lots of letters>»). Мои глаза тускнеют в таких ситуациях. Я знаю, что это по большей части из-за моей глупости, но кажется, что если бы я мог просто улучшить свои высшие математические навыки, возможно, я смог бы получить больше от таких вещей.
Главный вопрос: Действительно ли математика является чем-то, в чем можно «научиться лучше», или ваш мозг настроен на нее или нет?
Важный уточняющий вопрос: если ответ на вышеупомянутый утвердительный ответ, то каковы пути решения этого вопроса?





Я бы сказал, что это определенно то, в чем каждый может стать лучше. Это требует времени и терпения, а некоторые тексты неприлично плотны в том, что касается обозначений, но если вы готовы потратить время, я думаю, это не должно быть слишком ужасно.
Я бы посмотрел список математических символов в Википедии и держал бы его поблизости всякий раз, когда вы видите всплывающее большое количество символов. Переведите их по одному и соедините так, как вам удобнее (или спросите нас несколько раз, пока вы не освоитесь).
учиться учиться учиться!
Википедия на самом деле является неплохим справочником по математике. начните с того, что вам интересно, и переходите по ссылкам, пока не поймете все строительные блоки для этого начального предмета.
Почему-то математические формулы и символы не подходят моему мозгу ... почти как синий экран смерти в Windows ...
Сходите в местный общественный колледж и зарегистрируйтесь на Calculus 1. Он охватывает функции в математическом смысле и включает строгий курс повышения квалификации по алгебре, и в нем будет использоваться ровно столько символов, чтобы продвинуть вас вперед.
Если вы программист, дискретная математика НАМНОГО полезнее, чем исчисление. Я бы определенно начал с этого.
Здесь я склонен согласиться с Даной.
И то, и другое. Вы, может, станете лучше по математике. Но вы также действительно ограничены / наделены определенной проводкой в вашем мозгу. Это означает, что, скорее всего, вы сможете улучшить свои текущие математические навыки. Однако из-за ограниченности вашего умственного оборудования вы можете никогда не открыть новую теорему.
А когда дело доходит до совершенствования, я думаю, что путь, как всегда, - это практика. Читать математическую литературу, пытаться решать математические задачи и, в конечном итоге, развить мировоззрение, при котором вы по привычке сможете решать головоломки реального мира, которые вы видите перед собой в математических терминах.
Что касается связи программирования с математикой, я думаю, что она довольно сильная. Фактически, можно утверждать, что программа - это не что иное, как доказательство теоремы, а документ с требованиями - это все входные данные для доказательства.
+1 - Определенно и то, и другое. Ваш мозг может быть запрограммирован на определенный уровень математической компетентности, но большинство из них никогда не достигает этого предела из-за отсутствия попыток.
Я думаю, что каждый может стать лучше по математике. Вам просто нужно быть решительным и практиковаться.
Отчасти проблема в том, что книги по математике, как правило, пишут математики, которые перестали быть новичками в математике несколько десятилетий назад. Вам нужны книги, соответствующие вашему уровню и содержащие материал, с которым вы можете работать.
Некоторые рекомендации:
Если вы можете найти копию, возьмите Mathematica и хорошую книгу по ней (план Шаума на самом деле довольно хорош и дешев). Я все время использую его для визуализации вещей.
Как программист, вы, вероятно, захотите больше ориентироваться на дискретную математику, чем на вычисления.
Книга по конкретной математике, упомянутая в другом месте, превосходна.
Большинство вводных текстов по дискретной математике хорошо освещают такие вещи, как логика, множества, комбинаторика, вероятность, теория графов и т. д. В моей школе использовался текст Розена, который мне нравился.
Линейная алгебра полезна, если вы собираетесь программировать трехмерную графику. Большинство вводных текстов для инженеров научат вас тому, что вам нужно знать. Linear Algebra Done Right, вероятно, лучший вариант по «настоящей» линейной алгебре, если вам нужно что-то более теоретическое.
Ищите книги Мартина Гарднера и играйте с его головоломками. Он отличный писатель и педагог.
Помните, что математика не сильно меняет. Вы можете дешево купить подержанные книги на Amazon и в магазинах подержанных книг. Я всегда ищу версию n-1, когда покупаю учебники.
Я бы предупредил, что использование Mathematica не учит вас ничему фундаментальному в понимании математики ...
Нет, но вы можете проверить вещи и составить план, чтобы увидеть, работают ли они, как вы думаете. Раньше я посещал классы ТА по математике, которые использовали ее в качестве учебного пособия, и учебное пособие было отличным.
Я никогда не использовал mathmatica, но я использовал Matlab и Scilab. Scilab очень похож на Matlab и является бесплатным. Это отличный инструмент для построения графиков функций и простой проверки различных математических идей. Кроме того, это учит вас векторизовать вашу проблему, и, конечно же, небольшая смена парадигмы делает ваш мыслительный процесс более гибким.
практика практика практика!
Очертания Шаума для этого подходят. Если вас интересует вероятность (которая затрагивает комбинаторику), см. 50 сложных проблем вероятности.
Могу поделиться своим опытом ...
Я боялся математики с начальной школы. Ненавидел, не понимал, не преследовал.
Напротив, я всегда был очарован компьютерами. Я изучаю программирование, исходя из «необходимости знать» - я терпеть не могу не понимать компьютеры и программирование от самого низкого до самого высокого уровня. Я почти полностью самоучка и имею карьеру программиста / архитектора.
В прошлом году по настоянию жены я вернулся в институт. Я записался на лечебный курс алгебры, зная, что это будет больно. Это не так.
Каким-то образом за все годы обучения разработке объектно-ориентированного программного обеспечения казалось, что я обманом научился думать математически. Концепции просто больше не были такими сложными. Возможно, я научился мыслить в терминах сложных систем, состоящих из более мелких и менее сложных идей.
Сейчас я занимаюсь разработкой игр, а что - это какое-то серьезно ориентированное на математику программирование. НАМНОГО больше, чем развитие бизнеса, которым я занимался до сих пор. Однако меня это не пугает, потому что это математика применяемый. Работа над решением практических задач, кажется, делает изучение менее утомительным и гораздо более интересным. Я нашел полезными Википедию и Mathworld Вольфрама. Если вы уже умеете программировать, вы опережаете математику в играх.
Когда вы только начали изучать английский, все эти «символы» (буквы) казались вам тарабарщиной. Я уверен, что в какой-то момент вы были разочарованы своим непониманием. Но постепенно и постепенно вы начали их понимать.
В конце концов вы смогли составить свои собственные слова и предложения, используя эти символы. После того, как вас годами исправляли его структуру и грамматику, вы теперь владеете языком.
Математика такая же. Ваши глаза тускнеют, потому что вы не выучили язык. Может быть, в школе вам не особенно нравилась математика, потому что вы не видели для нее практического применения. Конечно, то, как мы преподаем математику нашим ученикам, ужасно, поэтому неудивительно, что многие заканчивают школу, не будучи в ней хорошо разбирающимися (для дальнейшего чтения, ознакомьтесь с Плач математика, где обсуждается, насколько ужасен наш нынешний метод обучения математике).
Однако никогда не поздно подняться до уровня, который позволит вам читать многие академические труды по информатике. Начните с Pre-Calculus вечером в местном общественном колледже (чтобы освежить в памяти все, что вы забыли). Затем переходите к исчислению и после этого переходите к дискретной математике. Честно говоря, это вся математика, которая вам понадобится в 99,99% случаев. Менее чем за 2–3 семестра вы полностью овладеете знаниями, и у вас больше не будет тусклых глаз, когда вы читаете что-то с математическими корнями.
Исчисление на самом деле не нужно, и можно сразу перейти к дискретной математике. В зависимости от предметной области вполне возможно быть программистом без «всего этого непрерывного материала». [Однако многим из них придется изучить дискретные аналоги.]
@ShreevatasaR, я считаю, что довольно много использую Calculus. Но опять же, это зависит от того, каким типом программирования вы занимаетесь. Предварительное вычисление (алгебра + триггер), вычисление и дискретность дадут человеку достаточно математики, чтобы охватить его основы.
«Плач математика» - замечательное чтение.
Да, это лучший и самый интересный документ, который я нашел по этой теме.
Изучение математики похоже на получение классического образования, особенно подходящего для программистов и других компьютерных профессий. А математика - это то, что вы цените больше, когда становитесь старше. Вы понимаете, что речь идет не столько о точных ответах, сколько о глубоком и концептуальном размышлении. Таким образом, «ответы», которые вы можете придумать, имеют гораздо больший смысл.
В свое время я бы порекомендовал пройти курс геометрии и потратить некоторое время на то, чтобы научиться доказывать теоремы, посмотреть, как концепции сочетаются друг с другом. Однако в наши дни я бы сказал, что может быть лучше пройти курс дискретной математики. Это намного практичнее и разнообразнее, но в нем все еще достаточно теории, чтобы усложнить задачу, если хотите.
Дискретная математика также предлагает вам задачи программирования, о которых вы, возможно, не задумывались раньше. Может быть, вам удастся придумать хорошую эвристику для решения NP-полной задачи, например задачи коммивояжера N-города. Может быть, даже придумайте пару решений и проверьте, какие из них лучше всего работают в каких обстоятельствах.
(Я никогда не ходил на курсы CompSci в колледже. Вы, наверное, можете сказать.)
Ваши навыки ржавеют, если не используются, а знания со временем тускнеют, если не используются. Если вы не используете свои математические навыки, у вас скоро не будет математических навыков. Постоянное новое обучение и практика уже имеющихся навыков приведут к тому, что однажды вы станете мастером математики / программирования.
Проект Эйлер содержит множество математических задач, которые можно решить только с помощью программирования. Проблемы усложняются, но используйте навыки и знания, приобретенные в предыдущих решениях.
Еще я покупаю интересные учебники в букинистических магазинах. Их дешево и постепенно ваши навыки улучшаются. Я использую их вместе с Посуда открытого курса MIT.
Интересный способ попрактиковаться в математике - http://projecteuler.net/. Хотя это менее систематично / эффективно, чем прохождение курса или чтение учебника.
Нашел, зарегистрировал и часто ломал голову над ним. Спасибо!
Прежде всего, я бы порекомендовал Математика для программистов Стива Йегге. Это в значительной степени подытоживает вашу борьбу.
А теперь хочу рассказать личную историю. У меня была двойная специализация по математике и CS. Я многому научился на уроках математики, но, честно говоря, я не ценил это так, как следовало бы. Я скажу вам, что многое из того, что я сделал, помогло мне в моей карьере программиста. И дело не в каких-то формулах или знании исчислений или в чем-то подобном. Дело в том, что солидный математический фон учит вас думать, чтобы решить проблему. Для меня это та математика, которая вам нужна.
Я точно знаю, что ты чувствуешь. Я всегда хотел больше выучить математику, но так как я не мог заниматься этим в колледже после школы (недостаточно места) и не мог изучать это в университете (не мог получить степень CS), мне еще предстоит формально изучать математику с 16 лет.
Математика - это то, чему может научиться каждый. Некоторые будут утверждать, что с возрастом становится все труднее, но я встречал людей старше 60 лет, которые с легкостью берут уроки математики. В моем университете есть одна женщина, которая учится на 70, и она через несколько месяцев до окончания учебы со степенью в области, связанной с математикой. Если вы хотите изучать математику, то сейчас самое подходящее время, хотя я буду первым, кто скажет, что это непросто. Несмотря на то, что вы обнаружите, что многие проблемы чрезвычайно просты с опытом программирования, вы все равно обнаружите, что решение ряда проблем отнимает у вас много времени. Я почти закончил курс MIT OpenCourseWare по линейной алгебре, а затем получил новую работу с частичной занятостью, работая 10 часов в день, 7 дней в неделю, и забыл большую часть того, что я узнал.
При этом, если у вас есть время и настоящая преданность делу, я могу порекомендовать несколько ссылок на видеолекции, которые могут просто помочь вам встать на путь.
Я не говорю, что это то, что вам нужно знать. Это то, что я намеревался изучить перед тем, как получить степень по информатике, поэтому не стесняйтесь выбирать то, что, по вашему мнению, лучше всего для вас.
1) Да.
2) Изучите математические вопросы, которые кажутся интересными. Покупайте / читайте книги, которые дадут вам необходимую информацию. Повторить.
Краткий ответ:
Могут быть люди, которые глупо хорошо разбираются в математике. Но эти люди, как правило, тоже умеют программировать.
Так что, если у вас есть навыки программирования, вы можете считать себя достаточно умным, чтобы изучать математику.
Примечание: я знаю, что есть умные люди с серьезными нарушениями в обучении математике, но я думаю, что это скорее исключение.
Этому абсолютно можно научиться. Лично я получил наибольшую пользу от курсов математики (особенно для доказательства), которые я изучал в колледже.
Рекомендуемые курсы:
Рекомендуемая книга:
Я настоятельно рекомендую попробовать пройти один или несколько из этих курсов в какой-либо школе. Найдите местный колледж и проверьте курс.
Я бы также порекомендовал Project Euler. Хотя он не совсем учит математике, он дает вам проблемы, которые вы затем можете найти, как их решить. Я всегда предпочитал решать реальные проблемы, а не изучать теорию.
Второй голос за книгу Локхарта «Плач математика», которая рекомендует преподавать математику как рисование, поэзию или музыку - не из-за ее практической полезности, а для простого удовольствия:
There’s no ulterior practical purpose here. I’m just playing. That’s what math is— wondering, playing, amusing yourself with your imagination.
Взгляните на диаграммы в недавней статье Кнута, Танцы Links, и скажите мне, что ему не нравилось их делать.
Отчасти проблема в том, что несколько математических символов передают чертовски много информации. Если вы читаете обычную книгу по программированию, она полна слов и кода. Ни то, ни другое не является слишком подробным (хотя мне часто приходится замедлять работу над кодом, а не с обычными словами). Однако одно сложное математическое уравнение может легко превратиться в экран, полный программного кода или слов. У нас есть всевозможные простые обозначения, которые описывают сложные процессы.
Другая проблема заключается в том, что обозначения стандартизированы, но не совсем. В разных книгах используются немного разные обозначения, поэтому нужно время, чтобы к ним привыкнуть. Также во многих учебниках ключевые этапы математических доказательств или даже примеров отсутствуют. Иногда даже профессора колледжей ломают голову над пропущенными шагами в данном доказательстве в учебнике, а затем приводят собственное доказательство или дают немного измененное доказательство вместо того, что в книге, потому что они выучили его по-другому или не могут точно воссоздать недостающий шаг что ведет к доказательству в другом направлении.
В любом случае, просто потому, что ваши глаза тускнеют, это не значит, что вам нужно сдаваться. В первый раз, когда вы увидите уравнения, вы, вероятно, будете читать текст на английском языке, и вам придется сделать паузу, чтобы рассмотреть их. Медленно просматривая их и обращая внимание на то, что означают все символы, шаг за шагом, вы можете получить ответ. Если есть какие-то обозначения, которые вы раньше не видели, вероятно, есть вводная глава или приложение, объясняющее эти обозначения, так что проверьте там. Наконец, поищите другие источники. Используйте google / wikipedia, чтобы найти уравнения для концепции, и вы можете найти вывод и / или доказательство, которому можете следовать. Кроме того, другой может помочь вам лучше понять текущие доказательства / выводы. Даже если ваше понимание доказательства / вывода не улучшится, ваше дополнительное исследование, вероятно, поможет вам понять уравнение.
Я думаю, что есть две вещи в изучении математики: 1. Изучение общей техники. Т.е. как сложить две дроби, как различить, объединить. 2. Научиться решать проблемы и применять математику в реальном мире.
Я думаю, что, взяв учебники по математике, вы выучите 1. Многие учебники по математике организованы по разделам, где будет несколько страниц, показывающих вам методику, а затем - кучу задач. Проблемы, как правило, связаны с техникой, которую вы только что изучили, и очень похожи. Т.е. в разделе логарифмов будут все проблемы с логарифмами и, вероятно, не будет многочленов. Выполняя задачи из раздела, вы научитесь методам. Чем больше проблем вы решите, тем быстрее вы их получите и тем лучше поймете концепции. Много раз вы обнаружите, что, работая над проблемами без явного запоминания формул, вы обнаружите, что после того, как вы сделаете достаточно, требуемые формулы будут запоминаться неявно. В конце концов, если у вас возникнут проблемы с поиском формул вероятности, вам стоит прочитать книгу о вероятностях. Если у вас возникли проблемы с обозначением сумм, вам следует обратиться к этому разделу книги по алгебре и т. д.
Чтобы выучить 2, я думаю, что учебники по математике не так сильно помогают, потому что в каждом разделе, как правило, есть проблемы, связанные с этим разделом. Иногда встречаются несколько задач «смешанного обзора» или «обзор главы», который смешивает проблемы, но обычно они находятся далеко друг от друга. Учебники естественных наук, такие как физика, биология, химия и т. д., Как правило, лучше подходят для этого. Там вы часто читаете задачу, формулируете ее и в конечном итоге используете различные математические инструменты для ее решения. Иногда исчисление, линейная алгебра и геометрия - все в рамках одной и той же задачи. Ценность здесь в том, что он учит решать проблемы. Как правило, SAT / GRE не проверяют, знаете ли вы, как заниматься алгеброй, они проверяют, знаете ли вы, как применить ее в реальном мире, и научные проблемы действительно помогают вам здесь. Кроме того, программирование в целом - это решение проблем, и чем лучше вы будете решать проблемы, тем лучше вы будете в программировании. В основном в программировании вы берете проблемы, создаете мысленную модель, разрабатываете решение, а затем моделируете его на выбранном вами языке программирования. Это похоже на физику. Вы смотрите на проблему, извлекаете математическую модель, разрабатываете решение, сравниваете некоторые уравнения с моделью решения, а затем вставляете числа. Я настоятельно рекомендую физику, потому что после моего обучения в колледже задачи со словами стали для меня простыми, и они использовали быть довольно сложным (хотя и не невозможным).
В повседневном программировании вы, вероятно, не будете использовать больше, чем алгебру и логику (для операторов if и условий цикла). Есть места, где используется высокая математика, такая как компьютерные игры, криптология, интеллектуальный анализ данных и т. д., Но для типичного бизнес-приложения вы, вероятно, не будете использовать больше, чем алгебру и логику и, возможно, немного теории множеств (материал настолько базовый, что вы уже усвоили это). Даже в местах, где используется высокая математика (например, в финансовых компаниях), часто бизнес-пользователи (или некоторая отраслевая литература) будут выполнять более высокие математические вычисления, и вам просто нужно будет реализовать уравнения (с некоторой алгеброй). Я упоминаю об этом только потому, что в большинстве книг по программированию есть не что иное, как алгебра и логика, если вы не читаете учебники по анализу алгоритмов (введение в алгоритмы), искусственному интеллекту или какой-либо другой области исследований. В общих прикладных книгах о том, как что-то делать, обычно не хватает математики.
Но в зависимости от того, что вы читаете, математика может помочь. Для большинства информатики достаточно алгебры + дискретной математики. Добавьте к этому немного практики по физике, и все будет в порядке. Это все еще может быть медленным шагом, но у вас должен быть правильный фон.
Мне нравится комбинаторика и алгоритмы - с удовольствием учишься быстрее.
Я заметил одну вещь: любая статья в Википедии о чем-то «математическом», кажется, довольно быстро становится продвинутой - я уверен, что это точный и хороший материал, но это действительно усложняет работу таким простакам, как я.