编程语言的分类Dynamic、Statically

一、 动态语言和静态语言

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 优缺点

强类型语言在速度上略逊色于弱类型语言,使用弱类型语言可节省很多代码量,有更高的开发效率。而对于构建大型项目,使用强类型语言可能会比使用弱类型更加规范可靠。

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值