Come può il calcolo e l'algebra lineare essere utile per un programmatore di sistema? [chiuso]

10

Ho trovato un sito web che dice che il calcolo e l'algebra lineare sono necessari per la programmazione di sistema.

La programmazione del sistema, per quanto ne so, riguarda osdev, driver, utilità e così via. Non riesco proprio a capire come il calcolo e l'algebra lineare possano essere d'aiuto su questo. So che il calcolo ha diverse applicazioni nella scienza, ma in questo particolare campo di programmazione non riesco a immaginare come il calcolo possa essere così importante.

Le informazioni erano su questo sito: link

Modifica: alcune risposte spiegano la complessità e l'ottimizzazione dell'algoritmo. Quando ho fatto questa domanda stavo cercando di essere più specifico sull'area di programmazione del sistema. La complessità e l'ottimizzazione dell'algoritmo possono essere applicate a qualsiasi area della programmazione, non solo alla programmazione di sistema. Questo potrebbe essere il motivo per cui non sono stato in grado di pensare così tanto al momento della domanda.

    
posta Victor 26.07.2012 - 18:30
fonte

8 risposte

6

Immagino che non sia molto importante se stai scrivendo utilità non GUI su un sistema operativo moderno senza lavorare sui suoi interni. Probabilmente è una storia diversa se stai lavorando per cambiare un sistema operativo moderno o svilupparne uno nuovo.

Se stai lavorando con hardware video o un sistema di finestre bare metal, avrai bisogno della conoscenza dell'algebra lineare per aggiornare in modo efficiente la grafica. Non ho guardato me stesso, ma scommetto che potresti trovare esempi nel codice sorgente di X, KDE e Gnome.

Se lavori con l'hardware per quanto riguarda l'elaborazione del segnale digitale, il calcolo sarà molto importante. Immagino che ci siano alcuni dispositivi che fanno il loro pesante sollevamento con la CPU del sistema invece di un microprocessore locale e questi spesso si interfacciano con sistemi elettrici analogici.

Anche il calcolo svolge un ruolo importante nell'analisi delle prestazioni oltre alla semplice algebra lineare quando si tenta di adattare la curva ai dati.

    
risposta data 26.07.2012 - 18:55
fonte
7

Il commento di SomeKittens ha ragione sul denaro: hai bisogno di calcolo e algebra lineare perché quei corsi cambiano il modo in cui pensi e il modo in cui comprendi il mondo. L'algebra lineare si basa sulla mappatura da un dominio all'altro; il calcolo copre il modo in cui le funzioni si comportano. Sono strumenti potenti essi stessi, ma le tecniche che apprendi studiando quei campi diventano anche parte della tua immagine mentale del mondo.

Hai anche bisogno di quei corsi perché la gente si aspetta che tu sia in grado di pensare in questi termini. Non vedo spesso i miei colleghi prendere la derivata di un polinomio sulle loro lavagne bianche, ma io spesso si vedono schizzi di funzioni con la tangente disegnata in un punto interessante o l'area sotto la curva ombreggiata. Non ci interessa abbastanza dei valori effettivi per preoccuparci di calcolarli, ma la comprensione di come i valori change sono essenziali e fa parte delle conversazioni quotidiane.

Qualunque laurea in informatica dovrebbe richiedere calcolo, algebra lineare, statistica, logica e altri corsi di matematica, non perché i programmatori debbano applicare le tecniche direttamente su base regolare (anche se potrebbero, a seconda di cosa fanno), ma perché hai bisogno di quella conoscenza per capire il materiale che verrà dopo.

    
risposta data 27.07.2012 - 00:23
fonte
6

Vado avanti e dico che non penso che il calcolo o l'algebra lineare siano probabilmente importanti per la programmazione dei sistemi.

Sicuramente penso che il calcolo e l'algebra lineare valgano l'apprendimento in generale - Sono un ragazzo di matematica! E, come altre risposte sottolineano, vi è una certa rilevanza indiretta, poiché l'analisi delle prestazioni e la progettazione di algoritmi possono utilizzare la matematica avanzata. Tuttavia, non credo che la programmazione dei sistemi dipenda più da questi tipi di matematica rispetto alla maggior parte degli altri campi che non sono generalmente considerati matematici.

    
risposta data 26.07.2012 - 19:40
fonte
4

Sospetto che sia vero ai margini. I programmatori di sistemi devono essere molto più preoccupati per le prestazioni e l'affidabilità, quindi l'analisi degli algoritmi potrebbe essere importante e talvolta è necessario un calcolo per le prove dell'analisi Big-Oh. Anche soggetti come la teoria delle code e l'ottimizzazione discreta (ovvero l'ottimizzazione matematica e non l'ottimizzazione del codice) possono avere un ruolo. Tuttavia penso che quelli si applicherebbero principalmente a persone che lavorano al margine estremo dei sistemi operativi e dei protocolli di rete, non tanto la persona che lavora sul driver USB 3.0.

    
risposta data 26.07.2012 - 18:47
fonte
1

