编程语言之美,在动、静之态,在强、弱之间,分解释、编译之道

编程语言之美,在动、静之态,在强、弱之间,分解释、编译之道

在不少技术文档、官方介绍,以及各类各样的编程书籍中,都免不了对编程语言作一些介绍,介绍语言的背景、发展历程,设计理念等一大堆开篇立论,在这一大堆理论中,介绍语言类型时每每会有这么几个词显得有些很不同,好比:动态类型、静态类型、强类型,弱类型、解释型、编译型。程序员

那么这几个类型是什么意思呢,如今市场上流行、曾经流行的编程语言又分别是哪一个类型的呢,接下来就来一一看看。编程

动态类型

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

此类型的编程语言,变量、属性、方法的参数的数据类型以及方法的返回值类型均可以不用指定,他们的数据类型会在首次赋值时被记录下来。此类型的语言有JavaScript、Perl、PHP、Ruby 、PythonVB等等。编程语言

静态类型

静态类型语言,编译阶段就作数据类型检查的语言,这点与动态类型语言恰好相反;也就是说这种类型的语言,声明变量时在就要明确指定变量的数据类型;若是没有明确指定,程序就没法经过编译,更加没法运行。性能

好比:C、C++、C#、Java以及运行JVM的其余语言都是静态类型语言的典型表明。优化

强类型

强类型语言,也称为强类型定义语言,是一种强制数据类型定义的语言。此类语言的变量的数据类型一旦肯定,除非发生类型强制转换,不然其数据类型永远不会发生改变。因此,强类型定义语言也是类型安全的语言。spa

而且还要求全部的变量、属性必须先声明并初始化后才能使用,并且变量、属性、方法的参数以及方法的返回值必须明确指定数据类型,并且即使不一样类型的变量之间的类型转换也要严格按照转换规则来执行。如Java、C#Python、C、C++等都是强类型的语言。操作系统

虽然强类型定义语言运行速度上比起弱类型语言稍稍逊色一些,但加以优化,也并不是不能克服;强类型定义语言因为明确指定数据类型,全部会更加严谨,从而能避免很懂逻辑和语法上的错误。翻译

弱类型

弱类型语言,数据类型能够被忽略的语言,这点与强类型定义语言相反;一个变量能够被赋不一样数据类型的值。设计

在定义变量时能够只使用变量修饰符标识其是一个变量便可,而不用考虑其时什么数据类型;同时,一个变量能够赋不一样数据类型的值,且不须要明确的数据类型。好比:变量a 首次赋值的数据类型是字符串类型,但在后期根据须要能够把数字类型的值赋给变量a。

弱类型语言如VB 、PHP、JavaScript等。

编程语言之美,在动、静之态,在强、弱之间,分解释、编译之道

解释型

解释型语言的源代码会在执行到的那一刻才会被语言解释器转换为计算机可执行文件并执行,整个的运行过程会不断的解释,执行;解释,执行...... 即使新的一次运行到已经解释过的程序,解释器也依然还会再次解释,并执行。

这个过程比如,你买了本纯英文的书,但你看不懂,而后去找了英文翻译来辅助你阅读,你想看哪行,他给你翻译哪行;若是你想回头去看以前的内容,他也依然会从新翻译一次,并给到你。

在解释型程序中,程序老是以源代码的形式出现;那么只要有解释器,一个解释型的程序就能很轻易的移植到另外一个平台上。还有程序的修改也很方便,由于其是实时解释的,可以实时查看改动的效果。但也会因程序的不断扩大,减慢程序解释的响应速度,每每对计算机性能有必定的要求。

好比:JavaJavaScript、VBScript、Perl、Python等都是解释型语言。Java 因其JVM的跨平台特性,因此Java 也可算是解释型语言。

编译型

是指语言的源码须要通过编译器编译,生成计算机(操做系统)的可执行文件,或者计算机指令,才可以被计算机识别,并执行。完成的过程就是:程序员根据需求写出项目源代码,而后把源代码交由编译器将全部源码文件一次性编译,获得可执行文件,这时,就能够把可执行文件经过操做系统运行起来,就能看到实际的运行效果了。

若是用英文书的例子来讲明,就是:英文翻译会将整本书翻译后给到你,那么即使想回头去看以前看过的内容,也只须要自行查阅就能够了。

因为程序要通过编译后才能运行,因此其运行速度会比解释型语言要快上很多;编译过程当中会进行一些必要的检查,所以也能避免很多错误的发生;但也是由于其运行机制,小小的改动也要从新编译执行,一定会浪费必定的时间。

好比:C、C++、Java,C#、Pascal/Object Pascal(Delphi)、VB等语言均可视为编译型语言。

编程语言之美,在动、静之态,在强、弱之间,分解释、编译之道

一些常见的编程语言的类型

  • 无类型: 汇编
  • 弱类型、静态类型 : C、C++
  • 弱类型、动态类型检查: Perl、PHP、JavaScript
  • 强类型、静态类型检查 :Java、C#
  • 强类型、动态类型检查 :Python, Scheme
  • 静态显式类型 :Java、C
  • 静态隐式类型 :Ocaml、Haskell

编程语言之美,在动、静之态,在强、弱之间,分解释、编译之道

完结,老夫虽不正经,但老夫一身的才华!关注我,获取更多编程科技知识。

相关文章
相关标签/搜索