Devi essere bravo in matematica per essere un buon programmatore? [chiuso]


78

Sembra che la saggezza convenzionale suggerisca che anche i bravi programmatori sono bravi in ​​matematica. O che i due siano in qualche modo intrinsecamente collegati. Molti libri di programmazione che ho letto forniscono molti esempi che sono soluzioni ai problemi di matematica o che sono in qualche modo correlati alla matematica come se questi esempi siano ciò che ha senso per la maggior parte delle persone.

Quindi la domanda che vorrei galleggiare è: devi essere bravo in matematica per essere un buon programmatore?


1
@Mark Non necessariamente. Imparare una materia e apprezzarla sono due cose molto diverse.
Max

3
Sei un re? O gemelli siamesi? In caso contrario, ti suggerisco di attenermi a "I" quando ti riferisci a te stesso.
drxzcl

1
@jk - hai ragione molto probabilmente physics.about.com/od/alberteinstein/p/einsteinpro.htm pensi ancora che ci sia una buona quantità di arte da programmare; p
Garet Claborn,

3
Pensavo non mi fosse mai piaciuta la matematica. Più tardi nella vita, mi sono reso conto che non ero contento della sintassi.
MrFox,

1
Tutti i programmatori usano sempre la matematica, semplicemente non se ne rendono conto perché è molto diverso dalla matematica insegnata a scuola. La matematica discreta, il calcolo lambda, l'algebra booleana, la logica (!) Sono concetti matematici davvero avanzati che usiamo ogni giorno.
Rotman,

Risposte:


83

Penso che dipenda dal tipo di programmazione che vuoi fare. Per quanto riguarda l'essere un programmatore nel mondo degli affari, direi che la risposta è no. Puoi diventare un grande programmatore senza conoscere matematica avanzata. Quando si finisce per dover affrontare la matematica, le formule sono generalmente definite nei requisiti aziendali, quindi diventa solo una questione di implementarle nel codice.

D'altro canto, se vuoi diventare un programmatore di basso livello o dire creare motori di grafica 3D, la matematica avrà un ruolo enorme.


6
Vorrei aggiungere che ho visto alcuni dottorati in matematica e fisica che scrivono un codice orribile. Queste abilità si sovrappongono in una certa misura ma sono discipline separate.
MrFox,

133

Sto andando contro il grano e dicendo di sì, hai bisogno di una mentalità matematica . Molte persone pensano alla matematica come a fare aritmetiche o a memorizzare formule arcane. È come chiedere se hai bisogno di un'ortografia perfetta o di un vocabolario straordinario per essere un bravo scrittore.

Scrivere riguarda la comunicazione e matematica / programmazione riguarda il processo di pensiero logico e chiaro (in un modo in cui non si possono commettere errori; l'equazione non si bilancia o il programma non si compila). In particolare, quel pensiero logico si manifesta in:

  • Capacità di stimare / comprendere le differenze tra i numeri: O (n ^ 2) vs O (lg (n)), senso intuitivo di KB vs MB vs GB, quanto il disco lento viene confrontato con la RAM. Se non ti rendi conto di quanto sia piccolo un KB rispetto a un GB, perderai tempo a ottimizzare le cose che non contano.
  • Funzioni / programmazione funzionale (è una coincidenza che l'equazione f (x) = x ^ 2 sia così simile a come scriveresti quel metodo? Le parole "algoritmo" e "funzione" erano presenti nel mondo matematico molto prima che primo computer nato :-))
  • Algebra di base per creare e riordinare le tue equazioni, prendere medie, statistiche di base

Quindi, dirò che hai bisogno di una mentalità matematica , di essere in grado di costruire e manipolare modelli mentali di ciò che il tuo programma sta facendo, piuttosto che una raccolta di fatti e teoremi. Alcuni campi come la grafica o i database avranno anche alcuni fatti di cui hai bisogno, ma per me questa non è l'essenza di essere "bravo in matematica".


1
Matematica maggiore rispetto alla mentalità matematica: è come la differenza tra la conoscenza di tutte le formule di fisica e la capacità di far rimbalzare con precisione una palla di gomma da un tabellone a 20 iarde di distanza!
TehShrike,

9
Aggiungerò che molti bravi programmatori sanno come giocare a scacchi o andare :-)
xanatos,

1
Un sacco di codice per computer è fondamentalmente algebra, anche se lo stai configurando per il computer piuttosto che risolverlo da solo. Se non sei totalmente a tuo agio con l'algebra, come puoi aspettarti di fare un lavoro dignitoso?
Loren Pechtel,

18
Il pensiero matematico è la chiave della programmazione. Aggiungo il mio voto per sottolineare esattamente questo.
Gus

4
+1 La matematica è vitale nella comprensione dei linguaggi di programmazione perché è la base del nostro mestiere. La maggior parte dei costrutti del linguaggio di programmazione che usiamo quotidianamente sono sollevati da discipline matematiche come il calcolo lambda.
MattDavey,

53

Esistono molti campi diversi della programmazione e molti di questi non richiedono uno standard particolarmente elevato di conoscenze matematiche. Non sarai mai in grado di scrivere un motore 3D, ma sarai sicuramente in grado di sviluppare applicazioni Web e aziendali. Ammettiamolo: l'operazione matematica più comune nella maggior parte dei programmi per computer è incrementare un numero di uno.

Devo ammettere abbastanza felicemente che non mi è mai piaciuta particolarmente la matematica o non sono stato bravo in questo (mi sono laureato in letteratura inglese!) E ho lavorato come sviluppatore professionista per oltre 12 anni. Sviluppo principalmente applicazioni Web, che raramente richiedono così tanti calcoli matematici. Più importante è la capacità di pensare in modo logico, essere in grado di scomporre i problemi in blocchi e avere una vasta comprensione delle varie tecnologie e strutture coinvolte.

Come programmatore hai molte più probabilità di dover implementare un algoritmo esistente piuttosto che inventarne uno completamente nuovo . Hai bisogno di elaborare, per esempio, interesse composto? Non è necessario capirlo da soli, basta cercare la formula e applicarla. La maggior parte dei problemi è già stata risolta, devi solo sapere come implementare le soluzioni nella tua lingua preferita. Questo non vuol dire che essere bravi in ​​matematica non sarebbe un vantaggio ; è solo che non è assolutamente essenziale .

Quando ero a scuola a metà degli anni '80, quando i computer di casa non erano molto comuni, spesso scrivevo programmi per risolvere i compiti di matematica. Spesso non riuscivo a farlo nella mia testa, ma potevo applicare qualunque formula fosse richiesta come routine software. Non devi essere un altro Pitagora per elaborare il lato più lungo di un triangolo rettangolo, devi semplicemente essere in grado di codificare a² + b² = h²nella tua lingua preferita.


3
La finanza e la contabilità non sono poi così male, a meno che tu non stia facendo prezzi delle opzioni o qualcosa del genere.

5
Hai un punto, Chris, ma anche con le applicazioni finanziarie hai maggiori probabilità di implementare formule che inventarle.
Dan Diplo,

2
@Mark - Vero, ma direi che comprendere i problemi di arrotondamento è più una questione di conoscere il tipo corretto da usare. Non è necessario essere bravi in ​​matematica per imparare che (ad esempio) il decimale è meglio del float per i valori monetari. E non penso che un matematico realizzerebbe automaticamente il tipo di dati corretto da usare: è una questione di apprendimento.
Dan Diplo,

3
@ SK-logic: più rigorosamente, tutto ciò che un computer fa è logico . Alcune di queste operazioni logiche sono interpretate come matematica (e alcune persone affermano che la logica è un ramo della matematica, con grande indignazione di alcuni filosofi).
Donal Fellows

3
@Donal Fellows, la logica formale è matematica. E i filosofi sono comunque riconosciuti per il loro contributo storico alla matematica, così come i matematici che si sono vendicati (ad esempio, inventando alcune cose strane come la "monadologia").
Logica SK

30

Non devi essere bravo in matematica. Tuttavia, devi essere bravo nella logica e nella risoluzione dei problemi. Tuttavia, le persone che sono brave in logica e nella risoluzione dei problemi sono generalmente brave anche in matematica. Direi che dipende davvero dal tipo di matematica. Puoi essere terribile al calcolo (come me), e comunque essere un buon programmatore (come me). Ma se hai problemi con Discrete Math e Set Theory, probabilmente troverai molti aspetti della programmazione piuttosto difficili.


Non devi essere bravo in logica per essere bravo in "problem solving". Molti, se non la maggior parte, possono essere risolti utilizzando l'euristica che non è in alcun modo correlata alla logica.
ElGringoGrande,

1
Sei sicuro di essere un buon programmatore? :)
Russell

