• 静态类型 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类型语言。我就很好奇,特意仔细研究了这些文章。