2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как математика связана с программированием

Как связано программирование и математика?

Я ученик 9 класса. Занялся изучением программирования 4 года назад на спецкурсах. В начале пути мне говорили многие, что программирование тесно связано с математикой, а кто-то говорил, что вообще без высшей математики суть программирования не понять.
На спецкурсах я изучал создание сайтов и программирование на java. В качестве проектов создавал сайты на php&mysql и js и простенькие игры на java, например, одним из моих проектов на java была «змейка». С пониманием языков программирования у меня не было никаких проблем. Математика при этом не была высшей (но с пониманием алгебры с геометрией у меня тоже все нормально).

Что за связь программирования и математики?
Самая очевидная в том, что там слова одинаковые есть (функция, переменная)? Или в чем?

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

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

И так как связано программирование и математика?

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

Высшее образование (математика + программирование)
Здравствуйте! Закончил десятый класс, пытаюсь определиться с вузом. Раньше много времени уделял.

С++ программирование массивы дискретная математика
Подсчитать число перестановок из чисел 1,2,…, N<=15, в которых разность между соседними числами.

Математика и программирование
Здравствуйте ув форумчани. Я студент первого курса института. По чуть-чуть изучаю язык С. Но.

Дискретная математика и программирование
Здравствуйте. Учусь на первом курсе в политехе на программиста. Мы изучаем в данный момент C++.

Решение

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

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

Разработка игр. Тут все очевидно: без алгебры/геометрии ни пушку навести на врага, ни освещенность просчитать.

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

Читать еще:  Нужна ли онлайн касса для безналичных расчетов

В области анализа данных потребуются знания мат статистики и связанных вещей.

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

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

И здесь все просто и понятно. Но давай абстрагируемся от конкретных областей. Мы разрабатываем какой-то алгоритм. Зачем здесь математика?

Тут можно вспомнить, что мы работаем с различными алгоритмами и структурами данных. Они отличаются своими характеристиками (трудоемкость операций, затраты памяти), которые записываются в O-нотации: http://bigocheatsheet.com/. Нужно уметь выбирать наиболее оптимальные решения. Неплохо бы понимать, откуда берутся значения в круглых скобках и как анализировать собственные алгоритмы, см. асимптотический анализ.

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

Это было про алгоритмы. Абстрагируемся еще сильнее. Мы пишем какой-то код. Не важно, какой алгоритм он реализует. Он вообще может не делать ничего сложного. Возможно, в нем появятся логические выражения чуть сложнее, чем «if a < b». И здесь совсем не помешает знание булевой алгебры.

Еще пример. Тебя ведь не удивляет, что числа можно складывать и перемножать. А еще складывать можно строки. А перемножать вектора и матрицы, только реализуются эти операции совсем иначе. А еще есть комплексные числа со своими правилами. И, в общем-то, перемножать и складывать можно любые объекты, если определить для них, как это делать. Это одна из идей общей алгебры — мы можем работать с любыми объектами, если на их множестве определена какая-то алгебра и зафиксированы свойства операций. Ничего в программировании не напоминает? Интерфейсы, например. Можно ли писать код, не зная этого? Вполне. Не возьмусь говорить, что при этом потеряешь. Может быть, одну точку зрения на код. Насколько это критично — не знаю.

Нужна ли математика программисту?

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

Лучше начинать заниматься еще со школы

Разделы математики

Разные задачи подразумевают разные подходы к решению и требуют знания различных разделов математики. Если для создания простого калькулятора достаточно будет владеть базовой логикой и арифметикой в школьным объеме, то при разработке игрового «движка» с реалистичной физикой не обойтись без отличного знания геометрии, дифференциальных уравнений, математического анализа и многого другого. Основательных познаний требует и разработка в самых востребованных областях современного программирования — Data Science и Machine Learning — анализ данных и обучение искусственного интеллекта.

Логика

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

Читать еще:  Во что сейчас поиграть лучше

Дискретная математика

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

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

Сегодня все больше девочек интересуются программированием

Теория чисел

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

Теория вероятностей

Знания теории вероятностей позволяют программисту найти верное решение, даже когда исходных данных недостаточно. Формальная логика в таких ситуациях пасует, потому что нет оснований для однозначного решения. Однако теория вероятностей позволяет найти решение, максимально приближенное к верному. Теория вероятностей часто используется в IT. Например, в Байесовской фильтрации спама, на базе которого работают спам-фильтры большинства email-серверов. Кроме того, в робототехнике, программировании игр, при создании автомобильных компьютеров и т.д.

Математический анализ

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

Мастер-класс CODDY в Московском дворце пионеров

Ресурсы для тренировок

Project Euler — сайт носит имя знаменитого математика Леонардо Эйлера, поэтому просто не будет. На нем размещены самые сложные задачи по математике. Для решения многих требуется знание основ программирования.

Timus Online Judge — сайт Уральского федерального университета. Это крупнейший архив с задачами разного уровня сложности и автоматической проверкой. Есть задания на динамическое программирование, теорию чисел и структуры данных, а также, по словам создателей, необычные и хитрые.

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

W3Resource — портал с обучающими материалами, упражнениями и квизами по веб-разработке, базам данных и языкам программирования: JavaScript, Java, PHP, Python, Ruby и другим.

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

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

Codeforces — портал для регулярных марафонов по программированию. Можно принять участие в соревнованиях или просто потренироваться на заданиях прошедших мероприятий.

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

Основатель Международной школы программирования для детей CODDY

Нужна ли программисту математика?

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

У каждой специальности есть свой минимальный набор обязательных знаний. У информатики и программирования такой основой служат математические курсы; так что вопрос: «нужно ли программисту образование?», обычно превращается в «нужна ли программисту математика?» или «нужно ли программисту так много математики?» Учитывая, что программист в классическом смысле – это инженер, вопрос можно сформулировать и иначе: «нужно ли образование инженеру?» Споров на этот счёт обычно не возникает. Проблема разве что вот в чём: не все хотят быть учёными и инженерами. Если предел ваших мечтаний – успешная игра в App Store, а не проектирование искусственного интеллекта, криптографического алгоритма или программ трёхмерной анимации, вы можете смело минуя вуз приступить к её выполнению, но и в этом случае знания не испортят вам карьеру. В вузах не знают, кем вы себя видите через много лет и чем планируете заниматься – не говоря уже о том, что вы сами в семнадцать лет можете ещё этого не знать. Считается, что лучше заранее научить вас всем основам, чем упустить что-то важное. Кроме того, основные курсы, как правило, взаимозависимы и нельзя просто взять и изъять некоторые из них. И их главная цель – не научить вас всему на свете, что в принципе невозможно, а предоставить вам примерную карту современных научных и инженерных знаний, чтобы при столкновении с неизвестным, вы смогли принять верное решение, в каком направлении идти.

Читать еще:  Какие орбиты бывают у спутников

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

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

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

Источники:

http://www.cyberforum.ru/programming-theory/thread2163057.html
http://zen.yandex.ru/media/id/5a2cd210a815f1e7d2fcb89c/5c50151d96aa1b00ad65703e
http://pikabu.ru/story/nuzhna_li_programmistu_matematika_2529407

Ссылка на основную публикацию
Статьи c упоминанием слов:

Adblock
detector