17

Penso che sia importante esaminare attentamente perché non ti piacciono i calcoli.

Un disprezzo per una disciplina accademica è di solito qualcosa che accade a scuola e può essere dovuto a un conflitto di qualche tipo o di un altro con un insegnante, mancanza di fiducia nelle proprie capacità all'interno di una materia o pressione del gruppo di pari.

Programmazione! = Matematica. Non mi "sembra" nemmeno di matematica, per me (e mi è piaciuta la matematica, nonostante non sia andata così bene verso la fine dei miei studi formali). Molte abilità che potresti usare in matematica sono utili, necessarie anche nella programmazione, ma molti programmatori si insegnano da soli per la maggior parte. Non amare la matematica a scuola ha praticamente nulla a che fare con la tua abilità o godimento della programmazione.


Ho visto molti cattivi insegnamenti in matematica. La sua essenza è trasformare un problema in uno noto, quindi dire "risolto" senza una parola in più. Ma nell'insegnamento è probabile che ti richieda di andare avanti e implementare nuovamente le prove a livelli inferiori.
Balog Pal

16

La matematica e la programmazione sono strettamente correlate poiché la matematica è davvero il linguaggio universale tra uomo e computer. Non è necessario conoscere un sacco di matematica per la programmazione di alto livello, poiché molte di queste sono dietro le quinte, ma aiuteranno nella comprensione di molti concetti di programmazione più avanzati. Se hai intenzione di fare più programmazioni di basso livello (programmazione di sistemi o di dispositivi), dovrai conoscere molta più matematica.


11
+1. Avrai anche bisogno di matematica se vuoi fare cose di "alto livello" come elaborazione del segnale, apprendimento automatico, visione artificiale, rendering 3D, simulazioni fisiche, animazioni, geometria computazionale, crittografia e probabilmente molti altri campi che non riesco a pensare a destra adesso.
Nikie

2
@nikie: Sì, ma questa è matematica applicata . Differenza enorme. ^^
gablin

Ugh. In realtà la matematica non è il linguaggio universale. La logica è. E la logica è il dominio dei filosofi. Ad ogni modo, per quanto riguarda il funzionamento effettivo dei computer, è meglio conoscere l'ingegneria elettrica / elettronica e la filosofia formale della matematica. Hai bisogno della matematica di per sé solo se stai facendo l'informatica, che non sta realmente programmando nel contesto di una carriera.
RibaldEddie,

14

Una buona ? Molto spiacevole. La maggior parte dei modelli di progettazione ha almeno alcune basi in concetti matematici. Le cose essenziali per la programmazione, come variabili, loop, procedure e oggetti, sono analoghi ai concetti in campi matematici come l'algebra, il calcolo e la teoria degli insiemi.

Considera anche che l' informatica è un sottoinsieme della matematica: gli algoritmi e la logica formale, su cui si basa tutta la programmazione, sono fondamentalmente matematica .

Se odi la matematica, odierai la programmazione.


13

Quasi tutti hanno risposto: "devi conoscere la matematica per essere un buon programmatore?" La risposta corretta a questa domanda è: "No, non proprio, ma aiuta", come molti hanno già detto.

Ma la mia interpretazione della domanda è "esiste una forte correlazione tra attitudine matematica e attitudine alla programmazione?" La risposta corretta a questo è: "Sì, c'è." Se combatti attraverso l'algebra, la geometria e il calcolo, probabilmente non sei molto bravo a gestire le astrazioni e / o pensare logicamente. Se sei cattivo in matematica, probabilmente non sarai mai un grande programmatore. (Non che non dovresti provare.)


11

