Я очень доволен kdesvn - интегрируется очень хорошо с завоевателем, во многом как trortousesvn с Windows Explorer, и поддерживает большую часть функциональности tortoisesvn.
, Конечно, Вы извлечете выгоду из этой интеграции при использовании kubunto, и не человечности.
Компьютерная графика .
Это все матричное умножение, векторные пространства, аффинные пространства, проекции и т. Д. Много-много алгебры.
Для получения дополнительной информации, здесь Статья в Википедии о проекции , а также более конкретный случай трехмерной проекции , со всеми его различными матрицами . OpenGL , общая библиотека компьютерной графики, является примером применения операций аффинной матрицы для преобразования и проецирования объектов на экран компьютера.
Примеры, которые я лично закодировал:
Ни в одном из моих проектов (пока) нет требуемых тем, таких как вычисления, дифференциальные уравнения или матрицы. Я не изучал математику в школе, но если проект требует математики, я просто ссылаюсь на свои учебники по математике, а если я застрял, я ищу в Google.
Отредактировано для добавления: Я думаю, что для некоторых людей более реалистично иметь Задачи программирования мотивируют к изучению определенных математических предметов. Другим нравится математика как таковая, и они могут выучить ее заранее, чтобы применить к будущим задачам программирования. Я из первого типа. Например, я изучал логарифмы в старшей школе, но не понимал их силы, пока не начал заниматься программированием, и внезапно мне показалось, что они появляются повсюду.
Для некоторых людей более реалистично иметь задачу по программированию, которая мотивирует изучение определенных математических предметов. Другим нравится математика как таковая, и они могут выучить ее заранее, чтобы применить к будущим задачам программирования. Я из первого типа. Например, я изучал логарифмы в старшей школе, но не понимал их силы, пока не начал заниматься программированием, и внезапно мне показалось, что они появляются повсюду. Для некоторых людей более реалистично иметь задачу по программированию, которая мотивирует к изучению определенных математических предметов. Другим нравится математика как таковая, и они могут выучить ее заранее, чтобы применить к будущим задачам программирования. Я из первого типа. Например, я изучал логарифмы в старшей школе, но не понимал их силы, пока не начал заниматься программированием, и внезапно мне показалось, что они появляются повсюду.Повторяющаяся тема, которую я вижу в этих ответах, заключается в том, что это явно контекстно-зависимое .
Если вы пишете движок трехмерной графики ], то вам будет полезно освежить свои векторы и матрицы . Если вы пишете простой веб-сайт электронной коммерции , тогда вам удастся использовать базовую алгебру .
Так что, в зависимости от того, что вы хотите сделать, вам может не понадобиться больше математики, чем вы сделали, чтобы опубликовать свой вопрос (!), или вам, возможно, понадобится докторская степень (т. е. вы хотели бы написать ядро с нестандартной геометрией для конструкции лопастей вентилятора турбины).
Однажды я писал что-то для своего Commodore 64 (я забыл что, мне должно быть 6 лет), и я хотел центрировать текст по горизонтали на экране.
Я работал составить формулу, используя математику и метод проб и ошибок; годы спустя я буду решать такие проблемы, используя настоящую алгебру.
Рисование, перемещение и наведение ракет, пушек, лазеров, гравитационных бомб и прочего в этой маленькой 2-мерной видеоигре, которую я сделал: wordwarvi
Синус / косинус много используется, и их обратные (через таблицы поиска ... Я старый, хорошо?)
Любому сайту / приложению с географической привязкой потребуется математика. Простой пример - функция «Покажи мне все пиццы Боба в радиусе 10 миль от меня» на веб-сайте. Вам понадобится математика, чтобы вернуть широту / долготу в радиусе 10 миль.
Это в первую очередь вопрос, ответ на который будет зависеть от предметной области. Некоторые задачи требуют уймы математики, а некоторые - только сложения и вычитания. Прямо сейчас у меня есть любимый проект, который может потребовать теории графов, не столько для математики, сколько для того, чтобы набраться базового словаря и концепций в моей голове.
Если вы занимаетесь симуляцией полета и чем-нибудь трехмерным, поздоровайтесь с кватернионами ! Если вы занимаетесь электротехникой, вы будете использовать триггерные и комплексные числа. Если вы делаете ипотечный калькулятор, вы будете выполнять дискретную математику. Если вы решаете задачу оптимизации, когда пытаетесь получить максимальную прибыль от своей фабрики виджетов, вы будете делать то, что называется линейным программированием. Если вы выполняете какие-либо операции, связанные, например, с сетевыми адресами, добро пожаловать в сопутствующую математику, ориентированную на биты. И это только для языков высокого уровня.
Если вы углубитесь в высокооптимизированные структуры данных и реализуете их самостоятельно, вы, вероятно, сделаете больше математических расчетов, чем если бы вы просто брали библиотеку.
Отчасти хороший программист должен быть знаком с областью, в которой вы программируете. Если вы работаете над программным обеспечением для Fidelity Mutual, вам, вероятно, потребуется знание инженерной экономики. Если вы разрабатываете программное обеспечение для Gallup, вам, вероятно, необходимо знать статистику. LucasArts ... наверное, линейная алгебра. НАСА ... Дифференциальные уравнения.
Особенность разработки программного обеспечения заключается в том, что от вас почти всегда ожидается множество шляп.
Без математики современные коммуникации полностью рухнут. Если вы хотите когда-нибудь взорвать голову, поищите поля Галуа, коды исправления ошибок и сжатие данных. Затем комбинации символов, функции интерполяции с ограничением полосы частот (я говорю о функциях синуса и приподнятого косинуса, а не о простых линейных и бикубических вещах), преобразования Фурье, восстановление тактовой частоты, минимально-неоднозначные обучающие последовательности символов, замирание Рэлея и / или Райса. , и фильтрация Калмана. Все это связано с математикой, от которой у меня сильно болит голова, и я получил степень магистра электротехники. И это просто не в моей голове, когда я учился на уроке беспроводной связи.
Объем математики, необходимый для работы вашего сотового телефона, огромен. Сделать мобильный телефон 3G с доступом в Интернет - ошеломляюще. Иногда людям нужно доказать с достаточной уверенностью, что алгоритм будет работать в большинстве случаев.
Но ... Если вы собираетесь работать с этим материалом только как с черными ящиками, импортированными из библиотеки (на самом деле, в их власти), ну, вам может сойти с рук просто знание алгебры, достаточное для отладки несоответствующих скобок. И этих рабочих мест намного больше, чем тяжелых ... но в то же время тяжелой работе труднее найти замену.
Более или менее все, что связано с поиском наилучшего макета, оптимизации или объектных отношений, является теорией графов. Вы можете не сразу подумать об этом как о таковом, но, тем не менее, вы используете математику!
Явный пример: я написал редактор шейдеров и оптимизатор на основе узлов, который взял набор связанных узлов и преобразовал их в код шейдера . Чтобы найти правильный порядок вывода кода, чтобы все входные данные для определенного узла были доступны до того, как они потребовались этому узлу, требовалась теория графов.
И, как говорили другие, все, что связано с графикой, неявно требует знания линейной алгебры, преобразования координатных пространств и множество других подразделов математики. Взгляните на любой недавний технический документ по графике, особенно те, которые связаны с освещением. Интегралы? Бесконечная серия ?! Теория графов? Оптимизация обхода узлов? Да, все они обычно используются в графике.
Также обратите внимание, что только потому, что вы не понимаете , что вы используете какую-то математику, когда пишете или разрабатываете программное обеспечение, не t означает, что это не так, и понимание математики, лежащей в основе , как и , почему алгоритмы и структуры данных работают так, как они работают, часто может помочь вам найти элегантные решения нетривиальных проблем .
За годы разработки веб-приложений мне не особо требовался Math
API. Насколько я помню, я когда-либо использовал только Math # min ()
и Math # max ()
из Math
API.
Например,
if (i < 0) {
i = 0;
}
if (i > 10) {
i = 10;
}
можно сделать как
i = Math.max(0, Math.min(i, 10));
Как разработчик электронной коммерции, я каждый день использую математику для программирования. По крайней мере, базовая алгебра.
Есть и другие приложения, которые мне пришлось написать для генерации векторных изображений, которые требуют глубоких знаний геометрии, исчисления и тригонометрии.
Затем есть побитовое маскирование ...
Преобразование шестнадцатеричного числа в десятичное в уме ...
Оценка потенциальной нагрузки приложения ...
Ага, если кто-то не разбирается в математике, он, вероятно, не очень хороший программист.
Я думаю, что многие программисты используют больше математики, чем они думают. Просто это приходит к ним так интуитивно, что они даже не думают об этом. Например, каждый раз, когда вы пишете оператор if, вы не используете свои знания дискретной математики?
Как инженер, я очень стараюсь придумать пример, когда я сделал не нужна математика. Та же история, когда я был аспирантом. Конечно, я не программист, но много пользуюсь компьютерами.
В графическом мире нужно много преобразований.
В криптографии вам нужны геометрия и теория чисел.
В AI вам нужна алгебра.
И статистика в финансовой среде.
Компьютерной теории нужна математическая теория: на самом деле почти все основатели математики.
Учитывая список местоположений с широтой и долготой, отсортируйте список в порядке от ближайшего к самому дальнему от определенной позиции.
Все приложения, которые имеют дело с деньгами, нуждаются в математике.
I не могу вспомнить ни одного написанного мною приложения, которое в какой-то момент не требовало математики.
Для реализации алгоритма Advanced Encryption Standard (AES) требовалось некоторое базовое понимание математики конечных полей. См. Подробности в акте 4 моего сообщения в блоге (включая образец кода).
Несколько лет назад у меня был проект DSP, который должен был вычислить реальное БПФ с основанием 2 и размером N в заданное время. БПФ с реальным основанием 2, поставляемое производителем, не будет выполняться за отведенное время, но их сложное БПФ размера N / 2 будет. Реальные данные легко ввести в комплексное БПФ. Получить ответы потом не так-то просто: это называется пост-плетением, или пост-расплетением, или расплетением. Выводить уравнения нетканого материала из БПФ и теории комплексных чисел было неинтересно. Переход оттуда к сильно оптимизированному коду DSP также был неинтересным.
Естественно, сигнал, который я измерял, не соответствовал размеру выборки FFT, что вызывает артефакты. Стандартное исправление - применить окно Ханнинга. Это вызывает другие артефакты. В рамках понимания (и тестирования) этого кода мне нужно было понять артефакты, вызванные окном Ханнинга,
Я использовал много алгебры при написании бизнес-приложений.
Простые примеры
BMI = weight / (height * height);
compensation = 10 * hours * ((pratio * 2.3) + tratio);
Игры и симуляторы требуют большого количества математических расчетов - гидродинамики, в частности, таких вещей, как пламя, туман и дым.
Я написал несколько хэш-функций для сопоставления кодов авиакомпаний и номеров рейсов с хорошей эффективностью в довольно ограниченном количестве слотов данных.
Я прошел через изрядное количество простых чисел, прежде чем найти числа, которые работают хорошо с моими данными. Для тестирования требовалась некоторая статистика и оценки вероятностей.
Решение проблем - Один из фундаментальных методов математики, не зависящий от области, заключается в преобразовании неизвестной проблемы в известную. Даже если у вас нет таких же проблем, вам нужен такой же навык. В математике, как и в программировании, практически все имеет разные представления. Понимание эквивалентности между алгоритмами, проблемами или решениями, которые на первый взгляд совершенно разные, поможет вам избежать сложных частей.
(То же самое происходит в физике: для решения кинематической задачи выбор системы координат часто представляет собой разницу между одной или десятью страницами, заполненными формулами, даже если проблема и решение идентичны.)
Точность языка / Логические рассуждения - Математика имеет очень краткий, но точный язык. Умение справляться с этим подготовит вас к тому, что компьютеры будут делать то, что вы говорите, а не то, что вы имели в виду. Кроме того, такая же точность требуется для анализа достаточности спецификации, проверки фрагмента кода, охватывает ли он все возможные случаи, и т. Д.
Красота и элегантность - Это может быть аргумент, который труднее всего понять. Я обнаружил, что понятие «красота» в коде очень близко к тому, что используется в математике. Красивое доказательство - это доказательство, идея которого сразу убеждает, а само доказательство просто представляет собой последовательность выполнения следующего очевидного шага.
То же самое и с элегантной реализацией.
(Большинство математиков, с которыми я встречался, склонны помещать эффект «Ага!» В конце, а не в начале. Как и большинство элитных компьютерных фанатов).
Вы, конечно, можете освоить эти навыки без одного урока математики. Но математика веками совершенствовала это.
Примеры: - Отсутствие необходимости запускать calc.exe для быстрой оценки требований к памяти. - Некоторые базовые статистические данные, позволяющие определить достоверное измерение производительности по выстрелу в темноте. - вывод формулы для последовательности значений, а не их жесткое кодирование - Понимание того, что означает c * O (N log N). - Рекурсия - это то же самое, что и доказательство индуктивностью
(этот список, вероятно, будет продолжаться, если я буду активно следить за собой в течение дня. Эта часть, по общему признанию, сложнее, чем я думал. Дальнейшие предложения приветствуются;))
Компания, в которой я работаю, занимается сбором большого количества данных, и наша претензия на известность (по сравнению с нашими конкурентами) - это мозговой мускул, который используется для извлечения чего-то полезного из данных. Хотя меня это по большей части не волнует, математика у меня есть. До этого я реализовал и проверил генераторы случайных чисел для статистических приложений, реализовал средство решения дифференциальных уравнений, написал симуляции для избранных законов физики. И, возможно, больше.
В машинном обучении : мы постоянно используем байесовские (и другие вероятностные) модели, и мы используем квадратичное программирование в форме машин опорных векторов , не говоря уже о всевозможных математических преобразованиях для различных функции ядра . Исчисление (производные) факторы в обучении перцептрона. Не говоря уже о теории определения точности классификатора машинного обучения.
В искусственный интеллект : удовлетворение ограничений и логика имеют очень большое значение.
Я использовал координатную геометрию, чтобы решить проблему поиска видимой части стопки окон, не перекрывающихся точно друг над другом.
Есть много других ситуаций, но это это тот, который я получил от макушки. По сути, все операции, которые мы выполняем, являются математическими или, по крайней мере, зависят от математики / связаны с ней.
Вот почему так важно знать математику, чтобы иметь более четкое понимание вещей :)
Фактически в некоторых случаях много математики имеет уловил наш здравый смысл, что мы не замечаем, что используем математику для решения конкретной задачи, поскольку мы использовали ее так долго!
Спасибо
Несколько месяцев назад я написал компилятор парсера, и это полно теории графов. Он был разработан только для того, чтобы быть немного более мощным, чем регулярные выражения (в том смысле, что разрешалось несколько совпадений и были добавлены некоторые другие функции), но даже такой простой компилятор требует обнаружения циклов, конечных автоматов и множества дополнительных математических вычислений.
-Графика (матрицы, переводы, шейдеры, интегральные приближения, кривые и т. Д. И т. Д. ... бесконечные точки)
-Алгоритм вычисления сложности (особенно в бизнес-приложениях)
-Арифметика указателя
-Криптографические данные по полевой арифметике и т. Д.
-ГИС (алгоритмы треугольников, квадратов, такие как удаление, ограничивающие прямоугольники и многое другое)
-Счетчики монитора производительности и описываемые ими функции
-Функциональное программирование (просто это, не говоря больше :))
-......
Я использовал Combinatorials, чтобы вставить 20 бит данных в 14 бит пространства.
Отвечая на этот вопрос алгоритм сравнения изображений , я опирался на большие знания математики, некоторые из них из других ответов и веб-поисков (где мне пришлось применить мои собственные знания для фильтрации информации), а также некоторые из моего собственного инженерного образования и длительного опыта программирования.
Я использовал тонны математики в различных проектах, в том числе:
И это просто не из моей головы.
И, конечно же, все, что связано с «чистой» информатикой (алгоритмы, вычислительная сложность, лямбда-исчисление), чем глубже, тем больше похоже на математику.
Машинное зрение или Компьютерное зрение требует глубоких знаний вероятности и статистики. Обнаружение / распознавание объектов и многие методы контролируемой сегментации основаны на байесовском выводе. Тяжело разбирается и в линейной алгебре.