计算机语⾔分类
1计算机语⾔三⼤类(按层次分)
与硬件的相关度逐步下降
计算机语⾔有很多种类,根据功能和实现⽅式的不同⼤致可分为3⼤类,即机器语⾔汇编语⾔和⾼级语⾔。
1、机器语⾔,计算机不需要翻译就能直接识别的语⾔被称为机器语⾔(⼜被称为⼆进制代码语⾔),该语⾔是由⼆进制数0或1组成的⼀串指
令。
2、汇编语⾔:汇编语⾔⽤英⽂字母或符号串来替代机器语⾔,把不易理解和记忆的机器语⾔按照对应关系转换成汇编指令,汇编语⾔⽐机
器语⾔更加便于阅读和理解。
3、⾼级语⾔:⾼级语⾔不是⼀门语⾔,⽽是⼀类语⾔的统称,它⽐汇编语⾔更贴近于⼈类使⽤的语⾔,易于理解、记忆和使⽤。由于⾼级
语⾔和计算机的架构、指令集⽆关,因此它具有良好的可移植性。⾼级语⾔应⽤⾮常⼴泛,进⾏程序开发的⾼级语⾔包括C、C+、Java、
VB、C#、Python、Ruby等。
2常见的⼏种分类⽅法分类
1.⾼级语⾔和低级语⾔
常见的低级语⾔有:机器码、汇编语⾔
⾼级语⾔常见如:c,c++,java,python,PHP,c#,Ruby,go,kotlin,swift。
机器码:计算机能够直接识别的⼆级制编码,⽆论语⾔多⾼级都要转成⼆级制⽂件来让计算机识别运⾏。
汇编:⽤助记符(Mnemonics)代替机器指令的操作码,⽤地址符号(Symbol)或标号(Label)代替指令或操作数的地址,在不同的设
备中有着不同的指令集
⾼级语⾔:为省去编程时候的不必要的操作细节,节省代码量,可读性强,维护性强,更贴近⼈性化
⾼级语⾔与低级语⾔的区别:⾼级语⾔⼤部分不能直接更硬件打交道,这使得相对来的程序运⾏速度降低,总之⼀句话来说那种语⾔更接近
⼈性化的语⾔就更⾼级。
⾼级语⾔编译的六个过程
编译就是要把⾼级语⾔的源程序翻译成⽬标程序的过程。
整个过程⼀般可划分为词法分析、语法分析、语义分析、中间代码⽣成、代码优化和⽬标代码⽣成6个阶段。
1词法分析:词法分析是第⼀阶段,这个阶段的任务是从左到右⼀个字符⼀个字符的读⼊源程序,对构成源程序的字符流进⾏扫描和分解,
从⽽识别出⼀个个单词。
2语法分析:语法分析的任务是在词法分析的基础上将单词程序分解成各位语法短语。
3语义分析:语义分析是审查源程序有⽆语义错误,为代码⽣成阶段收集类型信息。
4中间代码⽣成:在进⾏了上述的语法分析阶段等⼯作之后,有的编译程序将源程序变成⼀种内部表⽰形式,这种内部表⽰形式叫做中间语
⾔或中间代码。
中间代码⽣成阶段要在语法和语义分析的基础上,将源程序进⼀步变为⼀种内部表⽰形式,它通常易于⽣成、易于翻译成⽬标代码,不过不
是所有的语⾔都必须经过这⼀步。
5代码优化:这⼀阶段的任务是对前⼀阶段产⽣的中间代码进⾏变换或进⾏改造,⽬的是使⽣成的⽬标代码更为⾼效。
代码优化阶段,对前阶段⽣成的中间代码进⾏变换或改造,以便⽣成⽬标代码时更加节省时间和空间,这⼀⼯作也不是必须的。
6⽬标代码⽣成:这⼀阶段的任务是吧中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。
2.动态类型和静态类型
动态性语⾔是指在程序运⾏期间才给变量指定数据的类型,常见于python和Ruby,⽽静态类型语⾔则恰好相反,在写程序代码的时候就要
指定变量的类型,这种语⾔有:c,c++,java
3.强制类型与弱类型
我们可知C语⾔中,⼀个变量只能定义为⼀种类型,如float类型,那么它就只能是float类型⽽不能在不发⽣转化的情况下赋予int类型,这
就是强制类型的具体体现。
⽽python不是,python中的变量可以任意的复制,⽽没有类型的界限。这就是弱类型
强制类型更严谨,更不容易出现错误,但弱类型的语⾔写起来更优雅,更舒畅
4.编译型,解释型,半编译半解释
对于源程序,编译型语⾔在执⾏程序中会将源⽂件⼀次性的转化为机器码,⽽解释型语⾔是边编译边解释;
编译型语⾔是离不开解释程序的,这也导致了解释性语⾔对于运⾏时候的速度⽐价慢,解释型语⾔只要有解释器,移植起来⽐较⽅便,⽽编
译型语⾔则要对于不同的系统进⾏编译,是的⼯作繁琐,且在调试程序的时候⽐较慢
编译型语⾔可见于c,c++等
解释型语⾔可见于python,JavaScript,Perl,shell等
⽽java是半编译半解释型的语⾔,java会将源⽂件在jVM中转化为字节码,即.class⽂件,在程序运⾏的时候转化为⼆进制⽂件。和C#中
的有点区别,C#编译的成的⽬标代码,接近与⼆进制⽂件,可移植性没有java好,java是“⼀次编译,到处执⾏”,c#是“⼀次编
码,到处编译”。
5.⾯向对象型和⾯向过程型
⾯向过程是决定该怎么铺成⼀条路到达终点,⽽⾯向对象是要⽤那些具有特定功能的像来做,两者是不同的思想。
c++是部部分⾯对对象的,java具有封装性是完全⾯对对象的,c语⾔是⾯对过程的语⾔。
此处还有:函数型
1.区分编译型和解释型
1、编译程序是整体编译完了,形成⽬标代码,再⼀次性执⾏。
⽽解释程序是⼀边解释,⼀边执⾏。解释⼀句后就提交计算机执⾏⼀句,并不形成⽬标程序。就像外语翻译中的“⼝译”⼀样,不产⽣翻
译⽂本。
2、编译是除了第⼀次编译,之后都是⽬标代码+机器执⾏=结果
⽽解释程序始终是代码+解释程序+机器执⾏=结果
详细地说,编译器是把源程序的每⼀条语句都编译成机器语⾔,并保存成⼆进制⽂件,这样运⾏时计算机可以直接以机器语⾔来运⾏此程序,速
度很快。
⽽解释器则是只在执⾏程序时,才⼀条⼀条的解释成机器语⾔给计算机来执⾏,所以运⾏速度是不如编译后的程序运⾏的快的。这是因为计算
机不能直接认识并执⾏我们写的语句,它只能认识机器语⾔(是⼆进制的形式)
7.按层次分的原因(或者说为什么相关度)
1.中间代码
中间代码⽣成是产⽣中间代码的过程。所谓“中间代码”是⼀种结构简单、含义明确的记号系统,这种记号系统复杂性介于语⾔和之间,容
易将它翻译成。另外,还可以在中间代码⼀级进⾏与机器⽆关的优化。
汇编代码是⽬标代码,中间代码理论上是机器⽆关的。
编译原理中知识:三元式、四元式、逆波兰式等等表⽰中间代码。
2.⽬标代码
⽬标代码(objectcode)指计算机科学中编译器或汇编器处理源代码后所⽣成的代码,它⼀般由机器代码或接近于机器语⾔的代码组成。
⽬标⽂件(objectfile)即存放⽬标代码的计算机⽂件,它常被称作⼆进制⽂件(binaries)。⽬标⽂件包含着机器代码(可直接被计算机
中央处理器执⾏)以及代码在运⾏时使⽤的数据,如重定位信息,如⽤于链接或调试的程序符号(变量和函数的名字),此外还包括其他调
试信息。⽬标⽂件是从源代码⽂件产⽣程序⽂件这⼀过程的中间产物,链接器正是通过把⽬标⽂件链接在⼀起来⽣成可执⾏⽂件或库⽂件。
⽬标⽂件中唯⼀的要素是机器代码,例如,⽤于嵌⼊式系统的⽬标⽂件可能仅仅含有机器代码。
⽬标代码通常采⽤三种形式:机器语⾔,汇编语⾔,待装配机器语⾔模块。
⽣成⽬标代码时应着重考虑的问题:
(1)如何使⽣成的⽬标代码较短;
(2)如何充分利⽤寄存器,以减少访问内存次数;
(3)如何充分利⽤指仅系统的的特点。
汇编语⾔中经常直接⽤寄存器AX、指令寄存器IR等等,不同的寄存器参数什么的都不同,所以汇编语⾔偏硬件语⾔。
本文发布于:2022-11-24 23:03:37,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/14810.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |