Atualmente, estou usando C e alguns FORTRAN para resolver numericamente sistemas de equações diferenciais.
Estou um pouco cansado das duas linguagens, mas preciso ter um código (bastante) eficiente ... Estou pensando em mudar para o OCaml.
Vale a pena?
Respostas:
As pessoas da Jane Street Capital pensam que sim. Eles deram uma palestra na CMU em 2009 sobre o uso do OCaml.
A única desvantagem que consigo pensar é que as matrizes não são cidadãos de primeira classe.
fonte
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.
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 .
fonte
Para isso,
to solve numerically systems of differential equations
você precisará primeiro de todas as bibliotecas apropriadas. Portanto, uma verificação obrigatória é: uma linguagem de programação osx
suporta.Pessoalmente eu gosto de escrever código nível superior
C
ouFortran
, assim eu useiMatlab
,Octave
,numpy\scipy
.fonte
Gostei do OCaml, pelo menos até analisar a programação multithread.
fonte