Dipende da cosa stai programmando. Un motore di gioco 3D, ad esempio, sarebbe estremamente difficile (se non impossibile) da realizzare con qualsiasi grado di coerenza senza la conoscenza dei concetti matematici appropriati.


11

"Mi piace" e "essere competente" sono cose completamente diverse - così come a quando si è correttamente far di conto, allora non vedo un motivo per cui si dovrebbe avere a come la matematica.

Ma siamo assolutamente chiari qui - la programmazione ha una solida base in matematica e prima o poi quasi tutti gli sviluppi non banali comporteranno calcoli - non puoi nasconderti da questo.

Qualsiasi programmazione implica una logica (base in matematica), la maggior parte della programmazione moderna probabilmente coinvolge cose (come SQL) che coinvolgono la teoria degli insiemi (anche se non è ovvia) e se non lo fa, potrebbe anche essere il caso in cui sei fuori regni (come la programmazione di giochi) che sono ancora più esplicitamente basati sulla matematica (rendering - matematica, intelligenza artificiale -> probabilità e casualità - matematica ...) e così via.

Il risultato di quanto sopra è che devi essere a tuo agio con i numeri - devi certamente capire perché "Ci sono 10 tipi di persone al mondo, quelli che capiscono i binari e quelli che non lo fanno" è divertente. Ma probabilmente sei scusato "2 + 2 = 5 ... per valori molto grandi di 2".


+1, questo è davvero deprimente; In realtà ho riso di quella battuta.
Ben

10

Il concetto fondamentale di matematica è il seguente, ideare, comprendere, implementare e utilizzare gli algoritmi. Se non puoi fare matematica, è perché non puoi fare queste cose, e se non puoi fare queste cose, non puoi essere un programmatore efficace.

Le attività di programmazione comuni potrebbero non aver bisogno di conoscenze matematiche specifiche (ad esempio, probabilmente non avrai bisogno di algebra e calcolo vettoriale a meno che tu non stia facendo attività come la grafica 3D o simulazioni fisiche, ad esempio), ma gli skillset sottostanti sono identici e mancanza di abilità in un dominio verrà corrisposta una corrispondente mancanza di abilità nell'altro dominio.


9

Ad essere sincero, ero un orribile studente di matematica a scuola. Algebra era completamente al di là di me in quel momento, e non credo di essermi mai avvicinato più di una D.

Tuttavia, qualche anno dopo, dopo aver lavorato come sviluppatore di software professionale, sono tornato al college e ho seguito un corso di algebra. Con mio grande stupore, fu la classe più semplice che avessi, e ho ottenuto una A.

La verità era che la programmazione mi ha insegnato l'algebra, perché praticamente tutto è solo un'espressione algebrica.

Quindi no, non è necessario per iniziare. Aiuta, ma non è richiesto. La cosa bella dello sviluppo software come mezzo per insegnare la matematica è che il compilatore, il debugger e il programma di esecuzione sono modi meravigliosi per verificare che tu abbia la risposta corretta. A questo proposito, il debug in particolare è un grande vantaggio per l'apprendimento, perché è possibile scorrere il codice e guardare ogni fase della valutazione dell'algoritmo.


Sono tornato a scuola dopo 10 anni di sviluppo di software e sto sperimentando la stessa cosa. Trovo Calcolo e Statistica molto più facili in quanto posso collegare la maggior parte dei concetti ad alcune funzionalità che ho scritto nel corso degli anni. Mi arrabbio quando penso ai diagrammi di Venn non conosciuti quando mi sono insegnato i join SQL. È come imbrogliare.
Heath Lilley,

7

Dipende in qualche modo da cosa stai facendo esattamente, anche se sicuramente non può far male.

Ad esempio, qualcuno che si è laureato in Informatica deve superare un sacco di matematica per laurearsi. CS generalmente si concentra molto sugli algoritmi e sulla loro correttezza, comprovati da prove matematiche di alto livello. Molti programmi CS di Universitie sono così vicini al loro programma di matematica che un doppio maggiore è a pochi corsi di distanza. Anche io, come specialista in ingegneria del software, ero a 2 corsi di distanza da un minore di matematica.

