То, что базовые математические понятия являются хорошим разработчиком, должно знать? [закрытый]

Это работает:

Iterator<Integer> iter = l.iterator();
while (iter.hasNext()) {
    if (iter.next().intValue() == 5) {
        iter.remove();
    }
}

Я предположил, что поскольку цикл foreach является синтаксическим сахаром для итерации, использование итератора не помогло бы ... но оно дает вам эту функциональность .remove().

62
задан Oded 12 June 2013 в 12:48
поделиться

27 ответов

62
ответ дан Gulzar Nazim 24 November 2019 в 16:37
поделиться

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

0
ответ дан Scott Wegner 24 November 2019 в 16:37
поделиться

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

0
ответ дан Federico A. Ramponi 24 November 2019 в 16:37
поделиться
  • булева алгебра
  • теория множеств
0
ответ дан Fortyrunner 24 November 2019 в 16:37
поделиться

Ну, это зависит от того, какова Вы цель. Как кто-то сказал, Линейная алгебра, Комбинаторика, Вероятность и Статистика и Теория графов важны, если Вы в решение тяжелых проблем. Асимптотический рост функций (Разрядная о нотация) очень важен. Необходимо будет также освоить суммирование и ряд, если необходимо работать над анализом некоторых более сложных алгоритмов (см. приложение на Cormen& Введение других к Алгоритмам).

, Даже если Вы в "Java для предприятия" или "серверной стороны PHP", Вы найдете некоторую Сложность Статистики и Алгоритма (следовательно комбинаторика, индукция, суммирование, ряд, и т.д.) полезный, когда Ваш босс захочет, чтобы Вы заставили сервер работать быстрее, и добавление, что новые аппаратные средства, кажется, не помогают.:-) я был через это однажды.

0
ответ дан 24 November 2019 в 16:37
поделиться
  • булева алгебра
  • теория множеств
  • дискретная математика
0
ответ дан mrbradleyt 24 November 2019 в 16:37
поделиться

Дискретная математика
линейная алгебра
комбинаторика
вероятность и статистика
теория графов

0
ответ дан Landon 24 November 2019 в 16:37
поделиться

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

0
ответ дан JasonS 24 November 2019 в 16:37
поделиться

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

1
ответ дан Mike Wills 24 November 2019 в 16:37
поделиться

Была книга, которая рекомендовалась..., заголовок был чем-то как Конкретная Математика. Это рекомендовалось в нескольких вопросах.

1
ответ дан Thomas Owens 24 November 2019 в 16:37
поделиться

Основная Алгебра и Статистика являются хорошими начальными точками и основой для большого количества других полей.

3
ответ дан JosephStyons 24 November 2019 в 16:37
поделиться

Вот простой, который экранирует меня, когда я вижу разработчиков, которые не понимают его:
- Порядок Операций

2
ответ дан Daniel Auger 24 November 2019 в 16:37
поделиться

Я сказал бы булеву логику. И, ИЛИ, XOR, НЕТ. Я нашел как программист, мы используем это чаще, чем остальная часть математических понятий.

4
ответ дан Jimmy Chandra 24 November 2019 в 16:37
поделиться

Я думаю, что это зависит от Вашего фокуса. Несколько лет назад я купил набор Искусства Программирования Donald Knuth. После рассмотрения книг я понял в значительной степени, что все - доказательства исчисления. Если Вы интересуетесь разработкой Ваших собственных универсальных алгоритмов и доказательств для них, то я рекомендую способности понять вышеупомянутые книги начиная с, с чем Вы имели бы дело в том мире. С другой стороны, если Вы только хотите/нуждаетесь использовать различную сортировку/поиск/дерево/и т.д.... стандартные программы тогда большая нотация O как минимум, булева математика, и общая алгебра будет прекрасна. Если Вы имеете дело с 3D тогда геометрия и аккуратные также.

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

5
ответ дан ddowns 24 November 2019 в 16:37
поделиться

