关于底层语言的详细剖析

首先,编程语言的分类:编程语言俗称“计算机语言”,种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。


  • 机器语言(machine language)是一种 指令集的体系。这种指令集,称 机器码(machine code),是电脑的CPU可直接解读的数据。
    机器码有时也被称为原生码(Native Code),这个名词比较强调某种编程语言或库,它与运行平台相关的部份。
  • 机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指
    指令系统 指令系统
    令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。不同型号的计算机其机器语言是不相通的,按着一种计算机的机器指令编制的程序,不能在另一种计算机上执行。

所以每个不同型号的计算机的机器语言是不同的,但按照固定的格式和累计的数据库就可以快速地对不同的机器进行编写,而在如今这项工作已经很可以简化为别的机器来处理,不耗费人力,很方便。

  • 指令部份的示例
    1. 0000 代表 加载(LOAD)
    2. 0001 代表 存储(STORE)

所以,总的来说,这部分如果不是专业的底层机器语言编写语言,就没有太大必要了解。


2.汇编语言

  • 在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
  • 一般来说,汇编语言就是机器语言的简化版,同级,一般的高级语言要么被编译成机器语言要么被编译成机器语言。


3.高级语言:对于大部分程序员来说接触最多的可能就是高级语言了。

                     而高级语言因为远离了底层语言,所以可DIY的方式就很多了,可以多种不同的形式来展现最后全部都转换成汇编(或机器)语言就行了。

  1. C语言是一种面向过程的高级编程语言,优点是良好的跨平台性。
  2. java、C艹、C#是典型的面向对象的高级编程语言。

4.脚本语言(python)

  • 脚本语言其实来说是另外一种高级语言,它和普通高级语言相比主要在于编译方式的不同。

区别

脚本语言和普通高级语言最主要的差别就是从源代码转变到汇编语言的过程会有差别:

脚本语言从源代码--------->汇编的过程可分为以下几步:

                              源代码----词法,语义,语言分析------->中间代码-------经过解释器解释------->目标代码(但是不生成.obj可执行文件)并且直接运行

脚本编程速度更快,且脚本文件明显小于如同类C程序文件。这种灵活性是以执行效率为代价的。脚本通常是解释执行的,速度可能很慢,且运行时更耗内存。在很多案例中,如编写一些数十行的小脚本,它所带来的编写优势就远远超过了运行时的劣势,尤其是在当前程序员工资趋高和硬件成本趋低时。


普通高级语言从源代码--------->汇编的过程可分为以下几步:

                           源代码----词法,语义,语言分析------->中间代码-------经过编译器编译------->再优化-------->目标代码(变成可执行文件)


高级语言是大多数 编程者的选择。和汇编语言相比,它不但将许多相关的 机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用 堆栈寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节, 编程者也就不需要有太多的专业知识。
高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,像最简单的编程语言 PASCAL语言也属于高级语言。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:


解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。如较早时期的Qbasic语言。


编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .obj,也就是OBJ文件)才能执行,只有目标文件而没有源代码,修改很不方便。









猜你喜欢

转载自blog.csdn.net/qq_31783173/article/details/52980870
今日推荐