Подтвердить что ты не робот

Должны ли разработчики знать дискретную математику?

Важно ли разработчикам знать дискретную математику? Большинство книг об алгоритмах и анализе имеют хотя бы некоторые ссылки на математику. Я могу легко понять алгоритмы в принципе и реализовать их без каких-либо проблем, но когда дело доходит до математических частей, я застреваю. Как правило, предполагается, что разработчики будут иметь глубокие знания математики для понимания алгоритмов и методов?

4b9b3361

Ответ 1

Это зависит от типа разработчика, о котором вы говорите, и о той математике, о которой вы говорите. Я почти уверен, что большинству "обычных" разработчиков не нужно много знать о математике. Но вы хотите быть "обычным" разработчиком?

  • Если вы разрабатываете веб-приложения, которые отображают и позволяют редактировать данные в базе данных, вам, вероятно, никогда не понадобится математика.
  • С другой стороны, если вы разрабатываете GPS-систему, которая показывает путь к цели (или какое-либо другое приложение, которое выполняет более сложные вычисления), то дискретная математика будет полезна.
  • Это не обязательно дискретная математика, хотя, например, в финансовой отрасли людям гораздо важнее вероятность и статистика.

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

Ответ 2

Да.

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

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

Ответ 3

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

Ответ 4

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

Если вы знаете только математику 4-го класса, вас попросят решить проблемы, связанные с математикой на уровне 4-го класса или менее.

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

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

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

Ответ 5

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

Ответ 6

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

Ответ 7

Мой опыт таков:

Знание чего-то о дискретной математике - это то, о чем вы никогда не пожалеете. Это упростит вашу работу во многих случаях, даже в мирских задачах, потому что вы будете достаточно знакомы с различными концепциями, которые по меньшей мере позволят вам построить более разумный запрос google. Глубокое знакомство и способность выполнять эти действия с помощью rote, вероятно, не помогают большинству программистов, но, безусловно, имеет место знакомство.

Тем не менее, большинство программистов в отрасли, с которыми я столкнулся (и даже некоторые в академических кругах!), почти ничего не знают об этом, поэтому не зная, что это вряд ли приведет вас к значительному недостатку за пределами нескольких вспомогательных программ для программирования -disciplines.

Ответ 8

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

Честно говоря, я думаю, что самое главное - это понимать бизнес, для которого вы строите, и как вы подходите к написанию кода (читаемость, модульность и т.д.).

Ответ 9

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

Ответ 10

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

Но такие темы, как:

  • Теория множеств
  • Теория графов
  • Alg. Анализ
  • Alg. Сложность
  • Сортировка
  • и т.д...

необходимы разработчику.