Tuttavia, detto questo, molte prove, strutture di dati, metodi di ricerca e roba di correttezza dell'algoritmo che ho imparato non sono state realmente utilizzate da quando ho finito la scuola. Ma sarebbe difficile per me dire che almeno non mi ha dato una buona base e una migliore comprensione di ciò che faccio a basso livello.

Perché non importa come lo guardi, al livello più basso, tutto ciò che stai facendo si riduce alla matematica.


7

Puoi diventare un buon sviluppatore di software senza matematica? Penso di sì. Riuscirai a diventare il tipo di programmatore eroico di cui le persone parlano continuamente? Penso di no.

Il problema è che la maggior parte, se non tutti, programmatori eroici (pensa Dennis Ritchie), hanno conoscenze informatiche o matematiche. Per diventare un programmatore davvero eccezionale, devi capire gli algoritmi a un livello che è più che superficiale, il che significa che sei costretto ad approfondire l'informatica formale. E l'informatica è solo matematica applicata.

Allo stesso modo, una comprensione del calcolo lambda sarebbe preziosa per un architetto del sistema operativo o un progettista del linguaggio.


7

Ho visto questo argomento discusso avanti e indietro. Ho lavorato con persone laureate in matematica che pensavano di poter programmare e nel giro di un anno o due hanno cambiato carriera. Uno dei migliori programmatori con cui abbia mai avuto il piacere di lavorare ha avuto un dottorato di ricerca in biochimica e non ha mai frequentato un corso di programmazione / CS formale a scuola, ma si è autodidatta e ha avviato una società di software di successo!

In definitiva, ciò che rende un programmatore buono o eccezionale è qualcuno che è in grado di comprendere la logica, i flussi di lavoro, può imparare con l'esempio e disposto a cercare una soluzione. Inoltre, DEVI IMPARARE IL BUSINESS per cui sono richieste le tue applicazioni. Odio i programmatori che sono orgogliosi di non capire la contabilità, eppure scrivono applicazioni contabili. Fanno sempre ipotesi errate e rallentano davvero lo sviluppo.

Troverai, a prescindere dalla scuola in cui vai, imparerai di più in un anno fuori dalla scuola rispetto a 4 anni di scuola. La scuola ti insegna come imparare con le competenze di base, ma l'esperienza nel mondo reale è molto più preziosa nel tempo.

L'esperienza è il miglior insegnante e quando devi applicare la matematica allo sviluppo del software, finché impari il business, starai bene. Inoltre, ricorda, come diceva un post precedente, a meno che tu non stia cercando di lavorare su un motore di grafica 3D o su sistemi di coordinate grafiche come l'applicazione GIS, la matematica che hai imparato al liceo è tutto ciò di cui hai veramente bisogno.

Ho lavorato su sistemi di contabilità e fatturazione e non ho mai dovuto capire Log (x), SIN, COS, ecc. Per la gestione di un libro mastro o per consentire l'inserimento dei dati. Un diario di invecchiamento non è "alta matematica" ma fondamentale per la valutazione dei problemi di AP.

Vieni a pensarci bene, non ho mai incontrato un contabile con un calcolatore scientifico sulla loro scrivania!


5

La risposta breve è no. Penso che sia un po 'un mito, ma è propagandato perché i problemi di matematica sono generalmente adatti per essere risolti dai computer.

Quindi in uni / college, le persone avranno problemi di matematica che devono risolvere in materie compsci, ma quello che di solito troverai è che la matematica è in realtà più difficile da risolvere rispetto al codice necessario per implementare la soluzione.

Una volta entrati nel mondo reale, scoprirai sempre più che i problemi sono in gran parte risolti per te, il tuo compito sarà solo quello di implementarli nel codice.


5

Devi imparare la matematica o crearne una tua. In entrambi i casi è importante essere bravi in ​​un modo o nell'altro.

Finché si può lavorare con i valori e capire ciò che stanno facendo, perché e cosa si può fare li fanno, allora la matematica tradizionali non sono sempre necessari. Di tanto in tanto si mette in mezzo.

