与微软技术大师Jeffrey Richter零距离

来源:互联网 发布:华师在线网络教育 编辑:程序博客网 时间:2024/04/25 12:56

昨天Jeffrey Richter来华(主要目的好像是为微软中国研发集团做培训,另外还要参加我们作为赞助商之一的上海.NET技术大会),我作为他的两部经典之作《深入解析.NET》和《Windows核心编程》英文影印版的出版者,有幸陪同他在鸟巢、什刹海游玩了半天。今天又听了他在微软中国公司会议室的技术讲座,并有更多的接触。

 

技术讲座名为Building Responsive, Reliable and Scalable Applications,感觉可能和Jeff在Wintellect的课程Day 1差不多。中心主题是线程的好处与问题,在实战中如何用好线程。

 

我非开发人员,印象比较深的是讲座开始的引子。我们一般认为,线程是比较节省资源的,因此很有些“高手”会了多线程之后,动不动就开一个线程出来。Jeff指出,线程的省资源是相对新建进程而言的,其实它也有自己的内存和时间开销。他用一个简单的例子演示,在自己的机器上,Windows系统(他的系统好像是Windows 7 beta)开了1300多个线程之后,就内存耗尽了。而我们日常所用的许多程序都会开很多线程(Jeff给出的数据是平均13个),但是什么事情都不做。在他现场打开的任务管理器里,Outlook开了40多个线程,其次是Explorer,有30几个,而IE有好几个进程,都开了十几二十个线程。写作此文的时候,我打开任务管理器,显示一个svchost.exe就开了75个线程,System开了65个!而会后来自微软的Rick说,他的最大收获是I/O的那部分,此前一直没有搞清楚其中的底层机制。我记得的是,这一块Jeff说到I/O设备中其实都包含了CPU,PC中的CPU在IO处理的时候基本上不做工作,所以很适合异步处理。

 

其他有意思的思想火花基本上是闲聊中获得的。比如,Jeff谈到,CLR、Windows的核心其实已经十分稳定,新版本对其影响不大。他虽然有机会针对.NET 4和Windows 7更新自己的两部著作,但是最基本和核心的东西仍然是差不多的,改动可能并不会太多。另外,他对F#不甚看好。VB也有dying的迹象,好像微软内部VB开发组只剩一两个人在维护了。我咨询他网上传说的VB将转为动态语言甚至脚本语言的说法,他认为不太可能。我又提出,以前VB(包括VBA)是一种非程序员很好的语言,可以把自己的工作自动化。它衰落后,这一块就成空白了。他大概没有考虑过这些问题。问他怎么学好.NET技术,他的回答是看他的书,呵呵,当然!

 

晚饭时Rick说到,我们英语学习里的两大弊病。一是只教How、When和Where之类,但是不教What,对于一个东西(比如餐桌上的墨鱼、芹菜……,像老外介绍,你该怎么说?)的描述是我们很不擅长的。二是我们多教天文地理、DNA,而不教日常用语。

 

晚上回去的车上,Jeff又谈到自己受妈妈的影响,从小就喜欢搞清楚事情的How it works。我认为更加重要的是,他说到的自己凡事做完之后,都会反思下次怎么样能做得更快一些。

 

在技术讲座前听到读者议论,说这年头还用读书吗,看blog之类不就得了?还有人问property和attribute的,一个经典问题。晚饭时和Jeff谈起,许多术语中文翻译不佳对初学者造成了很大困惑,就举了这个例子,微软官方文档都不区分地翻译为属性,实在是害人不浅。另外,还提到了OO的翻译,class和type的翻译,等等。

 

讲座去的人不是很多,110左右,而且提问也不太积极,要不是有王翔的翻译,估计效果更不堪设想了。国内程序员与人交流的愿望和沟通能力都得大大加强啊。

 

夜深了,未完待续

20090216补充的用蓝字表示。

 

原创粉丝点击