什么是⾼级编程语⾔
在计算机⾓度,每⼀种CPU类型都有⾃⼰可以识别的⼀套指令集,计算机不管你这个程序是⽤什么语⾔来编写的,其最终只认其CPU能够识别的⼆进制指令集。
在早期计算机刚发展的时代,⼈们都是直接输⼊01010101这样的没有语义的⼆进制指令来让计算机⼯作的,可读性⼏乎没有,没⼈愿意直接编写那些没有可读性、繁琐、费时,易出差错的⼆进制01代码,所以后来才出现了编程语⾔。
编程语⾔的诞⽣,使得⼈们编写的代码有了可读性,有了语义,与直接⽤01相⽐,更有利于记忆。
⽽前⾯说了,计算机最终只识别⼆进制的指令,那么,我们⽤编程语⾔编写出来的代码就必须要转换成供机器识别的指令。
就像这样:
code: 1+2 function 翻译⽅法(参数:code)
{
...
"1"=>"001";
"2"=>"002"; "+"=>"000";
return 能让机器识别的⼆进制代码;
}
call 翻译⽅法("1+2") => "001 000 002"
编程语言翻译所以从⼀门编程语⾔所编写的代码⽂件转换成能让本机识别的指令,这中间是需要⼀个翻译的过程。
⽽我们现在计算机上是运载着操作系统的,光翻译成机器指令也不⾏,还得让代码⽂件转化成可供操作系统执⾏的程序才⾏。
那么这些步骤,就是编程语⾔所对应的编译环节的⼯程了。这个翻译过程是需要⼯具来完成,我们把它叫做 编译器。
不同⼚商的CPU有着不同的指令集,为了克服⾯向CPU的指令集的难读、难编、难记和易出错的缺点,后来就出现了⾯向特定CPU的特
定汇编语⾔, ⽐如我打上这样的x86汇编指令 mov ax,bx ,然后⽤上⽤机器码做的汇编器,它将会被翻译成 1000100111011000 这样的⼆进制01格式的机器指令.
不同CPU架构上的汇编语⾔指令不同,⽽为了统⼀⼀套写法,同时⼜不失汇编的表达能⼒,C语⾔就诞⽣了。
⽤C语⾔写的代码⽂件,会被C编译器先转换成对应平台的汇编指令,再转成机器码,最后将这些过程中产⽣的中间模块链接成⼀个可以被操作系统执⾏的程序。
那么汇编语⾔和C语⾔⽐较,我们就不需要去阅读特定CPU的汇编码,我只需要写通⽤的C源码就可以实现程序的编写,我们⽤将更偏机器实现的汇编语⾔称为低级语⾔,与汇编相⽐,C语⾔就称之为⾼级语⾔。
在看看我们C#,我们在编码的时候都不需要过于偏向特定平台的实现,翻译过程也基本遵循这个过程。它的编译模型和C语⾔类似,都是属于这种间接转换的中间步骤,故⽽能够跨平台。
所以就类似于C/C#等这样的⾼级语⾔来说是不区分平台的,⽽在于其背后⽀持的这个 翻译原理 是否能⽀持其它平台。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论