由于Java是Scala,C++是......?

Mar*_*P S 22 c c++ java scala numerical-methods

虽然C++ 0x对C++(类型推断,匿名函数等)有很大的改进,但我不得不说Scala看起来更好.问题是Scala只在JVM上运行,虽然看起来它也可以运行在C#之上.

理想情况下,我想要一种像Scala一样好的语言,但运行"在C++之上 - 使用标准库,轻松链接C/C++目标文件,整个交易.我做了很多基于完善的C/C++库(快速可靠)的数值编程,这不是我可以放弃的东西.

是否有人知道这种语言?

更新:

我正在寻找的功能是:

  • 与C/C++库无缝集成,就像Scala可以访问Java库而无需生成/维护绑定

  • 一个强大的类型系统,具有良好设计的类型推理系统,使我不必编写冗长和冗余类型的注释

  • 功能和OO功能内置于语言中,支持自己的库,而不仅仅依赖于标准的C/C++库.

看起来现在正在进行的很多clang/LLVM工作可能会促进这些方面的工作,但是很高兴发现这样的东西已经在进行中.

Mad*_*doc 20

我想知道为什么还没有人提到D编程语言.它非常适合您的要求.


Rex*_*err 11

您可能想要考虑Haskell.它具有与任何语言一样多的好处(当然,以其自己的方式),但它坚持功能性编程,因此学习的障碍是巨大的.尽管如此,它仍可用于调用C/C++,并且它本身具有令人惊讶的高性能.

您还应该决定是否需要语言本身才能进行相当高性能的计算.如果没有,那么创建Python绑定到C/C++非常容易,而且Python有很多不错的功能.或者你可以使用类似于数字计算的Matlab,我相信你很清楚,并且可以通过mex文件很好地集成C代码.如果您确实需要将语言编写为当前可以编写高性能代码的语言,您甚至可以考虑承担为Scala创建C++绑定的重要任务(如果您使用JNI或JNA for Java,那就不是那么糟糕了,然后从Scala调用该Java,然后仅将其用于最重要的数字工作,而Scala处理时间要求较低(但仍然有些重要)的部分.

  • 我很害怕Scala/Java集成很少. (2认同)

Ken*_*oom 6

编写与C++兼容的语言很难,因为有很多功能,而ABI通常被认为是特定于C++编译器的特定版本.如果你真的想要与C++ 轻松集成,我敢说你最好的选择是将Scala与GCJ结合使用.您可以使用GCJ CNI与C++对象集成(虽然建议GCJ CNI是在这里进行downvote的理由.)


And*_*mas 5

通过SWIG生成的Java绑定访问您的C++库,Scala本身如何?


Lan*_*dei 5

我很惊讶,没有人提到d。它接近于C ++语法,但是更“干净”,可以毫无问题地使用C和C ++库,并添加了许多高级功能。当然,从Java到Scala的步伐并不大,但是我认为,鉴于C ++的复杂性,要​​想出一个真正创新的设计而不会将C ++的大部分抛弃会更加困难。


Otá*_*cio 1

Python 与 C++ 绑定怎么样?

这里