weitom1982

向各位技术前辈学习,学习再学习.
posts - 299, comments - 79, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

[转]对目前主流开发技术的分析和总结

一、引言 我为什么要写这篇文章 

  首先,我要限定我文章的范围,我讨论的问题局限于桌面应用开发领域和企业应用开发领域,所以我的结论并不适用于整个软件开发界,比如我说C语言已经退出历史舞台,这对于写嵌入式系统的人和编写操作系统内核的人
来说显然是错了。我写这篇文章的目的主要是:

   *简单的介绍并评价当前主流技术

   *比较当前的主流技术

   *预计技术的演变

  如果你想做程序员或者已经是个程序员,你可能会面对这些困惑:

   *学什么语言呢?Delphi、C++、VB、Java、C#、PHP、Python?

   *选择什么开发工具呢?Delphi、VC、C++Builder、JBuilder?

  当你已经入了门,有了一定的基础之后(可能已经通晓了几种语言),你会面临进一步的困惑:

   *MFC和VCL之间是什么关系?

   *J2EE到底是什么?.Net到底是什么?两者有什么本质的区别,我应该学习哪一个呢?

   *COM那么复杂,为什么很多地方都用到它?我必须学习它吗?

  如果是作为一个软件公司,如果不是那么大,如果你的公司还没有一个真正的技术上的灵魂人物,那么你也会面临同样的困惑。技术问题纷繁复杂,让你不知所从,而且真正的精通每一项技术都需要巨大的时间和人力的投入
,你怎么办?选择哪种技术作为公司的主流技术呢?选择的方向是否正确是个关乎你的公司的生死存亡的问题。你面临着这些困惑吗?如果是,那么请让我试着为你拨云见日。
  我的故事

  在我上大学之前,我从没见过计算机。大学的时候,正是Dos和FoxBASE的年代,也正是计算机软件开发世界几件伟大的事情发上的时候:(Windows 3.1、Borland C++3.1、Visua
l Basic1.0的推出也是伟大的事情,但那时候我还不知道计算机为何物)Widnows 95推出,并开始应用;Visual Basic5.0推出,开发工具中第一次出现了成熟的、被广泛应用的Auto 
Code Completion技术;Java推出;ASP技术开始盛行,Windows DNA技术被理解和接受;标准C++诞生;Visual C++6.0推出;J2EE规范推出。

  成为一个程序员对我而言并不顺利,因为我不是科班出身。我入门的程序语言是FoxBASE,这让我一直对FoxBASE有种特殊的感情,我也正是通过VisualFoxPro3.0转写Windows程序的,
如果没有它,我也许就不会成为一个程序员了。后来,在大学期间接触到了InterDEV,那是个写ASP程序的开发工具,还有Java,也是那时候接触的,当时有点盲目崇拜的意思(我想我喜欢Java的一个原因可
能是刚开始学C的时候很受挫折)。毕业之后,我就是凭借着自己写的一个ASP网站找到了自己的第一份工作——说来惭愧,我从来也没有成为一个C程序员。

  我真正的熟悉Java是在我翻译了一本Java数据结构的书和写了一套完整的GIS系统之后(说起此事,我要感谢一下我的公司,但因为这些故事与本文的主题无关,所以这里就不多说了)。再后来,我自己学习了标
准C++和COM技术。有点像履历表了是吗?提到这些,我只是希望作为读者的你能够了解一下我的知识体系,从而能够知道我大概要讲些什么;同时也希望你能够原谅我可能犯的错误——我在这里说的话,并不一定就是最后
的结论,虽然“共同探讨”这个词几乎是粗制滥造的书的作者专用语了,但我在这里引用它是真诚的,我愿意看到你的反馈。要涉及的话题在开始文章的正题之前,我先大概地介绍这篇文章将会涉及到哪些知识。如果你是初学者
,希望你不要被吓倒,这虽然是一篇技术文章,但我不会过多的讨论技术细节,如果你不懂我说的这些东西,也没关系,我本来就希望通过我的文章帮助你做出一个选择,不再走很多人已经走过的弯路,你这要记住结论就可以了
,随着你知识的增长,以后你会渐渐明白;如果你已经通晓了这些技术或其中的大部分,那么我相信读了这篇文章你会有一些另外的收获。

  主流的程序设计语言:C++、Delphi(ObjectPascal)、Java、C#

  桌面应用程序框架:MFC、VCL、QT、JavaAWT\SWING、.Net

  企业应用程序框架:WindowsDNA(ASP、COM、COM+)、J2EE、.NetFramework

  开发工具:VisualBasic、Delphi、VisualC++、C++Builder、VisualC#
二、正文

  现在让我们开始我的正文吧。首先,我来完成这篇文章的第一个目标:介绍并评价当前主流技术。我指的今天的主流技术是:

   *程序设计语言:C++\Delphi(本来应该是ObjectPascal,但为了简单,我就语言和工具混为一谈吧)\Java\C#(虽然他刚刚推出,但因为微软为之倾注了大量心血,一定会成为一种重要
的开发语言)

   *桌面应用程序框架:MFC\VCL

   *企业应用程序框架:WindowsDNA\J2EE\.Net

   *COM技术:我单独提出这项技术,是因为它无法简单的被视为语言、桌面应用程序框架或企业应用程序框架,它与这些都有关系。

  2.1 程序设计语言

  2.1.1 C++语言的演进

  最初要从二进制代码和汇编说起,但那太遥远了。我们就从面向过程的语言说起吧(包括Basic\C\Fortran\Pascal)。这种面向过程的高级语言终于把计算机带入了寻常的应用领域。其中的C语言因
为它的简单和灵活造就了Unix和Windows这样的伟大的软件。

  面向对象的语言是计算机语言的一个合乎逻辑的进化,因为在没有过多的影响效率、简单性的前提下提供了一种更好的组织数据的方法,可使程序更容易理解,更容易管理——这一点可能会引出不同意见,但事实胜于雄辩,
C++终于让C语言的领地越来越小,当今还活着的计算机语言或多或少的都具备面向对象的特征,所以这一点并不会引起太多困惑。C++的成功很大程度要归因于C,C++成为它今天的样子是合乎逻辑的产物。因为在面向
过程的时代,C几乎已经统一天下了。今天著名的语言象Java\C#都从C借鉴了很多东西,C#本来的意思就是C++++。其实C++曾经很有理由统一面向对象程序设计语言的天下来着,但可惜的是,C++太复杂了
。即使是一个熟练的程序员,要你很清楚的解释一些问题你也会很头痛。举几个还不是那么复杂的例子来说:

  对=的重载\成员转换函数\拷贝构造函数\转化构造函数之间有什么区别和联系呢?

  定义一个类成员函数private:virtualvoidMemFun()=0;是什么意义呢?

  int(*(*x(int))[4])(double);是什么意思?

  还有其他的特征,比如说可以用来制造一种新语言的typedef和宏(虽然宏不是C++的一部分,但它与C++的关系实在太密切了),让你一不小心就摔跤的内存问题(只要new和delete就可以了吗?有没
有考虑一个对象存放在容器中的情况?)……诸如此类,C++是如此的复杂以至于要学会它就需要很长的时间,而且你会发现即使你用C++已经好几年了,你还会发现经常有新东西可学。你想解决一个应用领域的问题——比
如说从数据库里面查询数据、更改数据那样的问题,可是你却需要首先为C++头痛一阵子才可以,是的,你精通C++,你可以很容易的回答我的问题,可是你有没有想过你付出了多大的代价呢?我不是想过分的谴责C++,
我本人喜欢C++,我甚至建议一个认真的开发普通的应用系统的程序员也去学习一下C++,C++中的一些特性,比如说指针运算\模板\STL几乎让人爱不释手,宏可以用几个字符代替很多代码,对系统级的程序员来说
,C++的地位是不可替代的,Java的虚拟机就是C++写的。C++还将继续存在而且有旺盛的生命力。
  2.1.2 Java和C#

  Java和C#相对于C++的不同最大的有两点:第一点是他们运行在一个虚拟环境之中,第二点是语法简单。对于开发人员而言,在语法和语言机制的角度可以把Java和C#视为同一种语言。C#更多的是个政治的
产物而不是技术产物。如果不是Sun为难微软的话,我想微软不会费尽心力推出一个和Java差不多的C++++,记得Visual J++吗,记得WFC吗?看看那些东西就会知道微软为Java曾经倾注了多少心血
。而且从更广泛的角度来说,两者也是非常相似的——C#和Java面对的是同样的问题,面向应用领域的问题:事务处理、远程访问、Webservice、Web页面发布、图形界面。那么在这一段中,我暂且用Jav
a这个名字指代Java和C#两种语言——尽管两者在细节上确实有区别。Java是适合解决应用领域的问题的语言。最大的原因Java对于使用者来说非常简单。想想你学会并且能够使用Java需要多长时间,学会并
且能够使用C++要多长时间。由于Java很大程度上屏蔽了内存管理问题,而且没有那么多为了微小的性能提升定义的特殊的内容(比如说,在Java里面没有virtual这个关键字,Java也不允许你直接在栈上
创建对象,Java明确的区分bool和整型变量),他让你尽量一致的方式操作所有的东西,除了基本数据类型,所有的东西都是对象,你必须通过引用来操作他们;除了这些之外,Java还提供了丰富的类库帮助你解决
应用问题——因为它是面向应用的语言,它为你提供了多线程标准、JDBC标准、GUI标准,而这些标准在C++中是不存在的,因为C++并不是直接面向解决应用问题的用户,有人试图在C++中加入这些内容,但并不
成功,因为C++本身太复杂了,用这种复杂的语言来实现这种复杂的应用程序框架本身就是一件艰难的事情,稍后我们会提到这种尝试——COM技术。渐渐的,人们不会再用C++开发应用领域的软件,象MFC\QT\C
OM这一类的东西最终也将退出历史舞台。
2.1.3 Delphi

  Delphi是从用C++开发应用系统转向用Java开发应用系统的一个中间产物。它比C++简单,简单的几乎象Java一样,因为它的简单,定义和使用丰富的类库成为可能,而且Delphi也这么做了,结果
就是VCL和其他的组件库。而另一方面,它又比运行于虚拟环境的Java效率要高一些,这样在简单性和效率的平衡之中,Delphi找到了自己的生存空间。而且预计在未来的一段时间之内,这个生存空间将仍然是存在
的。可以明显的看出,微软放弃了这个领域,他专注于两方面:系统语言C++和未来的Java(其实是.Net)。也许这对于Borland来说,是一件很幸运的事情。如果我能够给Borland提一些建议的话,那
就是不要把Delphi弄得越来越复杂,如果那样,就是把自己的用户赶到了C++或Java的领地。在虚拟机没有最终占领所有的应用程序开发领域之前,Delphi和Delphi的用户仍然会生存得很好。

  2.2桌面应用程序框架

  目前真正成功的桌面应用程序框架只有两个,一个是MFC,一个是VCL,还有一些其他的,但事实上并未进入应用领域。遗憾的是我对两个桌面应用程序框架都不精通。但这不妨碍我对他做出正确的评价。

  2.2.1MFC

  MFC(还有曾经的OWL)是SDK编程的正常演化的结果,就象是C++是C的演化结果一样。MFC本身是一件了不起但不那么成功的作品,而且它过时了。这就是我的结论。MFC凝聚了很多天才的智慧——当然,
OWL和VCL也一样,侯捷的《深入浅出MFC》把这些智慧摆在了我们的面前。但是这件东西用起来估计不会有人觉得很舒服,如果你一直在用Java、VB或者Delphi,再回过头来用MFC,不舒服的感觉会更加
强烈。我不能够解释MFC为什么没有能够最终发展成和VCL一样简单好用的桌面程序框架,也许是微软没精力或者没动力,总之MFC就是那个样子了,而且也不会再有发展,它已经被抛弃了。我有时候想,也许基于C++
这种复杂的语言开发MFC这样的东西本身就是错误的——可以开发这样的一个框架,但不应当要求使用它的人熟悉了整个框架之后才能够使用这个系统,但很显然,如果你不了解MFC的内部机制,是不太可能把它用好的,我
不能解释清楚为什么会出现这种现象。

  2.2.2VCL

  相比之下VCL要成功的得多。我相信很多使用VCL的人可能没有像MFC的用户研究MFC那样费劲的研究过VCL的内部机制。但这不妨碍他们开发出好用好看的应用程序,这就足够了,还有什么好说的呢?VCL给
你提供了一种简单一致的机制,让你可以写出复杂的应用程序。在李维的Borland故事那篇文章中曾经说过,在Borland C++ 3.1推出之后Borland就有人提出开发类似C++ Builder一类
的软件,后来竟未成行。是啊,如果C++ Builder是在那个时候出现的,今天的软件开发领域将会是怎么样的世界呢?真的不能想象。也许再过一段时间,这些都将不再重要。因为新生的语言如Java和C#都提供
了类似于VCL的桌面应用程序框架。那个时候,加上Java和C#本身的简单性,如果他们的速度有足够块,连Delphi这种语言也要消失了,还有什么好争论的呢?只是对于今天的桌面程序开发人员来说,VCL确实
是最好的选择。
  2.3 企业应用程序框架

  2.3.1 Windows DNA

  Windows DNA的起源无从探究了。随着.Net的推出,事实上Windows DNA将成为历史的陈迹。Windows DNA虽然是几乎所有的企业应用程序开发人员都知道的一个名词,但我相信Win
dows DNA事实上应用的最广泛的是ASP而不是COM+。真正的COM开发有多少人真正的掌握了呢,更不要提COM+(我有必要解释一下:COM+是COM的执行环境,它提供了一系列如事务处理、安全等基础
服务,让应用程序开发人员尽量少在基础架构设计上花精力)——当然我这里指的COM开发不是指VB下的COM开发,所以要这么说,是因为我觉得如果不能理解用C++进行COM开发,也就不能真正的理解COM技术。
如果以一种技术没有被广泛理解和应用作为失败的标志,那么Windows DNA实际上是失败了,但这不是它本身的错,而是基于C++的COM技术的失败造成的。多层应用、系统开发角色分离的概念依然没有过时。

  2.3.2 J2EE

  J2EE是第一套成功的企业应用程序开发框架。因为它把事务处理、远程访问、安全这些概念带入了寻常百姓家。这种成功我认为要归因于Java的简单性。Java的简单,对于J2EE容器供应商来说一样重要。开
发一个基于Java的应用服务器要比基于C++的更容易。而且由于Java的简单性,应用系统开发者出错的机会也会少一些,不会像C++的开发者那样受到那么多挫折。开发基于Java的企业应用系统的周期会更短,
这恐怕是不容争辩的事实。不论如何,是J2EE让事务处理、远程访问、安全这些原来几乎都是用在金融系统中的概念也被一般的企业用户使用并从中获得利益。

2.3.3 .NET

  .Net有什么好说的呢?其实,它不过是微软的J2EE。事务处理、安全、远程访问,这些概念在.Net中都找得到。更有力的说明是,微软也利用了.Net实现了一个PetStore。所以,.Net与J2E
E几乎是可以完全对等的。但微软确实是一家值得尊敬的公司——我指从技术上,象Web form这种东西,我相信很多Web应用开发者都梦想过甚至自己实现过,但Sun却一直无动于衷,而且似乎Borland也没
有为此作过太多努力,好像有过类似的东西,但肯定是不怎么成功——Borland已经很让人敬佩了,我们也许无法要求太多。
  2.4 COM技术

  COM应当是个更广泛的词汇,其实我觉得Axtive X、OLE、Auto mation、COM+都应当提及,因为如果你不理解COM,上面的东西你是无法理解的。而且,我只是想说明COM是一种即将消亡
的技术,仅仅说说COM的复杂性和他的问题就够了,所以不会提及那些东西。为什么会出现COM技术?COM的根本目标是实现代码的对象化的二进制重用,进而实现软件的组件化、软件开发工作的分工。这要求他做到两点
:第一,能够跨越不同的语言,第二,要跨越同一种语言的不同编译器。COM技术为这个目标付出了沉重的代价,尤其是为了跨越不同的编译器,以至于无论对于使用者而言还是开发者而言,他都是一个痛苦的技术。但幸运的
事,这一切终归要结束了。

  让我们从这个目的出发看看COM为什么会成为它现在的样子。其实COM不是什么新玩意,最初的DLL就是重用二进制代码的技术。DLL在C的年代可能还不错,但到了C++的年代就不行了。原因在于如果你在.h
文件中改变了类定义(增加或者减少了成员变量),代码库用户的代码必须重新编译才可以,否则用户的代码会按你的旧类的结构为你的新类分配内存,这将产生什么后果可想而知。这就是为什么通过接口继承和通过接口操作对
象成为COM的强制规范的原因,能够通过对象的方式组织代码是COM的重要努力。那么著名的IUnknown接口又是怎么回事呢?这是为了让使用不同编译器的C++开发人员能够共享劳动成果。

  首先看QueryInterface,因为COM是基于接口的,那么一个类可能实现了几个接口,而对于用户来说,你又只能通过操作接口来操作类,这样你必须把类造型成某个特定的接口,使用Dynamic_ca
