寻找没有GIL的强/显式类型语言

时间:2010-08-18 12:15:13

标签: java python gil

是否有任何语言具有静态类型检查功能,如C ++中的现代语法,如Python,并且没有GIL?

我相信,Python 3具有明确声明每个变量类型的能力将“几乎就在那里”,但GIL让我感到难过。

Java非常好,但是我需要更多“可嵌入”的东西,而不需要庞大的JRE。

更新:任何与.NET相关或非开源的内容都是禁止的。

Update2:我需要显式+强类型来编写更安全的代码,但代价是开发速度。 GIL非常重要,因为代码计算量很大并且可以在多核服务器上运行,所以它必须有效地使用多个CPU。

Update3:目标平台是x86上的Linux(Debian)

5 个答案:

答案 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