Хотя я большой поклонник как OCaml, так и D, в отношении существующих библиотек я обнаружил, что c ++ является абсолютным победителем.Работа с шаблонами выражений позволила им справиться с манипуляциями с ++ над многомерными массивами и была использована для создания чрезвычайно эффективных библиотек, которые значительно превосходят голые c.Временные значения могут быть удалены из вычислений, которые вы просто не можете удалить из кода c, который является достаточно универсальным для составления операций.Циклы могут быть развернуты автоматически во время перевода.И вы можете использовать функции автопараллелизации из коробки, которые еще больше повышают эффективность использования многоядерных блоков.С функциями вывода типов в c ++ 11 у вас есть все запрошенное поведение в зрелой реализации, которое превзойдет практически любой другой язык.
Теперь я не говорю, что вы не можете сделать то же самоев D. У вас просто не будет зрелости таких библиотек, как uBLAS , Eigen или Blitz ++ .И у вас не будет поддержки компилятора, которую вы найдете с Intel Cilk Plus и другими параллельными строительными блоками .Очевидно, что в будущем я не сомневаюсь, что такая поддержка будет доступна сообществу, но c ++ - единственный язык, который я использовал, который предлагает его сегодня.
I am говорячто вы не можете получить это с помощью OCaml, по крайней мере, стандартного компилятора и библиотеки, просто из-за отсутствия настоящей симметричной многопроцессорной обработки.Что-то вроде JoCaml, OC4MC и т. Д. Может обеспечить необходимое распараллеливание, но вам все еще не хватает глубокого временного сокращения в общедоступных матричных библиотеках.
Это только мой опыт.Гораздо сложнее получить такого рода оптимизацию от C #, F # и этого семейства из-за отсутствия детерминированного уничтожения временных объектов, что делает методы шаблонов выражений гораздо более громоздкими.Отсутствие вывода типов шаблонов во время компиляции делает многие методы недоступными.Из всех языков, с которыми я работал на протяжении многих лет, создавая тензорные и спинорные библиотеки, библиотеки графов, абстрактные алгебры (представленные элементы в матрицах) и т. Д., C ++ по-прежнему обеспечивает лучшую поддержку эффективности, теперь в гораздо лучшей среде, определяемой типами..