[C++, Python] Linguaggi di programmazione
Ciao a tutti! Io ho appena conseguito la laurea triennale in matematica e ho deciso di imparare a programmare. Conosco le basi del C++ e di Matlab e un mio amico mi ha consigliato di provare il Python. Vorrei chiedervi se mi consigliate di studiare qualche linguaggio in particolare; diciamo che vorrei "buttarmi" su qualcosa che sia stimolante per un laureato in matematica e che possa anche risultare utile a livello lavorativo.
Grazie in anticipo!
Grazie in anticipo!
Risposte
"Utile a livello lavorativo" è una descrizione un po' troppo generica. Ambiti diversi hanno tradizioni [=linguaggi] diversi. Tuttavia la programmazione è universale e ciò che impari in un linguaggio è applicabile ad un altro in buona parte. L'idea di iniziare con Python è buona: permette di fare molte cose "matematiche" ed evita grossi rompicapi tipici del C++, inoltre sono disponibili pacchetti per un sacco di cose. Mi raccomando, Python 3!
Python (+ numpy/scipy/..) sta sostituendo Matlab in molte aziende/università per il calcolo numerico. Ha in effetti capacità di calcolo matriciale e di fare grafici abbastanza simili ed è molto più utilizzabile per fare qualsiasi altra cosa (fare GUI ad esempio). Esistono poi numerose risorse ed è lo standard de facto per lo scripting in molte applicazioni (in ambienti CAD/CAE o di computer grafica per esempio). Nel mio precedente lavoro ci sono state richieste di aziende di rimodernare dei codici Matlab preesistenti e portarli in Python in modo da interfacciarsi meglio con le altre applicazioni in uso nell'azienda (ed evitare di pagare la licenza di Matlab). Al momento gran parte del mio lavoro in Framestore consiste nello scrivere script in python (e questo vale per l'intera industria cinematografica per il mio ruolo - altri usano principalmente il C++). In passato ho usato principalmente il C++, ma fatto qualcosa anche in altri linguaggi.
In generale, qualsiasi linguaggio va bene comunque. Non è più di tanto difficile passare da uno all'altro. Puoi provare a usare qualche linguaggio funzionale ad esempio. Oppure Javascript se preferisci lanciarti sul web. La conoscenza (almeno base) di linguaggi come Bash possono anche essere utili. Dipende insomma un po' tutto dai tuoi obiettivi e preferenze.
EDIT: Personalmente non ho ancora visto usare Python 3 in ambiente lavorativo, nonostante sia uscito da diversi anni.
In generale, qualsiasi linguaggio va bene comunque. Non è più di tanto difficile passare da uno all'altro. Puoi provare a usare qualche linguaggio funzionale ad esempio. Oppure Javascript se preferisci lanciarti sul web. La conoscenza (almeno base) di linguaggi come Bash possono anche essere utili. Dipende insomma un po' tutto dai tuoi obiettivi e preferenze.
EDIT: Personalmente non ho ancora visto usare Python 3 in ambiente lavorativo, nonostante sia uscito da diversi anni.
Mi inserisco nella discussione perché anche io mi sono ritrovato nella stessa situazione di Jarir una volta conclusa la triennale. Il linguaggio su cui venni indirizzato è Java.
@ apatriarca: A tal proposito vorrei chiederti che prospettive pensi ci siano per quanto riguarda il linguaggio Java, che non hai nominato. Benché molti ne parlino male, personalmente mi sono trovato molto bene con la sua sintassi. Vorrei sapere che genere di critiche gli si possono rivolgere e le implicazioni di queste per quanto riguarda lo sviluppo di programmi "seri".
@ apatriarca: A tal proposito vorrei chiederti che prospettive pensi ci siano per quanto riguarda il linguaggio Java, che non hai nominato. Benché molti ne parlino male, personalmente mi sono trovato molto bene con la sua sintassi. Vorrei sapere che genere di critiche gli si possono rivolgere e le implicazioni di queste per quanto riguarda lo sviluppo di programmi "seri".
Java è molto usato in ambiente web, soprattutto quando si parla di applicazioni Enterprise, e per lo sviluppo di app per android.
Il linguaggio non è di per se particolarmente brutto*, il problema principale è rappresentato dalle diverse tecnologie che girano intorno al linguaggio, che sono spesso molto prolisse, pesanti in termini di memoria e complicate da usare. Il fatto di essere stato influenzato da un periodo in cui il paradigma ad oggetti era "the new cool thing" ha fatto in modo che alcune idee venissero esasperate portando a mastodontici framework con infiniti livelli di astrazione che rendono il loro uso più complicato di quello che potrebbe essere. Ci sono poi stati alcuni problemi di sicurezza della JVM, una portabilità promessa ma sempre mantenuta, una GUI delle applicazioni non proprio elegante ed efficiente, la non compatibilità della JVM a 32 e 64 bit, la non compatibilità tra la JVM di Oracle e quella in Android.. La lentezza del linguaggio ad adeguarsi alle nuove tendenze e a risolverne i problemi l'ha fatto passare un po' di moda. Per nuovi progetti il linguaggio è diventato molto meno attraente, ma è comunque ancora molto forte in ambienti in cui la sua presenza era dominante e in cui non ha senso fare un porting ad un altro linguaggio. Ma una volta che si conosce un linguaggio non è difficile passare ad un altro e a seconda di quali siano i tuoi desideri/obiettivi Java potrebbe ancora essere il linguaggio migliore.
* Non lo trovo tuttavia neanche bello. Un po' senza personalità a mio parere.
Il linguaggio non è di per se particolarmente brutto*, il problema principale è rappresentato dalle diverse tecnologie che girano intorno al linguaggio, che sono spesso molto prolisse, pesanti in termini di memoria e complicate da usare. Il fatto di essere stato influenzato da un periodo in cui il paradigma ad oggetti era "the new cool thing" ha fatto in modo che alcune idee venissero esasperate portando a mastodontici framework con infiniti livelli di astrazione che rendono il loro uso più complicato di quello che potrebbe essere. Ci sono poi stati alcuni problemi di sicurezza della JVM, una portabilità promessa ma sempre mantenuta, una GUI delle applicazioni non proprio elegante ed efficiente, la non compatibilità della JVM a 32 e 64 bit, la non compatibilità tra la JVM di Oracle e quella in Android.. La lentezza del linguaggio ad adeguarsi alle nuove tendenze e a risolverne i problemi l'ha fatto passare un po' di moda. Per nuovi progetti il linguaggio è diventato molto meno attraente, ma è comunque ancora molto forte in ambienti in cui la sua presenza era dominante e in cui non ha senso fare un porting ad un altro linguaggio. Ma una volta che si conosce un linguaggio non è difficile passare ad un altro e a seconda di quali siano i tuoi desideri/obiettivi Java potrebbe ancora essere il linguaggio migliore.
* Non lo trovo tuttavia neanche bello. Un po' senza personalità a mio parere.
Sei stato molto chiaro, ti ringrazio della risposta esauriente.
Io mi darei un pelo agli algoritmi prima e poi ad un problema.
Sviluppo e' risolvere un problema.... il linguaggio e' solo un medium
Sviluppo e' risolvere un problema.... il linguaggio e' solo un medium
Dipende da "chi" sei ... se sei un "badilatore di statement" ti interessa solo il linguaggio ...

Sara' che lavoro con gente piu "artistica" ma io identifico badilatore di statement" con Indiano outsurced
Adess ... ma una volta ...

dal momento che conosci le basi del C++, secondo me ti conviene approfondire questo! Ti permette di fare qualsiasi cosa sia a livello scientifico(analisi numerica, simulazioni..) sia videogiochi, sia computer grafica e molto altro...