st吗?不行,因为这是编译器相关的,那么,就只好把它放在类的实现代码中了,这就是QueryInterface的由来。至于AddRef和Release,他们产生的第一个原因是delete这个操作要求一个
类具有虚析构函数(否则的话,他的父类的析构函数将不会被调用),但不幸的是不同的编译器中析构函数在vtbl中的位置并不相同,这就是说你不能让用户直接调用delete,那么你的COM对象必须提供自己删除自
己的方法;另外的原因在于一个COM对象可能作为几个接口在被用户同时使用,如果用户粗暴的删掉了某个接口,那么其他的接口也就不能用了,这样,只好要求用户在想用一个接口的时候通过AddRef通知COM对象“
我要使用你了,你多了一个用户”,而在不用之后要调用Release告诉COM对象“我不用你了,你少了一个用户”,如果COM对象发现自己没有用户了,它就把自己删掉。

  再看看诡异的HRESULT,这是跨语言和跨编译器的代价。其实,异常处理是物竞天择的结果——连一直用效率作标榜的C++都肯牺牲效率来实现这个try-catch,可见它的意义,但COM为了照顾那些低级
的语言居然抛弃了这个特征——产生的结果就是HRESULT。我们可以看看他是多么愚蠢的东西。首先,我们要通过一个整数来传递错误信息,通过IErrorInfo来查找真正的错误描述,本来在现代语言中一个tr
y-catch可以解决的问题,现在我们却需要让用户和开发者都走很多路才能解决,你怎么评价这个结果?其次,由于这个返回计算结果的位置被占用了,我们不得不用怪异的out参数来返回结果。想想一个简单的int
 add(intop1,intop2)在COM中竟然要变成HRESULT add(intop1,intop2,int* result),我不知道你对此作何感想。而且由于COM的方法无法返回一个对象而只
能返回一个指针,为了完成一个简单的std::string GetName()这一类的操作,你要费多少周折——你需要先分配一块内存空间,然后在COM实现中把一个字符串拷贝到这个空间,用完了你要删掉这个空
间,不知道你是否觉得这种工作很幸福,反正我觉得很痛苦。还有COM为了照顾那些解释性的语言,又加入了Automation技术,你有没有为此觉得痛苦?本来一个简单的方法调用,现在却需要传给你一个标志变量,
然后让你根据这个标志变量去执行相应的操作。(这一点我现在仍然不明白,为什么解释性的语言需要通过这个方式来执行一个方法)。“我受够了,我觉得头痛”,你会说,是啊,我想所有的人都受够了,所有这些因素实际上
是把COM技术变成了一头让人无法驾驭的怪兽。

  人对复杂事物的掌控能力终究是有限的,C++本身已经够复杂了,COM的复杂性已经超出了我们大部分人的控制能力,你需要忍受种种痛苦得到的东西与你付出的代价相比是不是太不值得了?我们学习是为了解决问题,
而现在我们却需要为了学习这件事情本身耗费太多的精力。这些痛苦的东西太多了,我在这里说到的,其实只是一小部分而已。计算机技术是为人类服务的,而不是少数人的游戏(我想COM技术可能是他的设计者和一部分技术
作者的游戏),难道我们愿意成为计算机的奴隶吗?通过一种过于复杂的技术抛弃所有的人其实等于被所有的人抛弃,这么多年中选择J2EE的人我相信不乏高手,你是不是因为COM的过于复杂才选择J2EE的?因为它可
以用简单的途径实现差不多的目标——软件的“二进制”重用、组件化、专业分工(容器开发商和应用开发商的分工)。事实上,你是被微软所抛弃的,同时,你也抛弃了微软。

  现在让我们回来吧,我把你带进了COM的迷宫,现在让我把你领回来。再让我们看看COM到底想实现什么目标,其实很简单,不过是代码的二进制重用,也就是说你不必给别人源代码,而且你的组件可以象计算机硬件那
样“即插即用”。我们回过头来看看Java,其实,这种二进制重用的困难是C++所带来的(这不是C++本身的错,而是静态编译的错),当Java出现的时候,很多问题已经不存在了。你不需要一个头文件,因为Ja
va的字节码是自解释的,它说明了自己是什么样子的,可以做什么事情。不像C++那样需要一个头文件来解释这些事情;也不需要事先了解对象的内存结构,因为内存是在运行的时候才分配的。如果我们现在再回过头来解决
COM要解决的问题,你会怎么做呢?首先你会不再选择C++这种语言来实现代码的“二进制”重用,其次,你会把所有的语言编译成同样的“二进制”代码(实际上,应当说是字节码),这显然是更聪明的做法,从前COM
试图在源代码的级别抹平二进制层次的差异,这实际上是让人在做本来应当由机器做的事情,很愚蠢是吗?但他们一直做了那么多年,而且把这个痛苦带给了整个计算机世界——因为他们掌握着事实的标准,为了用户,为了利润
,为了能够在Windows上运行,尽管你知道你在做着一个很不聪明的事情,但你还是做了。

  COM技术为了照顾VB这个小兄弟和实现统一二进制世界的野心,实在浪费了太多的精力。首先,落后的东西的消亡是必然的,就象C、Pascal在应用领域的消亡一样,Basic一点一点的改良运动是不符合历史
潮流的做法,先进的东西和落后的东西在一起,要么先进的东西被落后的东西拖住后腿,要么是同化落后的东西,显然我们更愿意看见后者,现在Basic终于被现代的计算机语言同化了。其次,统一二进制世界好像不是那么
简单的事情,而且也没什么必要,微软的COM技术奋战了10年,现在也只有他自己和Borland支持,.Net终于放弃了这个野心。这一切终于要结束了。

  过去J2EE高歌猛进地占领着应用开发的领地,COM在这种进攻面前多少显得苍白无力。现在微软终于也有了可以和J2EE一较长短的.NET,对于开发人员来讲,基于字节码的组件的二进制重用现在是天经地义的
事情;你不用再为了能够以类方式发布组件做那么多乱七八糟的事情,因为现在所有的东西本来就是类了;实现软件开发的分工也很自然,你是专业人员,就用C#吧,你是应用开发人员,你喜欢用VB.Net,你就用吧,反
正你们写的东西最终都被翻译成了一样的语言(其实我觉得这一点意义不大,因为一些不那么好用的语言被淘汰是正常的事情,C风格成为程序设计语言的主流风格,肯定是有它的原因的,语言的统一其实是大势所趋,就象中国
人民都要说普通话一样,我觉得Java不支持多语言算不上缺点——本来就是一种很好看很好用的语言了,为什么要把简单问题复杂化呢?)。COM不会在短期内死去,因为我估计微软还不会马上用C#开发Office和
Windows的图形界面部分,但我相信COM技术退出历史舞台的日子已经不远了,作为一般的开发人员,忘了这段不愉快的历史吧——你将不会在你的世界里直接和COM打交道。若干年以后,我想COM也许会成为一场
笑话,用来讽刺那种野心过大、钻牛角尖的愚蠢的聪明人。

结论

  说了很多,应该是有个结论的时候了。我似乎做了一件冒天下之大不韪的事情,因为我评价了主流技术,还要试图进行比较,好像某个名人说过:“C++ Builder也好,Visual C++也好,能在市场上立
足,肯定都是有自己的过人之处的,而且一个人精通数种开发语言、数种开发工具是不可能的事情”,言下之意就是说你不要对这些东西妄加评论,但怎么可以不评论?好像高手都不屑于说哪种语言好、哪种语言坏,我不知道什
么时候形成了这种风气。简单地说C++比Java好或者Java比C++好显然是愚蠢的行为,但如果让你用Java写驱动程序,用C++开发一个MIS系统是不是愚蠢的行为呢?显然更愚蠢。我想,作为一个独立的能
思考的人,外界的东西对你而言总是有好有坏,而且你的生命有限,你还要享受你的生活,所以你必须做出选择。所以,起码评价这些东西对我自己而言是正确的——只要我有能力评价,那我就说出我的评价吧。

  对于计算机语言来说,未来真正重要的语言只有三种C++、Java和C#。C++将更适合于专业的计算机公司编写图形界面系统(比如KDE)、虚拟机(比如Java虚拟机或者.Net运行环境)、杀毒软件或者
其他的盒装软件(比如说Photoshop、Dreamweaver)这一类的东西。而且C++适合程序员做学习之用,能对C++有一定理解的程序员往往也应该能更深刻的理解Java、C#,这有助于编写更好的软
件。如果是开发为客户定制的应用系统Java、C#是更好的选择。包括桌面应用和Web应用。

  至于其他的语言比如VB.Net其实并没有太大的意义。Delphi在未来一段时间将继续存在,而且活得不错。最重要的原因在于,第一它有一套丰富的组件库,第二它效率相对算高的,第三它简单。如果虚拟机的执
行效率赶不上Delphi,它就有存在的理由,但从过去的Visual J++来看,微软的虚拟机做得确实可以很好,加上.Net的组件库和C#的简单性并不差,所以从长远来看Delphi可能不那么乐观。

  其实上面的比较也包含了桌面应用程序框架的比较。在现在来说VCL无疑最好的,MFC已经退出历史舞台。.Net中所带的桌面应用程序框架将最终统一桌面应用领域(但不包括微软和Borland这样的专业公司
,因为他们要作出最好用而且效率最高的软件)。至于Java中所带的桌面应用程序框架,实在让人哭笑不得。这个结论的变数是.Net运行环境的执行效率。如果.Net中的虚拟机象Java的一样,那微软就倒霉了,
它等于放弃了桌面应用开发工具领域,但根据微软在Visual J++上的成就和他推广.Net的背水一战的驾式,.Net在桌面领域失败的可能性不大(但不是没有,起码基于COM的技术在企业应用领域几乎可以说
是全军覆没)。

  在企业应用程序框架领域,最终只有J2EE和.Net可以决一雌雄。我没有提到CORBA,它也可以算是企业应用程序框架,但他的声势和J2EE或者.NET实在不能同日而语,而且最重要的是只有Borlan
d一家大公司支持它(SUN、IBM、BEA、Borland支持J2EE,微软就不用说了),所以就不详细说他了。那么最终谁会赢呢?我想微软赢的可能性大一些。这样说可能让很多人不快,而且IBM的厉害也是有
目共睹的。但这并不是纯技术问题,就象Windows NT蚕食Unix的领土那样,那时候微软也是孤军作战。J2EE的问题在于第一:混乱,第二,价高。我相信很多人都对这两点有过不快的经历。你知道写给Web
logic的应用程序不是很顺利地就可以移植到Websphere上的,反过来也一样。但.Net就不一样了,那是微软一个人的作品,根本不存在移植的问题。

  如果J2EE阵营不想败在这一点上,有三个办法,第一种就是通过制定统一的标准彻底消灭移植问题,第二种是开发一种好用的部署工具(不能象JBuilder那么大、那么慢:),屏蔽不同的应用程序容器之间的区
别,第三种,也是最不可能的,就是J2EE阵营有人能够一统天下。显然,这三种解决办法都不太现实。第二点价高,这是SUN、IBM、BEA、ORACLE传统,也是它们一直让微软的进攻屡屡得手的软肋。我一直不
太能明白他们的西就为什么那么贵。这样想一想:微软的.Net SDK白送给你,BEA的Web logic一个CPU的License两万,如果你两种技术都会,如果你给客户的系统报价一样,你选哪种开发技术?
这一点实在让人觉得无可奈何。J2EE有的东西,.Net也有(除了不能跨平台),技术上的细微差别在巨大的价格差异面前还有什么意义呢?当然,SUM、IBM这些大公司也不是等闲之辈。就象Windows NT
没有消灭Unix一样,J2EE应当会像Windows NT和Unix的共存一样和.Net共存,只是我想.Net恐怕会占上风。

闲话

  说完了该说的技术问题,说说闲话吧。有的话放在心里觉得不说出来不舒服,且让我一吐为快:)

  给入门程序员的建议

  不知道我在学计算机的时候是不是走了弯路。但我想如果让我重新开始学写程序的话,我会采用一些不同的办法。如果你也正在想成为一个程序员,这些也许会对你有帮助。我觉得可能大概要分几个阶段,第一个阶段应该是
找一门简单的语言入门,比如Java或者C#都应该比较合适,选一本简单的带例子的书(最好不要太厚),按部就班的把书学完。这时候可能还有些懵懵懂懂,但没关系,可以开始做个小小的软件了,重要的事你要自己用那
种语言的方式想思考,如果有项目做,当然更好。之后,你会觉得有点感觉了。如果你象我一样不是科班出身的,接下来应当补习一下计算机专业的课程,我觉得最重要的是数据结构——那些东西你可能永远都不会自己做,C+
+中有漂亮的STL,Java中也为你实现了大部分东西,但我觉得真的有必要学习那些内容,这会加强你用计算机语言思考问题的能力。在进一步,如果你的入门语言不是C++,那你可以补习一下C++,尽管你可能永远
都不会用C++开发程序。C++在现在的计算机世界就象是普通话一样,而且它能让你很容易的理解其他语言中难以理解的问题。学完了C++,那你应当就已经不是一个初级程序员了,欢迎你进入计算机软件开发的世界。

  印度的软件业

  我记得好像在CSDN上看见过一篇文章,极力的鼓吹印度的软件业。而且我记得他好像说过一句很刻薄的话“我们公司那些B大的和T大的,一个一个特别牛,牛得看不见人……做起界面极尽奇迹淫巧之能事……”,诸如
此类,总之认为程序员只有象印度的高中生那样乖乖的、懂得UML、会看Function Specification才算是真正的程序员。我当时觉得很不舒服。我想这个人应该不是B或T大的——哦,别误会,我也不
是——但我觉得好像B大的T大的人没象他说的那样。而且我不明白为什么中国的软件业为什么一定要向印度看齐?作为一家公司,你想获取商业利润,学习印度无可厚非,你大可以找一大堆高中生培训成编程蓝领(我没有轻视
高中生的意思,我相信有很多“高中生”在技术领域取得的成就是让我望尘莫及的),但你不应该因此就把有血有肉有个性的程序员扁得一钱不值。说实话,所谓的编程蓝领不过是工厂里面的装配工,如果有一天工厂里面换了自
动化的设备,这些人就全成了废人!而你要知道并不是这些装配工发明了自动化机器。我想这种话用不着多说,子曰“过犹不及”,你可以喜欢变成蓝领,但不要把问题推向极端,把问题推向极端往往就会犯错误。我们中国可以
在某种程度上学习印度,但好像我们更应该学习美国——只是我们现在没那么富裕——可是微软也不是从一开始就是这样一个伟大的帝国的,IBM也一样

  附录参考书目

  阅读如下图书有助于理解本文内容。而且这些书都是好书,值得一读。

  *《标准C++宝典》
  *《C++编程思想》
  *《深入浅出MFC2e》
  *《COM技术内幕》
  *《COM本质论》
  *《Java编程思想》
  *《精通EJB》第二版
  *《J2EE编程指南》
  *《Delphi6开发人员指南》
  *《C#宝典》
  *《微软.Net战略》
注:以上文字来源于网上文章

posted @ 2006-05-08 16:17 高山流水 阅读(312) | 评论 (0)编辑 收藏

 

背单词的捷径
怎样才能在这三个月内把这么多单词背下来呢?最重要的一点,就是:...如果想比别人成功,就一定要走捷径。不要期盼自己比别人幸运,也不要指望自己比别人更聪明或者更勤奋。从智力上说,从机遇上说,自己和别人都是差不了多少的,想超过和自己差不多的人,就一定要走捷径,捷径,捷径!
背单词捷径的第一条,就是:一定要每次都大量地背。因为自己不比别人聪明,所以背完单词,别人忘掉五分之一,自己决不会比别人忘得少。然而,别人每天背十个单词,自己却可以背一百个,忘掉五分之一,还剩八十个,是别人最聪明状态下的十倍。每天一百个是最低限。其实背到后来您会发现这个要求并不高,一个月后,您可能自然而然地就背到三百或者五百。
  这一百个要分成四组来背,上午三十,中午十个,下午三十,晚上三十。第二天早晨复习以前没背下来的词。背的时候,要一目十词(注意,是十个而不是更多或更少),不要认认真真背,因为没有认认真真的时间。一边看一边读每个词的读音,默读也成。看完后回忆一遍,回忆不起来的再看。这次背的目的在于留下个大概印象,下次看见能知道这个词,所以背到大部分都能回忆得起来就成了,把剩下的词单独抄出来。
