Alcuni pensieri aggiuntivi.
Il linguaggio di programmazione "di per sé" è solo uno strumento. Tutti i linguaggi sono stati progettati per rendere alcuni tipi di costrutti più facili da costruire rispetto ad altri. E la conoscenza e la padronanza di un linguaggio di programmazione sono più importanti ed efficaci delle caratteristiche di quel linguaggio rispetto ad altri.
Per quanto posso vedere ci sono due dimensioni di questa domanda. La prima dimensione è la capacità di esplorare, costruire prove di concetti o modelli a un ritmo rapido, avendo infine a portata di mano strumenti sufficienti per studiare ciò che sta accadendo (come test statistici, grafica, strumenti di misurazione, ecc.). Questo tipo di attività è generalmente preferito da ricercatori e data scientist (mi chiedo sempre cosa significhi, ma uso questo termine per la sua definizione libera). Tendono a fare affidamento su strumenti noti e verificati, che possono essere utilizzati per prove o argomenti.
La seconda dimensione è la capacità di estendere, modificare, migliorare o persino creare strumenti, algoritmi o modelli. Per ottenere ciò è necessario un linguaggio di programmazione adeguato. All'incirca tutti sono uguali. Se lavori per un'azienda, allora dipendi molto dalle infrastrutture dell'azienda, la cultura interna e le tue scelte diminuiscono in modo significativo. Inoltre, quando si desidera implementare un algoritmo per l'uso in produzione, è necessario affidarsi all'implementazione. E l'implementazione in un'altra lingua che non padroneggi non ti aiuterà molto.
Tendo a favorire per il primo tipo di attività l'ecosistema R. Hai una grande comunità, un enorme set di strumenti, prove che questi strumenti funzionano come previsto. Inoltre, puoi considerare Python, Octave (solo per citarne alcuni), che sono candidati affidabili.
Per la seconda attività, devi prima pensare a ciò che vuoi davvero. Se desideri strumenti robusti pronti per la produzione, C / C ++, Java, C # sono ottimi candidati. Considero Python come un secondo cittadino in questa categoria, insieme a Scala e amici. Non voglio iniziare una guerra alla fiamma, è solo la mia opinione. Ma dopo più di 17 anni come sviluppatore, tendo a preferire un contratto rigoroso e le mie conoscenze, rispetto alla libertà di fare qualsiasi cosa tu possa pensare (come accade con molti linguaggi dinamici).
Personalmente, voglio imparare il più possibile. Ho deciso che devo scegliere nel modo più duro, il che significa implementare tutto da zero. Uso la R come modello e ispirazione. Ha grandi tesori nelle biblioteche e molta esperienza distillata. Tuttavia, R come linguaggio di programmazione è un incubo per me. Quindi ho deciso di utilizzare Java e di non utilizzare alcuna libreria aggiuntiva. Questo è solo per la mia esperienza e nient'altro.
Se hai tempo, la cosa migliore che puoi fare è passare del tempo con tutte queste cose. In questo modo guadagnerai per te la migliore risposta possibile, adatta a te. Dijkstra ha detto una volta che gli strumenti influenzano il modo in cui pensi, quindi è consigliabile conoscere i tuoi strumenti prima di lasciarli modellare come pensi. Puoi leggere di più al riguardo nel suo famoso articolo chiamato The Humble Programmer