都有哪些语言是跨平台的?

首先不把可移植叫做跨平台,很多人容易搞混这个概念。
那么跨平台语言最大特点是不编译机器码,不使用系统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或者服务来运行他们,只要开发商按约定的协议做程序,这个语言就跨平台,但这种宏语言,功能范围被限定。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值