Argomenti o campi di matematica che aumentano le competenze di programmazione informatica? [chiuso]


14

Generalmente i programmatori di computer che sono matematici o che hanno un background matematico sono molto bravi in ​​termini di algoritmi e programmazione del computer in generale.

Quello che non sto dicendo:

La matematica è necessaria per essere un buon programmatore di computer. La matematica è necessaria per la programmazione. I bravi matematici sono buoni programmatori e viceversa

Quello che sto dicendo

Mi piacerebbe imparare un po 'di matematica perché credo che mi renderà un programmatore migliore. Quali aree / argomenti della matematica mi aiuteranno a diventare un programmatore migliore? math topic - corresponding cs areaSaranno apprezzate le risposte del modulo .

NB: L' ho chiesto su StackOverflow dove è stato dichiarato fuori tema. Voglio impararlo durante il mio tempo libero proprio come ho fatto con la programmazione informatica. Grazie in anticipo.


1
Sono sorpreso che StackOverflow abbia dichiarato che questa domanda è fuori tema. Dal mio punto di vista (un programmatore in pensione), questa domanda dovrebbe essere una delle domande più importanti per SO.
scaaahu,

1
StackOverflow è molto più su problemi di programmazione specifici. Questo sarebbe meglio su CSEducators e potrebbe aver funzionato su SoftwareEngineering.
Nat

1
Abbiamo già avuto domande del genere in precedenza e tutte hanno lo stesso problema: sono troppo ampie e troppo soggettive. L'unica risposta di consenso è: tutto .
Raffaello

@Raphael In primo luogo, rispetto la decisione di Mod. Tuttavia, vorrei porre una domanda a nome del PO. Esiste un modo per migliorare la domanda in modo che possa essere riaperta? Se non c'è modo di migliorarlo, c'è qualche altro SE che l'OP può fare per porre questa domanda? (Ovviamente, l'OP ha già provato SO e so che potrebbe non adattarsi a Academia SE perché non è strettamente correlato a Academia.)
scaaahu

Le domande che richiedono soluzioni formali a problemi specifici andrebbero bene. Le domande sui consigli di studio non sono generalmente adatte al formato SE; lo stretto motivo "basato sull'opinione" si applica a tutti i siti!
Raffaello

Risposte:


19

Quindi, ci sono molti campi della matematica che sono rilevanti per la Science of CS, ma per la programmazione in particolare:

  • Teoria dei grafi : questa è la più grande. Grafici e alberi sono ovunque. Reti, mappe, percorsi nei videogiochi. Anche cose come la risoluzione di un cubo di Rubik possono essere modellate come algoritmo grafico e risolte con A *.

  • Matematica discreta : a parte la teoria dei grafi, è utile conoscere quest'area in generale. È pieno di prove per induzione, che sono molto utili per comprendere la ricorsione, che è molto utile nella programmazione, in particolare con le strutture di dati. Conoscere insiemi, conteggio, inclusione-esclusione, logica booleana, ecc. Può tornare utile di tanto in tanto.

  • Teoria dei tipi: non sorprende che conoscere la teoria dei tipi aiuti a comprendere la programmazione in linguaggi tipizzati e, più in generale, con l'uso dei tipi come modo per garantire determinate proprietà di correttezza. Conoscere la teoria del sottotipo aiuta a comprendere la covarianza e la contraddizione in linguaggi simili a Java. Conoscere cose come il polimorfismo parametrico è ovviamente utile quando si impara un linguaggio pesante come Haskell o Purescript, ma linguaggi come Scala, TypeScript e Rust stanno diventando più diffusi nell'industria e i tipi sono alla base.

    Se porti questo estremo, ottieni cose come Coq, Agda e Idris, che possono essere usate per dimostrare proprietà di precisione estremamente precise sui programmi.

  • Teoria della computabilità e della complessità : sapere quando un problema è irrisolvibile o NP-difficile è utile, perché non perderai ore a tormentare il tuo cervello per un modo veloce per farlo. Allo stesso modo, conoscere alcune delle teorie alla base degli algoritmi di approssimazione, della tracciabilità dei parametri fissi o degli algoritmi esponenziali a base bassa, può essere d'aiuto quando è davvero necessario risolvere un problema NP-difficile.

  • Teoria degli automi: molti problemi possono essere modellati con varie macchine a stati, quindi è utile comprendere le loro proprietà.

Ci sono anche alcune aree specifiche del campo:

  • Statistiche: se stai eseguendo l'apprendimento automatico o i big data, questo è un must.

  • Algebra lineare / calcolo vettoriale : entrambi sono importanti per l'apprendimento automatico, la grafica, le simulazioni o l'elaborazione di immagini / audio.

  • Teoria della grata : se stai facendo un lavoro con i compilatori o l'ottimizzazione del programma, questo viene fuori tutto il tempo. Punti fissi ovunque!

  • Teoria delle categorie: non necessaria per codificare, ma utile per qualsiasi cosa profondamente radicata nella teoria dei tipi.

Modifica: non posso credere di aver dimenticato:

  • Crittografia : se sei interessato a sicurezza, hash, firme digitali e simili, assicurati di imparare qualche teoria dei numeri, teoria dei gruppi, teoria dei campi, teoria delle curve ellittiche, ecc.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.