La tua definizione di Programmazione dei sistemi si allinea abbastanza bene con la risposta in Wikipedia.

Se pensi a ciò che sta fornendo, ad es. un'interfaccia software nell'hardware, quindi inizia a capire perché il calcolo e l'algebra lineare sono abilità pratiche da avere.

Estrarre l'interfaccia di basso livello richiede di capire come funziona il dispositivo. I dispositivi elettronici sono ancora vincolati dalle leggi della fisica. Il calcolo e l'algebra lineare forniscono un mezzo per modellare il comportamento del dispositivo. La modellazione del dispositivo ti consente di fornire un servizio nella sua funzionalità.

Detto questo, quei due campi non sono la fine - tutto - tutto per la Programmazione dei Sistemi. Conosco un bel po 'di EE che non ha fatto altrettanto bene con il calcolo e l'algebra lineare, ma può ancora spiegare cosa sta succedendo in modo abbastanza sintetico al dispositivo.

    
risposta data 26.07.2012 - 18:59
fonte
1

L'applicazione web generale e / o la programmazione amministrativa non implicano molta applicazione di algebra lineare o calcolo, ma molti campi specialistici lo fanno. Se hai a che fare con la geometria, sei obbligato a correre nell'algebra lineare. La maggior parte della programmazione della fisica riguarda anche sia l'algebra che il calcolo. Oltre a tutto ciò che riguarda la manipolazione delle forme d'onda, come la programmazione audio e radiofonica. In generale è più importante capire la matematica discreta che, tra le altre cose, si occupa della teoria degli insiemi, della teoria dei grafi e della logica formale (booleana) che è utile in molte applicazioni come la gestione delle informazioni, i database e altri luoghi in cui i dati e / o la logica si combinano . Nel caso della programmazione dei sistemi, non vedo molte applicazioni.

    
risposta data 26.07.2012 - 20:01
fonte
0

Come altri hanno menzionato, qualsiasi corso di matematica in università può affinare le tue capacità di problem solving e ragionamento deduttivo. Questi sono importanti per quasi tutti.

Ma a volte conoscere qualche algebra lineare può essere utile, in particolare per alcune idee imprenditoriali piuttosto buone .

    
risposta data 25.09.2012 - 20:53
fonte
0

System Programming, as far as I know, is about osdev, drivers, utilities and so on. I just can't figure out how calculus and linear algebra can be helpful on that.

Con il calcolo è abbastanza semplice, non appena si guardano più da vicino i contenuti del corso . È strettamente correlato alla complessità dell'algoritmo, Notazione Big-O - cose del genere, piuttosto fondamentali nella programmazione.

Le equazioni sono ciò che ottieni quando valuti la complessità dell'algoritmo. I cicli annidati a tre livelli da 0 a N sono N 3 , i cicli annidati a due livelli sono N 2 , uno è N. La valutazione che si ottiene potrebbe sembrare (N 3 + 2 * N 2 + N) - questa è un'equazione.

Ora, se vuoi capire meglio quanto velocemente il tempo di esecuzione crescerà quando N aumenta, questo è strettamente correlato alle derivate / differenziazione. Altre parti del calcolo che potresti trovare utili sono i limiti e l'analisi asintotica: questi ti condurranno alla comprensione della notazione Big-O, al punteggio migliore durante le interviste di programmazione e, eventualmente, alla programmazione dei sistemi.

  • Sei assegnato alla tabella di allocazione dei file di progettazione, quale struttura dati hai intenzione di utilizzare? Supponendo che ci siano molti piccoli file che sono raramente modificati, quale sarebbe preferibile? Supponendo una quantità relativamente piccola di file di grandi dimensioni che vengono sempre aggiunti alla fine, hai intenzione di utilizzare la stessa struttura? Come decideresti?

Come per Linear Algebra , qui le applicazioni di programmazione ti sparano dalla prima immagine.

http://pad1.whstatic.com/images/thumb/c/c4/LaTeX-2m.jpg/251px-LaTeX-2m.jpg

Se dovessi avere a che fare con grafica raster (ad esempio nei driver video), le immagini come sopra verranno a te nei tuoi peggiori incubi.

  • Come mai quel test # 12345 mostra pixel mancanti? ho fatto qualcosa di sbagliato implementando Bresenham ? potrebbe essere solo un errore nella progettazione del test non tenere conto correttamente degli errori di arrotondamento?
risposta data 26.07.2012 - 23:50
fonte

Leggi altre domande sui tag