计算机语言分类

1计算机语言三大类(按层次分)

与硬件的相关度逐步下降

计算机语言有很多种类,根据功能和实现方式的不同大致可分为3大类,即机器语言汇编语言和高级语言。

1、机器语言,计算机不需要翻译就能直接识别的语言被称为机器语言(又被称为二进制代码语言),该语言是由二进制数0或1组成的一串指令。(对人:需理解电路板的开关逻辑对应功能)

2、汇编语言:汇编语言用英文字母或符号串来替代机器语言,把不易理解和记忆的机器语言按照对应关系转换成汇编指令,汇编语言比机器语言更加便于阅读和理解。(对人:需要了解指令集命令作用)

3、高级语言:高级语言不是一门语言,而是一类语言的统称,它比汇编语言更贴近于人类使用的语言,易于理解、记忆和使用。由于高级语言和计算机的架构、指令集无关,因此它具有良好的可移植性。高级语言应用非常广泛,进行程序开发的高级语言包括C、C+、Java、VB、C#、Python、Ruby等。(对人:需要有对应编程语言基础才能理解业务处理逻辑)

以下是个人理解(与时俱进)

4、伪代码语言:按自己思路,用中文或者其他语言描述逻辑,结构类似高级语言的结构但是(对机器)不能执行的,是我们人可以比较容易理解的业务处理逻辑。(对人:只需要有业务逻辑或者一定的数学基础可以理解)

5、AI对话:说对逻辑和需求,可以按照需求生成需要的高级语言程序。就是先先一段伪代码语言,需要解耦你的需求会更加精准,然后交给AI执行。AI可以编写,优化,修复代码,甚至可以优化自己。

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#中的.net有点区别,C#编译的成的.net目标代码,接近与二进制文件,可移植性没有java好,java是“一次编译,到处执行”,c#是“一次编码,到处编译”。

5. 面向对象型和面向过程型

面向过程是决定该怎么铺成一条路到达终点,而面向对象是要用那些具有特定功能的像来做,两者是不同的思想。

c++是部部分面对对象的,java具有封装性是完全面对对象的,c语言是面对过程的语言。

此处还有:函数型

编程语言范式,动态静态,强弱类型的概念 - 风清扬,心飘扬 - 博客园编程语言范式,动态静态,强弱类型的概念 ​在学习一门语言的时候,经常会碰到几个概念,比如Java是面向对象的语言,C是面向过程的语言,Lisp是函数式编程语言,Scala是静态语言,这些都是什么意思icon-default.png?t=N7T8https://www.cnblogs.com/binbinbin/articles/14012424.html

  1. 区分编译型和解释型

1、编译程序是整体编译完了,形成目标代码,再一次性执行。

而解释程序是一边解释,一边执行。 解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,不产生翻译文本。

2、编译是除了第一次编译,之后都是目标代码+机器执行=结果

而解释程序始终是代码+解释程序+机器执行=结果

详细地说,编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快。

而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)

7.按层次分的原因(或者说为什么相关度)

1.中间代码

中间代码生成是产生中间代码的过程。所谓“中间代码”是一种结构简单、含义明确的记号系统,这种记号系统复杂性介于源程序语言和机器语言之间,容易将它翻译成目标代码。另外,还可以在中间代码一级进行与机器无关的优化。

汇编代码是目标代码,中间代码理论上是机器无关的。

编译原理中知识:三元式、四元式、逆波兰式等等表示中间代码

2.目标代码

目标代码(object code)指计算机科学中编译器或汇编器处理源代码后所生成的代码,它一般由机器代码或接近于机器语言的代码组成。目标文件(object file)即存放目标代码的计算机文件,它常被称作二进制文件(binaries)。目标文件包含着机器代码(可直接被计算机中央处理器执行)以及代码在运行时使用的数据,如重定位信息,如用于链接或调试的程序符号(变量和函数的名字),此外还包括其他调试信息。目标文件是从源代码文件产生程序文件这一过程的中间产物,链接器正是通过把目标文件链接在一起来生成可执行文件或库文件。目标文件中唯一的要素是机器代码,例如,用于嵌入式系统的目标文件可能仅仅含有机器代码。
目标代码通常采用三种形式:机器语言,汇编语言,待装配机器语言模块
  生成目标代码时应着重考虑的问题:

(1)如何使生成的目标代码较短;

(2)如何充分利用寄存器,以减少访问内存次数;

(3)如何充分利用指仅系统的的特点。

汇编语言中经常直接用寄存器AX、指令寄存器IR等等,不同的寄存器参数什么的都不同,所以汇编语言偏硬件语言。

  • 17
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的点赞我的光

我的第一次被打赏在哪?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值