领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Werner Schuster 译者 贾晓楠 发布于 2009年3月28日
Clojure是一种LISP风格的语言,运行在JVM上。Clojure的一大特色就是其并发机制,它支持不可变的数据结构(Clojure是来自于可持久化的数据结构)。Clojure还有一个特色是软件事务存储(Software Transactional Memory,STM),其支持用事务代替锁和互斥器来更新共享内存。STM还是一个有争议的技术,还需要更好的证明自己,一个简单的办法就是访问一个JVM上的实现。
Clojure有望在近期发行1.0版,已经有很多Clojure库已经可以用了。其中一些是受到了Ruby库的启发,这里只列出几个:
Clojure库受Ruby库的启发,是这两种语言的相互影响的一种途径。另外一种途径是JRuby——两种语言共享了相同的底层运行库——JVM。
Daniel Kwiecinski在一篇博客中探索了融合JRuby和Clojure的想法,并实验了让Clojure数据结构和一些特性作为Ruby对象在JRuby中能用。就这一点上特别有意思的是Clojure的可持久化的数据结构,例如它的可持久化向量(Persistent Vectors)。注意:在这里,“可持久”并不是指数据被保存在磁盘上。可持久化的数据结构是不可变的;像插入之类的操作也许能用,但需要对数据结构做一个完整的“拷贝”。Clojure的实现和不变的约束允许避免被迫做一个完整的“拷贝”;而只主要复制一些相对较小的要素。Karl Krukow演示了Clojure的可持久化向量的实现,还解释了它的原理。
JRuby开发人员的另一个机会是Clojure支持的STM,它提供了一条路让Ruby开发人员去尝试这个概念。即使Ruby代码没有明确使用任何Clojure STM特性,也可以用Clojure来写底层的应用模型,而让JRuby来做前端部分,比如Rails或者其他Ruby框架。
还有一个选择是用Clojure来解决性能瓶颈。尽管JRuby的性能还在稳步提升,但仍有一些时候需要在性能和(J)Ruby 的多态与灵活性之间权衡。在MRI中,在一个Ruby应用程序中,性能瓶颈可以通过写一些本地扩展来解决。在JRuby中,一种方案是用Java写代码, 用Java源代码,或者生成JVM字节码都行(要么用Ruby的字节码DSL生成字节码,要么用Clarles Nutter的Duby之类的语言)。
选择一个低级的系统语言,比如C(用于MRI)或者Java(用于JRuby)有些短处:这降低了Java的等级,也丢掉了一些特性,比如Block、很多类型的元编程等等。
要解决这个问题,Clojure是一个可能的方案:这种语言具有多种级别的灵活性。例如,普通的Clojure函数都有较低的调用开销,因为它们都尽量降为静态函数调用。Clojure还提供了不同风格的运行期多态,例如用multimethods的形式。
Clojure是一种LISP语言,并且具有强大的宏系统。宏可以实现编译期的元编程(compile-time metaprogramming),帮你你把生成代码的工作扔给计算机(而不是写样板文件或者反复手工写Java代码)。Clojure代码最终会编译成JVM字节码,并且支持提前(Ahead Of Time,AOT)编译。Azul的Cliff Click研究了几种JVM语言的性能,其中包括Clojure和JRuby,并提供一些有关Clojure性能的信息。总之,Clojure提供了很大的便利让你用优雅的风格写出运行飞快的代码。
硬币的另一面自然是依赖的问题:使用Clojure意味给项目增加一个新的依赖。这究竟是不是个好主意,把Clojure这样的语言加入一个工程,是许多团队都会面对的问题。
并发性的解决方案STM,并且共享数据已经被广泛讨论。Clojure的创建人Rich Hickey跟Azul的Cliff Click有一个很长的讨论,议题就是STM。关于STM的另一个信息来源是去年九月的ACMQueye的并发性专刊。
你怎么认为:JRuby和Clojure——是一对好搭档吗?
查看英文原文:JRuby and Clojure - A Good Match?
在实施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 条回复
关注此讨论 回复