主题:都有哪些语言是跨平台的?
正序浏览
主题图片汇总
主题内检索
禁言中
泡网分: 0.015
主题: 1
帖子: 4
注册: 2018年10月
首先不把可移植叫做跨平台,很多人容易搞混这个概念。
那么跨平台语言最大特点是不编译机器码,不使用系统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或者服务来运行他们,只要开发商按约定的协议做程序,这个语言就跨平台,但这种宏语言,功能范围被限定。。。
相关标签: 通用
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
浏览:319 回帖:3
第 1 页 / 共 1 页
游客没有回帖权限
泡菜
泡网分: 3.27
主题: 13
帖子: 3508
注册: 2012年4月
一般来说解释型语言多是跨平台的,从古老的perl到后来流行的※※※※※※※※※※、ruby到现在火热的python。html严格来说并不是一种编程语言。编译型语言直接运行的是机器码,二进制文件取决于运行目标机器的指令集和操作系统上的可执行文件格式。
对程序员来说,带虚拟机的java语言是真正跨平台的强大语言,比前面说的那些个脚本语言,强大很多,基本可以代替C++这种编译型语言,一次编译,到处执行,因为虚拟机解决了平台差异性的问题。

一般来说编程语言的可移植性主要要靠采用多平台通用的编程接口来实现(比如采用win32 api可移植性不好,但采用posix标准的函数就好很多)。真正跨平台的话需要虚拟机或解释器隐藏各种目标机器的二进制接口(abi)和指令集架构(isa)。

目前看来,完全的符合大家期待的真正跨平台还没实现吧,毕竟世界是多样化的。 本帖最后由 cnzxy 于 2018-10-14 17:30 编辑
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 14.754
主题: 18
帖子: 3936
注册: 2007年11月
文本文件,图像文件之类的可以跨平台,其他的怎么跨平台。。。语言都受平台开发环境那个限制,Java都在各种平台上做一个相同环境。。。
本帖由IOS客户端发布
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
回复主题: 都有哪些语言是跨平台的?
功能受限
游客无回复权限,请登录后再试