Esistono modi alternativi per visualizzare il valore di un byte diverso dai numeri, ma sono sicuramente il metodo più pensato dopo. Sarebbe possibile scrivere un programma pensando ad esempio a tutti i valori come colori.

La programmazione odierna deriva molto del suo valore dalla capacità di rappresentare 1 e 0 come diversi tipi di dati. Anche se in realtà quegli 1 e 0 non sono affatto numeri, ma la lunghezza d'onda elettrica cambia, la matematica non è tanto in gioco quanto la fisica, tuttavia ... è molto importante per capire molto di ciò che altri programmatori dicono e codificano.

Sarebbe comunque possibile essere un buon programmatore senza matematica, per quanto difficile.


1
Pensare a tutti i valori come ai colori ha quasi più senso. Quando vai troppo lontano da un'estremità dello spettro,
finisci

I gradi (come in 0 - 360, tranne 0 - 256) a volte aiutano anche =) Non è necessario pensare in senso numerico per colori o gradi, quanto quanto "pieno" sia il valore.
Garet Claborn,

5

Ho appena finito un corso di introduzione alla matematica discreta e ho scoperto di sapere già quasi tutto sulla logica dei predicati grazie alla programmazione; tutto ciò che era nuovo era la sintassi: sostanzialmente stava solo lavorando con i booleani.

In breve: forse non devi imparare la matematica esplicitamente , ma solo essendo un programmatore probabilmente hai imparato un po 'di matematica senza rendertene conto. Cioè, essendo un "buon programmatore", sei anche davvero un matematico (in una certa misura).

La corrispondenza Curry-Howard illustra cosa intendo: sostanzialmente, afferma che le prove matematiche e alcuni programmi per computer sono "isomorfi", cioè sono modi diversi di scrivere la stessa cosa. Certo, in realtà è più complesso di così, ma non sono un matematico, quindi questa è la migliore spiegazione che posso dare. Spero che non sia troppo lontano dal segno.

In sintesi, non solo molti campi della CS e della programmazione implicano molta matematica, ma anche le idee di programmazione di base (ad esempio i booleani) sono fondamentalmente matematica sotto mentite spoglie.


4

Questa è una domanda molto difficile a cui rispondere e probabilmente susciterà molto dibattito.

Uno dei motivi per cui questa domanda è così difficile è che dipende in parte dal tipo di lavoro che stai svolgendo. Non c'è molta matematica coinvolta nella maggior parte delle applicazioni aziendali, quindi puoi cavartela con una solida conoscenza dell'algebra e della matematica aziendale. Tuttavia, applicazioni più avanzate richiedono una matematica più avanzata e si inizia a necessitare di una solida conoscenza di calcolo, algebra lineare e simili.

Tuttavia, questa è solo una parte dell'equazione in quanto è ancora necessario un certo grado di matematica solo per la pratica della programmazione stessa. Inutile dire che devi essere a tuo agio con la logica per poter solo scrivere un programma di base e un'algebra di base. Guardando un po 'oltre il semplice funzionamento di un programma di base, anche se è necessario avere una comprensione di alcuni aspetti della matematica discreta per essere in grado di determinare ciò che rende un buon algoritmo da utilizzare per un determinato problema.

Per tornare al cuore della domanda però. Personalmente non penso che tu debba essere un matematico per essere un buon programmatore; tuttavia, penso che devi essere a tuo agio con la matematica per poter essere un buon programmatore generalista.


4

Sì, sicuramente.

Anche l'esecuzione della programmazione aziendale del mulino richiede alcune abilità matematiche.

La gestione della programmazione aziendale richiede competenze nel database. Essere un buon programmatore di database richiede una comprensione di come funzionano i database e quali sono gli algoritmi utilizzati dal Query Processor quando traduce le tue query. Senza una comprensione di limiti e derivate (o anche la comprensione di base che la linea y = x interseca la linea y = x ^ 2 due volte), non è possibile confrontare accuratamente un piano di query di join interno con corrispondenza hash rispetto a un join di ciclo nidificato piano di query.

Inoltre, un buon programmatore può lavorare in quasi tutti i domini, a condizione che studi un po ': giochi, simulazione, sviluppo incorporato, compilatori, sistemi operativi, roba web, database, ecc. Essere in grado di fare tutte quelle cose (o più essere in grado di imparare rapidamente come fare tutte quelle cose) richiede una discreta quantità di conoscenze matematiche.

