编程语言的分类Dynamic、Statically

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shinetzh/article/details/84660429

动态语言和静态语言

动态类型语言

Dynamic Programming Language指在运行期间才去做数据类型检查的语言。在用动态语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。函数和类的定义,不是编译时定义的,而是运行时动态创建的。JavaScript、python、ruby等属于动态语言

静态类型语言

StaticallyProgramming Language与动态类型语言刚好相反,它的数据类型检查发生在在编译阶段,也就是说在写程序时要声明变量的数据类型。C/C++、C#、JAVA都是静态类型语言的典型代表。

二者优缺点

  • 静态类型语言的主要优点在于其结构非常规范,便于调试,方便类型安全;缺点是为此需要写更多的类型相关代码,导致不便于阅读、不清晰明了。
  • 动态类型语言的优点在于方便阅读,不需要写非常多的类型相关的代码;缺点自然就是不方便调试,命名不规范时会造成读不懂,不利于理解等。

典型例子

动态语言的多态不需要像静态语言那样,必须是继承了原始类别的子类。

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...
"""

这就是动态语言的多态,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子。

强类型语言和弱类型语言

强类型语言

使之强制数据类型定义的语言。没有强制类型转化前,不允许两种不同类型的变量相互操作。强类型定义语言是类型安全的语言,如Java、C# 和 Python,比如Java中“int i = 0.0;”是无法通过编译的;

弱类型语言

数据类型可以被忽略的语言。与强类型语言相反, 一个变量可以赋不同数据类型的值,允许将一块内存看做多种类型,比如直接将整型变量与字符变量相加。C/C++、PHP都是弱类型语言,比如C++中“int i = 0.0;”是可以编译运行的;

优缺点

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

阅读更多

没有更多推荐了,返回首页