背单词捷径的第二条,就是:背字典!为什么要背字典呢?因为字典上每个词的解释比较全面,而且相同字母开头的单词都集中在一起。不是什么字典都可以拿来背的,一定要找只包含自己想背的词的字典。另外,最好有英文方式的解释和例句。而且,一定要有音标!如果是为了考TOFEL或者GRE,注意要选美音音标的字典。一般教材课文后面的词汇表都是为那些认认真真听课的好学生准备的,想走捷径就千万不要去背那些东西。
背字典的时候,按开头字母(Z,Y,X,Q,J,K,U)(V,W,N,O,L)(FG,IT,HM,BDE,R)(C,P,S,A)的顺序背,其中C,P,S,A每个都要分三部分背。这样背有几个好处:(一)能增加成就感,提高兴趣。至于为什么,您翻翻字典就明白了。;)(二)便于清楚地知道那些单词已经背过,那些还没背。(三)能先把最基本的词先掌握。
三万单词里,分为三个等级:三千到四千,八千到一万,两万二到三万。也就是说,您得分别准备三本字典。这几个等级之间各自有非常不同的特性,所以需要分别用不同方法背。俺当时没有认识到这一点,所以在从一万到三万之间走了一段弯路,浪费了一些时间,不然或许能突破到五万吧。;)所以,背单词捷径的下面这条就有了三个分支。
背单词捷径的第三条,就是:和单词多见面。一个单词能不能记住,取决于和它在不同场合见面的频率,不在于每次看着它的时间长短(同样规律也适合于泡MM;))。一般想记住一个单词,每星期要和它在*不同场合*见三到四次面。俺在上文中提到大量背的时候,不要抠某一个字记住与否就是这个意思。因为是否一见钟情都是无所谓的,关键在于有更多不同类型的见面机会。不过,根据要背的单词的等级不同,增加见面机会的方式也有所不同。
第一个分支:瞎听!三千到四千这个等级,是非常常用的单词,而且几乎囊括了表达最基本思想所需要的一切词汇。每篇文章中百分之八十都是这些词汇,而且这些词都是最基本的语素(或称"词根"),就是分割到最小无法再分割,互相之间也没什么类似之处的东西。对付这些词的最好方法,就是进行大量的,不间断的,简单的初级听力练习。因为阅读材料中,还有百分之二十其他词汇,所以光凭这个等级的词还看不懂那些阅读材料。但是听力练习都是最基本的对话,而且发音一般很标准,多听能够增加单词的重复率,而且可以为以后背八千到一万那个等级的词打下语音基础。听的时候,要分精听和泛听两部分。精听当然是指每个词都要弄懂,俺着重讲一下泛听(饭厅?;P)。泛听是最重要的,因为掌握语速和语调,以及总体印象都要靠泛听。而这些都是背八千到一万等级单词的基础?泛听能够让经常用到的词(也就是那些最必要掌握的词)把您的耳朵磨出茧子来,让您模模糊糊听到个音就能反应出它是什么意思。泛听中您听到的词,才是您真正应该记住的词,所以别害怕精听的时候什么都听不懂。到底什么是泛听呢?泛听,就是说您听的时候,精神要分散,要一边干着其他事(比如撮饭或和别人大声讨论撮饭;)~),一边有一搭没一搭地听着。泛听一定要见缝插针,一有机会就听着,最好耳机不离耳朵。;)而精听的意义就在于找出您没听清的那些词。啊哈,那就是您背过但还不熟悉的词了。:)把这些词单独记在另外一个地方,别跟没背下来的词混了。泛听要听精听已经听过的内容。比如精听听到了第二盘磁带,那么泛听就听第一盘磁带,正好。提醒您一句,千万别拿英语广播当自己的听力教材!!!
第二个分支:狂看!八千到一万这个等级,基本包含了剩下的百分之二十。这些单词在听力教材里很难找到。但是,可不要停止听的练习呦,因为听能巩固您的语调感觉,而这是背这个等级单词的一个关键。不过,背这个等级的词,需要在听以外增加看的内容。看,同样要分精读和泛读两种。就象听一样,也是泛读更重要一些。泛读要挑不太长,能有耐心看完的文章,而且看不懂的词不要太多,一篇文章有两三个不认识的就足够了。千万不要一上来就看英语报刊杂志小说,那些东西不但很难看懂,而且看懂了也对背单词没什么促进作用。泛读也需要大量练习,只要您有耐心,又有足够时间,就一直看下去吧!看的时候不要仔细阅读,扫一眼明白个大概意思就成了,然后把这一眼没看懂的词画上记号,别琢磨它是什么意思,继续扫描吧!全部看完之后,回头再看这些单词,有的可能已经想起来了,有的....还没想起来?那就查查字典,要是自己还没背过,就扔掉它,要是已经背过了,就单独抄下来吧,和听力练习中没听出来的词放在一起。
  俺的经验是新概念第一二册,然后大学泛读课本前两册,然后是另外的一个泛读教程初级部分,然后新概念第三册,泛读课本第三册,某一种听力教材高级听力部分的教师用书,然后新概念第四册,泛读课本第四五册...这么个顺序进度比较合适。
第三个分支:乱说!这只适合背两万二到三万的词。因为其他的词不用说就已经背下来了。;)而这个等级的词在阅读材料里非常少,可能阅读十篇文章却一个这个等级的词也没有。所以靠阅读来增加见面机会已经不行了。这些词甚至有的老外一辈子都没见过,咋能指望他们能写出来呢?尤其是GRE词汇,什么"给马穿衣服","纽约的流氓","从非洲吹向南欧的风"....这些词都是一些精致的修辞,也就是说,如果您话里净是这些词,那您可以假冒一位学者了。;)一般的老外都是听不懂您说的这些话的,所以不用这些词也能表达同样的含义。好了,您的机会来了,您可以跟老外讲话中带上这些单词,然后很自豪地假装谦虚地跟他们解释这些词的含义。;)每次跟老外解释一两个词就足够了,老外会佩服您佩服得五体投地的。;)HL就向ws解释吧!要大胆而耐心,尤其是大胆。;)这个阶段,您就别再练听力了,因为练了进步也不大。还记得开头那句话么?要想成功,得走捷径。凡是不能在短时期内取得巨大进步的行动,都不必浪费时间去做。不过,这时候的阅读材料成了问题:您会发现,过去看的东西觉得太浅没意思,看其他深的东西又看不懂。您还会发现一个新的有趣现象:那就是您想看的文章里,现在全是第一个等级的那些词,每个词您都确切知道它的含义,但整个文章您就是看不懂。那您该看什么呢?就看第二个等级的那些浅显文章啊。虽然浅显,但能帮助您不至于忘了过去背出来的成果。至于您看不懂的那些文章,别着急,等您和老外交流多了,您自然就懂了,那都是一些词组、俚语或文法组成的文章。:)
背单词捷径的第四条,就是:联想,联想,联想,.....背单词的第一个动作是什么?端详一下它的外貌。第二第三个动作呢?看看它的内涵和发音。而第四个动作,就应该是联想,再联想.....
联想它和其他背过的词有没有外表类似的?读音类似的?意思类似或相反的?如果有,就赶紧记在旁边,在另外那些词旁边也把这个词加上。这样,以后看见其他词,也会联想起这个词,等于又增加了一次见面机会。而且,在第二、第三个等级的词汇里,还有许多单词是由"前缀","词根","后缀"组成的,前缀比如"re","in","pseud"...,后缀比如"er","a","oid"...,然后共同组成一个新词。如果掌握了这些前后缀,就可以很方便地猜出一个生词到底什么意思。另外,有很多读音相近的词也有相似的意思,这在俚语、诗歌和儿童用语中更普遍。如果每天记80个单词,一个月只能背2400个单词,但掌握了这些规律后,实际上背的速度越来越快,几乎一万多单词都是不用背就会了的。不过,在GRE单词中,有很多是既没有和其他词的关系,又没有前后缀,看起来既简单又记不住的单词。这些词里边有希腊语,意大利语,德语,拉丁语,甚至还有日语译音。这就只能靠和别人解释来掌握了。
背单词捷径的第五条,就是:复习!记得快,忘得也就快,这是一个非常正常的规律。在背单词的过程中,复习就显得非常重要。俺总结复习的规律是:十个单词复习一遍,然后三十个单词,然后是以前所有没背下来的单词。复习的时候,同样不必细抠,粗略地扫一遍就可以了,但一定要想它的读音(因为英语是象声的)。最后背不下来的单词,一定是不常用的,因为老外一样背不下来。;)每背完一个开头字母的单词,就要把前一个开头字母的复习一遍。然后每背完前文中括号里面的开头字母,就把上一个括号里的复习一遍。复习的时候,要先看英文翻译中文意思来一遍,然后再看着中文想它的英文单词再来一遍。前面说过,在泛听,泛读中忘了的词要和背的时候就记不住的词分着记下来,就是为了在复习的时候区别对待。忘了的词,要每天看一遍,会了就划掉,而记不住的词则在背完了整个字母以后,单独背一下这些词,平常就不用看了。
GRE单词的复习方法非常奇怪:它需要进行填字游戏。也就是说,盖住单词的一部分,然后想整个词是怎么拼。另外,还得想它的同义词,近义词,反义词。顺便说一句,考GRE的词和考TOFEL的词互相之间是毫不相关的,也就是说,您不会TOFEL的词,GRE也有可能拿个高分。 
 

posted @ 2006-04-21 19:29 高山流水 阅读(436) | 评论 (0)编辑 收藏

