Ich fand eine Website, auf der stand, dass Kalkül und lineare Algebra für die Systemprogrammierung notwendig sind.
Soweit ich weiß, geht es bei der Systemprogrammierung um Osdev, Treiber, Dienstprogramme usw. Ich kann einfach nicht herausfinden, wie hilfreich Kalkül und lineare Algebra dabei sein können. Ich weiß, dass Kalkül in der Wissenschaft mehrere Anwendungen hat, aber in diesem speziellen Bereich der Programmierung kann ich mir einfach nicht vorstellen, wie wichtig Kalkül sein kann.
Die Informationen befanden sich auf dieser Website: http://www.wikihow.com/Become-a-Programmer
Bearbeiten: Einige Antworten hier erklären die Komplexität und Optimierung des Algorithmus. Als ich diese Frage stellte, versuchte ich, den Bereich der Systemprogrammierung genauer zu definieren. Die Komplexität und Optimierung des Algorithmus kann auf jeden Bereich der Programmierung angewendet werden, nicht nur auf die Programmierung des Systems. Das könnte der Grund sein, warum ich zum Zeitpunkt der Frage nicht in der Lage war, mir ein solches Denken auszudenken.
quelle
Antworten:
Ich würde mir vorstellen, dass es nicht sehr wichtig ist, wenn Sie Nicht-GUI-Dienstprogramme auf ein modernes Betriebssystem schreiben, ohne an dessen Interna zu arbeiten. Es ist wahrscheinlich eine andere Geschichte, wenn Sie daran arbeiten, ein modernes Betriebssystem zu ändern oder ein neues zu entwickeln.
Wenn Sie mit Videohardware oder einem Bare-Metal-Fenstersystem arbeiten, benötigen Sie Kenntnisse der linearen Algebra, um Grafiken effizient zu aktualisieren. Ich habe selbst nicht nachgesehen, aber ich wette, Sie könnten Beispiele im Quellcode für X, KDE und Gnome finden.
Wenn Sie mit Hardware für die digitale Signalverarbeitung arbeiten, ist die Berechnung sehr wichtig. Ich stelle mir vor, dass es einige Geräte gibt, die ihr schweres Heben mit der CPU des Systems anstelle eines lokalen Mikroprozessors ausführen und diese häufig mit analogen elektrischen Systemen verbunden sind.
Neben der linearen Algebra spielt auch die Berechnung eine wichtige Rolle bei der Leistungsanalyse, wenn versucht wird, die Kurve an die Daten anzupassen.
quelle
SomeKittens' Kommentar ist direkt auf das Geld: Sie müssen Analysis und Linearer Algebra , da diese Kurse die Art und Weise , dass Sie denken , und die Art und Weise , dass man die Welt verstehen. Bei der linearen Algebra dreht sich alles um die Zuordnung von einer Domäne zu einer anderen. Kalkül deckt das Verhalten von Funktionen ab. Sie sind selbst mächtige Werkzeuge, aber die Techniken, die Sie beim Studium dieser Bereiche lernen, werden auch Teil Ihres mentalen Bildes von der Welt.
Sie brauchen diese Kurse auch, weil die Leute erwarten, dass Sie in diesen Begriffen denken können. Ich sehe meine Kollegen nicht oft, wie sie die Ableitung eines Polynoms auf ihre weißen Tafeln nehmen, aber ich sehe oft Skizzen von Funktionen, bei denen die Tangente an einem interessanten Punkt gezeichnet ist oder der Bereich unter der Kurve schattiert ist. Die tatsächlichen Werte sind uns nicht wichtig genug, um sie zu berechnen, aber es ist wichtig zu verstehen, wie sich die Werte ändern , und sie sind Teil alltäglicher Gespräche.
Jeder Bachelor-Abschluss in Informatik erfordert Kurse in Analysis, linearer Algebra, Statistik, Logik und anderen Mathematik, nicht weil Programmierer die Techniken regelmäßig direkt anwenden müssen (obwohl dies je nach ihrer Tätigkeit möglich ist), sondern weil Sie dies benötigen Wissen, um das Material zu verstehen, das später kommt.
quelle
Ich werde weitermachen und sagen, dass ich nicht denke, dass Kalkül oder lineare Algebra für die Systemprogrammierung wichtig sind.
Ich denke, Kalkül und lineare Algebra sind es im Allgemeinen wert, gelernt zu werden - ich bin ein Mathematiker! Und wie andere Antworten zeigen, besteht eine gewisse indirekte Relevanz, da die Leistungsanalyse und das Algorithmusdesign fortgeschrittene Mathematik verwenden können. Ich glaube jedoch nicht, dass die Systemprogrammierung stärker von diesen Arten von Mathematik abhängt als die meisten anderen Bereiche, die im Allgemeinen nicht als mathematisch angesehen werden.
quelle
Ich vermute, dass es an den Rändern wahr ist. Systemprogrammierer müssen sich viel mehr Gedanken über Leistung und Zuverlässigkeit machen, daher kann die Algorithmusanalyse wichtig sein, und manchmal wird Kalkül für Beweise der Big-Oh-Analyse benötigt. Themen wie Warteschlangentheorie und diskrete Optimierung (das ist mathematische Optimierung, nicht Codeoptimierung) können ebenfalls eine Rolle spielen. Ich denke jedoch, dass dies hauptsächlich für Leute gilt, die an den neuesten Betriebssystemen und Netzwerkprotokollen arbeiten, nicht so sehr für die Person, die am USB 3.0-Treiber arbeitet.
quelle
Ihre Definition von Systemprogrammierung stimmt ziemlich gut mit der Antwort in Wikipedia überein.
Wenn Sie darüber nachdenken, was es bietet - dh. eine Software-Schnittstelle in Hardware, dann macht es Sinn, warum Kalkül und lineare Algebra handliche Fähigkeiten sind.
Um diese Low-Level-Schnittstelle zu abstrahieren, müssen Sie verstehen, wie das Gerät funktioniert. Elektronische Geräte sind immer noch an die Gesetze der Physik gebunden. Kalkül und lineare Algebra bieten ein Mittel zur Modellierung des Verhaltens des Geräts. Durch Modellieren des Geräts können Sie einen Dienst für seine Funktionalität bereitstellen.
Allerdings sind diese beiden Bereiche nicht das A und O für die Systemprogrammierung. Ich kenne einige EEs, die mit Kalkül und linearer Algebra nicht so gut zurechtkommen, aber trotzdem erklären können, was das Gerät ziemlich prägnant macht.
quelle
Allgemeine Webanwendungen und / oder administrative Programmierung erfordern nicht viel Anwendung von linearer Algebra oder Analysis, aber viele Fachgebiete. Wenn Sie sich mit Geometrie beschäftigen, müssen Sie auf lineare Algebra stoßen. Die meisten Physikprogramme befassen sich auch sowohl mit Algebra als auch mit Kalkül. Sowie so ziemlich alles, was mit Wellenformmanipulation zu tun hat, wie z. B. Sound- und Radioprogramme. Im Allgemeinen ist es wichtiger, die diskrete Mathematik zu verstehen, die sich unter anderem mit Mengenlehre, Graphentheorie und formaler (boolescher) Logik befasst, was in vielen Anwendungen wie Informationsmanagement, Datenbanken und anderen Orten, an denen Daten und / oder Logik kombiniert werden, nützlich ist . Bei der Systemprogrammierung sehe ich nicht so viele Anwendungen.
quelle
Wie bereits erwähnt, können Mathematikkurse an der Universität Ihre Fähigkeiten zur Problemlösung und zum deduktiven Denken schärfen. Diese sind für fast jeden wichtig.
Manchmal kann es jedoch hilfreich sein, eine lineare Algebra zu kennen, insbesondere für einige ziemlich gute Geschäftsideen .
quelle
Mit Kalkül ist es ziemlich einfach, sobald man sich die Kursinhalte genauer ansieht . Es hängt eng mit der Komplexität des Algorithmus und der Big-O-Notation zusammen - solche Dinge, die in der Programmierung ziemlich grundlegend sind.
Gleichungen erhalten Sie, wenn Sie die Komplexität des Algorithmus abschätzen. Verschachtelte Schleifen mit drei Ebenen von
0
bisN
sind N 3 , verschachtelte Schleifen mit zwei Ebenen sind N 2 , eine ist N. Die Bewertung, die Sie erhalten, könnte wie folgt aussehen (N 3 + 2 * N 2 + N) - das ist eine Gleichung.Wenn Sie nun besser verstehen möchten, wie schnell die Ausführungszeit mit zunehmendem N zunimmt, hängt dies eng mit Ableitungen / Differenzierung zusammen. Andere Teile des Kalküls, die Sie möglicherweise hilfreich finden, sind Grenzwerte und asymptotische Analysen. Diese führen Sie zum Verständnis der Big-O-Notation, zu einer besseren Bewertung bei Programmierinterviews und möglicherweise zu einer besseren Systemprogrammierung.
Was die lineare Algebra betrifft , so schießen hier Programmieranwendungen vom ersten Bild an auf Sie.
Wenn Sie jemals mit Rastergrafiken zu tun haben (z. B. in Videotreibern), werden Bilder wie oben in Ihren schlimmsten Albträumen auf Sie zukommen.
quelle