La programmazione e la matematica

Stefy_MHR
Salve! Il prossimo anno andrò in un ITIS e se supererò il secondo anno vorrei segliere come indirizzo l'informatica.
Quando sono andato a scuole aperte si parlava che si impara diversi linguaggi di programmazione.
Ora vi vorrei chiedere... la matematica conta tanto nella programmazione?
A me l'informatica piace da matti, a scuola se qualcuno ha problemi con il pc mi chiedono sempre a me, solo che in matematica non vado male ma nemmeno bene.. ho poco più della sufficienza! :roll: :roll: :roll:
Cosa ne pensate? :?

Risposte
vict85
Per l'ITIS probabilmente non ti servirà. Per livelli più alti le cose cambiano. Comunque ti mancano 2 anni, avrai modo di raggiungere un livello accettabile per allora. Risolvere problemi del computer è molto diverso dal saper programmare ma se sei appassionato non dovresti avere problemi.

apatriarca
Credo che Holub si riferisse ad una matematica molto più avanzata ed astratta di quella fatta alle medie o nei primi anni delle superiori. Molti di questi strumenti vengono infatti usati quotidianamente quando si sviluppano software, anche in quelli più semplici, e la loro importanza non va assolutamente sottovalutata. Ci sono poi ambiti in cui la matematica è molto importante come la computer grafica o l'intelligenza artificiale. Anche se non è quindi indispensabile essere bravi in matematica per programmare bene, è utile conoscerla ed impararla. Più che il latino (della cui utilità in qualsiasi campo sono sempre stato molto scettico), consiglierei vivamente l'inglese. Molti manuali e risorse online sono infatti scritte esclusivamente in questa lingua e un programmatore non può pensare di non conoscerla. Dovrai almeno imparare a leggerla e scriverla correttamente. Ma hai comunque un sacco di tempo, almeno 5-10 anni di studio, e con il tempo potresti decidere che la tua strada non è nella programmazione. Quindi come ha già consigliato Sergio non trascurare il resto, sia esso una materia scolastica o un hobby.

Umby2
Anche la programmazione abbraccia tantissimi campi.

Se devi fare programmi per le navicelle spaziali, immagino che devi conoscere la matematica piu di tutto, e poi inizi a programmare.

