是否有任何语言具有静态类型检查功能,如C ++中的现代语法,如Python,并且没有GIL?
我相信,Python 3具有明确声明每个变量类型的能力将“几乎就在那里”,但GIL让我感到难过。
Java非常好,但是我需要更多“可嵌入”的东西,而不需要庞大的JRE。
更新:任何与.NET相关或非开源的内容都是禁止的。
Update2:我需要显式+强类型来编写更安全的代码,但代价是开发速度。 GIL非常重要,因为代码计算量很大并且可以在多核服务器上运行,所以它必须有效地使用多个CPU。
Update3:目标平台是x86上的Linux(Debian)
答案 0 :(得分:4)
<强> Boo 强>
Boo是面向对象的,静态的 寻求的打字编程语言 使用共同语言 Infrastructure对Unicode的支持, 国际化和网络 应用程序,同时使用 Python启发的语法和 特别关注语言和编译器 可扩展性。注意的一些功能 包括类型推断,发电机, 多方法,可选鸭子打字, 宏,真正的封闭,currying和 一流的功能。 Boo一直都是 自2003年以来积极发展。
<强> cython 强>
Cython是一种语言 为Python编写C扩展 语言就像Python本身一样简单。 Cython基于众所周知的 Pyrex,但支持更多的前沿 功能和优化。
Cython语言非常接近 Python语言,但Cython 另外支持调用C. 函数和声明C类型 变量和类属性。这个 允许编译器生成非常 来自Cython代码的高效C代码。
答案 1 :(得分:4)
ML系列中的任何内容都可能适合您。 Ocaml是一个很好的起点,但是我看起来确实有一个停止世界的GC。 Haskell作为创新并发模型的实验室而闻名。 Python的理解来自Haskell,它们是一些非常基本的想法的方便语法。 Erlang的动态类型很强,写入很有趣,并且比其他任何人都更好地进行并发。
答案 2 :(得分:3)
Ada是一种强类型的编译语言,具有现代,易于阅读的语法和经过验证的多核计算可靠性。 Ada设计用于大型,关键,实时系统,软件必须不惜一切代价。
“Ada支持运行时检查,以防止访问未分配的内存,缓冲区溢出错误,逐个错误,阵列访问错误和其他可检测的错误。为了提高运行时效率,可以禁用这些检查,但通常可以有效地编译。它还包括帮助程序验证的设施。由于这些原因,Ada广泛用于关键系统,任何异常都可能导致非常严重的后果,即意外死亡或受伤.Ada系统的例子用于航空电子设备,武器系统(包括热核武器)和航天器。“ (引自上面链接的维基百科文章)。
Ada作为GCC / GNAT的一部分免费提供,应该是Debian上的一个简单的“apt-get install”。您还可以在http://libre.adacore.com/libre/
找到最新的编译器和库(社区支持的GPL许可和商业支持的软件包)Ada可以编译为Java字节码以便在JVM中使用,或者编译为二进制文件以供裸机或嵌入式使用。
答案 3 :(得分:2)
我认为GO符合您的要求。
这是我个人的感觉,但 go 代码看起来与python代码非常相似。
它仍然有经典的编译方法,但谷歌肯定会开发一些解释器。
来自google网站:
Go是一种通用语言 设计与系统编程 心神。它是强类型的 垃圾收集并有明确的 支持并发编程。 程序是由...构建的 包,其属性允许 有效管理依赖关系。 现有的实现使用a 传统的编译/链接模型 生成可执行的二进制文件。
答案 4 :(得分:2)
阅读更新的规范后:
我需要显式+强类型来编写更安全的代码,以牺牲开发速度为代价。 GIL很重要,因为代码将具有相当大的计算能力并且将在多核服务器上运行,因此它必须有效地使用多个CPU
“计算广泛”究竟是什么意思?什么问题域?在此问题域中工作的其他人使用什么?如果您对此规范认真,那么除了使用C ++与经过良好测试的库进行多线程和数值计算之外,您无法做很多其他事情。
我的0.02美元
RBO