Чем больше знаний, тем меньше эго, чем меньше знаний, тем больше эго ~ Альберт Эйнштейн

Введение

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

Приступаем к основам

Как мы все знаем, математика используется по крайней мере один раз в разработке, будь то простая логическая алгебра или простая логика, даже простое условное утверждение является математикой. В конце концов, вплоть до всего, что мы делаем, каждая строчка кода, который мы пишем, оказывается сама по себе математикой в ​​той или иной форме. Но когда следует учить математику? Что ж, область математики зависит от того, что вы разрабатываете. Я уверен, что вы слышали о крупных дебатах между разработчиками, которые имеют две стороны. Первая сторона говорит it is a must you must learn mathematics for development, а другая сторона говорит, что вы поняли обратное. С этим само по себе нельзя спорить, поэтому и существует эта статья. Я собираюсь объяснить основы и перейти к продвинутым причинам, и почему вы должны считать, что это, наконец, заканчивается, чтобы решить истинный вопрос do you need mathematics for development . Итак, не говоря уже о том, делать или понимать, давайте углубимся в это.

Почему, когда и где используется математика

Возможно, мы все задавались вопросом, неужели люди так быстро говорят, что нам НУЖНА математика для развития, где и когда алгоритмы или математика используются в этой области? Честно говоря, в большинстве приложений, которые вы видите сегодня, EX: облачные структуры, наборы автоматизации баз данных, вплоть до хакерских инструментов, используют многие формы математики. Практически каждое приложение, которое становится популярным или которое вы используете каждый день, использует математику. Но как именно и почему именно они его используют и для чего? При разработке приложений, которые вы хотите использовать среди многих больших групп людей или популяций, вы хотите убедиться, что ваше приложение или инструмент полезны, но также обеспечивает быстрый отклик, если он вращается что-то, что обычно требует много времени. Математика в приложении выполняется или реализуется разными способами, включая поиск определенного шаблона, сопоставление данных, прогнозирование данных, оценку данных, сортировку данных и т. д. Список ниже является примером того, где математика используется в повседневных приложениях.

  • Физические двигатели
  • Веб-браузеры
  • Подвиги
  • Разработка оборудования
  • Разработка веб-приложений
  • Дизайн игры
  • UX/UI-дизайн
  • Судебная экспертиза
  • Отображение
  • Социальные медиа
  • Это немного другая тема, а не приложение, так как это относится к большинству приложений, которые я решил учитывать. Итак, давайте подробнее рассмотрим определенные способы решения проблем. Когда некоторые люди сталкиваются с проблемами в своем коде, которые либо делают его менее производительным, либо делают его немного странным и трудным для чтения, например, декодирование пакетов или другие формы преобразования данных и манипулирования ими, они обращаются к одному — к алгоритмам. Алгоритмы существуют не только для того, чтобы сделать наши приложения быстрее, улучшить графику или помочь аппаратному обеспечению. Это скорее алгоритмы, которые помогут с параллелизмом и скоростью алгоритма. Большинство алгоритмов наверняка снизят нагрузку, что сделает приложение быстрее, но на самом деле есть алгоритмы для увеличения скорости процесса. Например, такие модели, как модели параллелизма, позволяют людям максимально быстро выполнять свои приложения. Однако слишком высокая скорость действительно существует, да, некоторые приложения на самом деле станут слишком быстрыми для задачи, которую они пытаются выполнить, поэтому будут использоваться другие алгоритмы для расчета количества потоков или параллелизма, которые должны быть добавлены к процессу или функция, которая выполняется. Алгоритмы параллелизма существуют и действительно полезны в определенных ситуациях, особенно когда вы можете перемещаться между различными функциями, чтобы создать достойный синхронизированный порядок. Этот следующий определенно немного более странный и более странный, чем большинство, кроме алгоритмов прогнозирования, моделей и логики. У каждой программы есть свои особенности, но для некоторого синтаксического анализа, сортировки данных или даже кибербезопасности вам может потребоваться создать собственную логику прогнозирования или даже алгоритмы прогнозирования. Что такое алгоритм предсказания? Ну, алгоритмы прогнозирования или реляционные алгоритмы, такие как алгоритмы линейной регрессии, которые помогают найти взаимосвязь между двумя наборами данных. Теперь давайте поместим это в еще один пример. Алгоритмы прогнозирования имеют странные места размещения, как и логика прогнозирования. Например, если бы мы немного углубились в wireshark и то, как серверы IMAP, SSH, FTP, SMTP аутентифицируются с использованием алгоритмов PLAIN, MD5, DIGEST, NEGOTIATE и т. д., мы увидим, что большую часть времени сервер отправляет код, сообщающий серверу чтобы запросить логин, после отправки этого пакета появится другой пакет, который будет отправлен от клиента к серверу для аутентификации. А что, если между этим запросом аутентификации от клиента есть пакеты, которые могут помешать нам найти или определить местонахождение этого пакета? Ну, поскольку мы не можем сказать программе просто предположить, что следующий пакет всегда будет запросом аутентификации или строкой от клиента из-за подобных ситуаций. Поэтому мы создаем собственную логику прогнозирования и алгоритмы прогнозирования, чтобы сообщить программе, что пакет с тем же типом, который имеет тот же тип данных, на 100% или 50% будет другим пакетом аутентификации. Однако нам нужно идти все глубже и глубже и разработать еще один более сильный алгоритм, который может ВСЕГДА обнаруживать и предсказывать, что это будет на 100% следующий пакет того же типа. Таким образом, мы можем использовать булеву алгебру, чтобы сделать алгоритм более безопасным и быстрым. Хотя мы хотим, чтобы наш алгоритм был быстрым, мы также можем захотеть использовать другой алгоритм или модель параллелизма, чтобы предотвратить пропуск потенциальных данных нашим алгоритмом. Это поможет нашему прогнозу, но, конечно, это всего лишь один метод, но где еще он будет использоваться? Алгоритмы прогнозирования используются повсеместно в большинстве приложений машинного обучения или приложений, которым необходимо принять определенные данные и просто сказать: «О, хорошо, если это равно этому, то это будет равно этой логической логике, но это просто пример.
  • До сих пор в этой статье я объяснял большое количество вариантов использования математики, особенно в области программирования и даже в области кибербезопасности. Но мы до сих пор не ответили и не закончили спор, который пытаемся оспорить. Правда в том, что аргумент говорит о том, занимаетесь ли вы NEED математикой в ​​разработке, и, честно говоря, это зависит от вашего случая, как мы видели здесь. Например, если вы разрабатываете какой-то эксплойт, вам не всегда понадобится математика, но если вы разрабатываете игру, похожую на майнкрафт или даже COD, вы на 100%, независимо от того, как вы думаете, потребует от себя изучения алгоритмов. В дальнейшем, если вы хотите продолжить разработку в любом случае, вам нужно будет знать математику в целом, чтобы понимать структуры данных, типы данных, классы данных, сортировку данных, манипулирование данными и так далее. Однако, в конце концов, я все еще думаю, и даже из личного опыта могу сказать, что изучение математики, особенно для компьютерных наук, - неплохая идея. Причина в том, что по существу компьютеры — это математика в электронном виде. Булева логика, булева алгебра, геометрия и т. д. — все для формирования фигур и графики — все это математика. Если мы сможем иметь глубокое понимание математики и особенно применить ее в нашей повседневной жизни, вы наверняка выиграете от этого, потому что в будущем с более сложными этапами разработки или проекта вы окажетесь в стежке и узнаете, как исправить эту ошибку с помощью алгоритм может помочь. Не говоря уже о том, что математика в целом просто помогает развить базовое понимание решения проблем и помогает вам понять новые концепции, о которых вы, возможно, не знали до того, как начали заниматься ИТ, или даже если вы в настоящее время работаете в ИТ. Например, у меня недавно была проблема в моем коде, у меня появлялась куча случайных строк и символов Unicode, которых там не должно быть. Я потратил часы и часы, пытаясь решить эту проблему с помощью стандартной замены строки, поиска Unicode, стирания элементов, которые не были из заданного списка символов и т. д. Однако ни один из них, похоже, не работал, и результат, с которым я работал, просто не делал мое приложение каким-либо лучше или красивее. Поэтому мне пришлось нарисовать два алгоритма, один из которых на самом деле не был алгоритмом, а более или менее вычерченным логическим логическим элементом, а другой был алгоритмом проверки и алгоритмом манипулирования данными. С помощью обоих этих алгоритмов мне удалось отловить ошибки декодирования в данных и исправить их с помощью пустых пробелов или вместо пробелов просто «». Таким образом, для каждого странного символа Unicode, который я получил, эти алгоритмы могли стереть и просто оставить пробел, который не был Unicode. Это не только сэкономило мне время на этапе разработки, но и помогло понять, где именно алгоритмы пригодятся и насколько лучше они сделают мой проект. С тех пор я использую множество алгоритмов на основе параллелизма, алгоритмов сортировки данных, алгоритмов поиска данных, таких как алгоритмы линейного и бинарного поиска, и даже сравнительную геометрию и булевую алгебру. В этом гораздо больше смысла учиться, и я был рад, что узнал больше, поскольку это принесло большую пользу моей карьере. Лично я считаю, что наряду с развитием обязательно нужно изучать математику. Тем не менее, это не отвечает на наш вопрос.

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