约翰卡马克介绍 
   id Software的大名鼎鼎的约翰•卡马克(John Carmack)众望所归地入选了2001年度IASA“游戏名人堂”。 

  如果把诺兰•布什纳尔比作“电子游戏业之父”,那约翰•卡马克就是“第一人称射击游戏之父”,在一家名为id Software的小公司里,卡马克和他的同事通过一部又一部血腥暴力的作品创造并不断革新着这一游戏类别。id所获得的无数荣誉应当归属于它的全体员工,而约翰•卡马克无疑是将整个公司凝聚在一起的粘合剂。 

  坦白地说,卡马克主要是一名技术天才,id公司出品的每一款游戏都是围绕他所编写的引擎制作而成的,卡马克不断把引擎技术推向新的高度。他为游戏业做出的第一个贡献是实现了卷轴游戏背景图像的流畅性,这一技术在1990年的《指挥官基恩》(Commander Keen)中得到了应用,此前电脑平台上的横向卷轴游戏的背景图像都很不稳定,根本无法同当时游戏机平台上的横向卷轴游戏相比。尽管这一技术在今天看来算不上什么,但它足以显示出卡马克高超的编程能力。 

  卡马克今天的地位主要归功于他在3D方面的成就,尤其是对3D加速技术不遗余力的倡导和传播。《雷神之锤》刚刚问世的时候,3D加速卡在人们眼里还只是一个可笑的空想而已,只有卡马克对3D技术的威力深信不疑,他为《雷神之锤》制作了一个专门在Verite显卡上运行的特别版本,画面看上去非常漂亮,可惜的是Verite显卡未能在市场上站稳脚跟。随后卡马克又采用OpenGL标准为《雷神之锤》制作了一个新的版本,使所有具备3D加速能力的显卡都能以更快的速度、更高的分辨率渲染出更华丽的图像。到了今天,一些显卡生产商在研发新产品之前甚至会先同卡马克商量一下,以确保他们的硬件可以完美地支持id出品的游戏。卡马克所作的这一切决定性地改变了显卡产业未来的发展。 

  除了3D方面的成就外,约翰•卡马克还为游戏业带来了许多其它的技术革新,例如网络代码中的客户端侦测、多重纹理、便于修改和可扩展的游戏代码、游戏内部的命令行指令……看来所有该做的都已经被卡马特做完了,可谁知道呢,也许这一切只不过是开始而已。 

  业内人士对约翰•卡马克的评价: 

  约翰•霍华德(微软公司):“他缔造了‘死亡竞赛’和‘平移’等许多新单词。《毁灭战士》和《雷神之锤》系列是继《俄罗斯方块》以及一些早期的街机游戏之后真正触及到电子游戏艺术的精髓的作品。” 

  比尔•罗帕(Blizzard娱乐公司):“卡马克是一位技术天才,他在自己的工作领域中一直占据着至高无上的位置,没有人可以超越得了他。那些塑造世界、富于创新精神的游戏设计师博得了我们的尊敬,而约翰•卡马克同样凭借其高超的编程技术在游戏史上获得了他应有的地位,正是他的技术令许多设计师的想法得以实现 
 
 

            传奇程序员John Carmack 访谈实录 


            译者:Frank FiringSquad :www.firingsquad.com/features/carmack/ 
                    John Carmack—网络游戏界的先知 
                    传奇程序员John Carmack对游戏看法 
                    GDC 2004: John Carmack谈游戏开发 

              简介 
              Carmack 对于钱的态度 
              专注和灵感 
              顿悟 
              开放源码 
              关于Linux的其他问题 
              Carmack作为学生 
              Quake 和简洁 
              Id公司的下一款游戏 
              关于游戏行业 
              Id不是一个发行商 
              关于Trinity 
              三维象素和曲线 
              对竞争的看法 
              Carmack的研究 
              综合性问题
            简介 

 

                           

            藏在幕后的人
            John Carmack是一个几乎不需要介绍的人——Id 
            Software的创始人。该公司开创了第一人称射击类游戏,并且独立地改变了PC动作游戏的定义。从Commander 
            Keen到Doom,再到Quake,Carmack/id的游戏吸引了数百万玩家通宵达旦地在计算机屏幕前击退他们的对手。 
            去年12月底,Firingsquad和Gamers.com获得了一个难得的机会,与John 
            Carmack进行一次长时间的、面对面的访谈。我们利用这次机会进一步了解了John作为一个普通人——而不是一个程序员——的一面。我们还向John询问了他和Id未来的发展计划,以及他对于游戏行业的现状及其发展方向的看法。下面问题以粗体字显示,John的回答以普通文字显示。 

            Firingsquad: 你今年多大? 
            John: 29岁。
            FS: 你是否认为结婚会影响你的编程工作? 
            John:不。如果这样想我就不会结婚了。 
            FS: 那么你和Anna[Kang]通常是怎样渡过一天的? 
            John: 
            最近我们一直在搭建一些火箭模型。我接受了一次访问,有人问我在十几岁时的情况,我提到了火箭、炸弹和一些类似的物品。我想这很有趣,我喜欢这样。当然,现在您可以到互联网上说“我想要这个、这个和这个。” 
            他们现在拥有比我以前所用的强大得多的火箭——这些动力强劲的火箭具有每秒2000牛顿的推动力! 
            FS: 你和Anna会进行一对一的网络对战吗? 
            John: 
            就在昨天我们还一块玩了Apple这个游戏,Anna与其中的一个玩家开玩笑——她踢了他一脚。我当时正在与其他一些人开会,所以他们玩了一会,而她一直在逗他玩。但是当我开完会时,他们把我逼进这个家伙的房间里,让我坐下。我进行了反击,取得了一次小规模的胜利。正如我所预料的,我听到了她从建筑物的另一侧发出的诅咒声。她仍然认为另外一个家伙在游戏最后魔术般地获得了技能! 

            FS: 我阅读了你在以前接受的一些访谈的内容,其中你提到了炸弹等物品。你是一个不听话的小孩,对吗? 
            John: 
            是的,现在回忆起来,十几岁时的我在很多方面就像是一个傲慢自大的小讨厌鬼。这些年来我已经逐渐成熟起来。现在回想当年,我认为当时的我表现并不好。我的意思是,尽管我很聪明——我当时已经开始编写计算机程序,但是我经常分不清是非。 

            FS: 如果你需要给在自己的学校中存在像你这样的孩子的人提点建议,你会说什么? 
            John: 
            我已经清楚地知道了我想要做什么。我想要编程——我在12岁时就深知这一点。我知道,这是我想要做的,而且我清楚地知道我想要实现的目标。你不能总是说世界亏欠你想要得到的。但是的确有些时候需要为一个孩子提供一些必要的帮助。我的父母从来没有真正地了解我,因而我没有得到我想要的计算机。我为此责怪了我母亲将近十年,但是我们现在都已经淡忘这件事情了。 
 
 
 
            当时我感到非常沮丧,因为我清楚地知道我想要做什么,但是我却无法做到。人们习惯于认为:如果你想要从事计算机工作,你需要进入MIT,再到一家公司工作,成为一名工程师,遵循“公认的发展道路”。但是我从大学辍学了,随后创建了我自己的公司。我的弟弟选择了一条更加符合惯例的道路。他获得了一个学位,成为了一名股票经纪人,而这正是我母亲希望他做到的。他干得不错,但是并不能像我一样拥有很多辆法拉利跑车来让父母感到自豪。 

            我现在可以说,我和我的母亲现在相处得很好。我们可以讨论这些事情和回忆过去,她意识到她在某些方面犯了错误。但是这有什么用?她不会再抚养别的孩子。 

            Carmack 对于钱的态度
            FS: 你现在已经非常富有——这对你有什么影响? 
            John: 
            我现在拥有的财富足以让我无需再继续工作;我的确不需要再工作了。这种自由的感觉非常好。因为只要你拥有足够的钱来维持你的生活,你就不必听命于任何人,也不需要想法设法赚更多的钱。尽管有很多人已经非常富有,但是他们仍然屈从于拥有更多财富的诱惑。 

            我基本上拥有我所需要的一切。我已经拥有足够的财富来维持我自己和我的家人的正常生活,因此,没有任何人、任何公司可以对我产生严重的影响。 
            FS: 是否存在一些领域,你认为你可以利用你的财富施加影响? 
            John: 
            我尽量不像这样考虑问题。在推动其他事情方面,我尽量做到不要太主动。我希望直接解决事情的技术方面的问题。当然我可以用钱来解决一些事情,但是我更希望用直接的方式解决问题。 

            这就是为什么我不是一位很好的经理。我是一位工程师,所以我想要直接解决问题。我希望把环境建立一起,以便更好的解决问题,尽管在很多情况下我意识到还需要完成更大规模的项目。但是这并不是只有我才能做到的。 

            我非常擅长这个领域的工作,而且恰好我很喜欢它,因而我并不想转到其他的领域。我的财富足以让我提前退休,但是我喜欢我现在的状态。 
            在这方面我很反感某些公司的做法。一些创始人原先是非常出色的工程师,但是现在成了他们的部门的主管,因而主要从事管理工作,而不是工程项目。同时,他们所管理的大部分员工在处理实际工作方面远远不如他们当初的水平。 

            我希望这样的事情永远不要发生在我身上。我希望永远处于行业前沿,从事实际的开发工作。当然,回到幕后阅读资料、研究理论和获得更加广泛的视角也会带来一些好处,但是如果你不了解开发的具体细节,例如工程项目与真实世界的联系,你就会变成一个只会夸夸其谈的理论家。你可以从理论家的所作所为和一个从事真正的开发工作的工程师的工作之间看到这种巨大的差别。 

            在过去的两个项目中,我的时间被分成了几段。我有大约三个月的时间进行纯粹的理论研究。我目前正处于这个阶段,在这期间我需要与不同的人进行合作。随后我将用大约16个月的时间从事项目的开发工作。更多的关注研究性质的工作对我来说相当重要,但是我并不希望将我的大部分时间用于理论研究。我认为,研究的关键在于找出一种新的方法,但是当您想要真正地采取行动时,仅仅拥有这些理论知识是远远不够的。 

            专注和灵感
            FS: 你对工作的专注让人惊叹。看来你是唯一适合现在这项工作的人。 
            John: 
            专注非常有用。在现在这个环境中,我认为软件是一种几乎最理想的介质。但是如果不做这一行,我可能会成为一名工程师或者某种意义上的科学家。我可以从事任何一种“硬科学”。 

            软件具有很多与众不同的优点。从事物理试验的研究人员需要用一年的时间进行准备和制作工具,然后还要花一年时间来分析试验结果。但是在开发软件时,你可以立即看到运行结果。你只需要坐在那里对程序进行反复的调试。你可以立即运行程序。对于所有智力探索活动来说,这是最容易适应的工作方式。我很庆幸自己生活在这个软件业非常繁荣的时代。 
 
 
 
            我再次想起当我还是一个年轻人时,我没有我想要的计算机。我感到非常沮丧。我觉得我“正在错过一个很好的机会”。我觉得自己应当编写这些游戏,例如早期的Apple 
            II游戏。我之所以感到由衷的沮丧,是因为我觉得自己错过了最佳时机。当然当时我并不知道我可以抓住“下一个”最佳时机。 
            你读过Steven Levy写的《黑客》吗? 
            FS: 读过,这本书非常棒! 
            John: 
            我在十几岁的时候读了这本书。在看到第三章时,我感到“天啊,这才是我应该做的!”大约10年以后,我回想起来自己当时的想法:“如果那本书有第四章,也许我会加入那个行业。”这是一个非常有趣的想法。 

            现在看这段经历会觉得很有意思。当我是一个年轻人时我觉得错过了自己的最佳时机。因为当时是PC的早期发展阶段的黄金时期,我为自己没有抓住那次机会深感遗憾。 

            FS: 你是否认为编程工作和将想法转变为程序代码的过程激发了你对编程的兴趣?或者是你在Apple II和PC发展早期所玩的某些游戏? 
            John: 我可以说出我当时非常喜欢的游戏的名字,但是我真正喜欢的是进行抽象的编程。我喜欢这项工作的很多独特之处。 
            很多人加入游戏行业的原因就是他们喜欢游戏,而且乐于创新。 
            我对编程的热爱则来自于一种更加抽象的感觉。我可以从为Linux编写设备驱动程序中获得很大的乐趣。我还喜欢编写数据库管理程序或者其他程序,因为在开发过程中总是会遇到一些有趣的问题。有些事情可以给我带来更多的满足感。图像和游戏很可能是编程工作中最能给人带来成就感的领域。 

            FS: 为什么呢? 
            John: 
            因为你可以得到非常形象的反馈信息。当你编写一个图像算法时,它可以为你绘制一副图片。尽管数据编程会通过其他的方式给人以满足感,但是人类显然对可视的对象和必须通过符号理解的事物更感兴趣。这是图像编程极具吸引力的基本原因。但是我们必须进行很多方面的研究。我喜欢这项工作的所有领域,但是游戏开发总是会让你在克服一些极具挑战性的问题之后才能领会到它给你带来的满足感。 

            我在早期很喜欢RPG游戏,例如Ultimas,Wizardrys和所有类似的游戏。我为Apple 
            II开发的一些非常早期的游戏基本上就是Ultima的翻版。我还喜欢所有的经典决斗游戏。 
            顿悟
            FS: 
            从某种意义上说,你是否认为“龙与地下城”是你所希望看到的、带有一定的文字和对话的游戏模式?它是否像Quake引擎一样,是一种可以在其中添加各种内容的游戏结构? 

            John: 它就像是能够从头开始开发新的游戏,使用一种对你没有任何限制的方法。 
            事实上,我们最初打算将Quake开发为一个RPG游戏——并不是一个完全意义上的RPG游戏,而是一个奇幻游戏。但是因为Quake的复杂的开发流程,它后来的发展完全偏离了这个轨道。我一直非常愿意说明我们在刚开始时对我们所开发的游戏制定的目标。尽管它们成为了与我们的目标截然不同的游戏,但是我很满意最终的结果。我们不大可能在开发一款奇幻/角色扮演游戏。 

            FS: 我听说你减少了你对“龙与地下城”的管理工作。 
            John: 
            从Wolfenstein开始,整个公司都在每个周末玩我们所开发的游戏。玩游戏的时间在我们开发Doom阶段有所减少。我们去年纯粹为娱乐开发了几款游戏。但是它花了我们不少时间。要完成出色的工作,你必须用一天时间玩游戏,再用一天时间准备,但是我现在不可能再为其他的工作牺牲20%的时间。 

            FS: 你有一种特别的专注和灵感——你可以怎样改进一个算法或者技术。你多久会遇到一次这样的顿悟? 
 
             John: 
            我认为很多人都过于强调顿悟的重要性。顿悟的确很重要,但是只有在你清楚地了解一项工作的来龙去脉之后获得顿悟。事实上,很多出色的工作并不是顿悟的结果,而是辛勤工作的结果。很多人都误以为顿悟是最重要的。有时候它的确是,但是在95%的情况下它仅仅是你对你所掌握的知识的冷静分析的结果。 

            让工作成功的关键并不是一个天才的决策,而是500个明智的选择。更加重要的是始终做出明智的决策。制定一个天才的决策和很多平庸的决策还不如在整个过程中始终制定比较明智的决策。你必须要做出很多正确的决定。 

            即使在开发完Quake 
            3之后,我的任务清单上仍然有数千个有待进一步改进的细节。因此,关键在于了解所有必须完成的工作,进而找出“最有效的击球点”。例如“这些工作可以完成大量的任务,但是会带来一定的副作用。”或者“完成这项工作可能需要几天时间,但是它会让其他一些环节变得不太稳定,因此我不会去做这项工作。” 

            我当然希望遇到顿悟——当时我可能正在做某项工作,忽然间意识到可以采用一种更好的方法。这的确非常有用,但是我不能指望这种情况每天都会发生。实际上比较常见的情况是,当我回到家里时我可以告诉Anna:“今天我想出了一个新主意!”这种情况相当常见,而且非常有用。 

            开放源码 
            FS: 很多人都认为你是全世界最出色的游戏工程师之一。你认为在今后几年中,这个世界上是否还有足够的任务和深度来让你保持足够的兴趣? 
            John: 
            当然,还有很多难题需要解决。目前,我正在利用我的很多闲暇时间开发一些基于Linux平台的程序。我已经完成的一项工作是为Linux编写两个3D驱动程序,即在这个平台上进行大量的编程。作为一名开发人员,这对我非常有用,因为我做了大量高层次的、API级别的编程工作,但是我应当继续深入到系统底层。通过开发设备驱动程序,编写一些深入到硬件内部的部署级程序可以开阔我的眼界,让我可以从整个流程的角度看待各项工作。有很多程序员只知道顶层的开发方法,而不知道程序工作的基本原理,这主要是因为他们无法“看到”系统的内部结构。 

            我正在考虑着手的另外一项工作是(因为我喜欢清楚地从最高层到最底层的所有技术细节)花一些时间开发我自己的网络堆栈,以便进行研究和学习。我还做了一些我想要尝试的试验,以便在串行驱动程序和分组驱动程序的层次上了解操作系统实际上为路由时间和排序所支出的开销。我希望从我们通常用于通信的协议层下面获得一些信息。 

            FS: 仅仅是在Linux平台上,还是也包括Windows和Mac平台? 
            John: 
            关键是在Linux平台上开展这些工作更加方便,因为你能够获得你所需要的所有信息。尽管Linux还不能取代Windows成为主流的桌面操作系统,但是它的确具有一些独到之处。 

            吸引我这样做的原因是有人为Matrox显卡编写了一个Linux驱动程序。我对它进行了测试。显然它不能兼容Quake 
            3。因此我决定将它下载下来仔细研究。我对它的出色的工作机制留下来深刻的印象。尽管它的速度不快,但是它几乎可以说是一个功能齐全的、高质量的程序。但是它在纹理的交换方式方面存在明显的缺陷。他们交换的是最近使用的纹理,而不是最少使用的纹理,因而你可以在屏幕上看到明显的失真。 

            我很清楚它的工作方式,因而我想“太好了,它提供了源代码。”因此我决定下载源程序、进入CVS库和所有文件,按照我的想法改进代码,发现程序缺陷,并将其消除!整个过程非常明确。 

            由此得出的结论是,Apple的驱动程序曾经也存在相同的缺陷。因此我们可以在两个驱动程序中发现相同的缺陷,但是对于Linux程序来说,我可以直接进入源程序,消除这个缺陷。尽管在很多层次上仍然存在不少障碍,但是具备这种能力非常重要。从根本上说,如果你在使用一个源码完全开放的系统时遇到了一些问题,你可以花时间自行解决这个问题。你不需要等待别人的帮助。你不需要低声下气地寻求帮助,也不需要等待补丁发布,而通常这样做会降低时间的利用效率,但是如果某个问题真的让你头疼不已,你可以直接查看源代码,解决这个问题。这会让人感到非常振奋。
 
 
             关于Linux的其他问题
            FS: 这就是你对待问题的态度——亲手解决问题。你并不想等待别人来发布一个升级程序,而是愿意自己动手。 
            John: 
            是的,这就正是为什么在我对网络或者其他问题进行研究时,我更愿意使用Linux平台。如果需要,你可以取出操作系统的某些部分,告诉自己:“好的,现在我想要把这一部分完全删除,因为我想要做一个试验。”你可以获得自由发挥的空间。 

            我认为,在未来几年中,软件的可用性将日益得到重视。有很多经济趋势与此有关。你将看到价格低于500美元的PC和90美元的Windows使用许可。如果人们只想执行一些非常基本的任务,他们很可能希望获得一个免费的操作系统。 

            Linux界有很多疯狂的支持者,他们的观点有时缺乏足够的理性。但是,在关于Linux的实际优势的宣传中的确存在着一些真实情况。 
            FS: 你很关注技术,而且你鞭策自己不断进步。但是你是否考虑过找一个上司来帮助你学习新的技能? 
            John: 
            我知道在某些工作上聘请管理人员可以带来很多好处。我们在第三季度末聘请了Graeme来帮助我们管理部分业务。但是它并没有对我的工作方式产生实际的影响,因为Graeme还没有蛮横到干涉每项具体的工作。事实上,我自己对工作的安排往往好过大部分管理人员给我制定的工作计划。 

            我也意识到了我的个人组织能力的局限性。我会将几千件事情放在我的任务清单上,而且常常是从头开始对所有事情进行排序。我的确认为如果有个人的主要工作就是确保我知道和了解所有这些任务的重要性就好了,因为每个人的组织能力都存在一定的不足。你自己可能不会这样做,但是有些事情就是因为你一直不愿意去处理而最终泡汤。我已经意识到了让某个人帮我安排工作的好处。 

            最近我在找一个人来对一些程序——尤其是Linux驱动程序——的OpenGL性能进行兼容性测试。我为此编写了大量的程序,我也尽量设法将这件事负责到底,但是我知道我需要采取多种方法来实现我的目标。我希望编写一个完美的程序,但是我也深深意识到,在我的有限的时间里,我不可能做到面面俱到。 

            有时候有一个专门负责帮助你的助手会带来很大的方便。但是这对我来说仍然只是一个理论上的问题。我相信这样做会有所帮助,但是还没有看到实际的效果。 

            Carmack作为学生 
            FS: 出了组织能力以外,能否将一位管理人员视为老师?你觉得可以从谁身上学到对自己有用的知识? 
            John: 
            实际上,我几乎向每个人学习。这是十几岁时的我和现在的我的主要区别之一。当我十几岁时,我的想法是:“我比我周围的人都聪明,因此我完全不用理会别人说什么。”我在大学的几个学期中都是如此。现在回想起来,我觉得我采用了错误的处世方法。是的,也许我的确比教授聪明,但这并不意味着我不能从他身上学到对我有用的知识。 

            现在我的处世方法是,我愿意向与我一同进行编程的任何同事身上学习知识。我很珍惜我与Brian 
            Hook一同工作的时光。我从他身上学到了一些更好的C语言编程标准和如何更加严格地使用struct和const——而我过去并不这样做。这对我非常重要,因为我通过他提高了自己的技术水平。另外还有Graeme——我看到他从Java库中迅速地找到自己所需要的信息——而我往往是从头做起,到处查找这些信息,因而花的时间比他长得多。 

            某人并非要成为一个“更好的”开发人员或者程序员才有值得你学习的知识,这是我在过去10年中获得的一个非常重要的经验。到处都有值得你学习的知识。如果你拥有正确的学习态度,那么把自己放在一个信息丰富的环境中会对你很有帮助。如果你想从任何地方获得你想要学习的知识,而不是寻找一个将所有信息都集中到一起的有用信息 
 
             “宝库”,你必须能够从你所能接触到的任何地方搜集对你有用的信息。 
            在开发Quake的过程中,我们聘请了Michael 
            Abrash。我为此激动不已,因为我曾经通过他以Dobbs博士为笔名发表的很多文章中学习了大量基本的PC编程技能——包括汇编语言和图像编程。因此我对能够于他合作感到非常高兴。我从他那里又学到了很多知识,但是有趣的是,我有一阵子感到非常不舒服,因为他在编程方面对我非常顺从。Michael的知识非常渊博,但是我的长处是学习新知识的能力很强。
            因此,我几乎从我合作过的所有程序员身上都学到了很多知识。 
            FS: OK,你刚才提到从周围搜集有用的信息。你怎样看待非技术性的信息来源——例如书籍和电影? 
            John: 我这几年来最喜爱的书是由Vernor Vinge撰写的《A Deepness in the 
            Sky》。在电影方面,我不知道我所说的是否有参考意义。我欣赏了大部分好看的电影。《玩具总动员2》非常出色——我很喜欢这部电影。 
            FS: 《黑客帝国》呢? 
            John: 
            《黑客帝国》非常精彩。我喜欢所有精彩的科幻、动作和类似的电影。我不是很喜欢意义深刻的电影。我看电影的目的纯粹是为了娱乐。有些电影实际上改编自我们开发的游戏。我们的游戏相当于计算机游戏界的施瓦辛格电影。 

            Quake 和简洁 
            FS: 你认为人们为什么喜欢Quake 3? 
            John: 我们希望通过Quake 
            3达到的目的就是让你可以在玩游戏时全身心地投入其中。对于华丽设计或者其他特点的吹嘘,以及试图在游戏上强加一个传奇或者故事的做法毫无意义。一个游戏的真正价值在于让你在玩游戏时感到有趣。关键并不是击败游戏对手或者完成某项任务,而是要让战斗真正有趣。 

            必须有些让你想要采取行动的任务。人们不会因为玩垒球游戏而真的去玩垒球;必须有一个本身很有意思的战斗。我认为我们在这方面做得不错。我们期望,并且的确从我们的拥护者那里得到了大量的反馈信息。 

            肯定有些玩家希望玩更加复杂、更加具有挑战性的游戏。对于游戏来说,这是一个可行的发展方向,但是它可能会导致游戏内核的发展停滞不前。你可以在玩飞行模拟游戏时体会到这一点,因为这些游戏要求你在开始游戏之前阅读漫长的使用手册。而在过去的飞行模拟游戏中,你要做的就是跳进飞机、起飞和射击。这些游戏可以给玩家带来真正的快乐。而在有些严肃的模拟游戏中,你必须让自己相信你真的达到了娱乐的目的。 

            也可以像这样来开发第一人称射击游戏,即要求玩家了解现在发生的情况,各种工具的使用方法,以及各种战略等——而玩家并不想要知道这些,他们希望的只是坐下来玩游戏。也许有很多人喜欢这样的游戏,但是我并非如此。我没有时间学习游戏的各种知识。我从来不玩那种需要学习大量复杂的知识的游戏。我只喜欢玩一些简单的、迅速上手的游戏,它们让我可以立即进入游戏,享受一段美好时光。我认为与我一样的游戏玩家是上面那种喜欢复杂游戏的玩家的五倍以上。
            FS: 你最近一次玩超过2小时的、非id出品的游戏是什么? 
            John: 很可能是Nintendo 64平台上的F-Zero X ——一款赛车游戏。 
            FS: 你是否考虑过开发一款赛车游戏? 
            John: 我们曾经在推出Wolfenstein 之后讨论过这个问题。 
            当时我正在研究一些三维象素-landfield技术,我们制作了一些汽车行驶的简单演示。但是我们从来没有采取任何措施来将这个想法付诸实施。但是如果我们真的开发一款赛车游戏,那肯定也属于非常有趣的赛车类游戏——例如F-Zero游戏,而不是非常严肃的赛车模拟游戏。这里我要再次指出,游戏界有很多有效的发展途径,但是我有我自己的个人爱好。我的爱好恰好让我们既可以开发出成功的游戏,又可以让游戏具有我所认为的真正的娱乐性。 
 


            Id公司的下一款游戏 
            FS: 你认为你的个人爱好并不是开车,而是火箭发射器?
            John: 
            游戏的目的就是娱乐。模拟游戏从来没有让我获得愉快的感觉,包括飞行模拟、赛车模拟和所有类似的模拟游戏。我知道它们在某些方面具有一定的娱乐性。它肯定不会像我说的:“这些游戏非常枯燥,所有人会喜欢它们”。但是,它们并不是我喜欢的游戏类型。 

            在我刚刚喜欢上RGP游戏时,我的生活因为其他一些事务而变得越来越忙碌,因而我没有很多时间用来玩游戏。我一直都很喜欢简单的卷轴游戏。尽管从Gauntlet到Quake 
            3,它们已经发生了很大的变化,它们的基本理念仍然没有改变——你需要四处奔跑、打败敌人、拾起武器、及时进入下一关。这是一个从根本上非常有效的、核心的、首要的游戏元素,我对将相对较为类似的游戏(例如Quake、Quake 
            2和Quake 
            3)制作成具有不同风格的游戏并不觉得有什么不好。就像总有人玩赛车游戏和飞行游戏一样,现在也总是会有各种各样的第一人称射击游戏。我认为我们的每个项目都得到了重要的收获。我们的下一个游戏可能会采用一种完全不同的方式,因为并不是公司中的每个人的想法都与我一样。因此下一次我们可能会稍微改变一下我们的策略,但是我们还没有做出最终的决定。 

            FS:它仍然是一款第一人称游戏吗?
            John: 
            它很可能仍然是一款第一人称游戏,但是它不一定是一款动作游戏。Graeme和我一直在讨论很多游戏的设计创意,并且探讨了我们目前拥有的各种选择,但是我们还没有准备好讨论任何细节。它很可能是一款第一人称游戏——这几乎是肯定的。 

            FS: 
            我刚才在想,如果id进入RTS或者其他类型的游戏领域,可能会出现非常有趣的情况——这就像Blizzard从RTS转向开发动作RPG一样。
            John: 
            我不是一个真正的实时战略游戏玩家。实际上,我从来没有真正坐下来玩过一款SLG游戏。这不是我喜欢的类型。它与第一人称游戏完全不同——后者是最有现场感的游戏。 

            实时战略游戏是最没有现场感的游戏之一。你只是指挥你的军队,而不是你自己在游戏中冲锋陷阵。我想我们还是会继续开发第一人称类游戏。从第一人称游戏转向第三人称游戏只是一小步,但是我认为肯定有其他一些公司更加擅长开发第三人称游戏,例如那些在开发指挥战略方面更具实力的公司。
            与游戏行业的很多人不同,我并没有在计算机上制作电影的想法。而正是这种想法导致了很多公司陷入困境。有些游戏设计人员认为他们是导演,而我认为你应当摆正自己的位置。我只是一名游戏设计师,而不是一名电影导演。这也是促使很多公司转向第三人称游戏的原因。第三人称显然更适于显示人物动画这样的特效。Steed肯定希望开发更加重视动画的游戏,但是这可能并不是我们的下一款游戏的开发重点。我们还没有最终决定,但是我肯定将继续开发第一人称游戏。
            关于游戏行业 
            FS: 
            你把在计算机上制作电影视为“很多公司陷入困境的原因”的说法很有意思,因为有很多3D显卡公司——例如3dfx和Nvidia——实际上将“把好莱坞引入台式机”作为他们的宣传重点。 

            John: 这个现象存在很多有趣的问题—— 
            一个是以最高的质量发挥今天的3D引擎的威力所需要的人力正在迅速接近好莱坞所需要的电影布景人员的数量。就像现在,Quake 
            3远远没有真正地达到我们所能制作的视觉效果的最高水平,但是只有这样我们才能保持足够快的开发速度。 
            但是如果有人根据这个圣诞节推出的产品了解了今年的技术水平之后说:“我想要制作出视觉效果最惊人的、最接近电影的游戏”,那么他可以制作出远远超过人们目前所看到的视效水平的游戏。相关的技术都是现成的。这就是过去一年中游戏行业的发展趋势,尤其是一些特殊的效果,例如各个层次的完全纹理渲染,需要场景设计人员加入进来,以不同的方式设计他们的场景,以及利用模型构建所有这些特效。这样的努力现在可以被用在计算机游戏中。而过去并不是这样。 
 
 
            在我们开发Doom和Quake时,我们并没有能力投入如此多的人力。如果你需要设计一个房间、一条走廊和另外一个房间,你应当采用的方法是:走廊、模块、模块、天花板。这就是你所能做的一切,因此我们所能开展的工作受到了严重的限制。 

            FS: 你总是支持以规模较小的团队开发游戏;这是否意味着孩子们可以在自家的车房中和伙伴们一同开发游戏? 
            John: 
            我们还没有充分地发掘出所有可能的游戏种类。很多人在很多方面对游戏行业有所不满,而事实上的确很多发行商并不喜欢发行创意新颖的游戏。来自Definition 
            6的Chris Hecker 
            一直在用多种方法推广物理游戏;他开发了一些新奇的游戏。他所开发的游戏使用了一个新颖的创意。他还制作了一个简短的游戏演示。这个游戏将物理作为它的核心原理,但是它并不是像“让我们将物理加入一个第一人称设计游戏”一样。它是一个非常独特的游戏。它采用了一个很好的游戏设计,而且与物理学密切相关。但是发行商对它一点都不感兴趣。 

            这的确非常糟糕,但是与此同时,我们也可以从其他一些事情上看到一些积极的迹象,例如有些人通过在互联网上销售他们所开发的一些简单的小游戏而赚了大钱,例如每年通过被下载的游戏获得几千美元的收入。我对此感到非常振奋,因为我们可以清楚地看到,有些人可以通过开发主流之外的游戏赚钱;这种情况因为互联网而成为了可能。 

            我们在公司创建早期以共享软件的形式获得了成功。通过最初的Keen三部曲,我们每年的收入达到了10万到15万美元。通过第二个三部曲,我们每年借助共享软件获得的收入达到了50万美元。这还是在我们进入正式的商业销售市场之前。现在看来可以比当时做得更加出色。这的确很有意思。但是由于货架上需要占用成本费用和货架空间,发行商并没有兴趣发行创意新颖的游戏。我确信肯定有一些新的游戏种类正准备崭露头角,但是面临着一些阻力。 

            Id不是一个发行商 
            FS: 你对Halo感兴趣吗? 
            John: 
            我看过它的影片;看起来非常出色。现在的问题是无法根据屏幕截图来判断一个游戏的好坏,因为任何一个不够胜任的渲染引擎都可以渲染某个特定的场景。关键在于各个对象能否无缝地连接到一起。Bungie拥有很多杰出的游戏设计人才。他们从事游戏行业的时间和我们差不多。他们很多年来就像是id在Mac平台上的影子。但是现在他们已经走在了前面,并在PC平台上取得了一些重要的成果。他们表现得非常不错。 

            FS: 再回到开创新的游戏种类和来自发行商的阻力的话题,你是否有兴趣帮助推广新的游戏种类,例如提供一些资金来发行这些游戏? 
            John: 
            我肯定不想成为一个发行商。Id内部就这个问题讨论了很多年。五年以前,所有的游戏开发公司都希望成为发行商,因为当时有很多小型发行商。后来这些小型开发商逐渐被合并为少量大型发行商。我们就这个问题讨论了很长时间,而且我们自己发行了最初的Quake共享软件,但是当与发行商达成协商之后,我们很可能损失了一些利润,因为发行商的业务管理往往相当糟糕。但是最后所有人都达成了一致意见——尤其是在我们看到很多发行商的合并和倒闭之后——做一个开发商比做一个发行商好得多。因为软件开发商是这个行业中比较清楚的部分,你只需要交付CD,再通过邮件接收支票。但是,作为一个发行商,你需要处理行业中的很多你根本不想接触的混乱部分,例如代理商在取走并售出你的产品之后付费等。我一点也不想接触这方面的业务。 

            FS: 或者利用你的影响力来说服一些发行商,你知道,也许你应该利用这个机会。 
            John: 
            我不会投入太多。我会对这样的事情临时发表一些意见,但是我不会对一些我知道没有足够的时间和精力来努力的事情提出承诺。事实上,这对于我保持对主要工作的专注非常重要。我愿意不去理睬大量的琐事。这一点非常重要,因为如此多的事情都可能需要占用我的时间。可以从很多面临类似处境的人的生活中看到这样做的重要性:整天都有人不停地找他们,从而使得他们无法开展任何工作,因为想要达到某个目的的人会给他们拨打电话和发送电子邮件——对他们进行访问,或者请他们提出一个业务建议。 
  
 
            有时候我会因为没有完成更多的工作而感到内疚。尤其是在即将到来的一年中,有很多不同的硬件设计工作需要完成,而且每个人都没有一个明确的发展方向。我告诉自己,我应当参与到开发工作中,帮助所有人达成一致意见,因为我的地位使得我比较适合扮演这样的角色。微软在很多方面很乐于听从我的建议,很多硬件公司肯定也愿意这样做。他们对我存在一定程度的尊重。但是在开发Quake 
            3期间,我没有时间来从事这方面的工作。 
            现在我可以四处宣传一些想法,但是我深知,即使是现在,我也不能完全投入这项工作,因为尝试并带领整个行业沿着我所希望的方向向前发展实际上是一个全职的工作。我还没有狂妄到认为世界没有我就转不了。因此我想要说的是,我会尽量提供帮助,但是我不会全身心地投入这项工作。 

            关于Trinity
            FS: 让我们换个话题,我读到的一篇文章提到在Quake 3成功推出之后,你准备花更多的时间研究引擎。 
            John: 我目前正在开展多项引擎研究工作。 
            FS: Trinity是其中之一吗?我想人们一直对“Trinity”有些迷惑不解。 
            John: 
            我一直不知道为什么每个人都对Trinity感到迷惑不解。在推出Quake之后,我开始研究新的渲染技术,人们都将其称为“下一个引擎”或者其他名称。Michael 
            Abrash建议我们采用Intel的做法:用一条附近的河流命名你的下一个项目。达拉斯有条名为Trinity的河,所以我们就下一个项目的名字取为“Trinity引擎”。当然,我们最终没有将其用于某个项目,因为Quake 
            II是Quake I的续作,而且我没有在Quake 
            II上使用[Trinity],因而没有任何一个项目采用了这项技术。刚才我们谈到了我当时所做的工作。在开始开发Quake 
            III时,我针对不同的渲染技术编写了六个不同的研究引擎。 
            但是这仍然只是我所从事的研究工作。其中包括2个三维象素项目,1个空间扭曲项目,1个照明图项目,其中的一部分工作成果后来成为了Quake 
            III引擎。 
            有一件事一直是id和我的技术指导工作的真正实力之一。你可以看到一些公司紧紧抓住某个聪明的创意不放;有些你可能耳熟能详的游戏则是以一个创意为核心进行游戏开发。而我并不受限于某个特定的创意的束缚。正如我刚才所说的,在开始开发Quake 
            III时,我有六个不同的任务需要完成。我观察了所有这些任务,然后对自己说:“这些任务更加简单明了。”但是我们为Quake 
            III所做的工作实际上是很多方法中的一种比较正确的方法。我现在还有很多任务需要完成。但是没有人会在上面贴上魔法标签,所以我需要亲自评估所有这些不同的任务。 

            三维象素和曲线 
            FS: 
            你刚才提到了三维象素,而且你正在开展这方面的研究。你是否认为3D硬件公司应当关注三维象素加速?你怎样看待已经推出的三维象素游戏,例如“三角洲部队”? 

            John: 
            三维象素开发?我过去编写过一些三维象素引擎。实际上Shadowcaster——即Raven的最初名称——的早期版本中就曾经使用了三维象素地面。但是在我们重新编写该程序,以便更多地使用多边形时,我们将三维象素地面删除了。用三维象素技术显示对象可以带来一些实际的好处,因为它可以通过多种方式为您提供完整的纹理和轮廓细节。我在刚开始开发Quake 
            III时编写了这两个三维象素引擎,我当时认为我可以让它们完全通过软件运行,但是它只能提供相当低的分辨率。根据你所能达到的水平,以及硬件多边形的生成速度,在这种情况下并没有必要使用这项技术。 

            我分析了内存存取模式;你可以用硬件做一个三维象素光迹追踪器,它所使用的硬件资源远远少于我们现在在进行各种三角形光栅处理时实际所用的资源。我认为它在很多情况下可以提供更加具有吸引力的视觉效果。但是它的确很难理解,因此我不太愿意向人们推荐这样的技术。我知道我做了一些介绍性的演示,但是PC行业能达到现在的硬件水平的根本原因是我们都可以借鉴SGI这个例子。我们拥有“这显然可以发挥作用,你看他们已经做到了”的说法的实际证据,因而问题就在于如何挑战并最终超过他们的成绩。 


            如果要推荐某种全新的技术,有人会说:“你应当让你的工厂生产三维象素芯片,你应当尝试这项技术,并向它投资几百万美元。”我不愿意这样做,因为我们并没有一个完整的证据来表明我们在开发引擎时有必要采用这项技术,也不能证明它可以带来足够的渲染改进。如果有人真的做了一个三维象素开发工具,你可以得到它的深度值,并将其与现有的三角形混合,这可能会是一个有趣的中间步骤,但是坦白的说,我并不认为它会占用如此多的硬件资源。由于现在每个人都在想方设法让自己的产品独树一帜,所以可能会有人用这种技术作为宣传的噱头,但是肯定仅此而已,因为他们还不知道具体怎样使用这项技术。 

            我认为现在有些非常具有潜力的技术,但是我并不能肯定这就是未来的发展方向,因为尽管这些技术适用于环境的开发,而且你可以将它们用于一些出色的应用,但是还不清楚它们是否适用于角色的开发。你可能会说:“也许你必须用一个变形矩阵构建这个模型,然后当你对它进行Raycast渲染时,让光线在接触变形网格时转向。”但是我还没有编写过这种软件版本。只有在我可以提供一个显示这种技术的工作方式,而且它看起来比你直接可以实现的效果更好的情况下,我才会向别人推荐这项技术。我现在还没有时间来做这件事情,因为我有一些迫在眉睫的研究任务需要完成。 

            但是我认为这项技术具有一些重要的潜力,有可能会成为一个有趣的发展方向。我现在真正想向所有人介绍的技术是更高阶的表面渲染,包括曲线、细分表面等。现在每个人都对这些技术非常感兴趣。在使用了两年时间之后,我发现它们并不像宣传得那样出色;它们存在不少问题。你直接从外面往往发现不了,对于一个开发人员来说,必须要深入内部才能看到这些技术的本质。 

            如果你曾经读过相关的研究文献,了解贝赛尔曲线的工作方式,你可能会想,哦,这项技术非常出色,这正是我们在三角形单元之后的前进方向。你并没有意识到所有的“实际”问题,例如使用无效的、标准的,但是退化的边缘。你不能随意地划分一条曲线——除非将其提高到两侧的平面。你不能通过调整其他部分连接两个交叉点。所有这些细微的不足最终会造成很大的不便,尤其是在比较困难的情况下,你很难全面地了解发生问题的环节。三维象素技术也存在所有这些问题,这就是我为什么不愿意上台演讲,描绘未来的远景,因为很多技术从表面上看来很出色,但是当你深入到它们的内部时,往往会得出相反的结论。 

            对竞争的看法 
            FS: 既然你打算重新开展研究工作,那么这是否会对id的下一款游戏的推出时间产生一定的影响? 
            John: 这取决于我们最终决定下一步采取什么措施。我目前正在开发的两种技术都适用于现有的Quake 
            3框架,因此这些新技术可能会被加入到下一个产品中。
            目前我们得到了一个非常重要的机会,即我们可以使用这个牢固的、稳定的、可扩展的、灵活的引擎,从而将我们的开发重点放在游戏设计上,而不需要考虑引擎的开发。。。 
            从一位管理人员的角度来说,这无疑非常有利。但是,如果我们这样做,我现在正在开发的技术很可能不会在三年、四年甚至更长的时间内被用于新的产品。对于技术的发展来说,这是相当长的一段时间。因此我们需要一个真正强有力的激励来促使我们将一些新技术加入到下一个产品中。 

            FS: 你是否通过玩其他游戏和观看竞争对手的产品来开展研究工作? 
            John: 我经常玩Unreal,将来我可能会喜欢玩Unreal 
            Tournament——尽管我现在还没有玩这款游戏。另外,我还会玩很多演示版的游戏。我不会进行一次真正彻底的调查,玩遍市场上的每款游戏。通常我只是在别人玩最热门的新游戏时旁观一下。而我不会花很多的时间玩其他的游戏。当然,我玩Quake3的时间超出了其他任何一款游戏。 
            FS: 公司中是否有专人负责这项工作? 
            John: 
            Christian和Graeme会玩大部分新游戏。过去是Brandon负责玩每个游戏。当他在id时,所有信息都会从他那里过滤一下。Tim也经常出于一些研究目的玩游戏;Tim在浏览其他游戏方面表现得相当尽责,而Graeme和 
            Christian 玩其他游戏的主要目的只是娱乐。 
            Carmack的研究 
            FS: 你能否简单地介绍一下你的研究内容? 
            John:我现在正在开发的一个渲染引擎技术是一个更好的照明模型。Quake 2 
            在计算中添加了发射性照明,它可以带来真实的光线反射效果,但是很多人实际上并不喜欢这种技术,因为它消除了一些阴影,从而让更多的对象陷入黑暗之中,尽管这比较符合实际情况——很多人都喜欢更为明显的阴影。在Quake 
            3中,我们重新只使用了一个直接照射灯,这在一定程度上是因为我不想在曲线上进行有限元放射计算。另外一项技术将让设计人员可以在任何地方渲染纹理和划分轮廓,从而让我们可以手动改进对象的显示效果。因此,主要有两个研究方向。实际上,它们可以被结合到一起,或者共同使用。它们都给我带来了一些有趣的技术难题。这些技术可能会在我们的下一款产品中得到展示。 

            我的其他一些研究内容与游戏引擎无关。我正在利用Web摄像头进行一些视觉研究,例如一种头部跟踪装置。我可以利用这种装置,在游戏中加入一些有趣的内容。例如当你来回摇你的头时,你在游戏中扮演的角色也会做出同样的动作。或者像一种支持全息照相的窗口界面,你只需要移动你的头,就可以改变你的形象。我并不认为Web摄像头用于足够快的速度,在没有显著延时的情况下实现上述目标,但是这仍然是一个相当有趣的技术。你可以利用面部表情等,将它提高到新的水平。 

            我认为这些技术的应用将会超过我的想象。所有短时间的不连续都是由于输入/输出设备的变化所引起的。当人们开始用鼠标进行各种操作时,事情发生了变化。我认为“计算机视觉”已经具备足够的实用性,足以对对象产生“鼠标式”的影响。毕竟,有些事情只能通过鼠标完成,而不能依靠键盘。这仍然处于自由猜想阶段。
            现在出现了一些有趣的应用,因为我们现在运用了足够强大的CPU运算能力,可以进行一些相当复杂的计算。与很多图像技术不同,它还有很多尚未解决的研究问题。很多人正在研究这些难题,但是我们没有“SGI实例”来知道怎样将对象组合到一起和提高运算速度。 

            我所感兴趣的最后一个研究方向是实现更加通用的3D技术,例如能够在3D世界中利用其他的渲染工具(例如HTML)开展工作,以及能够建立不与某个特定游戏相关联的小型网络空间。我认为我们可以构建一个基础设施框架。我们可以开发一款第一人称设计游戏,但是框架具有足够的通用性,因而我们可以用它完成其他任务。 

            所有现有的软件显然都是针对第一人称射击游戏而设计的,但是人们以后可以利用这些技术执行其他一些有趣的任务。通用化总是要付出不菲的成本。你可以通过技术的专用化提高它的工作效率,但是在某个转折点你可能会发现通用化的成本并不是很高,而拥有一个更加通用的平台所带来的好处更加显著。我认为3D游戏目前正处于一个这样的转折点。
            现在的我们与两年前大不相同。当时我们仍然需要考虑每一个很短的帧来提高一点点性能。由于硬件加速的发展——尤其是轮廓加速的实现,以及速度更快的CPU和容量更大的RAM的出现,这种情况已经不复存在。我认为我们的通用平台的速度可以达到专用版本的90%以上,同时可以利用这个平台处理大量其他的、有趣的任务。 

            综合性问题 
            FS: 你希望建立一个永久性的Quake世界,让人们可以在其中进行对话和交流吧?  
             John: 
            是的,甚至不一定与Quake有关。我认为在利用介质通信方面有很多有趣的工作需要完成。你会看到人们互相交流,在一个服务器上会面等。这方面有很多潜在的发展方向。我不会将其称为虚拟现实,因为VR已经成了一个与死亡和毁灭联系在一起的名次。从来没有一家成功的VR公司,但是我认为其中很多公司失败的原因都是当时并没有相应的技术来实现他们的创意。在很多情况下,创造力和创新精神都会受到技术发展的限制。 

            Doom就是一个典型的例子。我们用了很多的聪明、才智和创造力才开发出了Doom,但是所有这些聪明才智在五年之前并不能产生任何作用,因为当时的技术限制使得人们不可能开发出像Doom这样的游戏。有些时机是适合出现新的创新技术的。 

            我认为在未来几年中,将会出现很多这样的创新技术,例如3D界面的通用化。每个人都用一种含糊的、空想的方法预言互联网和Web在未来的某个时候拥有一个3D界面。但是没有人提出真正实现这个目标所需要的具体细节。现在可能是实现这个目标的时机,但是也可能不是。 

            我很关注这些研究方向,而且我将从事所有这些研究工作。最终我将把那些最有前途的技术研究到底。 
            FS: 你是否建议年轻人上学? 
            John: 
            如果你是为了正确的理由上学,那么学校将是一个很好的学习知识的场所。大学可能是一个信息极为丰富的环境。我现在回想我的大学生活,会觉得我浪费了很多宝贵的时光。我当时应当使用他们的图形工作站和其他设备学习知识。 

            如果你只是为了获得一个学位,以便找到一份满意的工作,那么我并不支持。如果你上学是为了结识聪明人、拓展知识面和学习新知识,那么我完全支持。有些人在大学的收获比我上面列出的多得多。至于我,我一直都是那种只会看产品手册的学生。我喜欢这种学习方式,但是并不是所有人都喜欢这样。我并不认为大学是一个不好的地方,但是我并不支持这样的观点:“你必须上大学,这是唯一的成功之路”。原因很简单,它并不是唯一的成功之路。 

            我认为,至少对于一些年轻的、发展迅速的行业(例如互联网和游戏设计)而言,才能和一份表明你的工作经验的简历比学位更加重要。我从来不问别人“你是否有一个学位?”我更关心的是“你做过什么?”如果要从坐在课堂里参加考试或者在家里编写游戏程序来证明你所拥有的天赋之间进行选择,我认为后者不失为一条合理的成长道路。 

            FS: 最后一个问题——你现在玩的是什么游戏机? 
            John: 我在家经常玩的游戏机是Nintendo 64,但是除此以外我们还拥有Playstation、Saturn和其他一些游戏机。 
            Firingsquad 和 Gamers.com 
            非常感谢John和Anna抽出时间接受我们的访问。我们的这篇文章得到了广泛的好评,我们希望在不久的将来访问您所喜爱的其他程序员。请到我们的留言板上发表您对本访问的看法。
            [责编:郭胜民] 
 

