Действительно ли программирование является подмножеством математики? [закрытый]

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

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

64
задан 9 revs, 5 users 45% 8 July 2010 в 20:48
поделиться

25 ответов

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

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

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

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

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

46
ответ дан 5 revs 24 November 2019 в 15:33
поделиться

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

1
ответ дан Joeri Sebrechts 24 November 2019 в 15:33
поделиться

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

Для ответа на вопрос, согласно моей alma mater, математика == программирующий, так как они позволили мне брать Введение к C++ для выполнения моего математического требования.

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

1
ответ дан Michael Itzoe 24 November 2019 в 15:33
поделиться

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

1
ответ дан Sergey Stolyarov 24 November 2019 в 15:33
поделиться

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

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

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

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

1
ответ дан David Wees 24 November 2019 в 15:33
поделиться

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

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

1
ответ дан prasanna 24 November 2019 в 15:33
поделиться

Я сказал бы, что программирование меньше о математике, чем это раньше было, когда мы перемещаемся до Языков четвертого поколения. Блок очень о математике, C#, не так. Мысли?

1
ответ дан ferventcoder 24 November 2019 в 15:33
поделиться

Математика + искусство + логика

2
ответ дан newbie777 24 November 2019 в 15:33
поделиться

Можно на самом деле утверждать, что математика, в форме логических доказательств, походит на программирование -

Выезд корреспонденция Карри-Howard. Это - вероятно, больше способ, которым математик посмотрел бы на вещи, но я думаю, что это ударяет общеизвестный гвоздь по голове.

2
ответ дан Tyler 24 November 2019 в 15:33
поделиться

Я сказал бы...

Это - частично математика, особенно на теоретическом уровне. Предположите разрабатывать эффективные searching/sorting/clustering/allocating/fooifying алгоритмы, это - вся математика... выполняющая палитру от теории чисел до статистики.

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

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

Просто мой 2Вў...

2
ответ дан Dan Lenski 24 November 2019 в 15:33
поделиться

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

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

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

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

2
ответ дан Philip Rieck 24 November 2019 в 15:33
поделиться

Основа всего, что мы делаем, является математикой.

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

4
ответ дан CodeRedick 24 November 2019 в 15:33
поделиться

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

Взглянули на http://en.wikipedia.org/wiki/Dynamic_logic_ (modal_logic) . Это - способ математического анализа вещей, изменяющихся в течение времени. Кроме того, Hoare утраивается, способ формализовать поведение ввода - вывода программ. При наличии некоторых аксиом, имеющих дело с последовательным составом программ и как присвоение работает, можно отлично иметь дело с состоянием, изменяющимся со временем математически строгим способом.

, Если математика Вы знаете, недостаточно, "изобретите" некоторую новую математику для контакта с тем, что Вы хотите проанализировать. Newton и Leibniz сделали это для анализа (иначе исчисление, я думаю). Никакая причина не сделать это для вычисления и программирования.

3
ответ дан Jonas Kölker 24 November 2019 в 15:33
поделиться

Ну, в стороне от всего это...!

Математика используется для многих аспектов программирования такого как

  • Создающие эффективные и умные алгоритмы
  • Понимающая Большая безопасность нотации
  • O (такие как RSA)
  • [еще 114]... Я думаю что, программируя математику потребностей для выживания. Но я не назвал бы его подмножеством. Это точно так же, как выдувает стекло свойства использования физики, но те художники не называют себя физиками.
5
ответ дан stalepretzel 24 November 2019 в 15:33
поделиться

Правовая оговорка: Я работаю консультантом по ИТ и разрабатываю главным образом материал Архитектуры и порталы. У меня есть Степень в области психологии. Я никогда не изучал Математику в Университете. И я сделал свое задание. И обычно хорошо. Почему? Поскольку я не думаю, что необходимо знать, что Математика (как в 'тяжелом' материале Математики) пишет код. Вам нужны аналитическое мышление, решающие проблему навыки и высокий уровень абстракции. Но Математика не дает Вам это. Просто другая дисциплина требует подобных навыков. Мои исследования в Психологии также относятся к моей ежедневной работе, занимаясь проблемами удобства использования и хранением данных. Лингвистика и Семиотика также играют роль.