Почему именно математика используется в приложении

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

Поисковые системы

На самом деле я написал об этом статью, в которой более глубоко погружаюсь в поисковые системы, как они работают и т. д., которую вы сможете увидеть на моей странице. Он называется how I designed a search engine for hackers called EngineX . Но раз уж вы здесь, давайте углубимся в более математическую сторону поисковой системы. Все, что вам нужно знать для этого, это то, что поисковые системы принимают ваш запрос или ввод и одновременно очищают миллиарды веб-сайтов и сопоставляют ваши данные с очищенными веб-сайтами. Но как именно он дает вам точные результаты и знает, какой веб-сайт наиболее близок к вашему поиску? Поисковые системы используют известные алгоритмы сортировки данных, называемые алгоритмами рейтинга и сортировки. Итак, в первую очередь поисковые системы должны убедиться, что ваши данные совпадают с извлеченным веб-сайтом, что довольно просто и понятно, потому что им нужно убедиться, что данные в некоторой степени совпадают. Вы можете сделать это либо с помощью алгоритмов сортировки, либо с помощью набора условий сравнения. Поисковые системы используют алгоритмы для проверки или проверки и сравнения этих данных больше, чем условные, потому что в реальных сценариях, таких как поисковые системы, вы хотите, чтобы ваше приложение было параллельным и максимально быстрым, поэтому алгоритмы, такие как алгоритмы сравнения, помогают сделать приложение более параллельным (если реализовано правильно). После того, как данные сравниваются, проверяются, а затем помещаются в список, поисковая система должна оценить их и отсортировать, используя алгоритмы оценки и сортировки. Эти алгоритмы рейтинга и сортировки помогут улучшить процесс и опыт как для приложения, так и для пользователя. Использование таких алгоритмов, как алгоритм PangeRanking, который Google использует для сортировки данных. Эти алгоритмы позволяют системе предположить или найти лучший результат, наиболее близкий к вашему поисковому запросу. Им присваиваются ранги, такие как 0–100%, и ранжируются от наибольшего к наименьшему. Самый большой процент помечается и выбрасывается наверх поиска, а остальное вы получаете.

