编程语言相关名词解释汇总
2017-07-20 18:25
387 查看
今天给大家分享下,我们常见却不一定清楚的名词:
先上个图
我们看这个图,是一个语言坐标系,分别按编程语言的性质粗分为四个轴:动态、静态、强类型、弱类型。像笔者使用的Javascript就属于弱类型动态语言。
那么,我们思考,这么多的编程语言有这么多的性质,它们之间存在怎样的差异呢?
经过一番Google & Baidu后,笔者得出了答案,即为今天的总结:
In a word: 强/弱类型指的是语言类型系统的类型检查的严格程度。动态/静态类型指的是变量与类型的绑定方法。
弱类型 (weakly typed) : 否则为 weakly typed。比如C语言的缓冲区溢出,属于 trapped errors,即属于 forbidden behaviors.. 故C是弱类型。
弱类型语言,类型检查更不严格,如偏向于容忍隐式类型转换。譬如说C语言的int可以变成double。 这样的结果是:容易产生 forbidden behaviours,所以是弱类型的。
强类型语言一般不允许这么做。
动态类型 (dynamiclly) : 如果在运行时拒绝ill behaviors, 则是 dynamiclly typed。
静态类型指的是编译器在 compile time 执行类型检查,动态类型指的是编译器(虚拟机)在 runtime 执行类型检查。
最后,我们得出结论:
在声明了一个变量之后,不能改变它的类型的语言,是静态语言;
能够随时改变它的类型的语言,是动态语言。
因为动态语言的特性,一般需要运行时虚拟机支持。
(PS:引用轮子哥的总结:
强类型:偏向于不容忍隐式类型转换。譬如说haskell的int就不能变成double
弱类型:偏向于容忍隐式类型转换。譬如说C语言的int可以变成double
静态类型:编译的时候就知道每一个变量的类型,因为类型错误而不能做的事情是语法错误。
动态类型:编译的时候不知道每一个变量的类型,因为类型错误而不能做的事情是运行时错误。譬如说你不能对一个数字a写a[10]当数组用。)
先上个图
我们看这个图,是一个语言坐标系,分别按编程语言的性质粗分为四个轴:动态、静态、强类型、弱类型。像笔者使用的Javascript就属于弱类型动态语言。
那么,我们思考,这么多的编程语言有这么多的性质,它们之间存在怎样的差异呢?
经过一番Google & Baidu后,笔者得出了答案,即为今天的总结:
In a word: 强/弱类型指的是语言类型系统的类型检查的严格程度。动态/静态类型指的是变量与类型的绑定方法。
强/弱类型
强类型 (strongly typed) : 如果一种语言的所有程序都是 well behaved——即不可能出现 forbidden behaviors,则该语言为 strongly typed。弱类型 (weakly typed) : 否则为 weakly typed。比如C语言的缓冲区溢出,属于 trapped errors,即属于 forbidden behaviors.. 故C是弱类型。
弱类型语言,类型检查更不严格,如偏向于容忍隐式类型转换。譬如说C语言的int可以变成double。 这样的结果是:容易产生 forbidden behaviours,所以是弱类型的。
强类型语言一般不允许这么做。
动态/静态类型
静态类型 (statically) : 如果在编译时拒绝ill behaved 程序,则是 statically typed;动态类型 (dynamiclly) : 如果在运行时拒绝ill behaviors, 则是 dynamiclly typed。
静态类型指的是编译器在 compile time 执行类型检查,动态类型指的是编译器(虚拟机)在 runtime 执行类型检查。
最后,我们得出结论:
在声明了一个变量之后,不能改变它的类型的语言,是静态语言;
能够随时改变它的类型的语言,是动态语言。
因为动态语言的特性,一般需要运行时虚拟机支持。
(PS:引用轮子哥的总结:
强类型:偏向于不容忍隐式类型转换。譬如说haskell的int就不能变成double
弱类型:偏向于容忍隐式类型转换。譬如说C语言的int可以变成double
静态类型:编译的时候就知道每一个变量的类型,因为类型错误而不能做的事情是语法错误。
动态类型:编译的时候不知道每一个变量的类型,因为类型错误而不能做的事情是运行时错误。譬如说你不能对一个数字a写a[10]当数组用。)
相关文章推荐
- 职位相关的名词解释汇总,逐步更新
- Hadoop, Google File System等相关名词解释
- DNS相关名词解释(CNAME)
- Android UI中像素相关的名词解释
- PHP相关名词解释
- Architectural Pattern(4)-SOA相关名词概念解释(SCA、ESB、JBI、BPEL、WEB服务)以及关系说明
- Email营销相关名词解释:PEM,UCE,Opt-in,Double Opt-In,Opt-out
- 视频相关名词解释
- Java Web开发相关名词解释
- liferay相关专业名词解释
- ERP相关名词解释
- 一篇文章搞定矩阵相关概念及意义--通俗解释汇总
- 与JavaWeb开发相关的一些名词解释
- 页面中开始时间与结束时间默认为上个月的第一天与最后一天及相关名词解释
- Android系统名词解释汇总
- 电子政务相关名词解释
- UML类图的相关名词解释
- 第五章(1.1)深度学习——神经网络相关名词解释
- Architectural Pattern(4)-SOA相关名词概念解释(SCA、ESB、JBI、BPEL、WEB服务)以及关系说明