В настоящее время я использую C и немного FORTRAN для численного решения систем дифференциальных уравнений.
Я немного сыт по горло обоими этими языками, но мне нужно иметь некоторый (довольно) эффективный код ... Я думаю о переходе на OCaml.
Стоит ли оно того?
Ответы:
Люди в Джейн Стрит Кэпитал наверняка так думают. В 2009 году они выступили в КМУ с докладом об использовании OCaml.
Единственный недостаток, о котором я могу думать, - это то, что матрицы не являются гражданами первого класса.
источник
Прежде всего, я хочу сделать необычное утверждение, что для численных вычислений языки высокого уровня в долгосрочной перспективе гораздо полезнее, чем языки низкого уровня. Позвольте мне процитировать исследователя из Института Фраунгофера, работающего в области численного моделирования, используемого в прогнозах погоды.
Очевидно, что в качестве скорости процессора и алгоритмов нужно учитывать гораздо больше параметров, таких как диски или ОЗУ, но это утверждение помогает нам понять, что если вы выбираете язык низкого уровня, вы сосредотачиваетесь на неправильном множителе (1000 вместо 1000 * 1000).
Конечно, при наличии любого конкретного числового алгоритма можно ожидать, что C или Fortran превзойдут OCaml или Common Lisp по (на самом деле не так) большому коэффициенту. Но если вы действительно заинтересованы в численных задачах и хотите улучшить алгоритмы, вам следует выбрать язык высокого уровня, который позволит вам высказать свои идеи на высоком уровне и легко улучшить алгоритмы.
В качестве примечания: если вы подумаете о написании числового кода в OCaml, вы должны точно знать, как OCaml передает параметры в функции, встроенные функции и операции распаковки unbox. Все это подробно описано в заметках Ксавье Леруа .
источник
Чтобы
to solve numerically systems of differential equations
вам нужно в первую очередь собственных библиотек. Итак, обязательная проверка: поддерживает ли язык программированияx
их?Лично мне нравится писать код более высоком уровне , чем
C
илиFortran
, таким образом , я использовалMatlab
,Octave
,numpy\scipy
.источник
Мне понравился OCaml, по крайней мере, пока я не посмотрел на многопоточное программирование.
источник