Физика и игровые движки

Физика и игровые движки должны быть идеальными и соответствовать математике. Для движков, игр и физических приложений требуется больше алгоритмов, чем для обычного алгоритма или приложения для социальных сетей. Игры могут использовать такие алгоритмы, как перлим-шум, шумоподавление, алгоритмы поиска пути, алгоритмы луча и т. д., чтобы делать разные вещи. С современными и более мощными играми приходит больше алгоритмов, но что, если я скажу вам, что игра должна делать немного больше, чем просто алгоритмы сортировки и алгоритмы рендеринга текстур? Что ж, это правда, современные игры требуют множества графических алгоритмов, алгоритмов для ограничения использования графического процессора и процессора и многого другого. Некоторые игры, такие как COD, могут использовать алгоритм для измерения возможностей графического процессора и предположения о том, сколько он хочет использовать для питания и т. д., чтобы гарантировать, что вы можете получить максимальную производительность, а также не взорвать свой графический процессор до предела. Физические двигатели похожи в том, как они используют компьютер и алгоритмы расчета. Вместо этого физические движки используют алгоритмы, которые, как известно, помогают улучшить физику и нагрузить ее более графически. Вы видите, что каждому игровому движку нужен физический движок или движок, который может работать с игровым кодом для отображения уникальной физики, такой как трассеры, которые используются в треске, диапазоны до объектов, отбрасывание лучей и даже создание файлов текстур, используемых для зданий, скал, гор. или общая местность. Алгоритмы или, скорее, методы, такие как метод Рунге-Кутта, используются для определения скорости и наклона данного объекта. Подобные алгоритмы необходимы для игровых движков, физических движков и даже иногда веб-приложений, чтобы оживить игру. Потому что мы все знаем, что не может быть просто куча терминальных игр, люди устанут и захотят чего-то нового.

Параллелизм и прогнозирование

Вопрос: Стоит ли учить математику

Нужна ли математика?

Нет и да, математика никоим образом не требуется, но также требуется для программирования или даже запуска, но, опять же, она действительно помогает. Вот почему аргумент, нужно или не нужно изучать математику, не может быть ответом «да» или «нет», поскольку все это будет зависеть от факта забора. На этот вопрос можно ответить разными способами, но есть только один верный способ понять, каков правильный ответ. Это довольно просто, это просто тот факт, что это зависит от вашей области. Для взлома вам НУЖНО изучать математику для разработки? Нет, не совсем, но если вы разработчик игр, вам НУЖНО изучать математику или, по крайней мере, иметь общее представление об определенных формах математики. Как сказано выше, это определенно помогает, но, как мы решили, это на заборе. И левая, и правая стороны этого аргумента неверны, потому что он заканчивается 50/50.

Конец

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

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

«Scare-Security
Scare security — это постоянно развивающаяся группа разработчиков кибербезопасности и эксплойтов. Наши участники очень разнообразны в…github.com»

Страница разработки

«ArkAngeL43 — Обзор
Здравствуйте! Меня зовут RE43P3R/Totally_Not_A_Haxxer, я многопрофильный разработчик и пентестер. Я трачу свой…github.com»

Страница в инстаграме



Наличное приложение



Венмо

Венмо | Совершенно не хакер Haxxer
Venmo — это цифровой кошелек, который позволяет совершать платежи и делиться ими с друзьями. Вы можете легко разделить счет, такси…account.venmo.com

Поисковые системы



Математика в разработке



Игровые движки



Чем больше знаний, тем меньше эго, чем меньше знаний, тем больше эго ~ Альберт Эйнштейн