posted @ 2006-04-21 09:39 高山流水 阅读(1202) | 评论 (0)编辑 收藏

                                     

帅得不敢上街

我太帅了,大家给个活下去的理由啊

我出生在一个普通家庭,父母健康,有爷爷**,还有几个姑姑叔叔.

据说,我出生时,天空的北方,出现祥云一片,渐渐由远至近,飘到我家房顶后,幻化成一个字:帅

爸爸见到我后,声嘶力竭的哭了一个半月,他打死也不相信我是他的染色体遗传下来的孩子,几次携菜刀冲到我母亲床前,挥舞着说要把我斩成肉泥,母亲以死相护,我才得以存活.

爷爷的青光眼十几年了,一米开外分不清是人是狗,可是当我出现在他眼前的时候,老人家老泪纵横,自谫双目,从此不见天日,说是不想再见到人,以免后患无穷.

后来,母亲为了证明自己的清白,拉着父亲要去医院作亲子鉴定,医生揭开被子只看了一眼就哭了,抹着鼻涕说回去吧,这不是你儿子,谁的也不是,人类生不出这么帅的孩子.....

一个实习的小护士走过,看见了强保重的我,立刻找了盒红印泥,把我的指纹印了下来,并把盘好的头发一下子散开,对着我喃喃道:长发为君留,此生若不嫁你,长发不减,清灯古佛,自梳闺中.......

母亲赶紧往外走,一路小跑,不小心碰到了隔壁妇产科一个等着生孩子的老太太,老太太拉住母亲,慈祥的说:孩子,急什么阿,有啥想不开的阿?别颠着孩子阿....

母亲别他缠的心烦,一把拉开被子,那老太太一看见我,立刻跟上了神经病得似的,眼泪哗哗的,一屁股蹲倒在地,摇头狂叫:我早生了50年啊!!!!!!!!!!

母亲闪.....

我长到十五岁的时候,还不敢上学,不是没上过,幼儿园的时候上了半天就不敢去了,全园的孩子老师加院长都疯了,我的脸蛋被小女孩亲的肿成了西瓜,阿姨们狂殴小朋友,不为别的, 就因为他们和我生在一个年段,军警出动,才算平息了暴乱.

我家门口常年有人钓鱼,而且绝不空手而归,最有意思的是,我们家离海还有一百公里,他们却经常在门前的小臭水沟里钓到金枪鱼,并且在草垛后边发现了海龟蛋,后来经调查,原来是因为我家门口常年不断有无数女人哭泣,而眼泪的成分富含氨基酸和蛋白质,十分适合金枪鱼生存和海龟产卵下蛋,经年累月,那些女人的眼泪汇集成了一小片海滩,到我十五岁的时候, 海滩上一片繁荣景象,到我十八岁的时候,这片海滩发展的十分迅速,于是被人称为:夏威
夷.

有一次我实在闷得慌,晚上偷偷跑出家门,我本来准备好如果见到雌性的动物就撒腿狂奔,谁知道我出门后,除了一片惊声尖叫,没有追来的,我小心翼翼的回头一看,原来他们全部晕倒在海滩上...

美国国防部正式向海牙国际法庭起诉我,说我破坏第一家庭的家庭幸福,原来总统夫人老辣见到我六岁时候被偷拍的照片后,竟然跟小布什提出离婚,创造了美国国家历史上第一宗在任总统离婚案,海牙国际法庭受理后,给我下达了传票,我接到传票后,表示愿意出庭,因为这种生活实在难以忍受,不过传票没有回到法庭,因为上面我有签名,所以半路上被邮递员..... 后来邮递员被判122年有期徒刑.

中央电视台焦点访谈节目组来采访我,抗摄像机的那个玻璃晕倒了三次,负责笔录的那个小姑娘生生把中文写成了意大利文加西班牙文.

播出的时候,因为电视台对我的面部进行了马赛克处理,第二天就被人砸了,标语贴的到处都是,美国CNN电视台称,这是中国第二次文化大革命现象,小布什趁机访华,在天安门广场发表了演说,题目为;我的一张大字报!演讲是在美国T2特 工5000多人的保护下进行,不过顾此失彼,空军一号被袭,砸了个希吧烂.....联合国拨专款为我建造了一座藏身之处,位于喜马拉雅山的珠穆朗玛峰顶端,消息极度封锁,世界上除了我家人和秘书长安南,谁也不知道我在哪里.

我享受了的清静,真正的清静,蓝天距离我无比接近,上帝简直就是触手可及,我清静了, 但也是极度的烦闷,我站在巅峰大声呼喊:我不帅!!!!!!!!!!!!!!!!!!!!!!

突然,天上传来一个安魂幽弥的声音:不,你撒谎......

上帝,您就不能骗骗我.......

我愤怒,极度愤怒!!!质问上帝,你为什么让我这么帅!!!!

上帝那安魂的声音又传来:你说什么?

我全身瘫软,泣声道:我为什么这么帅.......

上帝沉默了......过了一会,上帝才开口:你谦虚......

那一霎那,我想从顶峰跳下去........

忽然山下有一队人马冲上山来,后来才知道,安南被绑架,为首的匪徒的母亲的姥姥曾经在中国清朝时期在慈喜身边当宫女,老爷是刑部尚书,家传宝,就是满清十大酷刑,安南果然是条可歌可泣的汉子,一直用到第九刑,才说出我的藏身之所....

我发狂了!!! 

我站在一块石头上,面对万丈悬崖,歇斯底里:你们敢上来!!!我就跳下去!!!!!

人群站住不动了,惊人的寂静....

人群开始骚动,有许多人如同着魔一般,从悬崖边跳了下去,越来越多!最后只剩下几个晕
倒的还留在山上,剩下的,全部跳下山崖,我往下一看,他们用身体给我铺成了一张软垫,怕我失足落下....

我孤立无援...我被女派重点保护在以前的美国五角大楼,女人以见我一面为荣,自从上一次珠峰事件以后,科学家发现人类的潜能原来如此强大,因为那次珠峰事件中,有百分之十的人身患绝症,百分之十的残疾人,还有百分之十的弱智.....

许多癌症患者(女)为了见我一面,已经苦苦支撑了十几年,还成了抗癌明星,有的残疾人(女)自从见到我,便甩掉了相伴几十年的拐杖和轮椅,有几个还连破了几次世界百米纪录.

无奈之下,第三次世界大战爆发,男性为了维护自己的尊严,动用了原子弹....

爆炸过后,全世界只有我一个人存活,因为我被保护在防核区,我走出来的时候,大地一片荒芜,处处是战争过后的荒凉和废墟.... 

突然,我发现地上还有生物!!!!

那是一只蟑螂!!!蟑螂的生命力之强,出乎所有人的意料,我捧起这只蟑螂,老泪纵横,那只蟑螂全身发抖,我放眼望去,原来在我脚下,是一片蟑螂!!!全是母的!!!

而另外的海岸线上,所有的公蟑螂虎视眈眈!!!

谁也不会料到,地球的第四次世界大战,竟然发生在蟑螂之间.....

后记:我死后我千万年,后人类诞生,他们将我的骸骨还原,葬在北极,在我的墓碑上空,终年漂浮着一片云彩,变幻来变幻去,只有一个字:帅.....

党需要我帅,我能不帅吗?

山无棱,天地合,才敢不英俊。

帅得惊动党中中央,连毛主席都表扬我帅。

有次我走到街上,一群美女拦住我,问我:“你帅吗?”我说:“我不帅。”回应的是五个火辣辣的手指印,然后她们就一起上来打我,边打还边骂我虚伪。

第二次我走到街上,又一群美女把我拦住,问我:“你帅吗?”我记住上次教训,点了点头,说:“我帅。”她们又一起来打我,边打边骂我太不谦虚。

第三次我走到街上,又一群美女围住我,问我:“你帅吗?”回想起前两次我的“下场”,我没回应,一扭身,刚想走,孰料她们将手里拎着的手提包一起疯狂地抡向我,其中扁我扁得最卖力的那个女生还破口大骂道“靠,你小子帅得都拽成这样啦?”

每天我都不断刷新一项新的世界记录,那就是---我在世界上保持最帅的记录。

长得帅不是我的错,你喜欢我就是你自己的问题了。

帅是天意,酷是人为。

一天,明星们约我出去玩,猛然间,树林里窜出一只老虎来,老虎不追别人,就追刘德华,追着追着,刘德华不见了,老虎一回头,看见既帅又酷的我,于是老虎上前一下子按倒我,大笑道:“小样儿,别以为你变得更帅我就不认识你了?”

李玟追我追了三条街,谢停疯昨天看见我后,立即宣布要在9月份退出演艺圈。!不为别的,就是因为我长得实在是太帅了......

帅得想毁容,帅得再不敢上街......

过年有个人送我一幅对联:

上联:看背影迷煞千军万马
下联:转过头女生爱得跳楼
横批:帅呀帅啊

一个见过我的女孩儿曾对我说:“如果世界只剩下十分钟的话,我会和你一同回忆你帅时的样子;如果世界只剩下三分钟的话,你要再摆一下你最最最帅的造型给我看;如果世界只剩下一分钟的话,我会对你对你说60次---你真帅。”

还有一个女孩儿每天早晨都站在教室门口,痴痴地望着我,呆呆状喃道:“世间本无沙漠,只是我每看到一次你帅的样子,天上便会落下一粒沙,从此便有了撒哈拉。”天天都是这句。一天我实在烦,自讨没趣地问了一句:“那其它沙漠是怎么来的呢?”“哦,那是因为认为你长得帅的女孩儿实在是太多了......”

如果帅是一种罪,那我已经罪恶滔天;如果酷是一种错,那我已经一错再错;如果聪明也要受刑罚,那我岂不是要遭千刀万剐?

因为太帅,我曾想自杀,但是所有的女孩子都哀求我道:“你长得的确帅气,活着是你的勇气,帅并非是你的本意,只是上帝他老人家非要看看,世界有你是多么的美丽。”

唯心主义说:“我说你帅,你就是帅。”唯物主义说:“因为你帅,所以我说你帅。”总而言之一句话---我 *** 就是帅。

一个不帅男人的标志是他愿意为自己的不帅英勇地死去,一个帅男人的标志是他愿意为自己的帅而卑贱地活着,所以,至今我还为自己的帅坚强的活着。

帅得拖网速。

我岂是一个帅字形容了得。我乃:英俊潇洒、风流倜傥、玉树临风、年少多金、神勇威武、天下无敌、宇内第一、寂寞高手、刀枪不入、唯我独尊、玉面郎君、仁者无敌、勇者无惧、金刚不坏、英明神武、侠义非凡、义薄云天、古往今来、无与伦比、谦虚好学、不耻下问、聪明伶俐、活泼可爱、待友热情、对敌冷酷、阴险狡诈、无所不为、心狠手辣、无恶不作,对友赴汤蹈火、再所不辞、两肋插刀、枪林弹雨、勇往直前、慷慨大方、头脑精明、仙福永享、寿与天齐、百折不饶、百打不死、侠中豪杰、人中龙凤、有情有义、有胆有色、举世无双、既酷又帅、人之表率、诚实可信、谈吐大方、风度翩翩、气势凌人、气质高贵、单身贵族、貌赛潘安、智胜孔明、勇比子龙、义超关羽、巧越鲁班、至尊至圣、至高无上、华丽绚烂、英勇无比、道德榜样、千杯不醉、坐怀不乱、知识渊博、才高八斗、傲视众生、世外高人、光明磊落、公正无私、震古烁今,第一大英雄大豪杰大侠客大宗师,急如风、静如林、掠如火、不动如山,号称一朵梨花压海棠,人送 绰号上天下地无所不能玉面小飞龙,英俊与智慧的化身,侠义与仁义的糅合,前辈高人巨侠是也。

