动态语言的原理及展望

澄清一下动态语言的定义:动态编程语言是一类可以在运行时刻改变自身结构的语言————功能(方法、函数)可以被加入或去除,新的类或对象可以被建立,新的模块可以出现。大多数动态语言采用动态类型。通俗的讲,如果你用的是动态语言,你就可以编写代码在运行时刻增加、删除或修改替换同一程序中的其他代码,让你的程序像变形金刚一样灵活。

有什么意义呢?想必大家都听说过“依赖注入”或者“面向方面”编程,其思想就是按照关注点分别实现相关业务逻辑单元,再通过配置等手段将各个单元进行组装,形成完整的应用系统。好处就是各个单元能够更加简单、独立,将来维护、修改的代价更小。动态语言可以更好地支持“依赖注入”的思想,比如你可以先不管用户身份验证,实现业务功能,再写一个身份验证管理模块,然后写代码让系统在运行时调用每个业务功能前验证用户身份和权限。当然,这个例子在Java等静态语言中已经可以实现,比如用AspectJ, Spring等,但动态语言的优势是:实现类似的功能非常简单,不需要复杂的框架和配置文件!造成差别的原因是:静态语言可以用reflection查找元数据,却不能在运行时刻修改程序结构,所以一定要一个大的框架,实现各种回调及配置机制,以支持代码“织入”。

以上谈的“依赖注入”只是一个例子,实际上动态语言的威力还远远没有挖掘出来。如果各位有兴趣看看Rails的源代码,就会发现很多用动态语言实现起来很简单,用静态语言却很复杂的地方,这也是Rails使用Ruby语言的原因。举个例子,在JAVA编程中,要为每个数据库字段在对应的类中添加一个属性,再用配置文件“告诉”Hibernate这个字段与这个属性是对应的;在Rails中你就不用做这些工作,利用Ruby的动态功能,Rails会悄悄替你添加相关的属性(代码里看不到),你的DB里有什么字段,在代码里就可以直接读写什么属性,很简单吧。你也可以说,这有什么了不起,软件设计的时间主要花在分析设计上,这几分钟省下的时间可以忽略不计。好吧,如果你像我一样,每天都在和几十个表打交道,你知道干这些“体力活”有多烦,敲打着每页代码里的属性声明和get(),set(),简直是浪费生命!实际上,这个例子只是展示了动态语言的九牛一毛,很多动态语言用几行搞定的功能,用静态语言要几十行,不说节省的调试时间,从质量的角度考虑,代码少了错误就少了,测试时间也能省下一些。

好了,当我们理解了基本概念和原理,我们才可以讨论动态语言的前途问题。我不知道PHP算不算动态语言,也不关心Ruby和Python哪个更有前途。从理论上讲动态语言能够做到静态语言所有的事情,同时拥有运行时刻改变自我结构的能力,尽管这种能力还没有被充分发掘,但也在一些具体环节上赢得了不菲的进步。但在实践当中,动态语言对IDE的支持比较差,比如智能输入(那种你在对象名后打个点,系统列出所有方法帮助你输入的功能)就比较难实现;还有,性能不够好;再者,因为多数动态语言是采用动态数据类型的解释性语言,没有编译过程,一些类型引用错误不能及时发现;而且,动态语言的程序大多以源码形式运行,如果用于商品软件,可能不利于保护知识产权......还有一些,恕不一一列举。虽然有诸多缺点,但笔者认为这些都是技术和时间问题。历史的脚步会跟随那些更加简练的、表现力更强大的语言前进。我们也曾质疑过JAVA的性能、IDE、大规模部署案例等等,但我们不能阻止Java变成当今如日中天的语言。

那么,我们再来看看Java和.NET平台对动态语言的态度。无疑,都在全力支持,修改虚拟机添加对动态语言的运行支持能力。最后,也许有一种动态语言会运行在JVM上,取代Java在Java平台上的地位。在.NET世界,原本就不限语言,C#和VB.NET用的较多,但要么C#加入动态支持,要么会有另一种动态语言喧宾夺主。最好的结果是:一种新的动态语言,既可以运行在.NET Framework上,又可以运行在JVM上,可以调用两者积累的大量库功能。再说一遍,我不知道下一个主流语言是什么,但我相信会是一个有动态特性的语言。给出几个候选:Ruby, Python, 动态Java,动态C#,动态D语言,等等。

