Является ли программирование подмножеством математики?

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

  • с использованием индукции для доказательства рекурсивного алгоритма,
  • формальные доказательства корректности,
  • функциональные языки,
  • лямбда-исчисление,
  • асимптотическая сложность,
  • DFA, NFA, машины Тьюринга и теоретические вычисления в целом,
  • и тот факт, что все на ящике двоично.

Я знаю, что математика очень важна для программирования, но я борюсь с этим "подмножеством". Каким образом программируется подмножество математики?

Я ищу объяснение, которое может иметь отношение к развитию предприятия /OO, если есть достаточно сильное соединение, то есть.

Ответ 1

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

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

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

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

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

Ответ 2

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

Ответ 3

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

- E. W. Dijkstra

Ответ 4

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

Несомненно, что многие из отцов и матерей информатики были математиками, такими как Тьюринг и Дыкстра. Большинство основателей Интернета были либо Phd в Math, Physics, либо Engineering. Большинство основных понятий информатики исходят из математики, но действие программирования на самом деле не является математикой. Математика помогает нам в нашей повседневной жизни, но они не то же самое.

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

Ответ 5

purity.png

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

Ответ 6

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

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

Ответ 7

Здесь много путаницы.

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

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

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

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

Ответ 8

если ваше определение математики включает в себя все формы формальной логики, а программирование определяется только логикой и вычислениями, существующими в коде, тогда программирование является подмножеством математики QED; -)

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

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

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

Ответ 9

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

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

Ответ 10

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

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

  • Создание эффективных и интеллектуальных алгоритмов
  • Понимание нотации Big O
  • Безопасность (например, RSA)
  • Еще много... Я думаю, что программирование нуждается в математике, чтобы выжить. Но я бы не назвал это подмножеством. Это просто, как дутье стекла использует свойства физики, но эти художники не называют себя физиками.

Ответ 11

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

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

Ответ 12

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

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

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

Ответ 13

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

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

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

Просто потому, что вы можете использовать математику рассуждать о чем-то не делает подразумевают, что это, ipso facto, математический объект. Математика используется для объяснения внутренних двигатели внутреннего сгорания, радиоактивный распад и жонглирование. С помощью математика не занимается математикой.

Ответ 14

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

Это частично математика, особенно на теоретическом уровне. Представьте, что вы разрабатываете эффективные алгоритмы поиска/сортировки/кластеризации/распределения/исправления, чтобы все математические... работали от теории чисел до статистики.

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

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

Только мои 2 ¢...

Ответ 15

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

Ответ 16

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

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

Ответ 17

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

Чтобы ответить на вопрос, согласно моей альма-матер, математика == программирование, так как они позволили мне принять Intro на С++ для выполнения моего требования к математике.

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

Ответ 18

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

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

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

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

Ответ 19

Темы, которые вы указали, являются темами теоретической информатики, и это ветвь чистой математики. Программирование - прикладная наука, которая использует теоретическую информатику. Само программирование не является отраслью математики, но Lambda Calculus/теория вычисления/формальная логика/теория множеств и т.д., На которых основаны языки программирования.

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

Теперь у кого-то есть склонность к изучению года или двух исчислений, снятых с приложения, и заключить, что чистая математика проста. Они понятия не имеют, о чем они говорят. Изучение исчисления или даже топологии, не затронутой выражением, не дает вам никакого представления о том, что делает чистый математик. Задача фактического доказательства этих теорем настолько глубока, что я буду откладывать ученому-программисту, чтобы указать на различие: "Если P = NP, то мир был бы совершенно другим местом, чем мы обычно предполагаем. Не будет особой ценности в" творческих скачках ", нет фундаментального разрыва между решением проблемы и распознаванием решения после его обнаружения. Каждый, кто мог бы оценить симфонию, был бы Моцартом, каждый, кто мог бы следовать поэтапному аргументу, был бы Гаусом..." - Скотт Ааронсон (теоретический компьютерный ученый, Массачусетский технологический институт)

Ответ 20

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

Ответ 21

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

Ответ 22

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

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

Ответ 23

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

Ответ 24

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

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

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

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

Ответ 25

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

Ответ 26

Я думаю, математика!= программирование: P

Ответ 27

Математика - самая чистая форма истины. Все наследуется от математики.

Аминь.

Ответ 28

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

Ответ 29

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

Математика описывается с использованием языка, часто записывается. Следовательно, математика тоже является подмножеством письма?

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

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

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

Ответ 30

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