如何理解编程语言的可移植性

编程语言的可移植性意味着,用一种编程语言在一个系统上编写的程序经过很少改动或者不经修改就可以在其他系统平台上运行。

    要想了解可移植性必须要知道:1.什么是程序?2.什么是系统平台?

什么是程序

   首先,我们得知道程序的本质是什么?程序的本质就是一连串能被CPU识别并执行的有0、1代码组成的指令即目标代码(0、1组成的代码)。不同类型的CPU指令集是不同的,相同的一段0、1代码intelCPU能识别,ARM CPU就不能识别产生错误。

   其次,我们得知道程序的运行原理是什么?大家都知道程序是运行在操作系统之上的,而大家不知道的是:程序要想在操作系统上运行就需要在程序的头部嵌入一段启动代码,此代码相当于程序和操作系统之间的接口,它包含操作系统所需要的加载和重定位信息。如果没有这段启动代码程序很难在windows,linux等操作系统上作为一个普通应用程序运行。到这里我们可以清楚的知道:程序=目标代码+启动代码,两者缺一不可,只有这样程序才能在系统上运行起来。

    不同的操作系统,它们的启动代码接口是不同的,例如在Intel CPU上运行的xp和linux的启动代码接口是不同的,所以同一种程序它们的启动代码是不同的。但是因为都是INtel CPU,所以程序的目标代码(0、1代码)是相同的。

  什么是程序呢,程序=目标代码+启动代码

什么是系统平台

    这里的系统平台是指cpu+操作系统的组合:如intel CPU+windows xp、intel CPU+Mac Os X、intelCPU+linux这是三个不同的系统平台,ARM cpu+linux与intel Cpu+linux也是不同的系统平台。

    为什么系统平台是CPU+操作系统的组合呢,我们从上面了解到程序=目标代码+启动代码。目标代码随着CPU类型的不同而不同,启动代码随着操作系统的不同而不同,因此系统平台是CPU+操作系统。

可移植性的本质

    那么目标代码和启动代码是怎么生成的呢?答案是编译器。编程语言编写的程序首先要被编译器编译成目标代码(0、1代码),然后在目标代码的前面插入启动代码,最终生成了一个完整的程序。所以编程语言的可移植性依赖于它们的编译器是否强大,是否在多个平台上都有这种编程语言的编译器。例如C编译器在大约40种系统上可用,包括从8位微处理器的计算机到Cray超级计算机。

   要注意的是,程序中为访问特定设备(如显示器)或者操作系统(如windows xp  的API)的特殊功能而专门编写的部分通常是不能移植的。

    综上所述,一个编程语言的可移植性强不强取决于1.不同平台编译器的数量  2.对特殊硬件或操作系统的依赖性

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值