`
andyhu1007
  • 浏览: 194330 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

动态语言的高开发效率

阅读更多

   普遍认为Python的开发效率要比Java高出5-10倍。那么动态语言为什么会在开发效率方面具有天独厚的优势?

 

   1. 易学易用,编程人员可快速上手

 

   Python、Perl、Ruby等动态语言具有简洁的语法规则,交互式的编程环境,比C++、Java等静态语言更容易学习和掌握。动态语言不需要声明语句的编程方式使得动态语言更加接近于自然语言,简单明了,易学易读。

 

   2. 内置丰富的数据结构和操作

 

   实际上,动态语言是建立系统程序设计语言之上的语言,大多数动态语言解释器的内核都是用某种静态语言实现的,Python是用C实现的,JVM上的 Jython是用纯Java实现的,.Net CLR上的IronPython是用C# 实现的。动态语言将灵活性作为其设计的目标,优先考虑了语言的灵活性。因此,动态语言在语言层次上集成了许多操作方便、性能良好、高度抽象的数据类型,为 编程人员提供了高效的数据结构实现,有助于提高开发效率。

 

   比如以Python语言为例。Python语言提供了强大的数学运算,可以处理超大的整数和浮点数,支持复数的基本运算。Python内置了功能强大、使用方 便的数组类型,程序员不需要预先声明使用数组的大小就可以直接使用数组,也不必担心数组大小不够,这些解释器会自动根据具体地操作动态地分配数组的存储空 间,不象C/C++中使用数组首先必须声明数组的大小,这就使得很多人在使用数组时不知道究竟应将大小设置成多少,大了觉得浪费,小了又担心不够,想改成 指针方式动态分配又有可能给程序带来新的问题。

 

   3. 无类型化,用更少的代码可完成同样的工作

 

   动态语言的动态类型使得编写程序时不需要声明变量的类型,变量无类型化省去了程序代码中大量的编译器编译时所需的类型信息语句,使程序看上去简洁明了。

 

   高级程序设计语言的高级性在于它的每一条代码可以完成更多的工作,完成同样的工作,使用的代码愈少,表明语言的等级愈高。每行汇编代码平均可以翻译成 1-3条机器指令,与此相比,每行C/C++代码平均翻译成5条机器指令,而对于Python、Perl、Tcl这样的动态语言,每行代码可翻译成 100-1000行机器指令。

 

   动态语言把许多工作都交给解释器去完成,程序员专注于自己需要解决的问题,建立问题解决方案的逻辑就够了,因此更接近于自然语言。比起静态语言,动态语言的一条语句可以完成更多的功能。从这个意义上说,动态语言是一种更高级的语言。因此,动态语言具有更高的开发效率。

 

  正是因为动态语言内置了丰富的数据类型,节省了开发人员独立实现这些数据类型的时间,从而提高了程序的开发效率。

 

  4. 支持动态重构

 

  有些应用领域中逐渐出现这样一类需求:要求软件在运行时还能够改变,即动态重构。

 

  比如在一个银行系统中,要求软件一旦运行,就不能停下来,否则会对银行造 成灾难性的损失,那么这样的系统中如果在运行时发现某个错误怎样修正呢?显然,用静态语言很难实现,因为静态语言在运行时不能修改自身代码,用静态语言实 现的系统执行的是经过翻译处理后的可执行代码,要修正软件必须要经过修改源代码->编译->连接->生成可执行程序的步骤。而动态语言 比较容易实现,动态语言是解释执行的,运行时还能够修改自身的代码。国外有人用Smalltalk实现了这样一个分布式的银行系统,银行系统留有一个接 口,开发好的系统发现bug后,维护人员可以通过该接口远程登录后,可以在系统不停止运行的情况下把bug消除掉。

 

  动态语言一个广泛的应用就是作为“胶水语言”胶合用静态语言编写的组件,从而整合成一个应用程序,这种应用称之为混合式应用。RedHat Linux的安装程序就是通过Python胶合各个组件模块实现的。静态语言开发的程序运行速度快,但开发周期较长,而动态语言灵活简洁,开发效率可提高 5-10倍,但程序运行慢,混合式应用合理结合各自的优点,充分利用不同语言的各自优势,取长补短,可以快速高效地构建应用程序并具有相当的性能。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics