Я нашел сайт, на котором написано, что исчисление и линейная алгебра необходимы для системного программирования.
Системное программирование, насколько я знаю, касается osdev, драйверов, утилит и так далее. Я просто не могу понять, как исчисление и линейная алгебра могут помочь в этом. Я знаю, что у исчисления есть несколько применений в науке, но в этой конкретной области программирования я просто не могу представить, как исчисление может быть настолько важным.
Информация была на этом сайте: http://www.wikihow.com/Become-a-Programmer
Изменить: Некоторые ответы здесь объясняют о сложности алгоритма и оптимизации. Когда я задавал этот вопрос, я пытался быть более конкретным в области системного программирования. Сложность и оптимизация алгоритма могут быть применены к любой области программирования, а не только к системному программированию. Возможно, поэтому я не смог придумать такое мышление во время вопроса.
источник
Ответы:
Я думаю, что это не очень важно, если вы пишете утилиты без графического интерфейса поверх современной операционной системы, не работая над ее внутренними компонентами. Возможно, другая история, если вы работаете над изменением современной операционной системы или разработкой новой.
Если вы работаете с видеооборудованием или оконной системой «голое железо», вам понадобятся знания линейной алгебры для эффективного обновления графики. Я сам не смотрел, но держу пари, что в исходном коде вы можете найти примеры для X, KDE и Gnome.
Если вы работаете с аппаратными средствами в отношении цифровой обработки сигналов, тогда исчисление будет очень важным. Я предполагаю, что есть некоторые устройства, которые выполняют тяжелую работу с системным процессором вместо локального микропроцессора, и они часто взаимодействуют с аналоговыми электрическими системами.
Кроме того, исчисление играет важную роль в анализе производительности помимо простой линейной алгебры при попытке подбора кривой к данным.
источник
Комментарий SomeKittens справедливо относится к деньгам: вам нужны исчисление и линейная алгебра, потому что эти курсы изменяют способ вашего мышления и способ понимания мира. Линейная алгебра - все о отображении от одного домена до другого; исчисление охватывает поведение функций. Они сами по себе являются мощными инструментами, но техники, которые вы изучаете при изучении этих областей, также становятся частью вашей ментальной картины мира.
Вам также нужны эти курсы, потому что люди ожидают, что вы сможете думать в таких терминах. Я не часто вижу, как мои коллеги берут производную от многочлена на своих белых досках, но я часто вижу эскизы функций с касательной, нарисованной в какой-то интересной точке, или с областью под кривой. Мы не заботимся о фактических значениях, чтобы рассчитывать их, но понимание того, как значения меняются , важно, и это является частью повседневных разговоров.
Любая степень бакалавра в области компьютерных наук потребует исчисления, линейной алгебры, статистики, логики и других математических курсов не потому, что программистам необходимо применять методы непосредственно на регулярной основе (хотя они могут, в зависимости от того, что они делают), а потому, что вам это нужно знание, чтобы понять материал, который приходит позже.
источник
Я скажу, что не думаю, что исчисление или линейная алгебра могут быть важны для системного программирования.
Я, конечно, думаю, что исчисление и линейную алгебру стоит изучать вообще - я математик! И, как указывают другие ответы, существует некоторая косвенная актуальность, поскольку анализ производительности и разработка алгоритмов могут использовать расширенную математику. Тем не менее, я не думаю, что системное программирование больше зависит от математики, чем большинство других областей, которые обычно не считаются математическими.
источник
Я подозреваю, что это правда по краям. Системные программисты должны быть гораздо более обеспокоены производительностью и надежностью, поэтому анализ алгоритма может быть важен, а иногда необходимы исчисления для доказательства анализа Big-Oh. Такие предметы, как теория очередей и дискретная оптимизация (это математическая оптимизация, а не оптимизация кода) также могут сыграть свою роль. Тем не менее, я думаю, что это в основном относится к людям, работающим на новейших операционных системах и сетевых протоколах, а не к тем, кто работает над драйвером USB 3.0.
источник
Ваше определение системного программирования довольно хорошо согласуется с ответом в Википедии.
Если вы думаете о том, что он предоставляет - т.е. программный интерфейс в аппаратном обеспечении, тогда становится понятным, почему исчисление и линейная алгебра являются полезными навыками.
Абстрагирование от низкоуровневого интерфейса требует от вас понимания того, как работает устройство. Электронные устройства все еще связаны законами физики. Исчисление и линейная алгебра предоставляют средства для моделирования поведения устройства. Моделирование устройства позволяет вам предоставлять услуги в его функциональности.
Как уже было сказано, эти два поля не являются конечной целью системного программирования. Я знаю немало EE, которые не так хорошо справились с исчислением и линейной алгеброй, но все же могут объяснить, что устройство делает довольно кратко.
источник
Общее веб-приложение и / или административное программирование не требует большого применения линейной алгебры или исчисления, но многие специализированные области делают это. Если вы имеете дело с геометрией, вы обязательно столкнетесь с линейной алгеброй. Большая часть программирования физики также имеет дело с алгеброй и исчислением. Как и все, что связано с манипуляциями с волнами, например, со звуком и радиопрограммами. В общем, более важно понимать дискретную математику, которая, помимо прочего, имеет дело с теорией множеств, теорией графов и формальной (логической) логикой, которая полезна во многих приложениях, таких как управление информацией, базы данных и другие места, где объединяются данные и / или логика , В случае системного программирования я не вижу так много приложений.
источник
Как уже упоминали другие, любые математические курсы в университете могут улучшить ваши навыки решения проблем и дедуктивного мышления. Это важно почти для всех.
Но иногда знание линейной алгебры может быть полезным, особенно для некоторых довольно хороших бизнес-идей .
источник
С исчислением это довольно легко, как только вы внимательно посмотрите на содержание курса . Это тесно связано со сложностью алгоритма, обозначением Big-O - и тому подобным, довольно фундаментальным в программировании.
Уравнения - это то, что вы получаете при оценке сложности алгоритма. Три уровня вложенных циклов от
0
доN
являются N 3 , два уровня вложенных циклов являются N 2 , один N. Оценка вы получаете может выглядеть следующим образом (N 3 + 2 * N 2 + N) - это уравнение.Теперь, если вы хотите лучше понять, насколько быстро будет расти время выполнения при увеличении N, это тесно связано с производными / дифференцированием. Другие части исчисления, которые вы можете найти полезными, - это ограничения и асимптотический анализ - они приведут вас к пониманию нотации Big-O, лучшему результату при программировании интервью и, возможно, лучше к системному программированию.
Что касается линейной алгебры , то здесь программные приложения стреляют в вас с самого первого снимка.
Если вам когда-либо придется иметь дело с растровой графикой (например, в видеодрайверах), изображения, подобные приведенным выше, будут вам в ваших худших кошмарах.
источник