-
静态类型 vs 动态 编程语言
-
强类型 vs 弱类型 编程语言
1 类型检查
类型检查是一个验证和施加类型约束的过程,编译器或解释器通常在编译或运行阶段做类型检查。例如,你不能拿一个string类型值除以浮点数。
用更简单的术语,类型检查仅仅就是查看变量和它们的类型,然后说这个表达式是合理的。
因此,现在我们知道类型检查是什么,明白这些术语真的很简单。
在静态类型语言(
statically typed languages
)中,类型检查发生在
编译阶段
(compile time),然而,在动态类型语言(
dynamically typed languages
)中,类型检查发生在运行阶段(run time)
2 它意味着什么?
2.1 类型声明
静态类型(static): 所有的变量类型必须被显示地声明,因为这些信息在编译阶段就被需要。例如,在 Java 中
float f = 0.5
动态(Dynamic): 显示声明不被要求,因为类型赋值发生在运行阶段。例如在 Python 中,
f = 0.5
2.2 性能
静态类型(static): 编译阶段做更多处理,但是运行时(run-time)性能更好
动态(Dynamic): 编译阶段更高效,但是运行时的类型检查会影响到性能
2.3 灵活性和出错
静态类型: 运行时出错机会更小,但是提供给程序员的灵活性不好
动态类型: 提供更多的灵活性但是运行时出错机会相对更大
2.4 记住
各种语言按照动态/静态,弱类型/强类型的划分:
3 什么是强类型/弱类型?
首先看下什么是强类型,在强类型中,不管在编译时还是运行时,一旦某个类型赋值给某个变量,它会持有这个类型,并且不能同其他类型在计算某个表达式时混合计算。例如在Python中:
data = 5 # 在runtime时,被赋值为整形
data = data + "xiaoming" # error
然而,在弱类型中,它是很容易与其他类型混合计算的,比如同样一门伟大的语言 Javascript,使用它:
var data = 5
data = data + 'xiaoming' //string和int可以结合
类型检查确保一个表达式中的变量类型是合法的。在静态类型语言中,类型检查发生在编译阶段;动态类型语言,类型检查发生在运行阶段。
强类型语言有更强的类型检查机制,表达式计算中会做严格的类型检查;而弱类型语言允许各种变量类型间做一些运算。
Python是一门动态的(dynamic)且强类型(strong)语言
Python3分钟
我们从第一个「hello world」开始。首先我们先进入电脑的控制台输入 python3 进入 python 解释器模式。例如我以 Mac 为例 在 iTerm 终端输入 python3 会进入解释器模式。Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:52:21)[Clang 6.0 (clang-600.0.57)] on darwinTyp...
以下这16个场景,据说只有程序员才看得懂两本书的书名似乎阐述了一个真理...一夜学会编程的捷径提问:如何在一夜之间学会编程?最佳回答:冬天来临的时候,带上电脑去北极吧……代码有error怎么办?我:我的代码有error怎么办?求指导。同事:关掉console窗口。我:关了,然后呢?同事:什么然后。如何成为Machine Learning Engineer如果我胡乱改代码,不断尝试直到程序能运行,别...
今天逛水木社区,看到一个有意思的话题,链接如下:http://www.newsmth.net/nForum/#!article/LinuxDev/61483
它讲的是gcc/g++弱还是vs弱。作者举了两个例子,但是似乎都是说gcc/g++比vs的编译器要弱。
一个是std::list>编译通不过,要 std::list >,需要最后两个>>中间加个空格。
另一个问题是
英文原作者:Peter NorvigTeach Yourself Programming in Ten Years 中文翻译转载之:http://coolshell.cn/?p=2250 为什么每个人都急不可耐?走进任何一家书店,你会看见《Teach Yourself Java in 7 Days》(7天Java无师自通)的旁边是一长排看不到尽头的类似书籍,它们要教会你Vi
起因,今天老师讲解“变量”这块时,说python是弱类型语言。但是,查阅了一些信息后,发现老师讲的可能有问题,因为强弱类型并不取决于定义对象引用时是否需要绑定目标对象类型。
相关链接:
怎样才能学好弱类型语言,比如Python? - Coldwings的回答 - 知乎
弱类型、强类型、动态类型、静态类型语言的区别是什么? - rainoftime的回答 - 知乎
编程语言的类型系统为何如此重要? - 小熊的回答 - 知乎
1 什么是强类型,什么是弱类型
2 一张图区分不同语言中的强类型,弱类型,动态.
一、python是一门解释型 强类型动态语言强类型:数据类型不可以被忽略的语言弱类型:数据类型可以被忽略的语言静态类型:编译的时候就知道每一个变量的类型,需要事先给变量进行数据类型定义,因为类型错误而不能做的事情是语法错误。动态类型:编译的时候不知道每一个变量的类型,运行时进行类型检查和绑定,因为类型错误而不能做的事情是运行时错误。各种类型语言列举:弱类型、静态类型 : C/C++弱类型、动态类...
什么是强类型,什么是弱类型?之前一直写的OC语言,在自己的意识中,所有数据类型是定义好的,如果改变数据的类型必须进行强制类型转换。但是接触了JavaScript后发现,一个变量,可以是字符串,也可以是int数据类型,一个字符串可以拼接int数据然后组成一个新的字符串。。。。其实这就是两个明显的强类型、弱类型的语言。强类型:所有的变量必须先声明,后使用;指定类型的变量只能接收类型与之匹配的值。强类型...
最近有些学员问我,Python到底是强类型语言,还是弱类型语言。我就直接脱口而出:Python是弱类型语言。没想到有一些学员给我了一些文章,有中文的,有英文的,都说Python是强类型语言。我就很好奇,特意仔细研究了这些文章。