Наразі я використовую C та деякі FORTRAN для вирішення числових систем диференціальних рівнянь.
Я трохи втомився від обох цих мов, але мені потрібно мати якийсь (досить) ефективний код ... Я думаю про перехід на OCaml.
Чи варто того?
Наразі я використовую C та деякі FORTRAN для вирішення числових систем диференціальних рівнянь.
Я трохи втомився від обох цих мов, але мені потрібно мати якийсь (досить) ефективний код ... Я думаю про перехід на OCaml.
Чи варто того?
Відповіді:
Люди в Jane Street Capital впевнені, що так думають. Вони говорили в КМУ у 2009 році про використання OCaml.
Єдиний недолік, про який я можу подумати - це те, що матриці не є громадянами першого класу.
Перш за все, я хочу зробити незвичне твердження, що для чисельних обчислень мови високого рівня в довгостроковій перспективі набагато корисніші, ніж мови низького рівня. Дозвольте мені слабо процитувати дослідника з Інституту Фраунгофера, який працює в чисельних моделюваннях, що використовуються в прогнозах погоди.
В останнє десятиліття процесори стали в 1000 разів швидшими, а алгоритми - на 1000 * 1000 швидшими. Це означає, що сьогоднішні алгоритми, що працюють на вчорашніх процесорах, будуть бити вчорашні алгоритми, що працюють на сьогоднішніх процесорах, в коефіцієнт 1000.
Очевидно, є набагато більше параметрів, які слід враховувати як швидкість процесора та алгоритми, такі як диски або оперативна пам’ять, але це твердження допомагає нам відмовитись від того, що якщо ви вибираєте мову низького рівня, ви зосереджуєтесь на неправильному факторі (1000 замість 1000 * 1000).
Звичайно, враховуючи будь-який конкретний чисельний алгоритм, можна очікувати, що C або Fortran переможуть OCaml або Common Lisp великим фактором (насправді не таким). Але якщо вас насправді цікавлять чисельні проблеми та ви готові вдосконалити алгоритми, вам слід вибрати мову високого рівня, яка дозволить висловити свої ідеї на високому рівні та легко вдосконалити алгоритми.
В якості додаткової примітки, якщо ви розглядаєте можливість написання числового коду в OCaml, вам обов'язково слід знати про те, як OCaml передає параметри функціям, вбудованим функціям та unbox floats. Все це детально описано в примітках Ксав'єра Лероя .
Щоб to solve numerically systems of differential equations
вам потрібно в першу чергу власних бібліотек. Тому обов'язкова перевірка: чи x
підтримує їх мова програмування .
Особисто мені подобається писати код більш високому рівні , ніж C
або Fortran
, таким чином , я використовував Matlab
, Octave
, numpy\scipy
.
Мені сподобався OCaml, принаймні, поки я не переглянув багатопотокове програмування.