Direi che uno avrebbe dovuto avere qualche esperienza ad un certo punto nel tempo con quanto segue:

  1. 3 semestri di calc
  2. Diff. Eq
  3. Algebra lineare
  4. Algebra moderna
  5. Probabilità, conteggio e statistiche di base

4

La matematica non è solo una formula. Comprendere alcuni principi matematici sulla teoria degli insiemi è molto utile per cogliere concetti complessi sui sistemi di tipo, così come la comprensione della complessità è fondamentale per un uso efficiente della struttura dei dati.

Anche la teoria dei grafi è estremamente utile, poiché molti problemi di programmazione possono essere modellati da un grafico. Sono rimasto molto sorpreso, mentre stavo sviluppando un'applicazione aziendale, scoprire che i teoremi del percorso più breve stavano fornendo una soluzione elegante a un problema spinoso che avevo!


4

Ho sempre considerato la programmazione altro che matematica.

Semplicemente non sembra l'algebra del liceo.


4

La matematica è l'anticamera della programmazione.

Essere in grado di lavorare con strati su strati di astrazione, modelli, "oggettivazione" di funzioni, trasformazioni e concetti temporali, la matematica è il campo di allenamento perfetto per tutto ciò.

È possibile sviluppare la giusta mentalità per programmare senza matematica, ma è molto più difficile.

Tuttavia, a parte le aree specialistiche, è importante solo comprendere la matematica, conoscere il nome di tutto e come può essere dimostrato un dato teorema. Quindi, anche se hai buoni voti in matematica perché hai imparato tutto senza davvero capire, avrai ancora difficoltà con la programmazione.


4

Le conoscenze matematiche sono utili per alcune applicazioni (come giochi, intelligenza artificiale, computer grafica, ecc.), Ma la matematica ti insegna qualcosa al di là di semplici formule o equazioni complesse.

Imparare la matematica è come imparare un nuovo linguaggio di programmazione. In effetti, la programmazione è applicata alla matematica. Quando impari una nuova lingua, impari molte cose che ti rendono un programmatore migliore. Non è diverso con la matematica, ma se davvero padroni della matematica, sarai un programmatore migliore per sempre, anche se non usi la matematica avanzata nel tuo lavoro.

Il motivo è semplice: la matematica ti insegna a vedere il mondo con altri occhi. Ti insegna a risolvere problemi con approcci diversi senza necessariamente programmare. Questo nuovo modo di pensare ti dà sicuramente un modo migliore per fare il tuo lavoro.

La programmazione è un'arte. La matematica è un'arte. Se li combini entrambi sarai un artista migliore.


La programmazione è fondamentalmente solo una logica applicata, e in effetti la matematica è anche solo una logica applicata.
RibaldEddie,

3

No.

Proprio come la maggior parte delle discipline scientifiche, avere una buona comprensione dei concetti matematici sarà utile, in particolare quando si valutano cose come l'efficienza. Ma per la maggior parte delle attività di programmazione la tua abilità matematica è rilevante solo se il problema che stai risolvendo è legato alla matematica.

I computer sono eccellenti nel fare matematica, quindi ha senso che i primi computer fossero ampiamente utilizzati per fare il "lavoro grugnito" associato a un sacco di lavori matematici complessi. Un sacco di software ancora non risolvere i problemi di matematica complessi, in questo caso di essere bravo in matematica vi aiuterà a scrivere un programma migliore, ma non è quello che si fa un buon programmatore.


3

Di solito, non nel senso che è necessario conoscere, per esempio, equazioni di calcolo o di trigger per fare la maggior parte del lavoro. Se stai programmando grafica / giochi pesanti, allora sì. Un famoso trucco matematico per Quake ne è un buon esempio. Tuttavia, il pensiero che devi affrontare mentre ti occupi di matematica di livello superiore è certamente applicabile alla programmazione; con la programmazione, stai sviluppando la tua struttura logica, le tue funzioni, le tue "prove".