Запустите с того, что мы люди CS называют "дискретной математикой". Исчисление и линейная алгебра могут войти довольно удобные также, потому что они делают первый шаг к большому количеству доменов приложения. Как только Вы освоили те три, пойдите для теории вероятности. Те 4 получат Вас к компетентности в 95% (я составил это) доменов приложения.

7
ответ дан Ben Collins 24 November 2019 в 16:37
поделиться

Конкретная Математика затрагивает большинство главных тем. Хорошая книга по Дискретной Математике, как Rosen дискретная математика и Ее Приложения , заполнит любые разрывы.

7
ответ дан Bill the Lizard 24 November 2019 в 16:37
поделиться

Для дискретной математики, здесь потрясающий набор 20 лекций из Университета Arsdigita. Каждый - приблизительно час и двадцать минут длиной.

8
ответ дан Corey 24 November 2019 в 16:37
поделиться

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

9
ответ дан Corin Blaikie 24 November 2019 в 16:37
поделиться

В порядке важности:

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

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

  • Линейная алгебра и тригонометрия (3D визуализация)
  • дискретная математика и теория множеств (проектирование баз данных, дизайн алгоритма, дизайн компилятора).
  • Статистика (хорошо, для статистических и/или научных/экономических приложений. возможно также полезный для дизайна алгоритма).
  • Физика (для моделирований).

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

Моя точка быть: десятилетний должен знать, что достаточно математики в состоянии понять программирование. Нет действительно большого количества математики, требуемой для основного понимания вещей. Это - все о логике, действительно.

10
ответ дан Anders Sandvig 24 November 2019 в 16:37
поделиться

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

9
ответ дан Baltimark 24 November 2019 в 16:37
поделиться

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

if (condition-1) {
    if (condition-2) {
        action-1
    } else {
        action-2
} else {
    action-2
}

может быть переписан как

if (condition-1 and condition-2) {
    action-1
} else {
    action-2
}

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

, Как упомянуто Baltimark, математическая индукция очень полезна в обосновании о циклах и рекурсии.

Теория множеств является основанием реляционных баз данных и SQL.

Посредством аналогии, позвольте мне указать, что плотники обычно используют множество методов эмпирического правила в построении вещей как крыши и лестницы. Однако знание геометрии позволяет Вам решать проблемы, для которых у Вас нет "консервированного" эмпирического правила. Это похоже на обучение читать через фонетику по сравнению с распознаванием вида базового словаря. 90 + % времени там не является большим различием. Но когда Вы сталкиваетесь с незнакомой ситуацией, ОЧЕНЬ хорошо иметь инструменты для разработки решения сами.

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

19
ответ дан joel.neely 24 November 2019 в 16:37
поделиться

Я пошел бы с полями, которые заявил Landon:

Дискретная Математика, Линейная алгебра, Комбинаторика, Вероятность и Статистика, Теория графов

и добавляют математическую логику.

Это дало бы Вам власть на большинстве полей CS. Если Вы хотите войти в специальные поля, необходимо погрузиться в некоторые области особенно:

Computer graphics -> Linear Algebra
Gaming -> Linear Algebra, Physics
Computer Linguistics -> Statistics, Graph Theory
AI -> Statistics, Stochastics, Logic, Graph Theory
12
ответ дан Ralph M. Rickenbach 24 November 2019 в 16:37
поделиться

Глава 1 "Искусства Программирования" имеет целью обеспечивать точно это.

2
ответ дан Michael Dorfman 24 November 2019 в 16:37
поделиться

Проверить книгу Основы компьютерных наук
Авторы этой книги: Аль Ахо и Джефф Уллман, и вся книга доступна в Интернете.

Это то, что авторы говорят в предисловии к цели этой книги:

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

1
ответ дан 24 November 2019 в 16:37
поделиться

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

0
ответ дан 24 November 2019 в 16:37
поделиться

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

Я рассказываю об основах в своем сообщении в блоге « Computing Your Skill », где обсуждаю, как работает алгоритм ранжирования и подбора игроков TrueSkill в Xbox Live.

0
ответ дан 24 November 2019 в 16:37
поделиться

сайт для освежения знаний по математике: http://www.khanacademy.org/

1
ответ дан 24 November 2019 в 16:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: