Heim  >  Artikel  >  Backend-Entwicklung  >  都哪些编程语言是跨平台的?

都哪些编程语言是跨平台的?

WBOY
WBOYOriginal
2016-06-17 08:31:573350Durchsuche

都说java是跨平台语言 什么叫跨平台语言呢? 我看php C语言也能在不同平台下开发啊 都有什么语言是跨平台的呢 他们的跨平台特性有区别么

回复内容:

Java的跨平台是“一次编译,到处运行”。Java在编译的时候没有编译成指定CPU类型的汇编代码,也没有和具体操作系统的系统调用相关联,所以编译出来的结果是和CPU,操作系统都不相关的。Java编译出来的是一种字节码,这种字节码必须在Java的虚拟机上才能运行,Java虚拟机会屏蔽不同操作系统,CPU之间的差异。

C编译出来后,就是指定CPU类型的汇编代码,编译过程中肯定也要和具体操作系统的系统库相关连,所以做不到Java那种跨平台。但是,如果写的C代码,没有直接调用任何系统调用,这个代码在不同的平台下都能编译,也能运行。和Java的区别是,C要在不同平台上分别编译。

有些语言如JavaScript,Python等,他们是解释执行的,不存在编译过程,所以也能跨平台,前提是必须要有一个对应的解释器,PHP好像也是解释性的。 语言的跨平台是建立在不跨平台的底层设施之上的
比如C/C++的标准库
Java虚拟机,.NET运行时
这些都是不跨平台的 其实现在讨论跨平台意义不大,所谓跨平台的语言,就是说,你写的代码,可以不经改动直接应用在另一个操作系统系统、甚至cpu上。
但是现在几乎所有的语言都是这样的……C/C++,Java,C#,Python,PHP,JS,Ruby,Go……等等等等。
java说自己跨平台,是因为它和C相比,编译出来的二进制文件可以在其他任何安装了Java运行环境的平台上运行,注意,没安装的话那就歇菜。而C,编译出来的东西一般只能在一类操作系统上运行,换了地儿就不行了,但是运行时不需要额外安装任何运行环境,然而你依然可以为指定的cpu、操作系统单独编译一份。
另外C#,python,php,js等等全都可以一份代码在多种平台上直接运行。不过都需要相应的运行环境。 是时候秀我大JavaScript了!

只要能上网就得用js吧。

手机上跑WebView,当然比较高逼格的是React-native。
游戏Canvas
连单片机都能写了,虽说功能比较弱吧。
PC端,现在有很多用electron的。
浏览器。。。说出来,哪个语言想被虐。

我看“跨平台”的意义应该只是界面方面。
毕竟服务器端几乎就是Linux的天下。写个服务器端软件也犯不着做Windows版本。

请相信!界面UI这一块必定是js或者其衍生语言的天下! java跨平台开发者的代价最小,一次编译到处运行。c语言,python和php的一些功能都要使用一些操作系统的特定函数,开发代价比较大。
实际上现在的很多语言都有了一定程度的跨平台能力,但其实一般也没什么卵用,像java和h5这种没什么代价就能跨平台使用的,多半体验不好。 跨不跨有意义不大,能很方面的把东西做出来是第一位的,然后在用C去重写重性能的模块。 现在严格来说,没有哪个语言不能跨平台。你说C#吧,开源了,说Swift吧,也开源了…… 首先不把可移植叫做跨平台,很多人容易搞混这个概念。
那么跨平台语言最大特点是不编译机器码,不使用系统API。
1. 不编译机器码,因为不同环境CPU不同,虽然PC都是x86,但如果不是PC而是手机,那么CPU的指令集就不是x86,那么你的机器码就全废,不能跨平台。
2. 不使用操作系统API,很简单不同的系统API定义不同,用法不同,软中断向量不同,凡是使用系统API创建线程,创建进程的代码,代码将无法通用。
java运行在虚拟机上,编译的代码是JVM在运行,逻辑直接运行者不是CPU,只要硬件装JVM,那么不需要关心是什么CPU,同理他把系统API封装成了JAVA通用的库,虽然系统不同,但系统内核做的都是做相似的事,封装一下,也是到处使用,所以没问题,还有上面提到的QT,就是靠这样封装统一化实现跨平台或可移植,但问题是QT不是编程语言,所以答非所问。。。
但语言本身跨平台不代表代码跨平台,否则PC和android就不会要写两个版本的java了,因为很多系统资源想要全部用统一封装,这工作量极大,也容易带来一些负面作用,这是要付出代价的,有代价没回报(比如微软做一个支持android系统的VS,而且能在PC上运行,做这个回报在哪里?做了也有可能被程序开发者认为哗众取宠,无意义,做两个APP不算问题,两者出现不兼容BUG才是问题),没有回报就没人做这个造福人类的工作,所以java的一次编译处处运行,看起来很美,实际只是句扯淡话,但这不妨碍说java是跨平台语言,只是工作没做到位。
另一种跨平台叫做宏语言,很多此类语言是不用编译,这类语言通常工作范围受限,比如专门就是搞网页,专门就是搞数据库,以及flash的as脚本等等。。拿HTML来说,他是不编译的,说到底他只是个协议,这个语言的目就是用文本描述网页呈现,有浏览器商来实现这个协议,它可以实现android版本,PC版,苹果版的浏览器,但都识别HTML脚本,那么HTML就是个跨平台语言。。。其他此类语言也是同理,形象的说他们算是是一个的抽象协议,需要执行他们的APP或者服务来运行他们,只要开发商按约定的协议做程序,这个语言就跨平台,但这种宏语言,功能范围被限定。。。 必须是qt啊。 程序语言的作用仅仅是描述算法,如果不是为了优化或者自己去翻译,那么它怎么翻译不关我事
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn