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

昨天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补充的用蓝字表示。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 系统分析与设计方法(System Analysis and Design Methods)是指为了研究和提升信息系统功能和性能而使用的一种方法论。这种方法论通过对系统进行分析和设计来满足用户需求和实现组织目标。 系统分析是通过对当前系统的研究和理解,确定用户需求和问题,并制定解决方案的过程。在此过程中,系统分析师会与用户沟通、收集信息,并对现有系统的流程、功能和数据进行调查。然后,系统分析师会将这些信息整理并确定用户需求,并根据需求制定出新系统的功能需求和性能目标。 系统设计是在系统分析的基础上,根据用户需求进行设计的过程。在这个阶段,系统设计者会将系统分解为各个组件,并确定它们之间的关系和交互方式。此外,系统设计还需要考虑软件和硬件环境、数据结构和算法、安全性等方面的问题。最终,系统设计者会根据设计方案制定出详细的技术规格,为系统开发提供指导。 系统分析与设计方法提供了一种系统化的方式来建立和改进信息系统。它能够准确理解用户需求,优化系统功能和性能,提高系统的可用性和可靠性。此外,系统分析与设计方法还能够帮助项目团队更好地管理和控制项目,并提供决策支持。 Jeffrey Huang着重强调了系统分析和设计方法在实际项目中的应用。根据Jeffrey Huang的经验,系统分析和设计方法的关键是正确理解和收集用户需求,同时在设计过程中充分考虑到系统的可维护性和可扩展性。 总之,系统分析与设计方法是一种有组织、系统化的方法论,能够有效提升信息系统的功能和性能。Jeffrey Huang在实践中强调了准确理解用户需求和良好的设计规范的重要性。通过应用这种方法,能够帮助项目团队更好地管理项目,提高系统的质量和用户满意度。 ### 回答2: 系统分析与设计方法是一种为了设计和开发有效的软件及信息系统而采取的一系列方法和技术。这个过程中,对系统需求进行分析,然后通过适当的设计来实现系统的开发。 在系统分析阶段,分析师会与用户沟通,收集并明确系统的需求。通过使用一些工具和技术,如需求调研、面谈和问卷调查等,分析师能够获取用户的需求和期望。然后,他们会对收集到的需求进行分析,识别问题和需求之间的矛盾或冲突,并进一步明确用户需求。 在系统设计阶段,分析师会使用一些模型和工具来构建系统的设计方案。通过使用UML(统一建模语言)等工具,分析师可以绘制出系统的结构图、流程图和数据流程图等,以确保系统的设计符合用户需求。此外,该阶段还涉及到确定系统的架构、选择适当的技术和工具,以及评估系统的性能和可靠性。 系统分析与设计方法的目的是确保最终开发出来的系统能够满足用户的需求,并具备较高的性能和可靠性。通过系统分析与设计方法,可以帮助开发团队避免在开发过程中的错误或问题,并在早期阶段发现潜在的风险和挑战。这种方法能够提高系统的质量和可维护性,并提高开发效率。 综上所述,系统分析与设计方法是为了设计和开发高质量的软件和信息系统而采取的一系列方法和技术。通过这种方法,可以确保最终开发出来的系统满足用户的需求,并具备较高的性能和可靠性。 ### 回答3: 系统分析与设计方法(SA/SD)是一种用于开发和构建计算机系统的方法论。它提供了一套系统化的步骤和技术,以帮助开发团队更好地理解和满足用户需求,设计出高质量、可靠的系统。 SA/SD方法在系统开发的不同阶段起到了关键作用。在分析阶段,它通过与用户和相关利益相关方的沟通和交流,收集和理解系统需求。通过分析用户需求、业务流程和系统需求,SA/SD方法能够帮助团队明确系统的功能和非功能要求,以及各个组成部分之间的关系和交互。这有助于避免系统开发过程中的错误和误解,并确保系统能够满足用户的期望。 在设计阶段,SA/SD方法侧重于将需求转化为可操作的系统设计。它通过使用多种建模和设计技术,例如用例图、类图、活动图等,帮助开发团队定义系统的结构和功能,并确定系统内各个组件的职责和关联。通过系统化的设计过程,SA/SD方法能够减少系统设计中的理解和沟通问题,提高系统的可维护性和可扩展性。 除了在系统开发的初期阶段起到关键的指导作用之外,SA/SD方法在项目的后期也非常重要。它提供了一种测试和验证系统是否符合需求和规范的方法,以及评估系统的性能和质量。通过使用SA/SD方法,开发团队能够遵循一套系统化的过程,更好地监控和管理整个开发过程,确保系统按时交付并达到预期的目标。 总之,系统分析与设计方法(SA/SD)是一种系统化的方法论,帮助开发团队更好地理解和满足用户需求,设计出高质量、可靠的计算机系统。它在系统开发的各个阶段都具有重要的指导作用,帮助团队避免错误和误解,并确保系统能够按时交付并达到用户的期望。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值