J'utilise actuellement C et du FORTRAN pour résoudre numériquement des systèmes d'équations différentielles.
Je suis un peu fatigué de ces deux langages mais j'ai besoin d'avoir du code (plutôt) efficace ... Je pense à passer à OCaml.
Est-ce que ça vaut le coup?
Réponses:
Les gens de Jane Street Capital le pensent certainement. Ils ont donné une conférence à la CMU en 2009 sur l'utilisation d'OCaml.
Le seul inconvénient auquel je peux penser est que les matrices ne sont pas des citoyens de première classe.
la source
Tout d'abord, je veux faire la déclaration inhabituelle que pour les calculs numériques, les langages de haut niveau sont beaucoup plus utiles à long terme que les langages de bas niveau. Permettez-moi de citer vaguement un chercheur du Fraunhofer Institut travaillant sur les simulations numériques utilisées dans les prévisions météorologiques.
Évidemment, il y a beaucoup plus de paramètres à prendre en compte comme la vitesse du processeur et les algorithmes, comme les disques ou la RAM, mais cette déclaration nous aide à comprendre que, si vous choisissez un langage de bas niveau, vous vous concentrez sur le mauvais facteur (1000 au lieu de 1000 * 1000).
Bien sûr, étant donné n'importe quel algorithme numérique spécifique , on peut s'attendre à ce que C ou Fortran bat OCaml ou Common Lisp par un facteur (en fait pas que) grand. Mais si vous êtes réellement intéressé par les problèmes numériques et que vous souhaitez améliorer les algorithmes, vous devez alors choisir un langage de haut niveau qui vous permettra d'exprimer vos idées à un niveau élevé et d'améliorer facilement les algorithmes.
En guise de remarque, si vous envisagez d'écrire du code numérique dans OCaml, vous devez absolument savoir comment OCaml transmet les paramètres aux fonctions, aux fonctions en ligne et aux flottants de déballage. Tout cela est détaillé dans les notes de Xavier Leroy .
la source
Pour
to solve numerically systems of differential equations
vous aurez besoin en premier lieu de bibliothèques appropriées. Une vérification obligatoire est donc la suivante: un langage de programmation les prend-il enx
charge?Personnellement , j'aime écrire du code niveau supérieur
C
ouFortran
, donc je l' ai utiliséMatlab
,Octave
,numpy\scipy
.la source
J'ai aimé OCaml, au moins jusqu'à ce que je regarde la programmation multi-thread.
la source