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

编译型语言和解释型语言

一、编译型语言java

需经过编译器(compiler)将源代码编译成机器码,以后才能执行的语言。通常需通过编译(compile)、连接(linker)这两个步骤。python

编译是把源代码编译成机器码,编程

连接是把各个模块的机器码和依赖库串连起来生成可执行文件。swift

优势:编译器通常会有预编译的过程对代码进行优化。由于编译只作一次,运行时不须要编译,因此编译型语言的程序执行效率高。能够脱离语言环境独立运行。
缺点:编译以后若是须要修改就须要整个模块从新编译。编译的时候根据对应的运行环境生成机器码,不一样的操做系统之间移植就会有问题,须要根据运行的操做系统环境编译不一样的可执行文件。
表明语言:C、C++、Pascal、Object-C以及最近很火的苹果新语言swift缓存

二、解释型语言app

解释性语言的程序不须要编译,相比编译型语言省了道工序,解释性语言在运行程序的时候才逐行翻译。
优势:有良好的平台兼容性,在任何环境中均可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就能够,能够快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
表明语言:JavaScript、Python、Erlang、PHP、Perl、Ruby编程语言

三、混合型语言函数

既然编译型和解释型各有缺点就会有人想到把两种类型整合起来,取其精华去其糟粕。就出现了半编译型语言。好比C#,C#在编译的时候不是直接编译成机器码而是中间码,.NET平台提供了中间语言运行库运行中间码,中间语言运行库相似于Java虚拟机。.net在编译成IL代码后,保存在dll中,首次运行时由JIT在编译成机器码缓存在内存中,下次直接执行。Java先生成字节码再在Java虚拟机中解释执行。严格来讲混合型语言属于解释型语言。C#更接近编译型语言。性能

动态语言和静态语言

一、动态语言优化

是一类在运行时能够改变其结构的语言:例如新的函数、对象、甚至代码能够被引进,已有的函数能够被删除或是其余结构上的变化。通俗点说就是在运行时代码能够根据某些条件改变自身结构。
主要动态语言:Object-C、C#、JavaScript、PHP、Python、Erlang

二、静态语言

与动态语言相对应的,运行时结构不可变的语言就是静态语言。如Java、C、C++

有三个名词容易混淆:
Dynamic Programming Language (动态语言或动态编程语言)
Dynamically Typed Language (动态类型语言)
Statically Typed Language (静态类型语言)

动态类型语言和静态类型语言

一、动态类型语言

动态类型语言和动态语言是彻底不一样的两个概念。

动态类型语言:是指在运行期间才去作数据类型检查的语言,说的是数据类型,

动态语言:说的是运行是改变结构,说的是代码结构。
动态类型语言的数据类型不是在编译阶段决定的,而是把类型绑定延后到了运行阶段。
主要语言:Python、Ruby、Erlang、JavaScript、swift、PHP、Perl

二、静态类型语言

静态语言的数据类型是在编译期间(或运行以前)肯定的,编写代码的时候要明确肯定变量的数据类型。
主要语言:C、C++、C#、Java、Object-C

原文连接:

https://blog.csdn.net/lvxiangan/article/details/78391281

 


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

识别图中二维码,领取python全套视频资料

相关文章
相关标签/搜索