最后,我不希望又成为谩骂和嘲笑的目标。每个人都有自己的不足之处,所以需要在一起讨论,共同进步。如果你有任何意见,到我的blog上留言,我会认真回复。我已经写15年程序了,现在是一家海外上市公司的软件管理人员,每当外国同事用英文问我:Why are there so many four-letter words in Chinese technical forums? 我就非常尴尬。真的希望大家不要再丢自己人的脸了,我们中国有悠久的文明,可是国外看不到,看到的只是中国人在每个论坛上大骂。我也想在此大骂,可我鄙视骂人者。 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: 完成数据库课设的回顾: 1. 通过完成数据库课设,我们已经掌握了数据库的基本概念和操作,深入了解了数据库的设计和实现。 2. 学习了常用的数据库管理系统(DBMS)和数据库设计工具,如 MySQL, SQL Server 等。 3. 提高了我们的编程能力和综合能力,学会了如何使用编程语言如 SQL, PHP, Python, Java 等连接数据库,并进行增删改查操作。 数据库课设的展望: 1. 随着互联网的发展,数据库技术将会变得更加重要,将会在各个领域得到广泛应用。 2. 随着大数据和云计算的普及,数据库管理技术也将会发展得更加先进。 3. 数据库课设是数据库技术学习的重要组成部分,通过完成课设可以进一步提升自己的能力,为将来的学习和工作打下坚实的基础。 ### 回答2: 回顾: 在进行数据库课设的过程中,我深刻地体会到了数据库的重要性和广泛应用的实际意义。通过课设,我学会了如何设计和实现一个完整的数据库系统,包括数据库的概念设计、逻辑设计、物理设计以及数据库的具体操作和查询等。 在课设的过程中,我遇到了许多挑战和困难,但通过团队合作和不懈努力,最终完成了一个功能完备、可靠高效的数据库系统。我们利用所学的数据库知识,成功地设计了数据库的结构和实体关系,并实现了各种复杂的查询和操作功能。 通过与数据库课设的实践,我深入理解了关系数据库的概念和原理,并学会了使用SQL语言进行数据库的操作和管理。同时,我也学会了如何规划和优化数据库的结构和性能,使其更加适合特定的应用场景。 展望: 随着技术的不断进步和应用需求的不断增长,数据库领域的发展空间将会越来越大。我将继续学习和深入研究数据库相关的知识,不断提升自己在数据库设计、管理和优化方面的能力。 未来,我希望能够参与更多的数据库项目,对实际的应用场景进行深入研究,并解决其中的问题和挑战。我希望能够在数据库领域取得更高的成就,并为实现数据管理和应用的智能化做出贡献。 此外,我还将继续关注数据库技术的发展动态,学习新的数据库系统和技术,不断拓宽自己的知识广度和深度。我相信,在不断的学习和实践中,我会成为一名优秀的数据库工程师,为构建高效、可靠的数据库系统贡献自己的力量。 ### 回答3: 对于我来说,做完数据库课设是一次非常有意义的经历。通过这次课设,我对数据库的原理和实践有了更深入的了解,并且提高了我的数据库设计和管理能力。 在回顾这次课设时,我发现自己在数据库建模方面有了长足的进步。在开始设计数据库的时候,我能够清晰地分析需求,并将其转化为合适的实体和关系。我学会了使用E-R图和关系模式进行数据库设计,这让我能够更好地组织数据和建立数据间的关联关系。另外,在数据库的规范化过程中,我也能够识别出冗余和不一致的地方,并进行相应的改进和优化。 在数据库的实现和管理方面,我对SQL语言有了更深入的理解。我学会了使用SQL语句进行数据的插入、更新和查询,能够根据需求编写复杂的SQL语句,并对其进行性能优化。我也学会了创建和管理数据库的用户和权限,保证数据的安全性和完整性。 展望未来,我希望能够继续深入学习和应用数据库的知识。数据库在现代信息技术中起着重要的作用,它在各个行业都有广泛的应用。我希望能够学会更多的数据库技术,如NoSQL、分布式数据库等,以适应不断变化的信息时代。我还计划通过参与更多实际的数据库项目,来提高我在数据库设计和管理方面的实践能力,加深对数据库知识的理解。 总之,做完数据库课设让我受益匪浅。它不仅帮助我提高了数据库的专业知识,还培养了我的分析和解决问题的能力。我相信这些经验和技能将对我未来的学习和职业发展有很大的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值