文章目录
- 一、 动态语言和静态语言
- 1.1 动态类型语言
- 1.2 静态类型语言
- 1.3 二者优缺点
- 1.4 典型例子
- 二、强类型语言和弱类型语言
- 2.1 强类型语言
- 2.2 弱类型语言
- 2.3 优缺点
一、 动态语言和静态语言
1.1 动态类型语言
Dynamic Programming Language指在运行期间才去做数据类型检查的语言。在用动态语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。函数和类的定义,不是编译时定义的,而是运行时动态创建的。JavaScript、python、ruby等属于动态语言
1.2 静态类型语言
StaticallyProgramming Language与动态类型语言刚好相反,它的数据类型检查发生在在编译阶段,也就是说在写程序时要声明变量的数据类型。C/C++、C#、JAVA都是静态类型语言的典型代表。
1.3 二者优缺点
- 静态类型语言的主要优点在于其结构非常规范,便于调试,方便类型安全;缺点是为此需要写更多的类型相关代码,导致不便于阅读、不清晰明了。
- 动态类型语言的优点在于方便阅读,不需要写非常多的类型相关的代码;缺点自然就是不方便调试,命名不规范时会造成读不懂,不利于理解等。
1.4 典型例子
静态语言的多态,变量必须是继承了同一个原始类别;而动态语言的多态不需要继承同一个原始类别,只要对应的变量或者函数同样存在,一样可以实现多态。
class Animal(object):
def run(self):
print('running...')
class Dog(Animal):
def run(self):
print("Dog running...")
class Cat(Animal):
def run(self):
print("Cat running...")
class Fake_Animal():
def run(self):
print("fake animal is running...")
def run_twice(aaaa): #parameters here is not any of the specified classes
aaaa.run()
aaaa.run()
animal = Animal()
dog = Dog()
fake_animal = Fake_Animal()
run_twice(animal)
run_twice(dog)
run_twice(fake_animal)
#out put
"""
running...
running...
Dog running...
Dog running...
fake animal is running...
fake animal is running...
"""
这就是动态语言的多态,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子。
二、强类型语言和弱类型语言
2.1 强类型语言
使之强制数据类型定义的语言。没有强制类型转化前,不允许两种不同类型的变量相互操作。强类型定义语言是类型安全的语言,如Java、C# ,比如Java中“int i = 0.0;”是无法通过编译的;
2.2 弱类型语言
数据类型可以被忽略的语言。与强类型语言相反, 一个变量可以赋不同数据类型的值,允许将一块内存看做多种类型,比如直接将整型变量与字符变量相加。C/C++、python、PHP都是弱类型语言,比如C++中“int i = 0.0;”是可以编译运行的;
2.3 优缺点
强类型语言在速度上略逊色于弱类型语言,使用弱类型语言可节省很多代码量,有更高的开发效率。而对于构建大型项目,使用强类型语言可能会比使用弱类型更加规范可靠。
更多推荐
编程语言的分类Dynamic、Statically
发布评论