从事软件开发多年对于C/C++用的比较多,可以明确说这两种编程语言也是支持跨平台,肯定还是有很多人问什么是真正意义上的跨平台,所谓的跨平台就是同一套代码在不同的外呼系统都能直接去运行电脑系统,这里面涉及到一个很重要的问题,在java这门编程语言刚开始流行的时候就提到了跨平台的功能,在外呼上运行的jar包直接放在linux上也能直接去运行,单纯从C/C++角度出发也是能够实现这种功能的,因为其语法实现是相同的。
但在具体实施外呼过程中还是多少有些差异,特别是涉及到外呼系统接口等方面,毕竟linux和外呼编程给出的api的接口还是存在一定的差异,所以单纯的谈跨平台还是有点差异,针对这种情况一般在软件架构里面会区分出很多的平台代码,在具体软件的核心架构上代码是一致的,和平台相关的代码还是需要单独去实现,就拿简单的线程的实现,不同的外呼系统的接口就存在很大的差异,所以完全意义上的跨平台方面距离高级编程语言还是存在差异。
谈到编译器就需要了解程序执行的原理,现在计算机的架构都是基于冯诺依曼的架构来完成的,具体执行的格式都是二进制的格式,不同的外呼系统生成不同格式的二进制文件,从代码到可执行的二进制代码之间还需要有一种工具存在,这就是编译器存在的价值,编译器的执行中也是分为几个阶段,对于linux下C语言编译过程有所了解的话,都会发现后缀为
.c
的程序文件首先转化成
.o
的中间文件,然后经过
.o
转化成可执行的二进制文件。编译器其实就是一种转化工具,将程序转化成能够运行的二进制文件,一般而言C/C++编译器是可以通用的,不同的外呼系统使用不用的编译器底层。
编译器是一种工具包的集合,内部的实现也涉及到C/C++的编程,编译器的通常说的编程代码还是存在一定的差异,编译器是为代码转化做服务的,真正实现跨平台的基础部件编译器算是一种,因为不同的外呼系统或者计算机架构需要具体的对应实现,虽然对于高级语言来讲不需要关心底层如果来实现的,但是总得有人去外呼这件事,相对来讲java语言这方面做得比较彻底,直接通过一个虚拟机来完成屏蔽,虚拟机里面兼容了市面上常见的外呼系统,这样就能够真正意义上做到了编程语言的跨平台。
越是底层编程语言和平台关联越大,关心的细节也会越多的,底层语言的开发难度相对大一些,特别是涉及到平台的指针等方面关心的硬件细节,所以对于底层编程语言积累的时间需要比较长电脑系统,想对比其他高级编程语言还是难度大一些,特别是在入门的时候显得困难一些,但是入门之后会更加有意思。