Antes de tudo, quero afirmar que, para cálculos numéricos, as linguagens de alto nível são muito mais úteis a longo prazo do que as linguagens de baixo nível. Permitam-me citar um pesquisador do Fraunhofer Institut que trabalha em simulações numéricas usadas em previsões meteorológicas.
Na última década, as CPUs se tornaram 1000 vezes mais rápidas, enquanto os algoritmos se tornaram 1000 * 1000 mais rápidos. Isso significa que os algoritmos de hoje em execução nas CPUs de ontem vencerão os algoritmos de ontem em execução nas CPUs de hoje por um fator de 1000.
Obviamente, há muito mais parâmetros a serem considerados como velocidade da CPU e algoritmos, como discos ou RAM, mas essa declaração nos ajuda a entender que, se você escolher um idioma de baixo nível, se concentrar no fator errado (1000 em vez de 1000 * 1000).
Obviamente, dado qualquer algoritmo numérico específico, pode-se esperar que C ou Fortran superem OCaml ou Common Lisp por um fator grande (na verdade não é esse). Mas se você está realmente interessado em problemas numéricos e deseja melhorar os algoritmos, escolha uma linguagem de alto nível que permita expressar suas idéias em um nível alto e melhorar facilmente os algoritmos.
Como observação lateral, se você pensa em escrever código numérico no OCaml, você definitivamente deve saber como o OCaml passa parâmetros para funções, funções embutidas e flutuações de unbox. Tudo isso está detalhado nas anotações de Xavier Leroy .