在对的时间遇见最帅的人,是一种幸福;在错的时间遇见最帅的人,是一场伤悲。

帅不仅仅是男人的痛苦,也是女人的痛苦......我孤老终身......因为......所有的MM都自认为配不上我......

帅人从不说自己帅,帅人要抓紧时间作帅的样子。

一天早晨等车,不可否认,那天我等车的姿势是有些帅,但是......正在这时,一位漂亮的小姐“勇敢“地跑过来,对我说:“帅、帅、帅哥......可以......借我......五元钱吗?”“你要做啥?”我还没用到我220伏带电的眼神瞟她呢,却已看见她躺在地上,口吐白沫,喃喃道“我要打电话给我妈......说我今天看到了一个......一个绝世大帅哥......”遂抽搐中。3分钟后,110、119、120将现场封锁。

最后,法院宣布裁决结果:“长得帅不是你的错,但是你的帅样迷死人了就是你的不对了。”啊......因为帅,我就被判了20年。太没有天理了,555......

有一次晚上10点多,家里突然闯进来一群老外,都穿着黑西装,戴着黑墨镜,手里一水儿的 B43,我开始以为是杀手呢,要杀我灭口。可是后来,为首的一个老外忽然带头跪下,一指窗外停着的两辆集装箱卡车,十分痛苦地说道:“哥们,卡车里全都是美元,求求你都拿去整容吧,因为你和汤姆.克鲁斯长得一模一样,让他以后怎么混啊。”

连我考试的题都出成这样了:

题:作个最帅的样子出来

答:不用作了,现在已经是了

题:作个最丑的样子出来

答:也不用作,再怎么作也不会丑的

党需要我帅,我不能不帅。赶美超英的任务十分艰巨,我要为祖国的四化建设,为老区的开发和进步贡献自己的容貌。

posted @ 2006-04-20 17:48 高山流水 阅读(307) | 评论 (0)编辑 收藏

 

                                      

01.每天告诉自己一次,『我真的很不错』。

02.生气是拿别人做错的事来惩罚自己。

03.生活中若没有朋友,就像生活中没有阳光一样。

04.明天的希望,让我们忘了今天的痛苦。

05.生活若剥去理想、梦想、幻想,那生命便只是一堆空架子。

06.发光并非太阳的专利,你也可以发光。

07.愚者用肉体监视心灵,智者用心灵监视肉体。

08.获致幸福的不二法门是珍视你所拥有的、遗忘你所没有的。

09.贪婪是最真实的贫穷,满足是最真实的财富。

10.你可以用爱得到全世界,你也可以用恨失去全世界。

11.人的价值,在遭受诱惑的一瞬间被决定。

12.年轻是我们唯一拥有权利去编织梦想的时光。

13.青春一经典当即永不再赎。

14.没有了爱的语言,所有的文字都是乏味的。

15.真正的爱,应该超越生命的长度、心灵的宽度、灵魂的深度。

16.爱的力量大到可以使人忘记一切,却又小到连一粒嫉妒的沙石也不能容纳。

17.当一个人真正觉悟的一刻,他放弃追寻外在世界的财富,而开始追寻他内心世界的真正财富。

18.只要有信心,人永远不会挫败? C

19.不论你在什么时候开始,重要的是开始之后就不要停止。

20.不论你在什么时候结束,重要的是结束之后就不要悔恨。

21.人若软弱就是自己最大的敌人。

22.人若勇敢就是自己最好的朋友。

23.『不可能』只存在于蠢人的字典里。

24.抱最大的希望,为最大的努力,做最坏的打算。

25.家!甜蜜的家!天下最美好的莫过于家。

26.游手好闲会使人心智生锈。

27.每一件事都要用多方面的角度来看它。

28.有理想在的地方,地狱就是天堂。

29.有希望在的地方,痛苦也成欢乐。

30.所有的胜利,与征服自己的胜利比起来,都是微不足道。

31.所有的失败,与失去自己的失败比起来,更是微不足道。

32.上帝从不埋怨人们的愚昧,人们却埋怨上帝的不公平。

33.美好的生命应该充满期待、惊喜和感激。

34.世上最累人的事,莫过于虚伪的过日子。

35.觉得自己做的到和不做的到,其实只在一念之间。

36.第一个青春是上帝给的;第二个的青春是靠自己努力的。

37.少一点预设的期待,那份对人的关怀会更自在。

38.思想如钻子,必须集中在一点钻下去才有力量。

39.人只要不失去方向,就不会失去自己。!

40.如果你曾歌颂黎明,那么也请你拥抱黑夜。 
41.问候不一定要慎重其事,但一定要真诚感人。

42.人生重要的不是所站的位置,而是所朝的方向。

43.当你能飞的时候就不要放弃飞。

44.当你能梦的时候就不要放弃梦。

45.当你能爱的时候就不要放弃爱。

46.生命太过短暂,今天放弃了明天不一定能得到。

47.天才是百分之一的灵感加上百分之九十九的努力。

48.人总是珍惜未得到的,而遗忘了所拥有的。

49.快乐要懂得分享,才能加倍的快乐。

50.自己要先看得起自己,别人才会看得起你。

51.一个今天胜过两个明天。

52.要铭记在心;每天都是一年中最美好的日子。

53.乐观者在灾祸中看到机会;悲观者在机会中看到灾祸。

54.有勇气并不表示恐惧不存在,而是敢面对恐惧、克服恐惧。

55.肯承认错误则错已改了一半。

56.明天是世上增值最快的一块土地,因它充满了希望。

57.理想的路总是为有信心的人预备着。

58.所有欺骗中,自欺是最为严重的。

59.人生最大的错误是不断担心会犯错。

60.把你的脸迎向阳光,那就不会有阴影。

61.经验是由痛苦中粹取出来的。

62.男人要捧,女人要哄o 婚前挑缺点,婚后看优点o

63.用最少的浪费面对现在。

64.用最多的梦面对未来。

65.快乐不是因为拥有的多而是计较的少。

66.你的选择是做或不做,但不做就永远不会有机会。

67.如你想要拥有完美无暇的友谊,可能一辈子找不到朋友。

68.不如意的时候不要尽往悲伤里钻,想想有笑声的日子吧。

69.把自己当傻瓜,不懂就问,你会学的更多。

70.要纠正别人之前,先反省自己有没有犯错。

71.因害怕失败而不敢放手一搏,永远不会成功。

72.要克服生活的焦虑和沮丧,得先学会做自己的主人。

73.你不能左右天气,但你能转变你的心情。

74.孤单寂寞与被遗弃感是最可怕的贫穷。

75.想象力比知识更重要。

76.漫无目的的生活就像出海航行而没有指南针。

77.好好扮演自己的角色,做自己该做的事。

78.一切伟大的行动和思想,都有一个微不足道的开始。

79.得意时应善待他人,因为你失意时会需要他们。

80.学做任何事得按部就班,急不得。

81.养成更好的思考习惯,就可以改变生活。 

posted @ 2006-04-20 17:12 高山流水 阅读(158) | 评论 (0)编辑 收藏

  1.当一个人生活枯燥的时候,他忘了用心体会是一种习惯。

   2.当一个人觉得人生乏味的时候,他忘了培养幽默是一种习惯。

   3.当一个人体力日差的时候,他忘了运动健身是一种习惯。

   4.当一个人工作疲惫的时候,他忘了认真休息是一种习惯。

   5.当一个人孤傲狂放的时候,他忘了感恩惜福是一种习惯。

   6.当一个人志得意满的时候,他忘了为人谦和是一种习惯。

   7.当一个人钱不够用的时候,他忘了投资理财是一种习惯。

   8.当一个人觉得工作低迷的时候,他忘了激励自己是一种习惯。

   9.当一个人怀疑自己的时候,他忘了建立自信是一种习惯。

   10.当一个人忽略家人的时候,他忘了爱与关怀是一种习惯。

   11.当一个人浑噩度日的时候,他忘了阅读好书是一种习惯。

   12.当一个人忙于工作的时候,他忘了安排休闲是一种习惯。

   13.当一个人目中无人的时候,他忘了不断学习是一种习惯。

   14.当一个人慌张失措的时候,他忘了提前准备是一种习惯。

   15.当一个人推诿责任的时候,他忘了勇于承担是一种习惯。

   16.当一个人肠枯思竭的时候,他忘了转变思路是一种习惯。

   17.当一个人沮丧失意的时候,他忘了检讨改进是一种习惯。

   18.当一个人畏惧调职的时候,他忘了提升自己是一种习惯。

   19.当一个人沟通障碍的时候,他忘了真诚倾听是一种习惯。

   20.当一个人业绩消退的时候,他忘了积极行动是一种习惯。

posted @ 2006-04-20 14:38 高山流水 阅读(171) | 评论 (0)编辑 收藏

我住在海淀区,这里满大街跑的是月薪上万的小程序员儿,还有痛骂计算机专业无美女的项目经理,他们大脑袋、厚眼镜、因熬夜而布满血丝的眼睛,因不见阳光而酷似吸血鬼的脸,穿一个星期不洗的T-SHIRT,很有很有味道的,他们供楼不供车,他们翻开报纸只盯住北边的楼盘,倒不是因为关心奥运村,实在是想离公司近一些。我,衷心地喜欢着这个区。

有女友去国贸那边应聘工作回来,一脸幸福状地向我描述,地铁站里全是帅哥,地面上更是临风玉树站成了森林,让她的小心灵经受了一次美的洗礼,她晕乎乎地回来了,对那些西装革履、散发名贵男用香水味道、气宇轩昂的白领男人们再三再四地概叹:“F4那算个啥,肚里没货,只知卖相,看看人家,啊,那才叫自信来源于知识,气质来源于财富……” 我打断她语无伦次的胡说八道,问她工作有戏没戏,她说,“凭我的英语水平,能没戏吗?!”

  过几日,女友去上班。再过几日,女友辞职。我问为个啥,她说,她是属于海淀区的好市民,与朝阳区那个高级白领集居地格格不入。

  “她们化妆都太精致,显得我象个黄脸婆,她们中午在洗手间用的是外国带回来的化妆品,我用的是外国牌子国内生产的东西,她们早餐吃意大利浓汤和甜点,我吃的是小笼包子跟豆浆……”女友愤愤地数落着,“非穿职业装不可,我的那十来条仔裤算是没有用武之地了,你看看我的可怜的脚,被高跟鞋折磨得都变形了,封建社会摧残人也不过如此了吧。靠,就这样,她们还说我搭配得不对,灰衬衫不能跟紫色外套一起穿!”

  我说,“这有什么关系,这跟一份好工作有什么关系?你啊,也太注重技术层面的问题了。” “我郁闷……”女友象迷路的孩子一样:“我还是在海淀这边找工作吧。在这儿如鱼得水,要多自在有多自在,加班也愿意,你知道吗,他们东边儿啊,真不是人待的地方!”

  我立马制止了她的人身攻击:“别瞎说!都是首都人民,哪儿来的种族歧视啊?”

  女友几乎声泪俱下地声讨:“不是我啊,是她们等级观念严重啊。你看咱们这儿,上亿身家也穿着懒汉鞋去小馆儿吃京酱肉丝儿,谁也不怵谁,你有钱那是你的事儿,我有技术是我的骄傲,可是东边儿,什么都攀比,连丝袜的牌子都比,那天我戴了我奶奶给的玉镯儿,被她们笑话了个半死,什么老土啊什么没品啊,好象她们生下来就在钻石堆里长大的,如果我稍微有个行差踏错,那就要沾污了她们的小资阵营!”

  我笑:“傻子,现在小资过时了,都兴BOBO了啦。”

  “呸!什么BOBO,以为这个周末去怀柔爬山,下个周末去音乐堂,就又波西又布尔?上班的时候照样抢单,照样勾心斗角,照样背后传谣言,不过是改成了用英语传!算了算了,我不是那林子里的鸟儿,我还是安心在海淀做技术吧,加班累得贼死也比跟人打交道好啊,大家都埋头干自己手头的活儿,人际关系淡如水,很舒服的,我爱穿什么穿什么,只要活儿做得漂亮,老板照样给加薪,我是再也不去高尚区了。”

  于是,一场散漫悠游族向精致优雅族的伟大试探,便以失败告终。

  现在,我的女友悠哉游哉地溜达在北四环路上,在中关村的古怪雕塑前吃三块钱的冰淇淋蛋筒,周末时她在北大清华之间流窜,到处寻找新锐欧洲电影放映地。

  有时候去电影学院旁边的“NASA”或者民族学院旁的“火山”蹦迪,在一群孩子的青春狂野中,她仿佛回到了学生时代。她穿着从学院路服装市场三十块钱买回的T-S,裹着她年轻的骄傲的身体。她素面朝天,在风里露着最真实最娇嫩的肌肤。她每次都在地铁站给盲眼歌手几块钱,她在过街天桥上买D版DVD,她爱看周星驰爱听王菲,她用公司名称抬头的信纸给妈妈写信说北京下雪了,她爱看樱桃小丸子却从不见人就讲“酱紫”,她除了黑白灰三色还会穿红色碎花的厚毛衣象冬天里最漂亮的一头熊……

  她不过感恩节不过复活节不过万圣节,在不是情人节的日子里收到玫瑰也很开心,平安夜十点半上床睡觉,因为第二天还要上班。

  她会带着笔记本电脑去北理工南门的“雕刻时光”做程序,叫一壶薰衣草茶渡过一个略带疲惫的下午,低声跟咖啡馆里打工的女生商量,“能不能把《加州旅馆》换成神秘园?我今天忘带耳机了……”她把三里屯留给都市里最糜烂最空泛的眼神,把哈根达斯留给都市里没有味蕾却能言善道的巧舌,把不地道的红酒留给都市里最不规范却感觉最好的手势.
同学聚会的时候跟从前一样包饺子。还是最爱吃路口小馆子的羊肉门丁儿,一口气能吃六个。人大的食堂有一道铁板牛柳最好吃,农大食堂的红烧鱼很地道,最喜欢的是语言学院的图书馆,可以端饮料进去喝的,最满意的是地质大学的操场,公司的足球赛都是在那里进行……那郁郁的林荫道,金子一样的笑声啊,那青春的乌发、如玉的容颜,几个流浪歌手,几个校园诗人……让我们堕入这个梦中永不醒来。

  凌晨一点,中关村的“永和豆浆”店里,灯火通明,加班的IT们在这里吃宵夜,男孩子与办公室里他暗恋着的女孩子一起,就着鲜肉馄饨和一小篮儿鸡柳,说着公司里今天的笑话,他怜惜地看着她因睡眠不足稍欠血色的脸,看着她杂乱的浓密的眉,多想告诉她,她长得很象自己南方家乡的小妹。那些深夜里的快餐店,那些不曾丢掉美好幻想的人们……门外,星光暗淡,远处,是沉睡的楼群,而他爱的女孩,坐在对面心满意足地吃着滚烫的馄饨……

  中关村的男孩儿,不会告诉女孩子帕格尼尼的小提琴让他落泪,他会用鼠标画一张丑丑的大头鱼送给她,他会真心地夸奖女孩子的红帽子真好看而不会指责帽子颜色与鞋不搭配。

  中关村的男孩儿,懂得有关等待的故事。

  公司有很可爱的环境,因为老板的不打领带和总是不在家。她坐在前面他在后面,早晨的阳光淡淡地斜照在他俩的桌上,她的笔架和他的显示器她的小熊杯子和他的咖啡勺,他带着南方口音说今天堵车,她趁老板不在梳梳头,把小镜子竖在键盘上,一道刺眼的光晃到他那儿,他在后面大呼小叫,说是妖女放出厉害武器了。

  每天早上闻着咖啡的味儿开始在键盘上敲打,象一首诗里说的,大珠小珠落玉盘,他靠近她在屏幕上指点时,呀,他暗恋的女孩子,传来洗发水的清香,不是名贵的CD不是什么“夜间飞行”,那气息,象椰子和太阳的混了。

  是的是的,我们留恋纯真朴实的年代,我们希望看到生命如麦田,麦芒微微刺手,朴实的芳香弥漫在大地上,能醉倒所有付出过汗水的人们,那金黄色的麦浪,会让一只狐狸想起遥远星球上的小王子……

  我们不愿意让脚受到皮鞋的束缚、让脖子受到领带的束缚、让心受到格调的束缚。

  让小资们去孜孜以求最精致最优雅的生活吧,让他们劳累不堪地跟随着地铁书摊上的畅销指南书,一步一个脚印地上下求索高尚生活吧,让他们追随着《时尚》去买时尚而非自己喜欢的衣服吧,让他们拧着眉头吃西餐吧,让他们在音乐厅打盹、然后诉说他们被音乐感动得夜不能寐吧,让他们为看不懂的现代雕塑胡说八道吧,让他们去盛赞德国的马桶法国的餐具吧,让他们去描弧形最标准的眉毛吧……他们前天是布尔乔亚,昨天是波希米亚,今天是BOBO一族,明天是IF国际自由人,后天是谁?他们自己也不知道,因为指南书还没有出来呢。

 

