领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Srini Penchikala 译者 郭晓刚 发布于 2009年1月3日
Meta Programming System(MPS)是JetBrains开发的面向语言编程的新工具。开发者可以用它扩展编程语言,也可以用它为企业应用创建领域特定语言(DSLs)。JetBrains开发团队近日宣布推出MPS的beta版。
MPS提供的软件开发环境可以创建新的定制语言,也可以扩展现有语言,然后用它们开发面向领域的应用。MPS还可以定义新语言的类型系统、约束和专门的编辑器。MPS用一棵抽象句法树(AST)来维护代码。AST由节点组成,节点又包含属性、子节点和引用,程序代码就靠AST和这些节点完整地表达出来。创建新语言的时候,开发者定义代码编排和表达的规则,还可以规定语言类型系统的组成元素。MPS凭借这些规则即时检查程序代码,减少用新语言编程的出错机会。MPS还采用了代码生成的办法:用新语言在更高的层次上表达,然后MPS生成Java、XML、HTML、JavaScript等语言的可编译代码。用MPS建立新语言的时候,必须从BaseLanguage扩展。MPS已经提供了一些常用的BaseLanguage扩展,协助开发者处理字符串、容器、日期、正则表达式等语言成分。
面向语言编程(LOP)是一种新的编程风格。在LOP里,语言好比传统编程中的类和方法,是搭建软件所用的建筑材料,开发者根据需要,或创建专门的新语言,或对旧语言作扩展。Martin Fowler 曾撰文说明用语言工作台作为IDE工具去实现面向语言编程,也介绍过用MPS作为语言工作台。
MPS还适合用来创建DSL,因为它可以为任意新语言实现定制的语言编辑器和其他约束条件。不熟悉传统编程的领域专家,可以用本行专业术语构成的DSL在MPS里工作。
MPS软件对所有人免费,其中大部分代码还会以Apache 2.0许可开源。MPS起初是JetBrains从2003年开始的一个研究项目,JetBrains员工已经用它开发过一些新产品。目前团队的主要目标是下个月的Beta 2版,以及2009年第一季度的1.0版。11月的时候JetBrains还发布过IDE产品IntelliJ IDEA的8.0版,团队协作工具的TeamCity的4.0版。MPS beta版下载和概念说明,请参阅他们的网站。网站上还有用户指南、教程和专门的博客站点介绍MPS工具的详细信息。
InfoQ采访了JetBrains公司MPS核心开发者Konstantin Solomatov,向他询问MPS的软件功能和项目未来的路线图。InfoQ问及MPS与其它建模及代码生成工具的对比,比如Eclipse Modeling Framework(EMF)、openArchitectureWare(oAW)。
MPS所依据的概念与EMF、oAWE类似。三种技术都可以创建元模型,也都可以描述编辑器、自动完成、模型转换(MPS称之为“生成器”)等方面。EMF模型通常用图形编辑器来编辑,你可以用方框线条绘制出代表各实体的图解。这种做法对某些领域很有效,比如绘制ER图。但我们认为不适宜用EMF创建任何相对复杂的软件。
oAW最值得注意的部分的xText框架,它定义的文字型DSL可以被解析成EMF模型。不过用这种方式创建语言有其局限。如果在同一个文件里混用多种语言,必须保证文法不会出现二义性,也就是说所有的输入都只能存在一种解释。文本型的语言很难保证这一点。比方说有两家厂商都想为Java补充一种支持金融货币的语言,而两家厂商都在语言里新增了Money类型。那么,如果代码里两种类型都用到了,我们解析文件的时候就无法分辨一个Money类型的变量到底属于哪一种语言。
MPS把模型表示成一棵可以直接编辑的抽象句法树。在MPS里,代码看似文本,在很多方面的表现也如同文本,但由于我们从不需要在代码和文本之间来回转换,也就完全不用担心文法上的二义性。
好像MPS还可以编排语言的文法。这项功能与Oslo和OMeta等工具的类似功能有何异同?
因为MPS不是基于文本的,它没有任何文本上的文法。定义语言就是定义它的抽象句法树,它的抽象文法。而没有文本上的文法,也就没有语言兼容的问题,语言从定义上就是兼容的。Oslo和Ometa都是基于文本的,因此都有类似于xText的问题。
Oslo和Ometa只能定义语言的解析器,与之相比,MPS的功能更多,能定义语言的编辑器、约束、类型系统、数据流分析,还有生成器。
JetBrains开发团队在那些产品中采用了MPS作为建模和开发工具?
其中一个是代号为“Charisma”的问题跟踪系统,它也会在2009年第一季度公开发布。它是完全用MPS编写的。Charisma也成了MPS本身所用的问题跟踪系统,还被用到TeamCity凳产品中。在创建Charisma的时候,我们开发了一门完整的Web开发语言,在MPS中扮演相当于J2EE的角色。
MPS项目的未来路线图如何,有何新特性?
本次Beta的主要目的是收集MPS用户的反馈,并且决定将来的路线图。我们已经有1.0的计划,不过1.0版不会有任何大的变动和新特性。我们将在2009第一季度发布完MPS 1.0之后,再公布更长远的路线图。届时计划中应该会包括调试器和用于定义UI的若干新语言。
查看英文原文:JetBrains Meta Programming System Supports Language Oriented Programming and DSLs
译者 郭晓刚 是InfoQ中文站架构社区编辑,创建并终结过数家软件小企业,翻译过多本技术书籍。
希望有人能解释下devkit。
希望有人能解释下devkit。
据我的理解,devkit类似一个已有的开发工具包,里面应该包含了当前语言会使用的其它语言,或者说是领域特定语言。
Jetbrains这里给了一些概念,希望能有帮助:
www.jetbrains.net/confluence/display/MPS/MPS+pr...
在实施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概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
2 条回复
关注此讨论 回复