编程语言 编译型语言与解释型语言及汇编语言

编程语言

编译型语言和解释型语言

计算机只能直接理解机器语言,所以使用任何高级语言(方便用户理解)编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码(0,1)。

高级语言转换成机器语言的方式有两种:

1、编译:将源代码编译成目标代码后执行, 高级语言---编译---目标代码---执行--输出

2、解释:边读源程序边执行。高级语言----解释器----输出

因此:高级语言分为编译型语言和解释型语言

 

编译型语言

编译型语言是:将c/c++之类的编译型语言编写好的程序转换成机器语言,再经过链接器链接形成二进制的可执行文件。因为只需编译一次,后续需要运行该程序时,直接将可执行的二进制文件从硬盘载入内存中运行

编译—>汇编语言—>机器语言

c++/c编译链接过程 : https://blog.csdn.net/weixin_42018112/article/details/82289971

 

解释型语言

解释型语言:python源码无需编译成二进制代码,直接从源代码运行,运行时,python解释器将源码转换为字节码,再由一个专门的python字节码解释器负责解释执行字节码(转换成机器语言、运行)。

python编译过程和执行原理: https://blog.csdn.net/helloxiaozhe/article/details/78104975

 

总结

由于前者无需每次执行都编译,直接运行;后者每次执行都需转换成字节码,因此前者运行速度快,后者跨平台性好。

前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。

 

关于java

Java和其他的语言不太一样。

java编译执行过程:https://www.cnblogs.com/superyc/p/9987793.html

Java程序从源文件创建到程序运行要经过两大步骤:

1、java会由编译器进行编译生成class文件(字节码文件)---需要先编译

2、字节码由java虚拟机解释运行,解释执行即为目标代码生成并执行。因为java程序既要编译的同时也要经过JVM的解释运行,所以说Java被称为半解释语言!

第一步(编译):创建完源文件之后,程序先要被JVM中的java编译器进行编译为.class文件。

第二步(运行):jvM加载需要运行的类,由java虚拟机执行引擎来解释执行java字节码

 

 

(操作系统由汇编语言+c语言写成)

汇编语言

http://www.ruanyifeng.com/blog/2018/01/assembly-language-primer.html

对于硬件cpu根据指令执行,输入一条指令就执行一条指令,这些指令均为二进制即操作码。比如加法指令就是00000011编译器的作用,就是将高级语言写好的程序,翻译成一条条操作码。

对于我们,二进制是不可读的,只能对照表去看手动输入二进制指令、或者用开关,每个开关对应一个指令。为了解决可读性,便使用了汇编机制:使用文字表达指令,同时就需要将文字指令翻译成二进制即汇编语言。

汇编语言与c语言区别:

汇编语言是二进制指令的文本形式,与指令为一一对应关系,例:加法指令00000011===ADD;

一条c语言可能对应多条汇编语言(多条指令);因此c语言要先编译成汇编语言再将汇编语言转换为对应的二进制.

 

计算机组成部分

控制器、运算器、存储器、输入、输出

cpu = 控制器+运算器

存储器=内存+磁盘

原文地址:https://www.cnblogs.com/byy521/p/15672486.html