Supponiamo volessi programmare un clone del celebre gioco "Pong", per quanto semplice possa essere ti servono quelle nozioni matematiche che ti permettano di calcolare la fisica della pallina, la traiettoria della pallina, il movimento della racchetta comandatata dal computer in funzione di come la palla si muove, ecc.
Per realizzare queste cose, oltre a conoscere le istruzioni per costruire la gui e su come strutturare gli oggetti del gioco dal punto di vista logico, devi sicuramente sapere cos'è un'equazione, una disequazione, come si calcola una retta passante per due punti, funzioni trigonometriche, come si calcola la velocità di un punto che si muove su un piano (o nello spazio), ecc
Un buon programmatore deve avere delle buone conoscenze matematiche, questo vale per qualsiasi linguaggio non solo Java. Questa affermazione è ancora più vera quando si programmano videogiochi.
Per sapere programmare NON E' MINIMAMENTE necessario conoscere le istruzioni condizionali, i clicli o tutte le istruzioni che un linguaggio ti mette a disposizione. Saper programmare significa saper usare un qualsiasi linguaggio di programmazione (anche pseudo-linguaggi) per risolvere determinati problemi. A volte si deve cercare di stabilire a priori se i problemi ammettono soluzioni, se sì qual è la soluzione ottima (se esiste) o migliore (si deve venire a compromessi), se no cosa si fa?
Ma forse ho un po' esagerato, a quest'ultima cosa ci pensano gli ingegneri del software, tuttavia un programmatore non deve aver paura della matematica, essa non è un nemico ma un alleato!
Ti lascio con quest'ultimo esempio:
a due programmatori A e B è stato chiesto di implementate separatamente un algoritmo per ordinare in modo non decrescente dei numeri interi in modo che il tempo di esecuzione dell'algoritmo sia logaritmico e gli è stata data una settimana di tempo per realizzare l'algoritmo.
Il programmatore A conosce l'analisi computazionale mentre il programmatore B no.
Il programmatore A passa tutta la settimana in panciolle e scrive che non è riuscito a trovare nessun algoritmo;
il programmatore B passa tutta la settimana, giorno e notte, a sforzarsi di trovare una soluzione ma anche lui alla fine si deve arrendere e scrive che non è riuscito a trovare nessun algoritmo.
Le conoscenze matematiche del programmatore A sono state molto utili in quanto egli sapeva fin dall'inizio che non sarebbe mai riuscito a trovare un algoritmo di ordinamento il cui tempo di esecuzione è logaritmico.