Programma da 8 anni professionalmente e da quando ne avevo 12 come hobby.
La matematica non è necessaria, la logica lo è. La matematica però è terribilmente utile, dire che non è necessario è come dire che per uccidere un uomo non serve una pistola, puoi usare un coltello. Beh, è vero, ma quella pistola lo rende molto più facile.
Ci sono un paio di minimi minimi, che dovresti già soddisfare. È necessario conoscere le espressioni e la notazione algebriche di base e gli equivalenti comuni del computer. Ad esempio, è necessario sapere cos'è un esponenziale (da 3 a 3 è 27) e l'espressione comune del computer è 3 ^ 3. Le notazioni comuni per l'algebra cambiano tra le lingue, ma molte di esse utilizzano una metodologia in qualche modo unificata. Altri (guardandoti LISP) no. È inoltre necessario conoscere l'ordine delle operazioni.
Devi capire il pensiero algoritmico. Prima questo, poi questo, produce ciò che viene utilizzato in questo calcolo. È probabile che tu lo capisca o no, ed è un ostacolo abbastanza difficile da superare se non lo capisci; Ho scoperto che questo è qualcosa che "ottieni", e non veramente qualcosa che puoi imparare. Al contrario, alcune persone non "capiscono" l'arte. Non dovrebbero diventare pittori. Inoltre, ci sono stati studenti nel curriculum CS che non riescono a capire perché questo non funziona: x = z + w; z = 3; y = 5; Non è che non capiscano l'addizione, è che non stanno afferrando il requisito di un espresso inequivocabile. Se lo capiscono, dovrebbe farlo anche il computer, giusto? Se non riesci a vedere cosa c'è che non va nelle tre righe precedenti, non diventare un programmatore.
Infine, devi sapere qualunque matematica sia sotto il tuo dominio di programmazione. Il software di contabilità potrebbe fermarsi all'algebra di base. Se stai programmando la fisica, avrai bisogno di conoscere la fisica (vagamente) e la matematica nella geometria tridimensionale (euclidea). Se stai programmando un software di architettura, dovrai conoscere la trigonometria.
Questo va oltre la matematica però; qualunque sia il dominio per cui stai programmando, devi comprendere bene le basi. Se stai programmando un software di analisi del linguaggio, dovrai conoscere probabilità, statistiche, teoria grammaticale (più lingue), ecc.
Spesso, alcuni domini necessitano o possono trarre vantaggio da conoscenze che penseresti non siano correlate. Ad esempio, se si sta programmando un software audio, è effettivamente necessario conoscere la trigonometria per gestire le forme d'onda.
Anche la magnitudine cambia le cose. Se stai ordinando un set di dati finanziari di 1000 elementi, non è un grosso problema. Se si trattasse di 10 milioni di record, tuttavia, si trarrebbe grande vantaggio dalla conoscenza effettiva della matematica vettoriale e dalla conoscenza approfondita dell'ordinamento a livello binario (come fa un sistema a ordinare alfabeticamente? Come fa a sapere che "a" è minore di "b '?)
Scoprirai che come programmatore, la tua base di conoscenze generali esploderà, perché ogni progetto richiederà più apprendimento al di fuori della sfera diretta della programmazione. Se sei schizzinoso o pigro riguardo all'autoapprendimento e non ti piace l'idea di passare più di 10 ore a settimana a fare essenzialmente "compiti a casa", non diventare un programmatore.
Se ti piacciono gli esercizi di pensiero, se ti piace imparare, se riesci a pensare a cose astratte come la matematica senza una calcolatrice o il design senza un blocco per schizzi, se hai gusti ampi nella vita e negli hobby, se sei autocritico e puoi buttare via ' idee preferite, se ti piace perfezionare le cose, diventa un programmatore. Non basare questa decisione sulla matematica, ma piuttosto sulla capacità di pensare in modo logico e imparare. Quelle sono le cose importanti; la matematica è solo un sottoprodotto.