L'unica volta che ho incontrato la matematica nel mio lavoro (flusso di lavoro aziendale interno e app) è quando faccio alcune app di reporting che richiedono conoscenza delle statistiche, ma questo è solo perché era direttamente applicabile ai requisiti.


3

Direi non necessariamente. Alcune discipline di programmazione (crittografia, grafica, motori fisici, ecc.) Avrebbero sicuramente un chiaro vantaggio per coloro che sono matematicamente inclini, ma non credo che una buona comprensione delle equazioni differenziali sarebbe particolarmente utile per la programmazione web, ad esempio.

La logica booleana è probabilmente un requisito per essere un buon programmatore, ma non mi sorprenderebbe se molte persone che non hanno ottenuto buoni voti in matematica al liceo si rivelano bravi a programmare.


3

Direi che sicuramente non devi essere bravo in matematica per essere un buon programmatore.

Il mio primo lavoro come programmatore è stato realizzare grafica 3D per B-52 e pianificazione missioni Cruise Missile. Era un'applicazione a uso intensivo di matematica, ma in realtà avevo solo bisogno di accedere a persone che erano brave / brave in matematica. Non avevo bisogno di conoscere la formula per calcolare grandi distanze circolari tra due punti. Avevo bisogno di sapere come convertire la formula in modo che funzionasse in un linguaggio di programmazione. Lo stesso con la simulazione di volo. Boeing ha fatto tutta la matematica che dovevamo solo applicare.

Questa esperienza mi ha anche aiutato a capire chi sarebbe stato un buon programmatore e chi no. Il lavoro prevedeva che piloti e navigatori facessero un giro di servizio come programmatori e aiutassero i programmatori a comprendere le esigenze della missione. Di solito entro poche settimane si potrebbe dire quali piloti e navigatori sarebbero bravi a farlo. I maggiori di matematica di solito prendevano subito la programmazione.

Quindi direi che essere bravo in matematica rende più probabile che tu sia bravo in programmazione, ma conosco molti bravi programmatori che non sono così bravi in ​​matematica.


3

Non mi piace la matematica e ho sempre ottenuto voti in matematica bassi. Non voglio dire di essere un buon programmatore, tuttavia sono nel settore del software da 10 anni con grande successo.


1
Mi associo totalmente ai tuoi voti in matematica. In realtà mi sento di non essere un cattivo programmatore e di non essere terribile in matematica, ma per qualche ragione non riesco a superare un voto "medio" nei miei corsi di matematica, non importa quanto ci provi.
Bryan Harrington,

@Bryan, posso riferirmi a questo
Jasonco l'

3

È possibile per le persone a cui non piace la matematica diventare un buon programmatore?

No, no-no, no, sì e no!

No, perché spesso ne hai bisogno.

(! (a | (! (b && c) || d) && (! e)))

Perché non funziona?

foo ('a', 'b', 19, g(h))
bar ('c', 'd', 44) 

può essere riscritto in un modo più astratto?

968 ms è più o meno di 0,7 s? Di quanti MB hai bisogno, quanti Ghz ha la macchina, sarà sufficiente un byte: la matematica fa parte del lavoro quotidiano. A volte matematica esplicitamente e superiore.

Matematica sempre implicitamente più bassa.

La matematica è un campo ampio, dal calcolo, alla matrice, alla geometria, alla logica, alla statistica, alla teoria delle categorie, alla teoria dei grafi. Quindi, se credi di programmare senza usare la matematica, forse ti sbagli.

Se osservi i problemi nella pagina di Project Euler , troverai enigmi, in cui non ho idea di come la matematica viene utilizzata per risolverlo. (Non che potrei risolverli senza matematica.) Nota che la dimensione del problema è normalmente così grande, che non puoi risolverli con forza bruta.

Tuttavia, dal momento che non riesco a risolverne molti (circa i 2/3 ormai), significa che non mi piace la matematica?

Se non hai studiato matematica, probabilmente non saprai dove trovare la matematica nella tua vita quotidiana, compresa la programmazione.

Anche se ti sei appena specializzato nello spostare i componenti della GUI sullo schermo per avere un bell'aspetto, stai facendo matematica in qualche modo.

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.