思想者的伊甸园

热心助人,冷眼观潮

刘德伟ID:goodxp
19545次访问,排名5534好友0人,关注者1
喜欢围棋,游泳,篮球,读书
goodxp的文章
原创 9 篇
翻译 4 篇
转载 0 篇
评论 27 篇
最近评论
半瓶墨水:我在bluehost上面有一坨空间,你要用的话可以联系我,可以在这个地方有子域名:peerat.com,比如goodxp.peerat.com
我已经买了两年的服务器,又续了两年费用,还算稳定吧。不好的是:国外的空间访问起来比较慢,有可能被屏蔽

realfun AT gmail DOT com
goodxp:csdn 的 blog 真是够呛——
1. 打了一半“保存为草稿”,结果丢了一半!
2. 如果从 Word 贴过来,格式字体没法看!
3. 这么大的显示屏,只给你巴掌大的地方编辑文章,电脑当手机用!

不说了,朋友们看在我老眼昏花给大家翻译的份儿上,推荐一个靠得住的地方,我要挪窝。谢谢了!
琳琳的小狗:无知者无畏……
belfast:实在是说的太好了,可惜软件公司的管理者不会理解这些.
yuanzhubijian:有一种小说的味道。
文章分类
收藏
    相册
    软件开发
    .NET和Java将有更好的动态语言支持(翻译)(RSS)
    AJAX, 鸡肋!(RSS)
    Linux帮了Windows的大忙(RSS)
    Rails 2.0 正式发布——开创Web开发的新境界(RSS)
    TIOBE 2008年1月编程语言排行榜——Python 赢得 “2007 年度语言”(RSS)
    什么是 RESTful 设计(RSS)
    动态语言的原理及展望(RSS)
    工厂模型,软件工程之原罪(RSS)
    拿什么拯救你,Java(RSS)
    编程语言大趋势——评2007年11月TIOBE 排行榜 (RSS)
    岁月之足
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky

    原创 动态语言的原理及展望收藏

    新一篇: Linux帮了Windows的大忙

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

    有什么意义呢?想必大家都听说过“依赖注入”或者“面向方面”编程,其思想就是按照关注点分别实现相关业务逻辑单元,再通过配置等手段将各个单元进行组装,形成完整的应用系统。好处就是各个单元能够更加简单、独立,将来维护、修改的代价更小。动态语言可以更好地支持“依赖注入”的思想,比如你可以先不管用户身份验证,实现业务功能,再写一个身份验证管理模块,然后写代码让系统在运行时调用每个业务功能前验证用户身份和权限。当然,这个例子在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? 我就非常尴尬。真的希望大家不要再丢自己人的脸了,我们中国有悠久的文明,可是国外看不到,看到的只是中国人在每个论坛上大骂。我也想在此大骂,可我鄙视骂人者。 

    发表于 @ 2006年09月21日 00:51:00|评论(loading...)|编辑

    旧一篇: AJAX, 鸡肋!

    评论

    #aux 发表于2006-09-23 11:12:00  IP: 219.134.171.*
    长见识了
    #luckix 发表于2006-09-23 11:14:00  IP: 219.134.171.*
    动态语言真的这么神?
    #lihaonan 发表于2007-02-05 10:32:04  IP: 220.174.208.*
    正是我要找的东西
    #KF5536 发表于2007-02-24 20:39:35  IP: 221.236.41.*
    我是个接触电脑的人? 我想学编程你认为我该用什么语言叫好呢? 我QQ 349878698 谢谢 能告诉我吗?
    #goodxp 发表于2007-05-23 10:09:45  IP: 61.144.193.*
    To KF5536:

    如果你是计算机专业的学生,而且将来希望成为大师级的人物,先学好C或者汇编语言。这些是基本功。

    如果你想快点找工作,学C#或VB,容易上手,可是薪水会低一点。

    如果你是开源爱好者又懂英文,学习Ruby或Python,不用花钱,玩的又酷又爽,社区里的朋友都是高手。

    如果你有钱又有时间,还想要通过卖软件多多赚钱,学习Java,不求最好,只要最贵。Java牛市怎么也能再挺5-10年。
    #潜水者 发表于2007-06-03 01:02:07  IP: 219.134.41.*
    大侠果然见识广泛,偶已经用java写程序有4年时间了,最后发觉自己离最新的潮流太远,似乎很难跟上世界变化的节奏了。我现在也在一家电信设备供应商做网管服务器软件的研发工作,从一名程序员变成初级管理者,每天的大部分时间都是沟通,协调,出版本,和测试部开会等,离心爱的代码越来越远了,但是我喜爱编程,希望能在技术上有更深的发展,请问我应该怎么办?谢谢!
    #goodxp 发表于2007-06-03 15:58:54  IP: 58.61.82.*
    To 潜水者:
    我还不是一样,白天赚钱吃饭,主要靠JAVA。可晚上的时间是自己的,只要选择一个喜欢的方向做下去,总会出头的。如果没有付出,哪能有回报呢?
    #wxy232 发表于2007-07-01 17:42:34  IP: 218.18.149.*
    我也是刚接触python,读到这篇文章很受启发,多谢
    目前对动态语言的主要感受就是简单、灵活、高效,对于多变的展示层,教本语言应该是一种趋势。
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © goodxp