编译型语言,解释型语言,静态语言,动态语言概念

编译语言和解释语言

1、编译语言:

需要通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。

一般需经过编译,链接两个步骤:

编译:把原代码编译成机器码

链接:把各个模块和依赖库串起来生成可执行文件。

优点: 编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。

缺点: 编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的环境生成机器码,不同的操作系统之间移植会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

代表语言: C 、C++, Pascal、Object-C,Swift

2、解释型语言

解释性语言的程序不需要编译,相比编译型语言省了道工序,解释性语言在运行程序的时候才开始逐行翻译。

优点:

有良好的平台兼容性,在任何环境中都可以运行,前提示安装了解释器(虚拟机)。

灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

缺点: 每次运行的时候都要解释一遍,性能上不如编译语言

代表语言: JavaScript,Python,Erlang,PHP,Perl,Ruby

3、混合语言

既然编译型和解释型各有缺点就会有人想把两种类型整合起来,取其精华取其糟粕。就出现了半编译型语言。

比如C#。C#在编译的时候不是直接编译成机器码而是中间码,.Net平台提供了中间语言运行库运行中间码,中间语言运行库类似于Java虚拟机。.net在编译成IL代码后,保存在dll中,首次运行时,由JIT在编译成机器码缓存在内存中,下次直接执行。

Java生成字节码,再在Java虚拟机中解释执行。

严格来说混合语言属于解释性语言。C#更接近编译型语言。

动态语言和静态语言

1、动态语言

是一类在运行时可以改变其结构的语言: 例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或其它结构的变化。通俗点说就是在运行代码时可以根据某些条件改变自身结构。

主要的动态语言: Object-C,C#, JavaScript,PHP,Python, Erlang。

2、静态语言

与动态语言相对应的,运行的时候结构不可改变就是静态语言。

主要的静态语言: Java、C、C++

参考:

1、编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别

原文地址:https://www.cnblogs.com/linlf03/p/10988228.html

时间: 2024-08-27 02:34:44

编译型语言,解释型语言,静态语言,动态语言概念的相关文章

什么是动态语言和静态语言?静态语言动态语言的区别

定义 通常我们所说的动态语言.静态语言指 动态类型语言(Dynamically Typed Language)和 静态类型语言Statically Typed Language).还有一个 Dynamic Programming Language (动态编程语言),静态编程语言. 动态类型语言:在运行期间检查数据的类型的语言.用这类语言编程,不会给变量指定类型,而是在附值时得到数据类型.如:Python和ruby就是典型动 态类型语言.很多脚本语言vbscrīpt,javascrīpt也是这类语

解释型语言和编译型语言、弱类型语言和强类型语言、动态语言和静态语言的区别

计算机是不能理解除了机器语言以外的任何语言所以必须要把程序员所写的程序语言都翻译成机器语言才能执行程序.程序语言翻译成机器语言的工具,叫做翻译器. 编程语言  ————> 翻译器  ————> 计算机语言(二进制) 翻译器翻译的方式有两种:一是 编译,二是 翻译.两种方式之间对区别在于翻译的时间点不同. 编译器:是在代码执行之前进行编译,生成中间代码文件 解释器:是在运行时进行及时解释,并立即执行(当编译器以解释方式运行的时候,也称之为解释器) 举个栗子: 编译型语言:就像是请客的时候要先把所

动态语言和静态语言、编译型语言和解释型语言、强类型语言和弱类型语言的分析

一.动态语言和静态语言1. 我们常说的动.静态语言,通常是指: 动态类型语言 Dynamically Typed Language 静态类型语言 Statically Typed Language 可能还有:动.静态编程语言 Dynamic\Statically Programming Language 2.    动态类型语言:在运行期间检查数据的类型的语言例如:Ruby\Python这类语言编程,不会给变量指定类型,而是在附值时得到数据类型.Python是动态语言,变量只是对象的引用,变量a

python——静态语言、动态语言、强类型语言、弱类型语言、脚本语言、解释型语言、编译型语言

静态语言 在编写代码时,必须为变量指定一个明确类型的语言.比如Java.C/C++ 动态语言 在编写代码时,不必为变量指定一个明确的类型,而是由解释器在运行时根据变量的使用情况确定变量的类型.比如python.javascript #python的动态特性 m = 10; m = 'hello' print m #print 'hello' 强类型语言 变量必须有一个确定的类型.比如Java.C/C++.python 弱类型语言 在运行时,变量不必按它原来的类型使用,可以当做其他类型来使用,比如

编译型与解释型、动态语言与静态语言、强类型语言与弱类型语言的区别

一.编译型和解释型 我们先看看编译型,其实它和汇编语言是一样的:也是有一个负责翻译的程序来对我们的源代码进行转换,生成相对应的可执行代码.这个过程说得专业一点,就称为编译(Compile),而负责编译的程序自然就称为编译器(Compiler).如果我们写的程序代码都包含在一个源文件中,那么通常编译之后就会直接生成一个可执行文件,我们就可以直接运行了.但对于一个比较复杂的项目,为了方便管理,我们通常把代码分散在各个源文件中,作为不同的模块来组织.这时编译各个文件时就会生成目标文件(Object  

编译型语言和解释型语言优缺点对比及语言简介

众所周知,计算机底层只能识别(并执行)0.1序列的机器码,这表示所有的高级编程语言所编写的代码,最终都要以某种方式被转换成能被计算机识别的0.1序列机器码,方可被计算机接受并执行.这种将代码转换为机器码的方式可分为编译型和解释型这2类: 概念: 编译型语言:把做好的源程序全部编译成二进制代码的可运行程序.然后,可直接运行这个程序(一次性将源文件编译成机器码二进制的可执行的目标文件). 解释型语言:把做好的源程序翻译一句,然后执行一句,直至结束(多次编译成中间代码最后通过环境软件进行执行)! 编译

静态语言和动态语言

基本概念 静态语言(强类型语言) 静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型. 例如:C++.Java.Delphi.C#等. 动态语言(弱类型语言) 动态语言是在运行时确定数据类型的语言.变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型. 例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等. 强类型定义语言 强制数据类型定义的语言.也就是说,一旦一个变量被

动态语言和静态语言的区别

这几天学习Python,对于“动态语言”这个概念原本没有太多.太深的理解,今天无意中看到一篇博文,终于算是理解了,总结一下,以备后续查阅: 定义: 动态类型语言: 在程序运行期间检查数据的类型的语言.用这类语言编程,不用给变量指定类型,而是在赋值时得到数据类型.如:Python和ruby就是典型动态类型语言.比如: x = 12 print x 以上代码中的变量x并没有指定其类型 静态类型语言: 相反静态类型语言是在运行前编译时检查类型.在写代码时,每声明一个变量必须指定类型.如:java,c#

动态语言和静态语言

动态语言Dynamically Typed Language例如:ECMAScript(JavaScript).Ruby.Python.VBScript.php也叫动态类型定义语言与静态类型定义相反,一种在执行期间才去发现数据类型的语言,动态语言是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化.动态语言的类型检查是在运行时做的.它的优点是方便阅读,不需要写非常多的类型相关的代码:缺点是不方便调试,命名不规范时会造成读不懂,不利于理解等.目前java平台下的