领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Werner Schuster 译者 宋玮 发布于 2007年5月29日
XRuby在努力创建一种编译器,能将Ruby编译成Java字节码。当然,编译器需要一种分析输入语言的方法,XRuby团队用流行的ANTLR分析器产生器创建了他们自己的Ruby分析器。分析器产生器的作用是接收一门语言的文法并产生代码以分析该语言。使用ANTLR意味着文法和分析器的创建工作必须从零开始,这不同于JRuby的方法。在JRuby里,Ruby分析器使用了另外一种叫做YACC的分析器产生器,而且JRuby选择复用该文法并使用Yacc的Java端口产生其分析器。
当被问到Ruby是否是一个分析起来比较困难的语言时,Wang Haofei(从事该Google Soc项目并且是XRuby团队的一员)做出了如下解释:
是的。该语言有许多模棱两可的地方。比如,“<<”可能是左位移操作,也可能是heredoc的起点。区分这两种情况需要维护状态(依赖上下文):
http://seclib.blogspot.com/2005/11/distinguish-leftshift-and-heredoc.html
其它像ID/函数的模糊性,字符串表达式替换,heredoc等等都很棘手。
当提到困难时,一个不错的问题是离目标还有多远。Wang Huofei:
XRuby第一个公开发行版已经可以处理全部ruby标准类库和Ruby on Rails(没有在对最新版做测试):
http://seclib.blogspot.com/2006/02/first-release-of-rubyfront.html
自此以后,Xue修正了一些bug,总的来说XRuby很稳定。在SoC项目进行过程中我们将编写和运行更多的测试,以帮助我们发现一些未知的问题。
Xue Yong Zhi是该SoC项目的指导者,而且也是XRuby团队的成员。
该Soc项目的一个主要部分是将现有的分析器迁移到ANTLR v3上。Wang Huofei:
1. ANTLR v3对v2进行了重写,通过LL(*)分析大大提高了分析能力,v2的分析能力不但弱很多(有限的LL(k))而且还迫使我不得不花时间去处理一些问题。基于ANTLR的分析器比别的分析器更容易维护,迁移到v3将帮助我们把分析器做得更好更清晰。
2. ANTLR v3将来应该有Ruby后端支持,所以我们可能会用Ruby编写Ruby分析器。
3. ANTLR v3的性能更好。
上面第二点十分有趣。Ruby缺少一个用Ruby写的Ruby分析器。编写处理Ruby代码的工具是一个问题。用Ruby写代码分析、重构工具和自动重构、格式程序等等甚至更多的工具并非不可能,但是很困难,因为还没有用Ruby代码分析Ruby源码的先例。有些工作,像Ryan Davis的分析树,用的是Ruby解释器的分析器(通过一个本地扩展)来获得Ruby源码的抽象语法树(AST)。AST是一颗代表Ruby源码的树,分析器工具必须了解代码的结构。然而,分析树不是一个完整的解决方案,因为当前的版本没有给出树上各个节点的源码位置。显然,像重命名一个Ruby源文件中的标识符这样的重构算法,需要知道标识符的位置在哪儿。
由于各式各样的Ruby IDE问世,这个问题在过去几年里变得更加明显了。这些带有代码分析器(用来警告代码中潜在的错误)并基于Eclipse RDT的IDE是第一个支持Ruby广泛重构特征的IDE。其他特征是支持基于Ruby的文件的,比如Rake文件——Ruby的make 或ant文件。问题是:这些工具都是用Java构建的(或其他语言)且Java IDE都使用JRuby分析器。
这意味着这些工具的功能都被那些语言禁固了,更糟的是,这些工具常常绑定到了特定的IDE上。例如,支持RDT的重构逻辑,对Ruby in Steel(建立在Visual Studio上的IDE)是不可用的。在Java界与之相比的区别是,分析器是可用的。像PMD或Findbugs这些工具都是用Java编写的,因此Java在哪里运行都可使用这些工具,更重要的是,可以用Java代码扩展这些工具。
因为该Soc项目的描述并没有100%说清楚基于Ruby的分析器的研究计划,Wang Huofei澄清了该项目计划:
这取决于我们做得有多好。即使不能满足Soc的进度表,我们也愿意做这些事情。
好消息。
制造代码工具一个必须的东西是AST,用来分析源码。前面已经提到的分析树,提供了一种表现Ruby源代码的格式。已有的基于分析树的工具,比如Ruby2Ruby可以把AST转换成Ruby源代码;如果某工具想修改AST并输出为Ruby源代码,这很有用。Rubinus,一个用Ruby实现Ruby VM的项目,也使用了分析树输出,用以把Ruby编译为Rubinius字节码,接着解释这些字节码。当被问到分析器的输出时,Wang Haofei这样解释到:
ANTLR有其自己内建的AST支持,这为我们序列化一个字符串或改变其他结构提供了很大方便。我们的分析器与分析树输出看起来很相似。在XRuby里我们把AST转换成像DOM这样的结构并使用Visitor模式产生Java字节码。
而分析树输出看起来还没有计划,很有可能把ANTLR产生的AST转化成分析树格式。一个类似的方法已经被JParseTree(JRuby的一个分析树端口)所采用,现在JRuby一部分额外软件包(JRuby Extras)提供了常用Ruby类库的JRuby端口。
从XRuby团队的blog可以得到更多关于XRuby及其分析器项目信息。
查看英文原文:Google SoC Series: ANTLR v3 Ruby Parser译者 宋玮 有多年软件开发经验,长期担任技术管理和项目管理工作,一直关心开源软件的发展动态以及软件过程和敏捷开发的实践探索。
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
论道WP第三篇专栏,以应用程序栏的使用为中心,包括了软键盘带来的问题、应用程序栏介绍、如何绑定应用程序栏的属性等几个方面的具体话题,为开发者顺利使用应用程序栏开发提供了具体指导。
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
1 条回复
关注此讨论 回复