领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Sadek Drobi 译者 郭晓刚 发布于 2009年2月11日
大约有750人评论了《Real World Haskell》的网上预览版。作者之一John Goerzen近日在与O’Reilly的访谈中介绍,此书用现实的代码、现实的例子和技巧去介绍Haskell在业务环境中的应用。在访谈中,Goerzen解释了他为何认为Haskell是一门值得学习的语言,剖析了Haskell的各种特质,还讨论了一些可能令人对Haskell敬而远之的问题根源。
John Goerzen承认Haskell要求重学大量基础,并且认为对于具有命令式语言及面向对象编程背景的人来说,纯洁性(purity)和惰性(laziness)是最大的观念转变。
他强调在Haskell中,“任何有可能改变系统全局状态的事物都被严密隔离”,并“用类型系统标记出来”。这样有助于大大减少实现错误,因为代码中的不纯元素都是静态类型的,编译时即可识别错误。这个特点将Haskell与Python等语言区别开来。纯洁性也有利于测试,尤其当程序的结构是由许多小函数嵌合而成的时候;比如Haskell的纯洁性就有效地降低了通过QuickCheck(译注:Haskell开源测试框架)进行测试的难度。
“惰性(laziness)是Haskell的中心概念之一。当问到“惰性对现实世界的程序有何帮助?” John Goerzen着重说明了惰性在I/O中的应用:
如果我用Haskell写一个小小的过滤器或者解析器,不需要怎么操心按行或者按块读取输入的事情,因为我可以直接用getContents ,然后把函数一个个串起来。我喜欢用Haskell写Unix过滤器。
[……]有了输入端的惰性,也就有了输出端的惰性,因为打印输出的时候不需要立即完成全部求解。[……]
最后你得到的是一个设计非常简明的程序,因为不用折腾输入行的缓冲、迭代之类的事情,而且产生的程序只需要固定大小的内存。
John Goerzen还谈到Haskell在表达能力上的优点,其优势一是来自模式匹配,二是因为函数能把事物表达得既扼要又易读,适合阐述问题之余,又容易看清逻辑推导的步骤。访谈人更是认为可以“用函数和词语建立一套词汇,再用那套词汇去作为书写问题解答的语言”。 “用Haskell摆弄函数确实就像用Perl摆弄字符串那么简单”,Goerzen如是说。
然而,Haskell语言的某些特性可能令来自OO或命令式语言的人们敬而远之。比如它的递归方式就“可能有点吓人”,因为类C语言所用的“变量递增方式是一种代价非常低的操作”。不过,Goerzen辩解说,尽管“高级语言一般达不到C的速度”,但GHC编译器会将递归重写成迭代,“非常高效地把你用递归表达的程序转换成更适合于CPU执行的形式”。
有些人认为惰性就是“换来类型推导、纯洁性这些东西,却丢掉了对时间及空间复杂性的掌握”。John Goerzen认为这个观点要辩证地看:
我举个例子,比如随便用哪种语言写一段程序[……],要求一次过读入整个文件,然后加以处理。打开文件、调用读取操作、将整个文件读入内存,都是可以的。有些人会假设要处理的文件只有100K,那么这样做当然没问题。但如果你给他们一个2G大小的文件,这种做法就行不通了。
凭着他的经验,John还批驳了关于Haskell的IO系统孱弱又难学的说法。他说,Haskell里吓跑最多人的怪兽要数Monad,但他要强调“无需挠破头去理解什么是Monad、Modad做些什么,照样可以写出无懈可击的Haskell程序去处理IO[之类的现实工作]”。比如使用IO monad,不需要以理解Monad为前提,粗浅地把Monad当作“一种分隔纯与不纯代码的盒子”就足够了
总而言之,John Goerzen认为虽然“要把Haskell里的各种东西都叫上名字要费不少功夫”,不过之后会顺畅许多,因为“看函数的类型就能把它们的所作所为知道得八九不离十”。照他看,探索Haskell是一桩赏心乐事,哪怕Haskell不会成为万众瞩目的明星,但“那么别致又有趣的语言,怎么都值得学一学。”
InfoQ中文站补充消息:《Real World Haskell》中文版正由AlbertLee翻译之中,他在博客上放出了一部分预览章节。
查看英文原文:What Makes Haskell Worth Learning for Real World Applications译者 郭晓刚 是InfoQ中文站架构社区编辑,创建并终结过数家软件小企业,翻译过多本技术书籍。
i love haskell
书评一则(Rediit):
www.reddit.com/r/programming/comments/8btml/is_...
在实施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 条回复
关注此讨论 回复