, Но ожидают, просто еще не горите меня. Я не говорю, что Математика не нужна вообще для компьютеров - очевидно, Вам нужны реальные Математические навыки при разработке алгоритмов шифрования и аппаратных средств и и т.д. - но если, как много программистов, Вы просто работаете середина/низкоуровневый язык (как C) или высокоуровневый материал (как C# или Java), используя главным образом предварительно созданные платформы и API, Вы не должны действительно понимать математические принципы позади преобразований Фурье или деревьев Huffman, или полосы Moebius... позволяют кому-то еще обработать это и позволить мне создать значение сверху его. Я не глуп. Я знаю различие между линейными и экспоненциальными алгоритмами и структурами данных и и т.д. У меня просто нет интереса переписать quicksort или элегантный новый метод сжатия видео.

6
ответ дан axel_c 24 November 2019 в 15:33
поделиться

если Ваше определение математики включает все формы формальной логики, и программирование определяется только логикой и вычислениями, существующими в коде, то программирование является подмножеством математики ЧТО И ТРЕБОВАЛОСЬ ДОКАЗАТЬ;-)

, но это похоже на высказывание, что рисование просто помещает окрашенные пигменты на поверхность - это полностью igores искусство, понимание, интуиция, весь творческий процесс

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

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

10
ответ дан Steven A. Lowe 24 November 2019 в 15:33
поделиться

Существует много беспорядка здесь.

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

Теперь, аргумент может быть приведен, та информатика является ответвлением математики; но, как Knuth указывает (в его статье "Информатика и ее Отношение к Математике", собрался в его Выбранные Статьи об Информатике ) можно также утверждать, что математика является ответвлением информатики.

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

, Но, для возврата к исходному вопросу: практику, "разработка предприятия/OO" довольно далеко удалена из математики - но это в основном, потому что большая часть серьезной математики, включенной на более низких уровнях операции, была абстрагирована далеко (компиляторами, операционными системами, системами команд, и т.д.). Точно так же усовершенствованное знание физики двигателя внутреннего сгорания не требуется для вождения автомобиля. Естественно, если Вы хотите разработать более эффективный автомобиль....

19
ответ дан Michael Dorfman 24 November 2019 в 15:33
поделиться

Эйнштейнов был известен в 1917 как известный математик. Только в Хиросиме, широкая публика наконец возвратилась к пониманию, что физика не является просто прикладной математикой.

, Когда люди не понимают что-то, они пытаются понять его как тип чего-то, что они действительно понимают. Они думают по аналогии. Программирование было описано как поле математики, разработки, науки, искусства, ремесла, конструкции... Ни один из них не абсолютно ложен; это одалживает у всех них. Реальная проблема - то, что полю программирования только приблизительно 50 лет. Люди не интегрировали его в свой умственный taxonomies.

23
ответ дан Alan Hensel 24 November 2019 в 15:33
поделиться

Хорошо, я был математикой и CS, главным в колледже. Я сказал бы, что, если набором A является Математика и набор, B является CS, то A пересекает B. Это не подмножество.

Это несомненно, что многие родительские элементы и родительские элементы информатики были Математиками как Turing и Dykstra. Большинство основателей Интернета было или доктором философии в Математике, Физике, или Разработка. Большая часть базового понятия информатики прибывает из математики, но действие программирования не является действительно математикой. Математика помогает нам в наших повседневных жизнях, но эти два не являются тем же.

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

31
ответ дан 2 revs 24 November 2019 в 15:33
поделиться

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

- E. W. Dijkstra

53
ответ дан 2 revs, 2 users 80% 24 November 2019 в 15:33
поделиться

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

82
ответ дан 2 revs, 2 users 86% 24 November 2019 в 15:33
поделиться

Это - половина математики, половина человека говорят, понятное дело.

-5
ответ дан MetaGuru 24 November 2019 в 15:33
поделиться

Программирование не упоминается, но идея все еще актуальна.

30
ответ дан 24 November 2019 в 15:33
поделиться

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

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

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

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

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

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

2
ответ дан 24 November 2019 в 15:33
поделиться
Другие вопросы по тегам:

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