Prima di tutto, voglio fare l'insolita affermazione che per i calcoli numerici, i linguaggi di alto livello sono molto più utili a lungo termine dei linguaggi di basso livello. Lasciatemi citare vagamente un ricercatore del Fraunhofer Institut che lavora su simulazioni numeriche usate nelle previsioni del tempo.
In the last decade, CPUs became 1000 times faster while algorithms became 1000*1000 faster. This means, that today's algorithms running on yesterday's CPUs will beat yesterday's algorithms running on today's CPUs by a factor of 1000.
Ovviamente, ci sono molti più parametri da tenere in considerazione come velocità e algoritmi della CPU, come dischi o RAM, ma questa affermazione ci aiuta a capire che, se scegli un linguaggio di basso livello, ti concentri sul fattore sbagliato ( 1000 anziché 1000 * 1000).
Ovviamente, dato uno specifico algoritmo numerico ci si può aspettare che C o Fortran battano OCaml o Common Lisp per un fattore (in realtà non così) di grandi dimensioni. Ma se sei realmente interessato ai problemi numerici e sei disposto a migliorare gli algoritmi, dovresti scegliere un linguaggio di alto livello che ti permetta di esprimere le tue idee ad alto livello e di migliorare facilmente gli algoritmi.
Come nota a margine, se consideri di scrivere codice numerico in OCaml, dovresti sicuramente sapere come OCaml passa i parametri alle funzioni, funzioni inline e unbox float. Tutto questo è dettagliato in note di Xavier Leroy .