平台无关语言

6

我在寻找像Java一样的其他平台无关的编程语言。
还有其他的平台无关语言吗?

谢谢


每种脚本语言都应该是平台无关的。 - Felix Kling
2
@Martijn 恭喜你如此年轻便开始了编程之路。祝你一切顺利。 - Christy John
@Christy:谢谢!我已经在编程方面工作了三年。 - Martijn Courteaux
2
我认为你的意思不是“平台无关语言”,而是针对平台无关运行时环境的语言。例如,C被认为是平台无关的,但是Windows上的C程序只有在极少数情况下才能在Unix上运行。 - deamon
@deamon,LLVM的人会不同意你的看法:“C和C++是本质上依赖于平台的语言。” - vossad01
11个回答

17

平台无关不是一个完全明确定义的术语。对于不同的人来说,它可能意味着不同的东西。例如,有些人说C是平台无关的,而其他人则说它不是。有时,人们会费尽心思地让C代码与configure(1)配合使用,以便它可以在许多不同的平台上编译。这是否意味着可以编写平台无关的C代码,但并非所有的C代码都是平台无关的?

也许Java(+其他运行在JVM上的软件)被认为是PI,因为它们定义了一个平台,而不同的机器则实现了该平台。但它们并不总是做得很好--例如,某些JVM(特别是早期的JVM)存在其他平台上没有的错误。当然,您也可以编写链接到本机代码的非纯Java代码 - 它肯定不是平台无关的。

一些答案认为脚本语言是平台无关的。告诉那些想要在IE6、IE7、FF、Chrome、Safari等浏览器上运行javascript的人吧!

因此,你需要更详细地阐述“平台无关”的含义或者问这个问题的原因。


1
正确。平台无关性与语言本身无关,而是与其实现有关。拿任何“非平台无关”的语言并在世界上的每个平台上实现它。那它就是平台无关的了。 - Pacerier
非纯粹的Java?那是什么? - Ungeheuer

4

这取决于你对平台无关的理解:

  • 在任何平台上都可以使用相同的源代码进行编译:几乎所有编程语言
  • 将其复制到不同的平台上并立即运行:任何脚本语言以及具有框架(JRE和.NET/mono)的Java和.NET。

3
-1因为:a)几乎任何语言都可以使用相同的源代码在任何平台上编译,这是在开玩笑吗?b)Mono并不是.NET的完整实现(因为.NET包含Windows特定功能,如System.Windows.Forms),因此将其描述为跨平台的.NET解决方案是具有误导性的。如果你说的是C#(语言),而不是.NET(平台),那么就没问题了。 - mikera

3

Perl,php,scheme,lisp,LOLCODE。这些都是大多数解释型编程语言。


2

Ruby、Lisp、Scheme、Scala、Clojure、Python、Perl、PHP、C#(通过Mono)...

说实话,这个列表可以不断增加。更容易的方法是缩小您对平台无关性的定义,或者询问哪些语言是平台相关的。


2

列举平台相关语言可能更容易。


不完全是这样,因为支持不好的编程语言更加普遍... XD - yyny

2

1

Java是平台无关的,因为它运行在Java虚拟机(jvm)上。还有其他一些语言也运行在jvm上,它们当然也是平台无关的。Scala就是一个例子。


1
几乎每种编程语言都在某种程度上是平台无关的,这要归功于供应商或社区。
C/C++(Boost、QT等)、C#/Java、Vala、Python/Ruby/Perl、PHP等等,所有这些语言都是平台无关的,唯一的区别在于有些需要重新编译到相应的平台上,有些运行在框架之上,而其他一些则是解释性语言。

1
如果你想要将编译器转换为平台无关的代码(比如Java语言的Java虚拟机),你可以寻找CIL/MSIL(适用于C#和其他基于.Net的语言)以及LLVM(低级虚拟机,我猜应该可以找到适用于C和Haskell的编译器)。

1

我的建议是Scala。你可以在JVM上使用所有的Java API,并且拥有一种更简洁、更强大和更清晰的语言。


+1 for Scala。同时Clojure和Groovy也是很棒的可移植JVM语言。 - mikera

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接