编程语言 - 编译型语言与解释型语言及汇编语言
<h3 class="md-end-block md-heading"><span class="md-plain md-expand">编程语言</span></h3><h4 class="md-end-block md-heading"><span class="md-plain">编译型语言和解释型语言</span></h4>
<p class="md-end-block md-p"><span class="md-plain">计算机只能直接理解机器语言,所以使用任何高级语言(方便用户理解)编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码(0,1)。</span></p>
<p class="md-end-block md-p"><span class="md-plain">高级语言转换成机器语言的方式有两种:</span></p>
<p class="md-end-block md-p"><span class="md-plain">1、编译:将源代码编译成目标代码后执行, 高级语言---编译---目标代码---执行--输出</span></p>
<p class="md-end-block md-p"><span class="md-plain">2、解释:边读源程序边执行。高级语言----解释器----输出</span></p>
<p class="md-end-block md-p"><span class="md-plain">因此:高级语言分为编译型语言和解释型语言</span></p>
<p class="md-end-block md-p"> </p>
<h4 class="md-end-block md-heading"><span class="md-plain">编译型语言</span></h4>
<p class="md-end-block md-p"><span class="md-plain">编译型语言是:将c/c++之类的编译型语言编写好的程序转换成机器语言,再经过链接器链接形成二进制的可执行文件。因为只需编译一次,后续需要运行该程序时,直接将可执行的二进制文件从硬盘载入内存中运行</span></p>
<p class="md-end-block md-p"><span class="md-plain">编译—>汇编语言—>机器语言 </span></p>
<p class="md-end-block md-p"><span class="md-plain">c++/c编译链接过程 : <span class="md-link md-pair-s" style="color: rgba(0, 0, 255, 1)"><span style="color: rgba(0, 0, 255, 1)">https://blog.csdn.net/weixin_42018112/article/details/82289971</span></span></span></p>
<p class="md-end-block md-p"> </p>
<h4 class="md-end-block md-heading md-focus"><span class="md-plain md-expand">解释型语言</span></h4>
<p class="md-end-block md-p"><span class="md-plain">解释型语言:python源码无需编译成二进制代码,直接从源代码运行,运行时,python解释器将源码转换为字节码,再由一个专门的python字节码解释器负责解释执行字节码(转换成机器语言、运行)。</span></p>
<p class="md-end-block md-p"><span class="md-plain">python编译过程和执行原理:<span style="color: rgba(0, 0, 255, 1)"> <span class="md-link md-pair-s"><span style="color: rgba(0, 0, 255, 1)">https://blog.csdn.net/helloxiaozhe/article/details/78104975</span></span></span></span></p>
<p class="md-end-block md-p"> </p>
<h4 class="md-end-block md-heading"><span class="md-plain">总结</span></h4>
<p class="md-end-block md-p"><span class="md-plain">由于前者无需每次执行都编译,直接运行;后者每次执行都需转换成字节码,因此前者运行速度快,后者跨平台性好。</span></p>
<p class="md-end-block md-p"><span class="md-plain">前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。</span></p>
<p class="md-end-block md-p"> </p>
<h4 class="md-end-block md-heading"><span class="md-plain">关于java</span></h4>
<p class="md-end-block md-p"><span class="md-plain">Java和其他的语言不太一样。</span></p>
<p class="md-end-block md-p"><span class="md-plain"><span class="md-link md-pair-s">java编译执行过程:<span style="color: rgba(0, 0, 255, 1)"><span style="color: rgba(0, 0, 255, 1)">https://www.cnblogs.com/superyc/p/9987793.html</span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">Java程序从源文件创建到程序运行要经过两大步骤:</span></p>
<p class="md-end-block md-p"><span class="md-plain">1、java会由编译器进行编译生成class文件(字节码文件)---需要先编译</span></p>
<p class="md-end-block md-p"><span class="md-plain">2、字节码由java虚拟机解释运行,解释执行即为目标代码生成并执行。因为java程序既要编译的同时也要经过JVM的解释运行,所以说Java被称为半解释语言!</span></p>
<p class="md-end-block md-p"><span class="md-plain">第一步(编译):创建完源文件之后,程序先要被JVM中的java编译器进行编译为<span class="md-pair-s "><strong>.class</strong><span class="md-plain">文件。</span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">第二步(运行):jvM加载需要运行的类,由java虚拟机执行引擎来解释执行java字节码</span></p>
<p class="md-end-block md-p"> </p>
<p class="md-end-block md-p"> </p>
<p class="md-end-block md-p"><span class="md-plain">(操作系统由汇编语言+c语言写成)</span></p>
<h4 class="md-end-block md-heading"><span class="md-plain">汇编语言</span></h4>
<p class="md-end-block md-p"><span class="md-link md-pair-s" style="color: rgba(0, 0, 255, 1)"><span style="color: rgba(0, 0, 255, 1)">http://www.ruanyifeng.com/blog/2018/01/assembly-language-primer.html</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">对于硬件cpu根据指令执行,输入一条指令就执行一条指令,这些指令均为二进制即操作码。比如加法指令就是<span class="md-pair-s"><code>00000011</code><span class="md-plain">。<span class="md-meta-i-cmd-link"><span class="md-plain">编译器</span><span class="md-plain">的作用,就是将高级语言写好的程序,翻译成一条条操作码。</span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">对于我们,二进制是不可读的,只能对照表去看手动输入二进制指令、或者用开关,每个开关对应一个指令。为了解决可读性,便使用了汇编机制:使用文字表达指令,同时就需要将文字指令翻译成二进制即汇编语言。</span></p>
<p class="md-end-block md-p"><span class="md-plain">汇编语言与c语言区别:</span></p>
<p class="md-end-block md-p"><span class="md-plain">汇编语言是二进制指令的文本形式,与指令为一一对应关系,例:加法指令00000011===ADD; </span></p>
<p class="md-end-block md-p"><span class="md-plain">一条c语言可能对应多条汇编语言(多条指令);因此c语言要先编译成汇编语言再将汇编语言转换为对应的二进制.</span></p>
<p class="md-end-block md-p"> </p>
<p class="md-end-block md-p"><span class="md-plain">计算机组成部分</span></p>
<p class="md-end-block md-p"><span class="md-plain">控制器、运算器、存储器、输入、输出</span></p>
<p class="md-end-block md-p"><span class="md-plain">cpu = 控制器+运算器</span></p>
<p class="md-end-block md-p"><span class="md-plain md-expand">存储器=内存+磁盘</span></p><br><br>
来源:https://www.cnblogs.com/byy521/p/15672486.html
頁:
[1]