说到PHP可能最容易让人想起的就是著名的LAMP架构Linux Apache MySQL PHP而这全开放的平台似乎和“封闭”的微软技术距离比较远。不过微软其实一直没有放弃对PHP的“追求”这次演讲谈的就是微软在这方面的努力以及取得的成果。我推荐这个幻灯片的主要原因之一便是它写的非常有水平尤其是开头一部分。在幻灯片一开始阐述了微软对待开源的态度希望和PHP的同志们拉近一些距离嗯就是这个观点“微软已经不是当年的微软了”它变了变得怎么样了呢变得拥抱开源了“开源的朋友们不要看到“微软”两个字就心生厌恶来抱一个”。此外还引用了微软首席软件架构师Ray Ozzie如果我没有认错的话的言论I think any company these days, any technology provider, even Microsoft, has to find the right balance of being a contributor and user of open source.我认为如今任何的公司及技术提供商即使是微软也必须在开源的用户和贡献者中寻找一个合适的平衡点。如果说Ray Ozzie可能还是在“王婆卖瓜”的话那么Linux创建者、开源领袖Linus Torvald最近发表的话语应该更有“参考价值”Oh, I’m a big believer in “technology over politics” ... There are “extremists” in the free software world, but that’s one major reason why I don’t call what I do “free software” any more.I don’t want to be associated with the people for whom it‟s about exclusion and hatred.哦我强烈认为“技术高于政治”……自由软件世界中有一些“极端主义者”这也是我不再把我做的事情称作“自由软件”的主要原因。我不想和那些有排斥和憎恶心态的人产生关系。这句话在有人反对“微软为Linux提交GPL代码以提高Hyper-V的兼容性”时说的。Linus的意思再明确不过了“技术就是就是技术不要有门户之见”。顺便一提开源软件Open Source和自由软件Free Software是有很大区别的不应该混为一谈。就我个人而言我喜欢“开源”而不喜欢“自由”。我也不喜欢FSF觉得微软永远是错的不喜欢它搞某些东西的方式。不过肯定也有人喜欢每个人都可以有自己的观点。好像有点说歪了。其实我也不知道微软是不是只是“口头”上讨好开源界但是我至少看出微软在想办法证明自己——不管这个证明是不是有什么陷阱有什么“不可告人的秘密”。在这方面微软至少在摆事实讲道理而不是随口说“我就是拥抱开源”。我觉得在中学里学写议论文的时候大家都应该已经知道就被告知论述的基本方式是“摆事实”“讲道理”。可是从平时讨论的时候我却又觉得根本不是那么一回事情。说句得罪人的话我觉得许多朋友缺乏必要的逻辑思维能力会产生非常多的逻辑谬误出来但是却都还坚持自己是正确的。搞到最后吵起架来彼彼皆是。而且往往在这个时候无数匿名兄弟就跳出来发挥自己的聪明才智各种讽刺挖苦谩骂的奇思妙语一个接一个令人宛如置身于天上“猫扑”人间“天涯”。其实坚持自己是正确的不要紧我也喜欢坚持自己的意见谁不希望自己是正确的呢但是要拿出理论根据来。其实作为技术从业人员在许多问题上拿出根据来非常简单例如写一个程序便知泛型会不会降低性能。如果有些问题很难用数据说明问题如数据获取太难那么至少也要找出一些别人的看法来支持自己的观点。如果一味地“我认为”“我觉得”效果自然就大打折扣了。因此我现在也经常会有意地在文章中引用自己或其它的人的说法至少可以让自己有“底气”一些而不会感觉像是在扯淡。我个人比较反感“光说不练”的人我希望看到的不是“个人说法”而是多个人的观点或者是实际效果。例如前几天有个匿名朋友在我博客上留言偏要坚持“静态方法的调用会阻塞其它线程访问”我说“你试试看就知道了”他也原样复制一遍发回给我针锋相对不屈不饶。不知道他最后是否认为他达到了论证“我在误导初学者为自己的书作广告”的目的我写过书吗至少我当时既无奈又窝火。既然谈到了技术那就再谈远一些。这位认为“静态方法的调用会阻塞其它线程访问”的朋友证明了他自己在某个方面学的有问题而我前几天发表的Double Check文章中有许多朋友提出“怎么能lock在一个实例字段上”“应该lock在一个静态字段才能产生效果”。换句话说在这些朋友看来一个实例方法是不会产生线程安全问题的——虽然ASP.NET MVC框架的DefaultControllerFactory就出现了这样的毛病。这说明了在多线程开发方面社区的整体意识还处于一个非常薄弱的程度——希望我这么说不会引起各位的不满。此外昨天我意识到原来很多朋友用了很久的for却无法写出其等价的while写法又想起之前发现公司里的大部分同事不知道C#中使用开头的字符串表示法中如何包含一个双引号。这应该都是基础中的基础应该人人知道不是吗但事实就是让我感到惊讶许多朋友认为自己不停地在学东西ASP.NET MVC、SliverlightWPF一个一个地学但是最后最普通的东西却不知道。结果工作找不好薪水拿不高最后一崩溃又开始叫嚷着这个行业没前途。那么有没有想过换一种思路来学习例如不要随意轻视一些东西说到这里我又想起其它一些事情那就是我觉得如今社区里的“风气”出现了比较严重的问题。例如最近不止一次发生围攻面试者的“群体性事件”每次有人发表面试对方的题目之后就有大量朋友上前表示不满对于简单的题目认为太基础了考不出能力。对于困难的题目就认为它太难钻牛角尖“又不是在招算法研究人员”。总之我发现似乎只要是遇到了回答不出的问题都会遭到许多人的反对。似乎社区中许多朋友都认为自己怀才不遇“我来面试你你也过不了”都认为“千里马常有而伯乐不常有”。有朋友问我你面试别人时问些什么我难以启齿啊因为我问的往往也是那些问题可是一下子就被鄙视了。其实没有什么东西是简单的有时候问问题并不是要得到结果而是想从中看出一些细节来例如一个人的思考方式和深度——我问某某和某某在写法上的区别不是在搞“茴香豆”是由其他目的。不知您是否相信我在面试时会让对方谈一下最喜欢的体育运动的规则最近似乎认为我“无聊”的朋友也多了起来认为我写的东西没有什么实际意义认为我写这些东西都是在“炫耀”。其实我的文章都是源于实际工作中的想法我认为对于实际工作是非常有帮助的。我不喜欢《XX编程三百例》式的文章我认为那是“鱼”而不是“渔”。我不知道那些朋友希望我写什么样的文章才算有实际意义但是我想最有意义的应该是提高您的能力而正是如此我认为您更应该关注我在成长过程中想到的这些问题。轻易鄙视这个鄙视那个就好像鄙视面试者那样这可不好。鄙视一个东西不要紧但关键是你思考了没有不要鄙视了半天但是到最后也不知道发生了什么事盲目地忙碌。思考很重要例如换一种思考方式就会得到不同凡响的结果。至少这也是锻炼逻辑的一种有效方式。想要验证自己想清楚了没我认为最好的方式就是写一篇文章。如果您想明白了一定能把它说清楚。反过来说也一样如果您说不清楚基本上就是因为您没有想明白。说了好多越扯越远喝口水回来继续吧。PPT的正题自然是讲述微软在PHP平台上做出的努力和取得的成果其中列举了之前与康盛创想合作进行的性能评估结果证明在Windows Server 2008 IIS上运行PHP从平均相应时间每秒处理的请求数以及数据吞吐量等多方便均显著优于Linux Apache的托管方式。当然这个结果也受到了一些质疑例如为什么在Apache中使用了mod_php而不是在大多数情况下性能更好的FastCGI。关于这点我没有测试过我不清楚。不过这并不要紧我想说的是Windows的性能真的不差。