san*_*san 5 ocaml type-inference d
我不太关心垃圾收集,如果存在它应该是可选的.该语言D适合该法案,但我正在探索其他选择.令我感到惊讶的是,这似乎是语言中人烟稀少的地方.如果可能的话,我想要能以80%的速度运行东西的东西.
我也希望这种语言能够很好地支持多核.不一定是通过线程,而是任何不涉及大量复制的东西.例如,GNU的并行模式对libstdc++我来说是一个相当不错的抽象,但在给出预先烘焙的数组原语方面有点弱(这不是一个抱怨,给出数组原语不是它的工作).
我怀疑我驾驶的是一种OCaMl类似的语言:
我不确定使用什么标签,欢迎提出建议.我也想把它变成一个wiki,但不知道怎么做.我听说过,Felix但不知道这是否合适.
dsi*_*cha 10
你几乎都在描述D,特别是如果你有很长的时间,并且愿意等待一些正在进行中的工作完全成功.
对多维数组的良好支持:我正在指导Google Summer of Code项目.它尚未打磨并准备好迎接黄金时段,但如果您生活在最前沿,它已经可以使用了.它还包括对BLAS和LAPACK以及表达式模板和赋值器的绑定,以便为这些库提供一个很好的包装器.
D的内存管理默认方法是垃圾收集,但是存在足够的低级设施,在性能或空间效率是高优先级的情况下,您不必使用它.你可以完全访问C标准库,并可以使用C的malloc和free直接.使用无类型内存块的能力还允许实现自定义分配器.我和我正在指导的GSoC学生一直在使用区域分配器,很快将对其进行评估以包含在Phobos(D标准库)中.
并行编程:请参见标准库的std.parallelism模块.它并不专门针对阵列密集型代码,但它绝对可用于此目的.
D完全支持C ABI.您所要做的就是翻译头文件并链接到C对象文件中.甚至还有一个名为htod的工具可以自动化简单的案例.
D目前比C慢一些,因为它没有多年的工作投入优化,因为重点是功能和错误修复.然而,它并不落后,几乎所有的性能差异都可以通过一个有点天真的垃圾收集器和缺乏激进的内联来解释.如果你避免在代码中性能最关键的部分使用垃圾收集器并在这里和那里手动内联一些函数,它应该像C一样快.