posted @ 2006-04-20 10:18 高山流水 阅读(238) | 评论 (0)编辑 收藏

     摘要: (一)教材分析     ...  阅读全文

posted @ 2006-04-19 11:06 高山流水 阅读(334) | 评论 (0)编辑 收藏

 

 第1讲:


    电容器是一种能储存电荷的容器.它是由两片靠得较近的金属片,中间再隔以绝缘物质而组成的.按绝缘材料不同,可制成各种各样的电容器.如:云母.瓷介.纸介,电解电容器等.在构造上,又分为固定电容器和可变电容器.电容器对直流电阻力无穷大,即电容器具有隔直流作用.电容器对交流电的阻力受交流电频率影响,即相同容量的电容器对不同频率的交流电呈现不同的容抗.为开么会出现这些现象呢\'这是因为电容器是依靠它的充放电功能来工作的,如图1,电源开关s未合上时.电容器的两片金属板和其它普通金属板—样是不带电的。当开关S合上时,如图2所示,电容器正极板上的自由电子便被电源所吸引,并推送到负极板上面。由于电容器两极板之间隔有绝缘材料,所以从正极板跑过来的自由电子便在负极板上面堆积起来.正极板便因电子减少而带上正电,负极板便因电子逐渐增加而带上负电。电容器两个极板之间便有了电位差,当这个电位差与电源电压相等时,电容器的充电就停上了.此时若将电源切断,电容器仍能保持充电电压。对已充电的电容器,如果我们用导线将两个极板连接起来,由于两极板间存在的电位差,电子便会通过导线,回到正极板上,直至两极板间的电位差为零.电容器又恢复到不带电的中性状态,导线中也就没电流了.电容器的放电过程如图3所示.加在电容器两个极板上的交流电频率高,电容器的充放电次数增多;充放电电流也就增强;也就是说.电容器对于频率高的交流电的阻碍作用就减小,即容抗小,反之电容器对频率低的交流电产生的容抗大.对于同一频率的交流电电.电容器的容量越大,容抗就越小,容量越小,容抗就越大.

                      第2讲:电容器的参数与分类
    在电子产品中,电容器是必不可少的电子器件,它在电子设备中充当整流器的平滑滤波、电源的退耦、交流信号的旁路、交直流电路的交流耦合等。由于电容器的类型和结构种类比较多,因此,我们不仅需要了解各类电容器的性能指标和一般特性,而且还必须了解在给定用途下各种元件的优缺点,以及机械或环境的限制条件等。这里将对电容器的主要参数及其应用做简单说明。

1. 标称电容量( C R )。电容器产品标出的电容量值。云母和陶瓷介质电容器的电容量较低(大约在 5000pF 以下);纸、塑料和一些陶瓷介质形式的电容器居中(大约在 0.005uF~1.0uF );通常电解电容器的容量较大。这是一个粗略的分类法。

2. 类别温度范围。电容器设计所确定的能连续工作的环境温度范围。该范围取决于它相应类别的温度极限值,如上限类别温度、下限类别温度、额定温度(可以连续施加额定电压的最高环境温度)等。

3. 额定电压( U R )。在下限类别温度和额定温度之间的任一温度下,可以连续施加在电容器上的最大直流电压或最大交流电压的有效值或脉冲电压的峰值。电容器应用在高电压场和时,必须注意电晕的影响。电晕是由于在介质 / 电极层之间存在空隙而产生的,它除了可以产生损坏设备的寄生信号外,还会导致电容器介质击穿。在交流或脉动条件下,电晕特别容易发生。对于所有的电容器,在使用中应保证直流电压与交流峰值电压之和不得超过电容器的额定电压。

4. 损耗角正切( tg δ )。在规定频率的正弦电压下,电容器的损耗功率除以电容器的无功功率为损耗角正切。在实际应用中,电容器并不是一个纯电容,其内部还有等效电阻,它的简化等效电路如附图所示。对于电子设备来说,要求 R S 愈小愈好,也就是说要求损耗功率小,其与电容的功率的夹角要小。

5. 电容器的温度特性。通常是以 20 ℃基准温度的电容量与有关温度的电容量的百分比表示。

6. 使用寿命。电容器的使用寿命随温度的增加而减小。主要原因是温度加速化学反应而使介质随时间退化。

7. 绝缘电阻。由于温升引起电子活动增加,因此温度升高将使绝缘电阻降低。

  电容器包括固定电容器和可变电容器两大类。其中固定电容器又可根据其介质材料分为云母电容器、陶瓷电容器、纸 / 塑料薄膜电容器、

                      第3讲:电容的类别和符号
      电容的种类也很多,为了区别开来,也常用几个拉丁字母来表示电容的类别,如图1所示。第一个字母C表示电容,第二个字母表示介质材料,第三个字母以后表示形状、结构等。上图是小型纸介电容,下图是立式矩开密封纸介电容。表1列出电容的类别和符号。表2是常用电容的几项特性。

                    第4讲: 电解电容极性的判别
    不知道极性的电解电容可用万用表的电阻挡测量其极性。
我们知道只有电解电容的正极接电源正(电阻挡时的黑表笔),负端接电源负(电阻挡时的红表笔)时,电解电容的漏电流才小(漏电阻大)。反之,则电解电容的漏电流增加(漏电阻减小)。
    测量时,先假定某极为“ + ”极,让其与万用表的黑表笔相接,另一电极与万用表的红表笔相接,记下表针停止的刻度(表针靠左阻值大),然后将电容器放电(既两根引线碰一下),两只表笔对调,重新进行测量。两次测量中,表针最后停留的位置靠左(阻值大)的那次,黑表笔接的就是电解电容的正极。
测量时最好选用 R*100 或 R*1K 挡。 用万用表判断电容器质量

              第5讲:用万用表判断电容器质量
    视电解电容器容量大小,通常选用万用表的 R×10 、 R×100 、 R×1K 挡进行测试判断。红、黑表笔分别接电容器的负极(每次测试前,需将电容器放电),由表针的偏摆来判断电容器质量。若表针迅速向右摆起,然后慢慢向左退回原位,一般来说电容器是好的。如果表针摆起后不再回转,说明电容器已经击穿。如果表针摆起后逐渐退回到某一位置停位,则说明电容器已经漏电。如果表针摆不起来,说明电容器电解质已经干涸推失去容量。
    有些漏电的电容器,用上述方法不易准确判断出好坏。当电容器的耐压值大于万用表内电池电压值时,根据电解电容器正向充电时漏电电流小,反向充电时漏电电流大的特点,可采用 R×10K 挡,对电容器进行反向充电,观察表针停留处是否稳定(即反向漏电电流是否恒定),由此判断电容器质量,准确度较高。黑表笔接电容器的负极,红表笔接电容器的正极,表针迅速摆起,然后逐渐退至某处停留不动,则说明电容器是好的,凡是表针在某一位置停留不稳或停留后又逐渐慢慢向右移动的电容器已经漏电,不能继续使用了。表针一般停留并稳定在 50 - 200K 刻度范围内。

         第6讲:略谈电解电容
一、电解电容在电路中的作用
1,滤波作用,在电源电路中,整流电路将交流变成脉动的直流,而在整流电路之后接入一个较大容量的电解电容,利用其充放电特性,使整流后的脉动直流电压变成相对比较稳定的直流电压。在实际中,为了防止电路各部分供电电压因负载变化而产生变化,所以在电源的输出端及负载的电源输入端一般接有数十至数百微法的电解电容.由于大容量的电解电容一般具有一定的电感,对高频及脉冲干扰信号不能有效地滤除,故在其两端并联了一只容量为0.001--0.lpF的电容,以滤除高频及脉冲干扰.

2,耦合作用:在低频信号的传递与放大过程中,为防止前后两级电路的静态工作点相互影响,常采用电容藕合.为了防止信号中韵低频分量损失过大,一般总采用容量较大的电解电容。

二、电解电容的判断方法
    电解电容常见的故障有,容量减少,容量消失、击穿短路及漏电,其中容量变化是因电解电容在使用或放置过程中其内部的电解液逐渐干涸引起,而击穿与漏电一般为所加的电压过高或本身质量不佳引起。判断电源电容的好坏一般采用万用表的电阻档进行测量.具体方法为:将电容两管脚短路进行放电,用万用表的黑表笔接电解电容的正极。红表笔接负极(对指针式万用表,用数字式万用表测量时表笔互调),正常时表针应先向电阻小的方向摆动,然后逐渐返回直至无穷大处。表针的摆动幅度越大或返回的速度越慢,说明电容的容量越大,反之则说明电容的容量越小.如表针指在中间某处不再变化,说明此电容漏电,如电阻指示值很小或为零,则表明此电容已击穿短路.因万用表使用的电池电压一般很低,所以在测量低耐压的电容时比较准确,而当电容的耐压较高时,打时尽管测量正常,但加上高压时则有可能发生漏电或击穿现象.

三、电解电容的使用注意事项
1、电解电容由于有正负极性,因此在电路中使用时不能颠倒联接。在电源电路中,输出正电压时电解电容的正极接电源输出端,负极接地,输出负电压时则负极接输出端,正极接地.当电源电路中的滤波电容极性接反时,因电容的滤波作用大大降低,一方面引起电源输出电压波动,另一方面又因反向通电使此时相当于一个电阻的电解电容发热.当反向电压超过某值时,电容的反向漏电电阻将变得很小,这样通电工作不久,即可使电容因过热而炸裂损坏.

2.加在电解电容两端的电压不能超过其允许工作电压,在设计实际电路时应根据具体情况留有一定的余量,在设计稳压电源的滤波电容时,如果交流电源电压为220~时变压器次级的整流电压可达22V,此时选择耐压为25V的电解电容一般可以满足要求.但是,假如交流电源电压波动很大且有可能上升到250V以上时,最好选择耐压30V以上的电解电容。

3,电解电容在电路中不应靠近大功率发热元件,以防因受热而使电解液加速干涸.

4、对于有正负极性的信号的滤波,可采取两个电解电容同极性串联的方法,当作一个无极性的电容


本章小结:
    电子制作中需要用到各种各样的电容器,它们在电路中分别起着不同的作用。与电阻器相似,通常简称其为电容,用字母C表示。顾名思义,电容器就是“储存电荷的容器”。尽管电容器品种繁多,但它们的基本结构和原理是相同的。两片相距很近的金属中间被某物质(固体、气体或液体)所隔开,就构成了电容器。两片金属称为的极板,中间的物质叫做介质。电容器也分为容量固定的与容量可变的。但常见的是固定容量的电容,最多见的是电解电容和瓷片电容。
    不同的电容器储存电荷的能力也不相同。规定把电容器外加1伏特直流电压时所储存的电荷量称为该电容器的电容量。电容的基本单位为法拉(F)。但实际上,法拉是一个很不常用的单位,因为电容器的容量往往比1法拉小得多,常用微法(μF)、纳法(nF)、皮法(pF)(皮法又称微微法)等,它们的关系是:1法拉(F)= 1000000微法(μF) 1微法(μF)= 1000纳法(nF)= 1000000皮法(pF)
    在电子线路中,电容用来通过交流而阻隔直流,也用来存储和释放电荷以充当滤波器,平滑输出脉动信号。小容量的电容,通常在高频电路中使用,如收音机、发射机和振荡器中。大容量的电容往往是作滤波和存储电荷用。而且还有一个特点,一般1μF以上的电容均为电解电容,而1μF以下的电容多为瓷片电容,当然也有其他的,比如独石电容、涤纶电容、小容量的云母电容等。电解电容有个铝壳,里面充满了电解质,并引出两个电极,作为正(+)、负(-)极,与其它电容器不同,它们在电路中的极性不能接错,而其他电容则没有极性。
   把电容器的两个电极分别接在电源的正、负极上,过一会儿即使把电源断开,两个引脚间仍然会有残留电压(学了以后的教程,可以用万用表观察),我们说电容器储存了电荷。电容器极板间建立起电压,积蓄起电能,这个过程称为电容器的充电。充好电的电容器两端有一定的电压。电容器储存的电荷向电路释放的过程,称为电容器的放电。
    举一个现实生活中的例子,我们看到市售的整流电源在拔下插头后,上面的发光二极管还会继续亮一会儿,然后逐渐熄灭,就是因为里面的电容事先存储了电能,然后释放。当然这个电容原本是用作滤波的。至于电容滤波,不知你有没有用整流电源听随身听的经历,一般低质的电源由于厂家出于节约成本考虑使用了较小容量的滤波电容,造成耳机中有嗡嗡声。这时可以在电源两端并接上一个较大容量的电解电容(1000μF,注意正极接正极),一般可以改善效果。发烧友制作HiFi音响,都要用至少1万微法以上的电容器来滤波,滤波电容越大,输出的电压波形越接近直流,而且大电容的储能作用,使得突发的大信号到来时,电路有足够的能量转换为强劲有力的音频输出。这时,大电容的作用有点像水库,使得原来汹涌的水流平滑地输出,并可以保证下游大量用水时的供应。
    电子电路中,只有在电容器充电过程中,才有电流流过,充电过程结束后,电容器是不能通过直流电的,在电路中起着“隔直流”的作用。电路中,电容器常被用作耦合、旁路、滤波等,都是利用它“通交流,隔直流”的特性。那么交流电为什么能够通过电容器呢?我们先来看看交流电的特点。交流电不仅方向往复交变,它的大小也在按规律变化。电容器接在交流电源上,电容器连续地充电、放电,电路中就会流过与交流电变化规律一致的充电电流和放电电流。
    电容器的选用涉及到很多问题。首先是耐压的问题。加在一个电容器的两端的电压超过了它的额定电压,电容器就会被击穿损坏。一般电解电容的耐压分档为6.3V,10V,16V,25V,50V等。

posted @ 2006-04-19 11:05 高山流水 阅读(3154) | 评论 (1)编辑 收藏

[硬件技术]电阻大全
[ 2005-11-26 21:11:00 | By: 自由人 ]
 
自由人笔记  http://suncilang.bokee.com http://suncilang.bokee.com

常用电阻有碳膜电阻、碳质电阻、金属膜电阻、线绕电阻和电位器等。表1是几种常用电阻的结构和特点。


大多数电阻上,都标有电阻的数值,这就是电阻的标称阻值。电阻的标称阻值,往往和它的实际阻值不完全相符。有的阻值大一些,有的阻值小一些。电阻的实际阻值和标称阻值的偏差,除以标称阻值所得的百分数,叫做电阻的误差。表2是常用电阻允许误差的等级。

国家规定出一系列的阻值作为产品的标准。不同误差等级的电阻有不同数目的标称值。误差越小的电阻,标称值越多。表2是普通电阻的标称阻值系列。表3中的标称值可以乘以10、100、1000、10k;100k;比如1.0这个标称值,就有1.0Ω、10.OΩ、100.OΩ、1.0kΩ、10.0kΩ、100.0kΩ、1.0MΩ;10.0MΩ;

不同的电路对电阻的误差有不同的要求。一般电子电路,采用Ⅰ级或者Ⅱ级就可以了。在电路中,电阻的阻值,一般都标注标称值。如果不是标称值,可以根据电路要求,选择和它相近的标称电阻。

      当电流通过电阻的时候,电阻由于消耗功率而发热。如果电阻发热的功率大于它能承受的功率,电阻就会烧坏。电阻长时间工作时允许消耗的最大功率叫做额定功率。电阻消耗的功率可以由电功率公式: P=I×U P=I2×R P=U2/R计算出来,P表示电阻消耗的功率,U是电阻两端的电压,I是通过电阻的电流,R是电阻的阻值。 电阻的额定功率也有标称值,常用的有1/8、1/4、1/2、1、2、3、5、10、20瓦等。在电路图中,常用图2所示的符号来表示电阻的标称功率。选用电阻的时候,要留一定的余量,选标称功率比实际消耗的功率大一些的电阻。比如实际负荷1/4瓦,可以选用1/2瓦的电阻,实际负荷3瓦,可以选用5瓦的电阻


                   图2 电阻的功率标识

     为了区别不同种类的电阻,常用几个拉丁字母表示电阻类别,如图3所示。第一个字母R表示电阻,第二个字母表示导体材料,第三个字母表示形状性能。上图是碳膜电阻,下图是精密金属膜电阻。表1列出电阻的类别和符号。表2是常用电阻的技术特性。




     碳质电阻和一些1/8瓦碳膜电阻的阻值和误差用色环表示。在电阻上有三道或者四道色环。靠近电阻端的是第一道色环,其余顺次是二、三、四道色环,如图1所示。第一道色环表示阻值的最大一位数字,第二道色环表示第二位数字,第三道色环表示阻值未应该有几个零。第四道色环表示阻值的误差。色环颜色所代表的数字或者意义见表1。


图4 电阻的电路符号表示方法


比如有一个碳质电阻,它有四道色环,顺序是红、紫、黄、银。这个电阻的阻值就是270000欧,误差是±10%。双比如有一个碳质电阻,它有棕、绿、黑三道色环,它的阻值就是15欧,误差是±20%。

posted @ 2006-04-19 11:04 高山流水 阅读(591) | 评论 (0)编辑 收藏

仅列出标题
共30页: First 3 4 5 6 7 8 9 10 11 Last