Znalazłem stronę internetową z informacją, że rachunek programowy i algebra liniowa są niezbędne do programowania systemu.
Programowanie systemu, o ile mi wiadomo, dotyczy osdev, sterowników, narzędzi i tak dalej. Po prostu nie mogę zrozumieć, w jaki sposób rachunek różniczkowy i algebra liniowa mogą być w tym pomocne. Wiem, że rachunek różniczkowy ma kilka zastosowań w nauce, ale w tej konkretnej dziedzinie programowania po prostu nie wyobrażam sobie, jak rachunek różniczkowy może być tak ważny.
Informacje były na tej stronie: http://www.wikihow.com/Become-a-Programmer
Edycja: Niektóre odpowiedzi tutaj wyjaśniają złożoność algorytmu i optymalizację. Kiedy zadałem to pytanie, starałem się dokładniej określić obszar programowania systemu. Złożoność i optymalizacja algorytmu można zastosować do dowolnego obszaru programowania, nie tylko programowania systemu. Być może dlatego nie byłem w stanie wymyślić takiego myślenia w momencie pytania.
źródło
Odpowiedzi:
Wyobrażam sobie, że nie jest to bardzo ważne, jeśli piszesz narzędzia inne niż GUI na nowoczesnym systemie operacyjnym bez pracy z jego elementami wewnętrznymi. To chyba inna historia, jeśli pracujesz nad zmianą nowoczesnego systemu operacyjnego lub opracowaniem nowego.
Jeśli pracujesz ze sprzętem wideo lub systemem okienkowym bez systemu operacyjnego, będziesz potrzebować wiedzy o algebrze liniowej, aby skutecznie aktualizować grafikę. Nie szukałem siebie, ale założę się, że możesz znaleźć przykłady w kodzie źródłowym X, KDE i Gnome.
Jeśli pracujesz ze sprzętem w zakresie cyfrowego przetwarzania sygnałów, rachunek będzie bardzo ważny. Wyobrażam sobie, że istnieją urządzenia, które ciężko podnoszą za pomocą procesora systemu zamiast lokalnego mikroprocesora i często łączą się z analogowymi systemami elektrycznymi.
Również rachunek różniczkowy odgrywa ważną rolę w analizie wydajności, oprócz samej algebry liniowej, podczas próby dopasowania krzywej do danych.
źródło
Komentarz SomeKittens dotyczy pieniędzy: potrzebujesz rachunku różniczkowego i algebry liniowej, ponieważ te kursy zmieniają Twój sposób myślenia i sposób rozumienia świata. Algebra liniowa polega na mapowaniu z jednej domeny do drugiej; rachunek obejmuje zachowanie funkcji. Same w sobie są potężnymi narzędziami, ale techniki, których uczysz się podczas studiowania tych dziedzin, również stają się częścią twojego mentalnego obrazu świata.
Potrzebujesz również tych kursów, ponieważ ludzie będą oczekiwać, że będziesz w stanie myśleć w tych kategoriach. Często nie widzę, że moi koledzy biorą pochodną wielomianu na swoich białych tablicach, ale często widzę szkice funkcji ze styczną narysowaną w ciekawym punkcie lub obszar pod krzywą zacieniowany. Nie dbamy wystarczająco o rzeczywiste wartości, aby zawracać sobie głowę ich obliczaniem, ale zrozumienie, w jaki sposób wartości się zmieniają, jest niezbędne i jest częścią codziennych rozmów.
Każdy stopień licencjata informatyki będzie wymagał rachunku różniczkowego, algebry liniowej, statystyki, logiki i innych kursów matematycznych nie dlatego, że programiści muszą stosować techniki bezpośrednio regularnie (chociaż mogą, w zależności od tego, co robią), ale dlatego, że potrzebujesz tego wiedza pozwalająca zrozumieć materiał, który pojawi się później.
źródło
Powiem, że nie sądzę, aby rachunek programowy lub algebra liniowa mogły być ważne dla programowania systemów.
Z pewnością uważam, że rachunku różniczkowego i algebry liniowej warto się uczyć w ogóle - jestem matematykiem! I, jak wskazują inne odpowiedzi, istnieje pewne pośrednie znaczenie, ponieważ analiza wydajności i projektowanie algorytmów mogą wykorzystywać zaawansowaną matematykę. Nie sądzę jednak, aby programowanie systemów było bardziej zależne od tego rodzaju matematyki niż większość innych dziedzin, które nie są ogólnie uważane za matematyczne.
źródło
Podejrzewam, że to prawda wokół krawędzi. Programiści systemów muszą być znacznie bardziej zaniepokojeni wydajnością i niezawodnością, więc analiza algorytmów może być ważna, a rachunek jest czasem potrzebny do uzyskania dowodów analizy Big-Oh. Istotną rolę mogą odegrać takie tematy, jak teoria kolejkowania i optymalizacja dyskretna (czyli optymalizacja matematyczna, a nie optymalizacja kodu). Myślę jednak, że dotyczy to głównie osób pracujących nad najnowocześniejszymi systemami operacyjnymi i protokołami sieciowymi, a nie osób pracujących ze sterownikiem USB 3.0.
źródło
Twoja definicja programowania systemów całkiem dobrze pasuje do odpowiedzi w Wikipedii.
Jeśli myślisz o tym, co zapewnia - tj. interfejs oprogramowania do sprzętu, wtedy zaczyna mieć sens, dlaczego rachunek różniczkowy i algebra liniowa są przydatnymi umiejętnościami.
Wyodrębnienie tego interfejsu niskiego poziomu wymaga zrozumienia sposobu działania urządzenia. Urządzenia elektroniczne są nadal związane prawami fizyki. Rachunek różniczkowy i algebra liniowa zapewniają środki do modelowania zachowania urządzenia. Modelowanie urządzenia pozwala zapewnić usługę pod kątem jego funkcjonalności.
To powiedziawszy, te dwa pola nie są ostatecznym celem programowania systemów. Znam sporo EE, które nie radziły sobie tak dobrze z rachunkiem i algebrą liniową, ale wciąż potrafią wyjaśnić, co urządzenie robi dość zwięźle.
źródło
Ogólna aplikacja internetowa i / lub programowanie administracyjne nie wymaga dużego zastosowania algebry liniowej lub rachunku różniczkowego, ale robi to wiele specjalistycznych dziedzin. Jeśli zajmujesz się geometrią, na pewno wpadniesz na algebrę liniową. Większość programowania fizyki dotyczy również algebry i rachunku różniczkowego. A także prawie wszystko, co ma związek z manipulacją falami, takie jak programowanie dźwięku i radio. Zasadniczo ważniejsze jest zrozumienie matematyki dyskretnej, która między innymi dotyczy teorii mnogości, teorii grafów i logiki formalnej (logicznej), która jest przydatna w wielu aplikacjach, takich jak zarządzanie informacjami, bazy danych i inne miejsca, w których łączą się dane i / lub logika . W przypadku programowania systemów nie widzę tak wielu aplikacji.
źródło
Jak wspomnieli inni, wszelkie kursy matematyki na uniwersytecie mogą wyostrzyć Twoje umiejętności rozwiązywania problemów i rozumowania dedukcyjnego. Są ważne dla prawie każdego.
Ale czasem znajomość algebry liniowej może być pomocna, szczególnie w przypadku całkiem dobrych pomysłów biznesowych .
źródło
Z rachunkiem jest dość łatwe, gdy tylko przyjrzy się bliżej treści kursu . Jest ściśle związany ze złożonością algorytmu, notacją Big-O - takie rzeczy, dość fundamentalne w programowaniu.
Równania są tym, co otrzymujesz przy szacowaniu złożoności algorytmu. Trzypoziomowy zagnieżdżone pętle od
0
celuN
są N 3 , dwupoziomowe zagnieżdżone pętle są N 2 , jedno jest N. Ocena masz mógłby wyglądać (N 3 + 2 * N 2 + N) - to równanie.Teraz, jeśli chcesz lepiej zrozumieć, jak szybko wydłuży się czas wykonania, gdy N wzrośnie, jest to ściśle związane z pochodnymi / różnicowaniem. Inne części rachunku, które mogą ci się przydać, to limity i analiza asymptotyczna - doprowadzą cię do zrozumienia notacji Big-O, lepszego punktowania podczas wywiadów programowych i być może lepszego programowania systemów.
Jeśli chodzi o algebrę liniową , tutaj aplikacje do programowania strzelają do ciebie od pierwszego zdjęcia.
Jeśli kiedykolwiek będziesz musiał poradzić sobie z grafiką rastrową (np. W sterownikach wideo), zdjęcia takie jak powyżej będą przychodzić do ciebie w najgorszych koszmarach.
źródło