Web Developer and Math [duplicato]

11

Ho appena imparato HTML / CSS e pratico tutto ciò che leggo per renderlo più comprensibile a me e mi diverte molto. Il mio obiettivo è essere uno sviluppatore web moderno sia front-end che back-end, quindi non smetterò di imparare. Sto progettando di saltare su JavaScript ora, ma quello che vorrei sapere è quanto sia importante la matematica per diventare uno sviluppatore Web.

  1. Devo sapere la matematica?
  2. In tal caso, che tipo di matematica dovrei sapere e capire?
posta Marc Way 18.07.2013 - 00:29
fonte

6 risposte

21

Sono un povero matematico - metodi numerici ( Computer Science 412 ) è stata una lezione che ho preso più volte, e per favore non chiedermi di fare un problema di calcolo integrale. Quando ho finito, pensavo che non avrei mai più toccato un problema di matematica.

Alcuni anni dopo, ho voluto creare un'immagine di una treccia animata in RGB come avatar.

L'hofatto.Mentrelamatematicaperottenereletreondesinusoidalierasemplice(matematicadiscuolasuperiore),ladomandasuquandounosisovrapponeaunaltrohapresounpo'dipensieroesièrivelatonecessariounpiccolonumerodimetodinumerici(quellaclasseCS412chehopreso-laderivatadiunafunzione,abbastanzafacile...madovevoancorariconoscerloerisolverlo)

Èunesempiobanale,machepotrestiincontrare.Noneralamatematicalapartedifficile,erailriconoscimentodellaclassedelproblema.

UnesempiorecentediProgrammers.SE: Quale classe di problemi è questa e quale matematica devo sapere per risolverlo?

How does one calculate this? It reminds me of solving matrices in high school. Is this something that can be done with matrices? What is this problem called? What do I need to know to solve it?

Questo come sottolineato nella risposta è la programmazione lineare. Di nuovo, non si tratta di risolvere il problema, si tratta di riconoscere la classe del problema ed essere in grado di scoprire come per risolvere il problema.

Nella mia precedente sede di lavoro, c'era una persona che lavorava su un programma per computer per tagliare in modo ottimale i tappeti. Taglio ottimale del tappeto mostra come ciò può essere fatto. Implica un po 'di matematica (francamente è un po' al di sopra di quello che posso capire con un'occhiata). E sì, questo è stato fatto per una webapp (c'è ancora più divertimento in quello di cercare di capire come mandarlo dal back-end al client - lo si fa e lo si rinnega? Come lo memorizzerai? O forse solo generare un'immagine sul back-end?).

.

Stavolavorandosuunsistemadipuntivenditaelavoravoperottenereiformatinumericicorrettiinuncertonumerodipostierintracciareipennymancantiinricevutecheeranomigliaiadidollari(couponepromozioniepacchettiohmio!).Ilmonitoraggiodiquestocodicerichiedevaun'algebraavanzataeilriconoscimentodelleimplicazionidieseguiredeterminateoperazioniinordinidiversi.IdentificareesemplificarecosecomeMath.pow(10,foo)/Math.pow(10,bar)inMath.pow(10,(foo-bar))haresoilcodiceunpo'piùpulito.

