领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Jonathan Allen 译者 张龙 发布于 2011年1月5日
在过去几年间,多线程编程已经成为了一个热门话题。虽然我们长久以来一直都希望能有高速响应的用户界面,但实现这个愿望的工具却迟迟不见踪迹。对于大多数框架(包括.NET程序员所使用的那些框架)来说,对用户界面的更新仍然局限于单独一个线程,同时,硬件制造商已经转向了多核来代替更快的CPU。
C#与VB一开始提供了非常简单的并发支持,这是通过对监视器与委托使用lock/SyncLock关键字来实现的,异步程序库通过这两个关键字实现异步编程。在随后的几个版本中,我们并没有看到这两种语言在异步领域有任何进展,微软的精力都放在其他领域上了。随着.NET 4.0的到来,情况有了很大的变化。.NET 4.0引入了3个新的程序库:Task Parallel Library(TPL)、Parallel LINQ以及Coordination Data Structures(CDS)。这些程序库构建在增强的语法之上,如lambda、closure以及LINQ,极大简化了多线程开发工作。但这些库也不是十全十美的。Parallel LINQ看起来没什么问题,而对TPL的异步调用依旧充满了坏味道,有时还会出错。
如今的异步模式的一个大问题在于他们组合的不好。每个异步操作都需要通过回调链接到下一个。但回调是无法组合的,每一步都是独立的函数,无法划分到常见的编码结构中,如循环、using或是try——catch块。
结果,大多数开发者实际上并没有使用异步模式。他们转向了并发的多线程,依赖于后台线程和手工同步。但这种方式也存在着问题。由于将线程浪费在了阻塞的I/O上,因此你失去了操作系统所提供的性能与可伸缩性的优势,比如说I/O Completion Ports,更不必说调度大量线程给内存带来的压力了。此外,你还可以使用单独一个线程和循环,这意味着每次I/O操作都得等到之前的操作完成后才能开始。
也就是说,我们按照这种方式编写代码已经有很长一段时间了,在大多数情况下都没什么问题。通常,计算机都有足够的速度和内存来处理对线程的草率使用,这使得将数据编排到UI线程变得不那么困难。那到底有什么变化呢?
有三件事:
首先是基础项目。Async CTP并非凭空出现的,它构建在之前的大量研究与产品项目基础之上。这包括了异步语言Axum、Task Parallel Library(TPL)、Reactive Extensions(Rx)以及F#的异步工作流。当这些工作全部完成后,VB/C#中的异步语法将成为下一步工作。
其次是参与的人。与很多研究项目会雇佣毕业生不同,Somasegar打造了一个由5个天才项目经理所构成的团队,他们负责构建语法,以此证明异步编程可以像同步编程一样简单。这些开发者是Avner Aharoni、Mads Torgersen、Stephen Toub、Alex Turner以及Lucian Wischik,他们都是.NET领域的名家。没有他们的协作与奉献,CTP是不可能出现的。
最后是Silverlight。除了是Flash的替代者以外,Silverlight还是微软移动战略中的重要棋子。除非开发游戏,否则不使用Silverlight是没法在Windows Phone 7上编写应用的。Sivlerlight并不支持异步的I/O操作。曾尝试将WPF代码移植到Silverlight上的开发者知道,Sivlerlight是不支持异步I/O操作的。你别无选择,只能使用异步模式。Lucian在其“Async CTP简介”一文中阐释了这么做是多么的复杂。
当然了,这可能意味着C#与VB应该支持异步语法。如果这在C# 5/VB 11中真的发生了,那么一旦发现语义不正确就没机会再移除掉了。这需要以牺牲其他特性作为代价,从“编译器即服务(compiler-as-a-service)”到各种细小的特性。
查看英文原文:Why Microsoft Believes that VB and C# Need an Asynchronous Syntax
译者 张龙 热衷于编程,乐于分享,对新技术有强烈的探索欲,对Java轻量级框架有一定研究。
在实施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概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
7 条回复
关注此讨论 回复