Quale linguaggio di programmazione?

Hypersfera
Salve a tutti, ho intenzione di intraprendere studi matematici ma sebbene sappia quanto è importante conoscere un po' di programmazione, non ne ho la minima conoscenza.
So che esistono svariati linguaggi, da Python a C, C++ ecc... ma potreste dirmi quale è maggiormente indicato per applicazioni matematiche? (Dove "applicazioni matematiche" non implica che io voglia specializzarmi in matematica applicata, anzi sono certo che sarà pura; non so se questo sia un dettaglio rilevante per determinare una risposta).

Risposte
feddy
Quello che dice sellacollesella riguardo alla forma mentis mi trova d'accordo!

Python sicuramente per chi fa matematica è un ottimo candidato, per molti motivi. Tra questi, la quantità di risorse che puoi utilizzare/trovare ovunque è sicuramente importante per chi si affaccia alla programmazione. Ti permette anche di introdurti alla programmazione a oggetti che probabilmente sarà il paradigma che ti troverai ad affrontare più spesso durante un corso di laurea in Matematica (ma non solo). Julia è un altro candidato sempre più popolare oggi in ambito "scientifico".

Dove "applicazioni matematiche" non implica che io voglia specializzarmi in matematica applicata

Questo è un dettaglio non irrilevante, che sicuramente scoprirai col tempo :)

Personalmente, ritengo che il C sia davvero l'unico linguaggio che ti permette di sapere cosa succede davvero a livello di memoria. Se questo per te diventa importante o no dipende moltissimo (come ti è stato gia' detto in realta') da ciò che vuoi fare e soprattutto quale è il linguaggio dominante nell'ambito in cui finirai a lavorare. Ad esempio, ancora oggi C, C++, Fortran (e qualche volta Python) sono i linguaggi largamente dominanti per quanto riguarda il calcolo scientifico per problemi di "molto grossi".

megas_archon
All'interno della matematica pura io direi che saper usare (ci sono stato esposto mio malgrado...) un po' di Mathematica, che serve a fare calcolo simbolico, è stato molto utile in alcuni contesti, o mi ha semplicemente dato molti pretesti per costruire attrezzi utili: ad esempio, quando seguivo il corso di geometria differenziale avevo scritto un minuscolo package che calcolava un sacco di invarianti metrici e non di una superficie, le forme fondamentali, i simboli di Christoffel, etc.
E studiando le curve algebriche avevo scritto un package un po' più grande che faceva una cosa simile (curva duale, hessiana, scheletri affini, etc.) disegnandoli.

Indrjo Dedej
Sì, certo. Era solo per dire che non esistono solo applicazioni "numeriche".

megas_archon
Infatti. Più che ad un linguaggio specifico OP dovrebbe indirizzarsi a pensare in maniera composizionale ai problemi; il vantaggio di un proof assistant poi è che permette di implementare la matematica elementare che si vede in algebra (e anche in analisi: qualcuno in Francia che non riesco a trovare ora ha scritto un libretto di analisi uno che è codice Lean valido). Il problema è che imparare a fare le cose in questo modo distanzia dal gergo dei matematici umani. Non penso sia un investimento vantaggioso come prima esposizione alla matematica, e ai proof assistants.

Indrjo Dedej
Piuttosto di *quale* linguaggio, potresti spendere un po' di tempo nel capire delle idee. La sintassi di Python è molto semplice e ci vuole nulla a imparare. E poi non è che abbia tutta una sofisticazione dietro.

Per uno che non sa proprio programmare è forse più istruttivo imparare un linguaggio funzionale tipo Racket oppure Haskell. Anche se non li userai mai in vita tua, sicuramente impari a pensare il programma.

Ovvio, dipende anche da che applicazione. Una delle applicazioni è fare dimostrazioni: vedi Agda oppure Lean, per esempio.

Faussone
@Hypersfera

Anche io come risposta generale ti consiglio assolutamente Python.
Lato positivo, e negativo, di Python e che è un linguaggio molto ad alto livello, quindi non ti serve spaccarti la testa a scrivere molte funzioni tue perché in pratica ti fornisce librerie già pronte per pressoché qualunque cosa ti serva. E , usato magari in combinazione per esempio a Chatgpt (facendo le domande giuste), riesci facilmente a scriverti il tuo programmino per qualunque esigenza.
Ovvio che poi programmare davvero è un'altra cosa, ma, a meno tu che non voglia fare davvero il programmatore serio, va benissimo procedere così, e in ogni caso iniziare in questo modo è più che ragionevole. Comunque ti conviene imparare a usare editor di programmazione un minimo avanzati (tipo Pycharm per esempio nel caso specifico) che ti facilitano la vita e ti rendono in grado di usare strumenti un minimo avanzati allo scopo.
Un altro svantaggio di Python e che è un linguaggio interpretato, quindi non è adatto se ti serve calcolo ad altissime prestazioni, ma mi pare non sia questo il tuo caso (un ottimo linguaggio che ha i vantaggi di Python e offre alte prestazioni in quanto compilato è Julia).

ghira1
Io faccio quasi tutto col Perl, in quanto ho cominciato ad usarlo negli anni 90 e per quello che devo fare sembra funzionare.

Ho visto gente fare cose con MATLAB, Mathematica, Maple, python. Anche geogebra e desmos.

gabriella127
Quello che intendevo è che il Python, per quello che ho visto (non all'età della pietra, nel 2020), è molto generalista, è usato in tantissimi campi, anche lontani dalla matematica, ad esempio le scienze cognitive e le neuroscienze, e alla fine uno se lo può ritrovare nelle situazioni più svariate e può così comunicare con le persone in vari contesti.
Poi uno può scegliere per cosa usarlo, si può andare dal calcolo scientifico, dall'analisi qualitativa delle equazioni differenziali (il lato grafico è abbastanza complicato ma fichissimo) alla animazione tipo come disegnare una tartaruga che saltella, al fare una rete neurale o simulare il movimento di un arto artificiale.
Io ne ho imparato un po' da persone che lavoravano nel Machine Learning, professionisti, usavano tutti il Python.
Altri linguaggi, alla Sapienza, corso di laurea in matematica, si facevano, c'erano corsi specifici per MatLab, C++ e Fortran. Il Python non si faceva, non so ora.

Comunque per imparare il Python da neofiti non c'è bisogno di sapere niente.

Insomma, come mi sembra confermare sellacollesella, uno se lo ritrova nella vita.

moccidentale
.

gabriella127
Come consiglio generico, e per qualche esperienza fatta nel campo machine learning e analisi dati, impara il Python (c'è anche il Python scientifico), a prescindere da specifiche applicazioni, non puoi sbagliare, perché te lo ritroverai anche la mattina a colazione.
È ormai molto diffuso, in primo luogo perché è Open Source (gratis, detto terra terra, non so adesso, ma bastava vedere quanto costa il MatLab, quello più completo, per buttarsi subito nel Python).
Altri linguaggi li farai all'università, non so se adesso all'università si fa anche il Python, alcuni anni fa no.

Hypersfera
"megas_archon":
Beh, certamente dipende da quali applicazioni matematiche...


Ora mi rendo conto che è un'asserzione effettivamente vaga ma il punto è che non ho idea di quali specializzazioni esistano (non ho neanche iniziato la triennale), ciò nonostante mi piacerebbe studiare un linguaggio che potenzialmente potrà tornarmi utile

megas_archon
Beh, certamente dipende da quali applicazioni matematiche...

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