Unaltroproblemachevenivaaffrontatoeralariduzionedellacomplessitàdellasplinedellafirmadiunapersonasenzacambiarelaforma.(L'immagineseguentenonèquellasucuistavolavorando,maserveperillustrareilproblema)

Quali di questi punti sono quelli meno significativi che possono essere rimossi (per adattarsi ad altri sistemi antiquati che hanno un limite al numero di punti in una firma)?

Continuando su questo, e specialmente applicabile ad una persona del web front-end, potresti spesso trovarti a lavorare con le spline nelle animazioni web. Guarda w3 su animazioni SVG e inkscape wiki . Potresti trovarti a voler fare un diagramma degli accordi (un'occhiata a circos per alcune visualizzazioni 'wow' di questa natura)

E un ultimo bit, essendo una persona di strumenti di back-end, mi sono trovato spesso a fare segnalazioni contro i miei strumenti. Questo spesso ha toccato statistiche (deviazioni standard, media, mediana, modalità, outliner, significato statistico, linee di miglior adattamento, identificazione del grafico corretto per presentare i dati, ecc.)

Il punto che sto cercando di fare è che ci sono molti posti - sia sul front end che sul back-end - che fanno uso di una matematica più alta. Potresti trovarti in una carriera che non ne fa uso. È abbastanza possibile Tuttavia, molto probabilmente ti troverai a dover ricorrere a qualche matematica avanzata in un dato momento.

In qualità di programmatore, qualsiasi matematica su cui puoi mettere le mani e andare in giro sarà probabilmente utile in futuro . Non posso dire se troverai semplici metodi numerici il limite di dove ti porterà la tua carriera, o se ti troverai a cercare di determinare il taglio ottimale del tappeto, o se cerchi di spiegare a un cliente perché non è un buon idea di rappresentare tutti i possibili modi per organizzare 7 elementi su una singola pagina web.

    
risposta data 18.07.2013 - 03:17
fonte
19

Non bisogno di sapere più della trigonometria per sviluppare pagine web. Ma dovresti sapere quanto segue se vuoi essere ottimale :

Imposta teoria: questo aiuta con più cose che posso contare nella programmazione. Impari a eliminare i duplicati in modo più efficiente.

Teoria dei grafi: se vuoi capire le reti a un livello fondamentale, questo è utile. È anche utile per abbattere più facilmente alcuni tipi di problemi.

Algebra lineare: è enorme se vuoi fare qualsiasi cosa con grafica 3D come HTML5 Canvas.

Statistiche: questo è ancora più grande dal momento che vorrai essere in grado di capire cose come l'analisi dei dati web e l'apprendimento automatico al fine di ottimizzare completamente le funzionalità del tuo sito web.

Comprendere la matematica è anche utile dal punto di vista del fatto che migliorerà generalmente le tue capacità di problem solving. Sarai in grado di tracciare analogie tra difficili problemi del mondo reale e modelli matematici con soluzioni note (spesso non facili).

    
risposta data 18.07.2013 - 00:49
fonte
5

Se stai usando i CSS per fare qualsiasi tipo di layout non banale, specialmente se stai andando verso l'intero design Responsive / fluid grid / best practice / whiz-bang-pow, stai per essere scricchiolante un sacco di numeri.

Ad esempio, supponi di avere una pagina larga 960px e devi inserire 5 riquadri, a filo contro i lati, con grondaie tra:

Supponiamochevorremmoprovarepergrondaie20px,esperochelamatematicafunzioni.Questocilasciaunpo'dialgebra:

5x+4(20)=960

QuindilasoluzioneperXcidicechelecasellehannounalarghezzadi176px.Tuttavia,stiamolavorandoconunagrigliafluidareattivainmodocheipixelnonlataglieranno.Neabbiamobisognoinpercentuale,quindiestraiamolanostraequazionereattiva( dal libro ):

(target/context)*100 = percentage

Ma aspetta! Risulterà che avremo bisogno di più righe, quindi non possiamo usare :first-child o :last-child per cancellare il margine extra. Potremmo usare nth-child(5n) (guarda! Math!), Ma vogliamo il supporto del browser legacy, quindi le scatole verranno racchiuse in un contenitore che è 20px più largo del 960px e gli darà un margine destro negativo.

  • Quindi la larghezza del contenitore è: (980px/960px)*100 = 102.083%
  • E il margine destro del contenitore è: (-20px/960px)*100 = 9.375%
  • E le larghezze delle caselle sono: (176px/980px)*100 = 17.959%
  • E i margini a destra delle caselle sono: (20px/980px)*100 = 2.041%

Quindi supponiamo che vogliamo che ogni casella abbia la stessa altezza di 6 righe di testo e che stiamo usando la dimensione predefinita del font di 16px, con l'altezza della linea impostata su 1,5 ( 16px*1.5 = 24px ), e stiamo usando ems per le nostre unità verticali, che sono fattori della dimensione corrente del carattere.

Ciò significa che l'altezza di una casella è (6*24px)/16px = 9em .

E se vogliamo un margine di 20px tra le righe, le caselle hanno bisogno di un margine inferiore di 20px/16px = 1.25em

Quindi sì, trovo la matematica molto importante quando si scrive CSS, e spesso javascript. Per lo meno, sapere quando avrai bisogno di un certo pezzo di algebra, geometria o persino trigonometria sarà molto, molto utile.

Anche con i pre-processori moderni, il computer può solo scricchiolare i numeri, è necessario capire quali numeri scricchiolare.

    
risposta data 18.07.2013 - 03:37
fonte
4

FWIW, in senso generico (cioè programmazione, indipendentemente dalla lingua), la prova più preziosa in termini di matematica per la programmazione è l'algebra. Non lo usi direttamente , ma ti allena nel tipo di processi logici necessari per avere successo come programmatore. Anche molta programmazione è orientata alla matematica, ma l'algebra è il modo migliore per insegnarti a pensare per risolvere i problemi che potresti incontrare.

Detto questo, se dovessi insegnare un corso "Intro to Programming", farei un pre-test di algebra che è pesante sul processo logico (problemi di parole, risolvere x, e così via) e quindi suggerire caldamente a chiunque quello si lava in quel test per pensare molto a trovare un'altra classe perché le loro possibilità di successo sarebbero ridotte.

E sì, questa è opinione, ma opinione basata su molte delle mie esperienze personali.

    
risposta data 18.07.2013 - 01:06
fonte
0

Sono uno sviluppatore web con oltre sei anni di esperienza professionale; principalmente sul lato server ma con una discreta quantità di lavoro lato client.

Quando frequentavo la scuola superiore, la scuola aveva implementato un controverso programma matematico chiamato College Preparatory Math. Ero nel programma per i primi tre anni, poi, l'anno scorso, ho preso una classe pre-calc standard e ho ottenuto una D.

Avendo sempre avuto interesse per i computer e la programmazione, volevo andare all'università e ottenere una laurea in Informatica. Quindi, il primo anno lì, rendermi conto che le lezioni di matematica di livello standard potrebbero essere troppo difficili per me, ho preso di nuovo una lezione di pre-calcolo che non avrebbe contato per il maggiore. Non che ciò avrebbe avuto importanza; Ho ancora una D. Sconsolato e preoccupato che non sarei in grado di laurearmi in tempo, ho fatto una delle peggiori scelte della mia vita e sono passato a una laurea in Lettere Inglese.

Quindi, per farla breve, non ho né una laurea in CS né una grande esperienza in matematica a livello universitario. Ma sto bene come sviluppatore web.

Per questo tipo di lavoro, più che matematica di alto livello, penso che sia utile avere una comprensione di tre cose particolari; logica, database e elaborazione del testo. Una comprensione della logica è universale nello sviluppo, ovviamente, e i database sono visti anche in altri campi di sviluppo, ma una conoscenza approfondita dell'elaborazione del testo è un po 'diversa; allo stesso modo, ad esempio, uno sviluppatore di giochi probabilmente avrà raramente bisogno di espressioni regolari ma ha bisogno di implementare le funzioni trig e calc quasi quotidianamente, un buon sviluppatore web dovrebbe sapere come scrivere un pattern regex nel loro sonno, ma può probabilmente andare una vita senza implementare il teorema di Pitagora.

Detto questo, non ti farà alcun danno se puoi sopportarlo e imparare la matematica di livello superiore se ne hai la possibilità. Come ho detto, mi dispiace non averlo fatto al college. Chissà; forse decidi che ti piace questa roba, e più che lo sviluppo web, hai un talento per l'elaborazione grafica o lo sviluppo del gioco.

    
risposta data 18.07.2013 - 06:52
fonte
-1

Penso che abbiamo fatto del nostro meglio per influenzare in modo più intelligente il problema in questione. Per tornare gentilmente ai fatti. Come ogni programmatore dirà che siamo autodidatti. Penso che sarebbe un grosso disservizio per te non iniziare a programmare perché ti senti come se potessi dormire attraverso una classe di trigonometria come so che lo farei. Non direi mai che la matematica non mi ostacolerebbe come programmatore. Ma la matematica non mi ha mai impedito di provare a imparare qualcosa da fare con la programmazione. È un fatto che non vale la pena aspettare per imparare javascript a causa della matematica. Avrai molte fasi per imparare a conquistare prima di codificare un uomo intelligente che cammina verso il tuo ultimo clic.

    
risposta data 18.07.2013 - 05:25
fonte