Atitit 编程语言的类型系统 目录 1.2. 动态类型语言(Dynamically Typed Language): 1 1.3. 静态类型语言(Statically Typed Languag
Atitit 编程语言的类型系统
目录
1.2. 动态类型语言(Dynamically Typed Language): 1
1.3. 静态类型语言(Statically Typed Language): 1
1.4. 强类型定义语言(Explicit type conversion,强制数据类型定义语言,类型安全的语言): 2
1.5. 弱类型定义语言(Implicit type conversion,类型不安全的语言): 2
2. 静态类型可以分为两种: 2
2.1. explicitly typed显式类型 2
2.2. implicity typed隐式类型 3
2.3. 宣告型态(manifest type)语言, 3
2.4. type-inferred语言 3
3. 常见语言分布图 3
1.1.1.1. 2. 四种语言分类及其区别
1.1. 动态类型语言(Dynamically Typed Language):
运行期间才做数据类型检查的语言,即动态类型语言编程时,永远不用给任何变量指定数据类型。该语言会在第一次赋值给变量时,在内部将数据类型记录下来。
例如:ECMAScript(JavaScript)、Ruby、Python、VBScript、php
Python和Ruby就是典型动态类型语言,其他各种脚本语言如VBScript也多少属于动态类型语言
优点:方便阅读,不需要写非常多的类型相关的代码;
缺点:不方便调试,命名不规范时会造成读不懂,不利于理解等
1.2. 静态类型语言(Statically Typed Language):
编译期间做检查数据类型的语言,即写程序时要声明所有变量的数据类型,是固定的。使用数据之前,必须先声明数据类型(int ,float,double等)。相当于使用之前,首先要为它们分配好内存空间。
例如:C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等
优点:结构非常规范,便于调试,方便类型安全
缺点:为此需要写更多类型相关代码,不便于阅读、不清晰明了
1.3. 强类型定义语言(Explicit type conversion,强制数据类型定义语言,类型安全的语言):
一旦变量被指定某个数据类型,如果不经强制转换,即永远是此数据类型。
举例:若定义了一个整型变量a,若不进行显示转换,不能将a当作字符串类型处理
强类型语言是指需要进行变量/对象类型声明的语言,一般情况下需要编译执行。例如C/C++/Java/C#
1.4. 弱类型定义语言(Implicit type conversion,类型不安全的语言):
数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
举例:在VBScript中,可以将字符串 '12' 和整数 3 进行连接得到字符串 '123', 然后可以把它看成整数 123,而不需要显示转换
例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等
注意:强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。
作者:陈满iOS
链接:https://www.jianshu.com/p/336f19772046
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2. 静态类型可以分为两种:
2.1. explicitly typed显式类型
如果类型是语言语法的一部分,在是explicitly typed显式类型;
2.2. implicity typed隐式类型
如果类型通过编译时推导,是implicity typed隐式类型, 比如ML和Haskell
2.3. 宣告型态(manifest type)语言,
包含宣告型态(manifest type)语言,即每一个变量和函数的型态都清楚地宣告
2.4. type-inferred语言
type-inferred语言(例如MUMPS,ML) 类型推断
3. 常见语言分布图
Atitit 编程语言的类型系统 目录 1.2. 动态类型语言(Dynamically Typed Language): 1 1.3. 静态类型语言(Statically Typed Languag相关推荐
- 编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别
编译型语言和解释型语言 1.编译型语言 需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言.一般需经过编译(compile).链接(linker)这两个步骤.编译是把源代码编译成 ...
- 概念区别 【编译型语言与解释型语言、动态类型语言与静态类型语言、强类型语言与弱类型语言】
概念区别 [编译型语言与解释型语言.动态类型语言与静态类型语言.强类型语言与弱类型语言] 文章目录 一.编译型语言与解释型语言 二.动态类型语言与静态类型语言 三.强类型语言与弱类型语言 总结 一.编 ...
- 动态类型语言和鸭子类型
面向对象的JavaScript 学过JavaScript的人都知道,JavaScript是通过原型委托的方式来实现对象和对象之间的继承,和传统面向对象编程语言(例如Java.C++)的类继承有一些 ...
- 虚拟机字节码执行引擎——动态类型语言支持
目录 动态类型语言 Java与动态类型 java.lang.invoke包 invokedynamic指令 实战:掌控方法分派规则 随着JDK 7的发布的字节码首位新成员--invokedynamic ...
- java动态语言_java动态类型语言支持(三)
invokedynamic指令 在前面java动态类型语言支持(一)(二)中我们有提到invokedynamic指令和java.lang.invoke包中的MethodHandle机制,在某种程度上他 ...
- 动态类型语言和静态类型语言
我们通常说的动态语言.静态语言就是指的动态类型语言和静态类型语言. 动态类型语言 动态类型语言是指在运行期间才去做数据类型检查的语言.也就是说,在用动态类型的语言编程时,永远不用给任何变量指定数据类型 ...
- 关于动态语言 静态语言 静态类型语言 动态类型语言的区别
参考链接:关于"编译型""解释型""动态语言""静态语言""动态类型语言""静态类型语言& ...
- JVM:方法调用之动态类型语言支持。
Java虚拟机的字节码指令集的数量从Sun公司的第一款Java虚拟机问世至JDK 7来临之前的十余年时间里,一致没有发生任何变化.随着JDK 7的发布,字节码指令集终于迎来了第一位新成员--invok ...
- Java 8 动态类型语言Lambda表达式实现原理分析
Java 8支持动态语言,看到了很酷的Lambda表达式,对一直以静态类型语言自居的Java,让人看到了Java虚拟机可以支持动态语言的目标. import java.util.function.Co ...
- 动态类型语言和静态类型语言的区别
一.概念 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型(变量使用之前不需要类型声明),该语言会在你第一次赋值给 ...
最新文章
- U-Boot移植教程之一:U-Boot分析与启动过程
- PHP 1:在Windows上安装和配置PHP,Apache和My SQL
- 12.源码阅读(app启动流程-android api 26)
- matlab多项式加法运算,matlab多项式运算与代数方程求解解析.ppt
- react学习(45)----react组件
- python sftp_python中实现sftp
- hdu 2438 Turn the corner [ 三分 ]
- TCP/IP 协议 —— ARP
- python中将str转成数字_python初探: 数据类型与变量
- 华为服务器培训文档,华为机架服务器渠道培训.ppt
- Separating set
- Kotlin基础知识5
- 红米3 android 版本升级失败,疑似官方推送错误固件 红米Note3全网通升级后变砖...
- 剑指OFFER思路总结与代码分享——树篇(Java实现)
- Imperfect C++读书笔记(二):前置条件、后置条件和不变式
- EditText的hint居中,设置EditText的hint位置
- hive全量与增量~的思考
- 【Framework】透视Android中的Handler
- HTML怎样调整输入框位置,怎么去调整验证码与输入框的位置?
- “总裁,夫人被您送去互联网公司三年了…”
热门文章
- c语言入门自学ppt,《C语言基础知识》PPT课件.ppt
- java判断语句总结,JAVA常用操作语句 项目中的总结六
- linux编译安装mysql的意思,linux编译模式安装mysql 步骤说明
- matlab dpabi安装,Android 8 应用安装时 ABI 确认过程
- Gmail过滤器设置
- sh脚本异常:/bin/sh^M:bad interpreter: No such file ...
- 算法:从上往下打印二叉树
- linux子系统的初始化_subsys_initcall()【转】
- Android中使用响应式编程RxJava
- html基础:基本标签