Ocaml 适用于处理多维数组的高效类型推断语言有哪些示例
我不太关心垃圾收集,如果有,它应该是可选的。语言Ocaml 适用于处理多维数组的高效类型推断语言有哪些示例,ocaml,d,type-inference,Ocaml,D,Type Inference,我不太关心垃圾收集,如果有,它应该是可选的。语言D符合要求,但我正在探索其他选择。令我惊讶的是,在各种语言中,这里似乎人烟稀少。如果可能的话,我想要一个能以C语言80%的速度运行的东西 我还希望该语言能够很好地支持多核。不一定通过线程,但任何不涉及大量复制的内容。例如,GNU对libstdc++的并行模式对我来说是一个相当好的抽象,但在提供预烘焙数组原语方面有点弱(这不是抱怨,它的工作不是提供数组原语) 我怀疑我所说的是一种类似于OCaMl的语言: 对多维数组的良好支持 无(或可选)垃圾收集 阵
D
符合要求,但我正在探索其他选择。令我惊讶的是,在各种语言中,这里似乎人烟稀少。如果可能的话,我想要一个能以C语言80%的速度运行的东西
我还希望该语言能够很好地支持多核。不一定通过线程,但任何不涉及大量复制的内容。例如,GNU对libstdc++
的并行模式对我来说是一个相当好的抽象,但在提供预烘焙数组原语方面有点弱(这不是抱怨,它的工作不是提供数组原语)
我怀疑我所说的是一种类似于OCaMl的语言:
我不确定使用什么标签,所以欢迎提出建议我也想把它变成一个维基,但不知道怎么做。我听说过Felix,但不知道这在这里是否合适。你基本上是在描述D,特别是如果你有很长的时间视野,并且愿意等待一些正在进行的工作完全完成的话
malloc
和free
。使用非类型化内存块的能力还允许实现自定义分配器。我和我指导的GSoC学生都在使用一个区域分配器,该分配器将很快被审查并纳入Phobos(D标准库)- 熟悉的Ocaml语法
- std库对F的支持#
- TPL、PLINQ和Async对并行编程的支持
- 基于CLR的垃圾收集(在Microsoft.NET和开源Mono上运行)
- PInvoke用于调用本机C库
- 好成绩
虽然我是OCAML和D的巨大粉丝,但在现有的图书馆里,我发现C++是这里的胜利者。表达式模板工作打破了c++对多维数组的操作,并被用于创建极为高效的库,其性能远远优于裸c。临时变量可以从计算中删除,但不能从c代码中删除,因为c代码的通用性足以构成操作。循环可以在translationtime期间自动展开。您还可以使用开箱即用的自动并行功能,进一步推动多核机箱的使用达到新的高度。有了c++11的类型推断功能,您可以在一个成熟的实现中实现所有请求的行为,它的性能几乎超过任何其他语言
现在,我并不是说你不能在D中做同样的事情。你只是不会有像,或那样的库的成熟度。而且,您将无法获得使用的编译器支持。显然,在这条路上,我毫无疑问的支持这种支持,但是C++是我今天使用的唯一的语言。 我的意思是,你不能用OCaml,至少是标准的编译器和库,仅仅因为缺乏真正的对称多处理。类似于JoCaml、OC4MC等可能提供必要的并行化,但您仍然缺乏对常用矩阵库中临时缩减的深入使用这只是我的经验。由于缺乏对临时变量的确定性破坏,从C#、F#和该家族获得此类优化要困难得多,这使得表达式模板技术更加笨拙。由于缺少模板的编译时类型推断,许多技术无法实现。在多年来我所从事的所有语言中,构建张量和旋量库、图形库、抽象代数(矩阵中的元素表示等),C++仍然是效率的最佳支持,现在在一个更好的类型推导环境中。 < P >杰伊的鱼提供了你想要的,除了C FFI。鱼类是多倍体,而不仅仅是多态性。它推断数组的维数。您可以编写代码并在1或2维上进行测试,但计算