编程语言的弱类型、强类型、动态类型、静态类型、解释型、编译型、脚本等概念

编程语言的弱类型、强类型、动态类型、静态类型、解释型、编译型、脚本等概念

在一些技术文档、编程书籍中,介绍编程语言的背景、发展历程,设计理念时,常常提到这些词:动态类型、静态类型、强类型,弱类型、解释型、编译型、脚本等

如:Python属于强类型的动态脚本语言。

【强类型:不予许不同类型相加。

动态:不使用显示数据声明类型,且确定一个变量的类型是第一次给他赋值的时候。

脚本语言:一般也是解释性语言,运行代码只需要一个解释器,不需要编译。】

 

 

强类型语言:

一旦一个变量被指定了某个数据类型,如果不经过强制转换(重新赋值),那么它就永远是这个数据类型了。如,python中,定义了一个整型变量a,不予许不同类型相加,整形+字符串会报类型错误。强类型语言是类型安全的语言。

 

弱类型语言

一旦一个变量被指定了一个数据类型,不需要强制转换,使用时直接换成其他类型语言。如,JavaScript中 整型变量a=1 + “abc”运行结果为字符串 1abc  , 一个变量的类型是由其应用上下文确定的。

 

【强类型和弱类型主要是站在变量类型处理的角度进行分类的。这些概念未经过严格定义,它们并不是属于语言本身固有的属性,而是编译器或解释器的行为。主要用以描述编程语言对于混入不同数据类型的值进行运算时的处理方式。强类型语言是指无论在编译阶段还是运行阶段,一旦变量绑定某种类型后,此变量会持有该类型,并且不能与其他类型表达式进行混合运算。弱类型则相反。】

 

静态类型语言:

是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型,某些具有类型推导能力的现代语言可能能够部分减轻这个要求.。

 

动态类型语言:

是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。如python中,变量a=1,则a的类型就是整型,若a=”abc”,a的类型就是字符串。

 

【类型检查时验证类型数据以及赋值是否合乎类型要求的一个过程。当编译器或解释器在编译阶段做类型检查还是在运行阶段做类型检查来定义编程语言是动态类型或静态类型。如果编程语言的类型检查发生在 “编译阶段”(Compile Time),则被定义为 “静态类型语言”。】

 

解释型

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

 

编译型

是指语言的源码需要经过编译器编译,生成计算机(操作系统)的可执行文件,或者计算机指令,才能够被计算机识别,并执行。完成的过程就是:程序员根据需求写出项目源代码,然后把源代码交由编译器将所有源码文件一次性编译,得到可执行文件,这时,就可以把可执行文件通过操作系统运行起来,就能看到实际的运行效果了。比如:C、C++、C#等语言都可视为编译型语言。

 

标记语言

标记语言(Markup Language),是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。与文本相关的其他信息(包括例如文本的结构和表示信息等)与原来的文本结合在一起,但是使用标记(markup)进行标识。如:HTML、XML

 

脚本语言

脚本语言是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。。

一个脚本通常是解释运行而非编译。脚本语言通常都有简单、易学、易用的特性,目的就是希望能让程序员快速完成程序的编写工作。如:JavaScript、VBScript、PHP

 

编译型语言

编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如 C、C++。

 

编程语言

也称"计算机语言",种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 目前通用的编程语言有两种形式:汇编语言和高级语言。

 

【编译:是将文本的源代码翻译成机器指令,这个机器指令可以是面向解释器、虚拟机的(如vb,java,python),也可以是面向cpu的(如c),这是一个编译期的行为,修改了代码就需要重新编译,不改代码就无需重复执行编译过程

解释:是将文本源代码或者非CPU直接能理解的机器指令转换为CPU指令集,这是运行时的行为,每执行一次,都需要经过一次解释过程。

脚本(Script)语言的定义是约定俗成的。就是这个语言一般是解释执行的,一般是用来快速批量处理的,我们就管它叫做脚本语言。编程语言和脚本语言之间互相交叉,二者之间没有明确的界限。脚本通常是以文本 (ASC) 保存, 只是在被调用时进行解释或者编译。】

 

特别提示:随着语言的发展演化,语言特征交叉重叠现象,界定的界限可能不太明确,不同的人从不同的角度可能有不同的看法,对此不必持僵硬机械的观念。

 

关于这些,下面资料不错,特地给出链接,可以参考 

编程语言傻傻分不清:弱类型、强类型、动态类型、静态类型 https://cloud.tencent.com/developer/article/1332131

编程语言之美,在动、静之态,在强、弱之间,分解释、编译之道 https://segmentfault.com/a/1190000023108307

标记语言、脚本语言和编程语言的含义和比较 https://blog.csdn.net/ChinaGir/article/details/97886786

猜你喜欢

转载自blog.csdn.net/cnds123/article/details/115275931
今日推荐