Se invece programmi nell'ambito gestionale (il mio campo), ti posso garantire che le operazioni piu complesse che tu debba fare sono le percentuali, le addizioni e sottrazioni. :D Diventa molto piu' difficile seguire le continue riforme (ad esempio nell'ambito della gestione del personale :smt013 ) che non il resto.

gugo82
"Stefy_MHR":
Ora vi vorrei chiedere... la matematica conta tanto nella programmazione?
A me l'informatica piace da matti, a scuola se qualcuno ha problemi con il pc mi chiedono sempre a me [...]

C'è un famoso informatico, di cui non ricordo il nome (forse Knuth? O Dijkstra, forse...), che dice sempre "Il computer sta all'Informatica come il cannocchiale all'Astronomia".

Insomma, chi intende intraprendere una percorso informatico deve sempre tenere presente che il computer è solo uno strumento che permette di verificare concretamente ragionamenti astratti; l'Informatica è, più che altro, uno studio delle modalità del linguaggio e della comunicazione razionale, ossia è Logica.
Ed i più grandi informatici sono matematici.

Non è per scoraggiarti, ovviamente, ma è la realtà.

vict85
Tra tutti quelli che hai scritto solo 2 hanno fatto lauree che non necessitano una conoscenza matematica avanzata (e comunque la maggior parte di quelli che hai messo sono teorici di informatica più che veri e propri programmatori)...
Comunque tutte queste cose sono legate alla matematica "superiore" e non a quelle elementare studiata in una qualsiasi scuola secondaria. Un informatico che trascura queste cose avrà prima o poi qualche difficoltà.

P.S: Io conosco la linguistica e da quello che so non ti serve a molto di più di crearti un tuo linguaggio di programmazione... E una volta creato per fare il compilatore ti ritrovi ad avere a che fare con questioni di elettronica e ottimizzazione delle risorse piuttosto complesse. Certo a meno che tu non voglia creare un linguaggio di programmazione totalmente inutile.

apatriarca
Credo sia importante porre una distinzione tra un programmatore e un esperto di computer (qualunque significato si voglia dare a questo termine). Un programmatore è semplicemente una persona che, per lavoro o diletto, scrive il codice sorgente di uno o più software. Spesso lo fa senza conoscere le caratteristiche tecniche o il sistema operativo sul quale questo software girerà. Non è quindi necessario saper riparare un PC o configurare un sistema operativo per fare il programmatore. Dal punto di vista professionale sono infatti figure molto distinte. Devi quindi decidere che cosa vuoi fare esattamente.

il computer è solo uno strumento che permette di verificare concretamente ragionamenti astratti;


Su questo devo proprio dissentire. Il software funzionante è il fine della programmazione è non la scrittura di codici eleganti o astratti. Un software che non funziona è inutile e non ha importanza quanto elegante o astratto sia il suo codice. Ci sono certo persone a cui piace scrivere codice per il solo gusto di farlo o per un qualche piacere intellettuale ma quando si scrive un software per lavoro sono solo aspetti secondari.

l'Informatica è, più che altro, uno studio delle modalità del linguaggio e della comunicazione razionale, ossia è Logica.


Programmo in haskell e leggo spesso frasi di questo tipo. Ma anche il più agguerrito dei fanatici della programmazione funzionale ammette che quando si scrive un programma non si può prescindere dal mezzo sul quale girerà. Le due funzioni seguenti sono equivalenti (e quindi perfettamente sostituibili) su una macchina in grado di eseguire operazioni con i reali in tempo zero:
$id : x -> x$
$id' : x -> \root(3)(x^3)$
ma sul nostro PC queste due funzioni hanno performance e comportamenti decisamente differenti. Ho fatto un esempio stupido ma in haskell l'algoritmo più elegante è spesso quello che funziona solo in teoria ma che in pratica è troppo lento o richiede troppo spazio. E questo vale per ogni linguaggio. La programmazione non è solo logica, è anche necessario conoscere i limiti del nostro strumento e comprendere in che modo le nostre scelte influiranno sul codice macchina prodotto (a volte avendo solo un idea generale delle caratteristiche del computer sul quale girerà...). Ed è per questo che in alcuni ambiti i linguaggi più comuni sono ancora C e assembly...

si impara diversi linguaggi di programmazione

Non è necessariamente una buona cosa. Un nuovo linguaggio si impara in fretta, spero per te che non si preferisca la quantità alla qualità. È meglio conoscere un linguaggio molto bene che tanti linguaggi male...

Stefy_MHR
Diciamo che da autodidatta so fare miseri programmini in visual basic, ma mi accontento. Ovviamente a formattare e mettere apposto computer sono più bravo!
Con l'Inglese non ho problemi... ho sempre preso buoni voti.
Comunque mi sembra di aver capito che subentrano molti fattori nella programmazione.. forse mi chiarirò meglio le idee quando farò informatica a scuola! :-)

vict85
"Stefy_MHR":
Diciamo che da autodidatta so fare miseri programmini in visual basic, ma mi accontento. Ovviamente a formattare e mettere apposto computer sono più bravo!
Con l'Inglese non ho problemi... ho sempre preso buoni voti.
Comunque mi sembra di aver capito che subentrano molti fattori nella programmazione.. forse mi chiarirò meglio le idee quando farò informatica a scuola! :-)


La programmazione si impara programmando. Gli algoritmi, la conoscenza dell'hardware e la matematica sono cose in più che ti possono rendere un miglior programmatore... Ma se non programmi rimarrai sempre solo un esperto di algoritmi, elettronica o di matematica.


