# 作为程序开发,你所需要知道的编译型与解释型、动态语言与静态语言、强类型语言与弱类型语言的概念以及区别!

在各式各样的开发过程当中,我相信各位开发小伙伴在开发过程中并没有太关注什么是解释性语言和编译性语言,什么又是动态语言和静态语言?什么是强类型语言和弱类型语言呢?
这里小栈君为大家解释一下


file

1. 解释型语言和编译型语言

    解释型语言即是源代码先翻译成中间代码,然后由解析器对代码进行解释和执行,程序不需要编译,只有在运行时才翻译成机器语言,所以每执行一次都需要翻译一次。其代表语言常见的有Python,shell,JavaScript等,具有运行效率一般相对比较低,因为依赖解释器,所以具有良好的跨平台属性。

编译型语言是只需要编译一次就可以将源代码编译成机器语言,后面执行时无需再次编译,因此其执行效率很高,常用的代表语言有c 、c++ ,虽然具有很高的执行效率,但比较依赖编译器所以在跨平台方面稍显逊色一筹。
除此之外呢,还有的语言具有编译性和解释性语言的两种特色,比如常见的java语言就是,先编译成与平台无关的.class的字节码文件,然后字节码文件既可以在windows平台上的JVM(虚拟机)上进行解释运行,也可以在linux上的虚拟机中解释运行,充分结合了这两种语言的一些特色。
那么关于动态语言和静态语言的解释呢?我们对于动态语言和静态语言又称之为动态类型语言和静态类型语言。关于动态语言的解释是指在程序运行期间才会去检查程序数据类型。用一点形象的例子解释就是假如你需要摘树上的苹果,你到了树下,你需要梯子的时候你才会去检查你是否带了梯子。其中典型的动态语言代表有Python,Ruby等。然而静态类型语言就恰恰相反,它的数据类型是在编译期间检查的。也就是说你要出发去摘苹果的时候,在出发前你就会检查你是否带了梯子等工具。所以也是在写程序的过程中需要指定相关的数据类型,其中具有代表性的语言有C/C++ 等 还有我们长期霸占排行榜老大的java。

2. 强类型定义语言和弱类型定义语言

    强类型定义语言也叫做强制类型定义语言,也就是说一开始一个变量制定某个数据类型,如果不经过强制类型转换的话,那么他永远就是这个数据类型,比如说你有一个苹果,如果你不将它强行榨成苹果汁,那么它将永远是一个苹果。所以强类型定义语言属于类型安全的语言。相对于强类型定于语言而言弱类型定义语言就是那种可以被忽略的语言定义,也就是说一个语言可以被赋予多种类型,就好比水一样,你可以让他成为长方形或是正方形。相比于强类型在执行速度方面可能比弱类型定义语言上略显逊色,但是数据类型的严谨方面强类型语言肯定是更能够避免许多错误的。

当然计算的语言和类型也是随着时代的发展开始初现端倪,崭露头角。这里简单的为大家科普一下关于计算机语言的发展史,计算机语言大致归为三个阶段即最原始的阶段,计算机兴起时当时的计算机语言匮乏,出现的类似于C/C++语言,在这一方面主要是注重性能方面。在上个世纪90年代,特别是奔腾处理器的出现应该是将计算机编程语言带入了一个新的阶段也就是发展阶段,在这个年代涌现出不少的动态编程语言,例如lua、Python、JavaScript等 当然也少不了编程语言排行榜老大java的身影。再后来进入2010年后,编程语言进入了跃进阶段,尤其是关于智能设备以及云服务,云计算的领域中,之前的语言渐渐难以满足企业发展的需求,在越来越大规模的同时,也对于计算机安全领域越来越看中,所以在环境的催生下,诞生了不少的新秀,这里就有诸如golang、swift、rust等绽放出新时代的光芒。也是算是时代发展的产物,不同的语言在不同的时期中绽放出不同的色彩。
本公众号的初衷就是全面讲解关于java、go、Python、区块链、人工智能、微服务等知识点,由浅入深、循序渐进的给大家分享关于这些语言中的基础知识、实战难题和面试的题的解析。让大家每天花3分钟的时间能够收获到新的知识,亦或是温故知新让自己的技能更上一个台阶。微信搜索公众号“IT干货栈”,这里最新知识和干货定期与你不见不散。我们之间的距离就差一个搜索和关注。

你可能感兴趣的:(# 作为程序开发,你所需要知道的编译型与解释型、动态语言与静态语言、强类型语言与弱类型语言的概念以及区别!)