OCaml è utile per l'analisi numerica? [chiuso]

10

Attualmente sto usando C e alcuni FORTRAN per risolvere numericamente sistemi di equazioni differenziali.

Sono un po 'stufo di entrambi questi linguaggi, ma ho bisogno di un codice (piuttosto) efficiente ... Sto pensando di passare a OCaml.

Ne vale la pena?

    
posta Eelvex 20.02.2011 - 02:41
fonte

4 risposte

11

Le persone di Jane Street Capital sicuramente la pensano così. Hanno dato un talk a CMU nel 2009 sull'utilizzo di OCaml.

L'unico inconveniente che posso pensare è che le matrici non sono cittadini di prima classe.

    
risposta data 20.02.2011 - 03:16
fonte
7

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 .

    
risposta data 09.01.2014 - 12:29
fonte
6

Per to solve numerically systems of differential equations avrai bisogno prima di tutto di librerie appropriate. Quindi un controllo obbligatorio è: un linguaggio di programmazione x li supporta.

Personalmente mi piace scrivere codice più alto di C o Fortran , quindi ho usato Matlab , Octave , numpy\scipy .

    
risposta data 20.02.2011 - 11:09
fonte
2

Mi è piaciuto OCaml, almeno fino a quando ho guardato la programmazione multi-thread.

    
risposta data 20.02.2011 - 10:47
fonte

Leggi altre domande sui tag