X sergio: Personalmente non trovo che tu sia un programmatore così per la forma mentis che ti è stata data da filosofia e dal classico (anzi quelli che conosco usciti dal classico hanno una forma mentis assolutamente inadatta alla programmazione e ancora di più alla matematica, anche se forse le cose sono peggiorate negli anni). La linguistica come abilità del tradurre o anche nel dividere un testo in varie parti (a seconda di che analisi stai facendo) può avere una qualche utilità nella creazione del programma ma a mio avviso molto limitata e forse solo dopo che la tua esperienza di programmatore ti ha reso sensibile a questi aspetti. Le persone come te, che comunque di matematica ne sai abbastanza (magari non sei un esperto ma è abbastanza buona), sono programmatori perché amano programmare, amano il computer ed è stato la forma mentis del computer che li ha formati così...
E' la programmazione che rende programmatori. Prima si è solo persone che parlano di un linguaggio di programmazione.
E comunque non ritenevo che bisognasse essere matematici, ma solo che la maggior parte dei programmatori pre-computer science (nel senso la sua introduzione come laurea) erano matematici, ingegneri e fisici...

gugo82
Ragazzi, sia ben chiaro che parlo da matematico e non per esperienza diretta.

La laurea in Informatica non serve ad imparare a programmare; la programmazione è un'attività, ma non l'unica e nemmeno (forse) la più importante.
Secondo me tra "conoscere l'Informatica" e "saper programmare" c'è un grande divario, che non so nemmeno descrivere con una metafora appropriata.

Messo in chiaro ciò, la scelta alle superiori ti può servire per prendere familiarità con i linguaggi più semplici e con qualche problema "ingegneristico" di base.
Però non perdere mai di vista la matematica: tante cose che sembrano utili poi si rivelano inapplicabili, mentre sarà proprio lei, quella che sembra inutile, a cavarti d'impaccio il più delle volte. :-D

vict85
Comunque molto dipende da cosa si programma. Se si sta programmando il sistema operativo del computer di una centrale nucleare alcune conoscenze avanzate sono essenziali e certamente un ingegnere è più probabile che li possegga rispetto ad uno laureato in lettere, se si sta programmando un software di calcolo simbolico bisogna conoscere bene la matematica e l'analisi numerica (oltre che avere una certa dimestichezza con l'analisi degli algoritmi), se si sta programmando un programma di analisi linguistica quantitativa di un testo sono necessarie conoscenza linguistiche e di statistica (e se non si vuole farlo lento anche una buona conoscenza delle strutture dati e degli algoritmi di ricerca). Per i programmi che non richiedono particolare ottimizzazioni o conoscenze settoriali chiunque può programmarli, altre volte entrano in gioco numerosi aspetti tecnici che alcune lauree non ti danno (ma che sono possibili da studiare per proprio conto, cosa che comunque bisognerebbe sempre fare). Una buona conoscenza degli algoritmi è utile in ogni caso anche se non sempre è necessario saperle analizzare a fondo.
Una laurea in informatica spesso ti insegna molte cose che saranno inutili, ma d'altra parte è così anche a matematica.

Optimus Prime
:o :o :o
Salve a tutti, io sto frequentando il primo anno di università di informatica, e secondo me un pò di matematica non guasta, per quel che ho visto. Ma solo un pò.
Alle superiori ho fatto ragioneria, e il programma di matematica era molto scarno: per esempio trigonometria non sapevo neanche cos'era, i limiti che facevamo erano tutti uguali, sempre fratti, e solo adesso so cosa significa il risultato che salta fuori, anche logaritmi niente di niente, integrali niente di niente, derivate qualcosina... cmq avevo 7 in pagella tutti gli anni :D . Ma il mio 7 equivaleva ad un 2 in una qualsiasi altra scuola.
Ad ogni modo non ho mai avuto problemi (proprio nessun problema) con il corso di programmazione, quindi non credo servono grandi basi matematiche per programmare.

Sicuramente:

...tutti i grandi informatici sono anche dei matematici...


perchè essendo informatica una laurea "scentifica", ci tocca studiare anche matematica :-D . No ma apparte gli scherzi, secondo me l'argomento di matematica più importante per programmazione, è quello degli "insiemi" (quello che spiega corrispondenze, relazioni, funzioni, dominio, codominio, suriettività, iniettività, funzioni inverse, classi...).

E se sai l'inglese sei a cavallo, perchè se ti interessa un certo argomento dell'informatica, i migliori testi e guide li trovi in inglese (che io so poco :cry:) .

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.