Actualmente estoy usando C y algunos FORTRAN para resolver numéricamente sistemas de ecuaciones diferenciales.
Estoy un poco harto de estos dos lenguajes, pero necesito tener un código (bastante) eficiente ... Estoy pensando en cambiar a OCaml.
¿Vale la pena?
Respuestas:
La gente de Jane Street Capital seguro lo cree. Dieron una charla en CMU en 2009 sobre el uso de OCaml.
El único inconveniente que puedo pensar es que las matrices no son ciudadanos de primera clase.
fuente
En primer lugar, quiero hacer la afirmación inusual de que para los cálculos numéricos, los lenguajes de alto nivel son mucho más útiles a largo plazo que los lenguajes de bajo nivel. Permítanme citar libremente a un investigador del Instituto Fraunhofer que trabaja en simulaciones numéricas utilizadas en pronósticos meteorológicos.
Obviamente, hay muchos más parámetros a tener en cuenta como la velocidad de la CPU y los algoritmos, como discos o RAM, pero esa declaración nos ayuda a entender que, si elige un lenguaje de bajo nivel, se enfoca en el factor incorrecto (1000 en lugar de 1000 * 1000).
Por supuesto, dado cualquier algoritmo numérico específico , uno puede esperar que C o Fortran superen a OCaml o Common Lisp por un factor importante (en realidad no ese). Pero si realmente está interesado en problemas numéricos y está dispuesto a mejorar los algoritmos, debe elegir un lenguaje de alto nivel que le permita expresar sus ideas a un alto nivel y mejorar fácilmente los algoritmos.
Como nota al margen, si considera escribir código numérico en OCaml, definitivamente debe saber cómo OCaml pasa los parámetros a funciones, funciones en línea y flotantes unbox. Todo esto se detalla en las notas de Xavier Leroy .
fuente
En
to solve numerically systems of differential equations
primer lugar, necesitará bibliotecas adecuadas. Entonces, una verificación obligatoria es: ¿losx
admite un lenguaje de programación ?En lo personal me gusta escribir código nivel más alto que
C
oFortran
, por lo tanto he utilizadoMatlab
,Octave
,numpy\scipy
.fuente
Me gustó OCaml, al menos hasta que miré la programación multiproceso.
fuente