Прежде всего, я хочу сделать необычное утверждение, что для численных вычислений языки высокого уровня в долгосрочной перспективе гораздо полезнее, чем языки низкого уровня. Позвольте мне процитировать исследователя из Института Фраунгофера, работающего в области численного моделирования, используемого в прогнозах погоды.
За последнее десятилетие процессоры стали в 1000 раз быстрее, а алгоритмы - в 1000 * 1000 раз быстрее. Это означает, что сегодняшние алгоритмы, работающие на вчерашних процессорах, превзойдут вчерашние алгоритмы, работающие на сегодняшних процессорах, в 1000 раз.
Очевидно, что в качестве скорости процессора и алгоритмов нужно учитывать гораздо больше параметров, таких как диски или ОЗУ, но это утверждение помогает нам понять, что если вы выбираете язык низкого уровня, вы сосредотачиваетесь на неправильном множителе (1000 вместо 1000 * 1000).
Конечно, при наличии любого конкретного числового алгоритма можно ожидать, что C или Fortran превзойдут OCaml или Common Lisp по (на самом деле не так) большому коэффициенту. Но если вы действительно заинтересованы в численных задачах и хотите улучшить алгоритмы, вам следует выбрать язык высокого уровня, который позволит вам высказать свои идеи на высоком уровне и легко улучшить алгоритмы.
В качестве примечания: если вы подумаете о написании числового кода в OCaml, вы должны точно знать, как OCaml передает параметры в функции, встроенные функции и операции распаковки unbox. Все это подробно описано в заметках Ксавье Леруа .