4

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

我相信,能够显式声明每个变量类型的 Python 3 将“几乎存在”,但 GIL 让我感到难过。

Java 很好,但我需要一些更“可嵌入”的东西,而不需要笨重的 JRE。

更新:任何与 .NET 相关或非开源的东西都是不行的。

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

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

4

5 回答 5

4

Boo 是一种面向对象的静态类型编程语言,旨在利用公共语言基础架构对 Unicode、国际化和 Web 应用程序的支持,同时使用受 Python 启发的语法,并特别关注语言和编译器可扩展性。一些值得注意的特性包括类型推断、生成器、多方法、可选的鸭子类型、宏、真正的闭包、柯里化和一流的函数。自 2003 年以来,Boo 一直在积极开发。

赛通

Cython 是一种语言,它使为 Python 语言编写 C 扩展就像 Python 本身一样容易。Cython 基于著名的 Pyrex,但支持更尖端的功能和优化。

Cython 语言非常接近 Python 语言,但 Cython 还支持调用 C 函数以及在变量和类属性上声明 C 类型。这允许编译器从 Cython 代码生成非常高效的 C 代码。

于 2010-08-18T12:29:49.587 回答
4

ML 系列中的任何东西都可能适合您。Ocaml 是一个很好的起点,但我上次查看它确实有一个 stop-the-world GC。Haskell 以创新并发模型的实验室而闻名。Python 的理解来自 Haskell,它们为一些非常基本的想法提供了方便的语法。Erlang 是强动态类型的,编写起来很有趣,并且比其他任何人都更好地执行并发性。

于 2010-08-18T12:41:05.127 回答
3

Ada是一种强类型的编译语言,具有现代、易于阅读的语法和经过验证的多核计算可靠性。Ada 设计用于软件必须不惜一切代价运行的大型、关键、实时系统。

“Ada 支持运行时检查,以防止访问未分配的内存、缓冲区溢出错误、一对一错误、数组访问错误和其他可检测的错误。为了运行时效率,可以禁用这些检查,但通常可以它还包括帮助程序验证的工具。由于这些原因,Ada 被广泛用于关键系统中,任何异常都可能导致非常严重的后果,即意外死亡或受伤。使用 Ada 的系统示例包括航空电子设备、武器系统(包括热核武器)和航天器。” (引用上面链接的维基百科文章)。

Ada 作为 GCC / GNAT 的一部分免费提供,应该是 Debian 上一个简单的“apt-get install”。您还可以在http://libre.adacore.com/libre/找到最新的编译器和库(社区支持的 GPL 许可和商业支持的包)

Ada 可以编译为 Java 字节码以在 JVM 中使用,也可以编译为二进制以用于裸机或嵌入式使用。

于 2010-08-19T06:35:36.087 回答
2

我认为GO会满足您的要求。

这是我个人的感觉,但go代码看起来与 python 代码非常相似。

它仍然具有经典的编译方法,但谷歌肯定会开发一些解释器。

从谷歌网站:

Go 是一种在设计时考虑到系统编程的通用语言。它是强类型和垃圾收集的,并且明确支持并发编程。程序由包构成,包的属性允许有效地管理依赖关系。现有的实现使用传统的编译/链接模型来生成可执行的二进制文件。

于 2010-08-18T12:25:20.520 回答
2

阅读您更新的规范后:

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

“计算广泛”究竟是什么意思?什么问题域?在这个问题领域工作的其他人使用什么?如果您对本规范很认真,那么除了将 C++ 与经过良好测试的多线程和数值计算库结合使用之外,您无能为力。

我的 0.02 美元

rbo

于 2010-08-18T13:03:00.723 回答