2006年10月29日

[收藏]C++资源之不完全导引(完整版)

C++资源之不完全导引(完整版)
作者: dohf 发表日期: 2006-04-10 22:50 文章属性: 转载 复制链接

撰文/曾毅陶文

最后更新:2004年6月11日

声明:

.本文2004年5月首发于《CSDN开发高手》,版权归该杂志与《程序员》杂志社所有。杂志限于篇幅部分内容有所删节,此处版本为相对完整版本。

.本文为介绍性文章,会随笔者学习C++语言不断更新。

 1,前言

  无数次听到“我要开始学习C++!”的呐喊,无数次听到“C++太复杂了,我真的学不会”的无奈。Stan Lippman先生曾在《C++ Primer》一书中指出“C++是最为难学的高级程序设计语言之一”,人们常将“之一”去掉以表达自己对C++的敬畏。诚然,C++程序设计语言对于学习者的确有很多难以逾越的鸿沟,体系结构的庞大,应接不暇并不断扩充的特性……除此之外,参考资料之多与冗杂使它的学习者望而却步,欲求深入者苦不堪言。希望这一份不完全导引能够成为您C++学习之路上的引路灯。

  撰写本文的初衷并不打算带领大家体验古老的C++历史,如果你想了解C++的历史与其前期发展中诸多技术的演变,你应当去参考Bjarne的《The Design and Evolution of C++》。当然也不打算给大家一个无所不包的宝典(并非不想:其一是因水平有限,其二无奈C++之博大精深),所给出的仅仅是一些我们认为对于想学习C++的广大读者来说最重要并且触手可及的开发与学习资源。

  本文介绍并分析了一些编译器,开发环境,库,少量的书籍以及参考网站,并且尽可能尝试着给出一个利用这些资源的导引,望对如同我们一样的初学者能够有所裨益。

------------------------------------------------------------------------


  2,编译器

  在C++之外的任何语言中,编译器都从来没有受到过如此之重视。因为C++是一门相当复杂的语言,所以编译器也难于构建。直到最近我们才开始能够使用上完全符合C++标准的编译器(哦,你可能会责怪那些编译器厂商不能尽早的提供符合标准的编译器,这只能怪他们各自维系着自身的一套别人不愿接受的标准)。什么?你说这无关紧要?哦,不,你所需要的是和标准化C++高度兼容的编译环境。长远来看,只有这样的编译器对C++开发人员来说才是最有意义的工具,尤其是对于程序设计语言的学习者。一至性让代码具备可移植性,并让一门语言及其库的应用更为广泛。嗯,是的,我们这里只打算介绍一些公认的优秀编译器。

  2.1 Borland C++

  这个是Borland C++ Builder和Borland C++ Builder X这两种开发环境的后台编译器。(哦,我之所以将之分为两种开发环境你应当能明白为什么,正如Delphi7到Delphi8的转变,是革命性的两代。)Borland C++由老牌开发工具厂商Borland倾力打造。该公司的编译器素以速度快,空间效率高著称,Borland C++ 系列编译器秉承了这个传统,属于非常优质的编译器。标准化方面早在5.5版本的编译器中对标准化C++的兼容就达到了92.73%。目前最新版本是Borland C++ Builder X中的6.0版本,官方称100%符合ANSI/ISO的C++标准以及C99标准。嗯…这正是我前面所指的“完全符合C++标准的编译器”。

  2.2 Visual C++

  这个正是我们熟知的Visual Studio 和 Visual Studio.net 2002, 2003以及2005 Whidbey中带的C++编译器。由Microsoft公司研制。在Visual Studio 6.0中,因为编译器有太多地方不能与后来出现的C++标准相吻合而饱受批评(想想你在使用STL的时候编译时报出的那些令人厌恶的error和warning吧)。VC++6.0对标准化C++的兼容只有83.43%。但是随着C++编译器设计大师Stanley Lippman以及诸多C++社群达人的加盟,在Visual Studio.NET 2003中,Visual C++编译器已经成为一个非常成熟可靠的C++编译器了。Dr.Dobb's Journal的评测显示Visual C++7.1对标准C++的兼容性高达98.22%,一度成为CBX之前兼容性最好的编译器。结合强大的Visual Studio.NET开发环境,是一个非常不错的选择。至于Whidbey时代的Visual C++,似乎微软所最关注的是C++/CLI……我们不想评论微软下一代的C++编译器对标准化兼容如何,但他确实越来越适合.NET (其实你和我的感觉可能是一样的,微软不应当把标准C++这块肥肉丢给Borland,然而微软可能并不这样认为)。

  2.3 GNU C++

  著名的开源C++编译器。是类Unix操作系统下编写C++程序的首选。特点是有非常好的移植性,你可以在非常广泛的平台上使用它,同时也是编写跨平台,嵌入式程序很好的选择。另外在符合标准这个方面一直都非常好,GCC3.3大概能够达到96.15%。但是由于其跨平台的特性,在代码尺寸速度等优化上略微差一点。

  基于GNU C++的编译器有很多,比如:

  (1) Mingw

  http://www.mingw.org/

  GCC的一个Windows的移植版本(Dev-C++的后台)

  (2) Cygwin

  http://sources.redhat.com/cygwin/

  GCC的另外一个Windows移植版本是Cygwin的一部分,Cygwin是Windows下的一个Unix仿真环境。严格的说是模拟GNU的环境,这也就是"Gnu's Not Unix"要表达的意思,噢,扯远了,这并不是我们在这里关心的实质内容。

  (3) Djgpp

  http://www.delorie.com/djgpp/

  这是GCC的DOS移植版本。

  (4) RSXNT

  http://www.mathematik.uni-bielefeld.de/~rainer/

  这是GCC的DOS和Windows移植版本。

  (5) Intel C++

  著名CPU制造厂商Intel出品的编译器,Special Design for Intel x86!对于Intel x86结构的CPU经过特别的优化。在有些应用情况下,特别是数值计算等高性能应用,仅仅采用Intel的编译器编译就能大幅度的提高性能。

  (6) Digital Mars C++

  网络上提供免费下载,Zortech/Symantec C++的继承者,其前身在当年惨烈的C++四国战中也是主角之一。

------------------------------------------------------------------------
  3,开发环境

  开发环境对于程序员的作用不言而喻。选择自己朝夕相处的环境也不是容易的事情,特别是在IDE如此丰富的情况下。下面就是我们推荐的一些常见的C++开发环境,并没有包括一些小型的,罕见的IDE。其中任何一款都是功能丰富,可以用作日常开发使用的。对于不同层面的开发者,请参见内文关于适用对象的描述。

  3.1 Visual Studio 6.0

  这个虽然是Microsoft公司的老版本的开发环境,但是鉴于其后继版本VisualStudio.NET的庞大身躯,以及初学者并不那么高的功能要求,所以推荐这个开发环境给C++的初学者,供其学习C++的最基本的部分,比如C的那部分子集,当然你别指望他能够支持最新的C99标准。在日常的开发中,仍然有很多公司使用这个经典稳定的环境,比如笔者就看曾亲见有些公司将其编译器替换为GCC做手机开发之用。

  3.2 Visual Studio.NET 2003

  作为Microsoft公司官方正式发布的最新版本开发环境,其中有太多激动人心的功能。结合其最新的C++编译器。对于机器配置比较好的开发人员来说,使用这个开发环境将能满足其大部分的要求。这里不打算单独说Visual Studio Whidbey,虽然Visual Studio .NET 2005 - Whidbey社区预览版已经推出,但暂不是很稳定,读者可以亲身去体验。

  3.3 Borland C++ Builder 6

  这个并不是Borland的C++开发环境的最新版本。选择它的原因是它不是用Java写的IDE,速度比较快。它有一个很完善的GUI窗体设计器,和Delphi共用一个VCL。由于这些特点,比较适合初学者上手。但是由于其GUI的中心位置,可能不利于对于C++语言的学习。而且其为了支持VCL这个Object Pascal写的库也对C++进行了一些私有的扩充。使得人们有一个不得不接受的事实:“Borland C++ Builder 6的高手几乎都是Delphi高手”。

  3.4 Borland C++ Builder X

  正如前文所述,虽然版本号上和前面那个IDE非常相象,但是其实它们是完全不同的两个集成开发环境。C++Builder更多的是一个和Delphi同步的C++版本的开发环境,C++BuilderX则是完全从C++的角度思考得出的一个功能丰富的IDE。其最大的特点是跨平台,跨编译器,多种Framework的集成,并且有一个WxWindows为基础的GUI设计器。尤其是采用了纯C++来重写了整个Framework,摒弃了以前令人无奈的版本。对于C++的开发来说,从编译器,到库,到功能集成都是非常理想的。可以预见,Borland C++ Builder X 2.0很值得C++爱好者期待。唯一令人难堪之处是作为一个C++的开发工具,其IDE是用Java写的,在配置不够理想的机器上请慎重考虑再安装。

  3.5 Emacs + GCC

  前面讲的大部分是Windows环境下的集成开发环境。Linux上的开发者更倾向于使用Emacs来编辑C++的文件,用Makefile来命令GCC做编译。虽然看上去比较松散,但是这些东西综合起来还是一个开0发环境。如果你能够娴熟的使用这样的环境写程序,你的水平应该足够指导我们来写这篇陋文了。

  3.6 Dev C++

  GCC是一个很好的编译器。在Windows上的C++编译器一直和标准有着一段距离的时候,GCC就是一个让Windows下开发者流口水的编译器。Dev-C++就是能够让GCC跑在Windows下的工具,作为集成开发环境,还提供了同专业IDE相媲美的语法高亮,代码提示,调试等功能。由于使用Delphi开发,占用内存少,速度很快,比较适合轻量级的学习和使用。

  3.7 Eclipse + CDT

  Eclipse可是近来大名鼎鼎的开发工具。最新一期的Jolt大奖就颁给了这个杰出的神物。说其神奇是因为,它本身是用Java写的,但是拥有比一般Java写的程序快得多的速度。而且因为其基于插件组装一切的原则,使得能够有CDT这样的插件把Eclipse变成一个C/C++的开发环境。如果你一直用Eclipse写Java的程序,不妨用它体验一下C++开发的乐趣。

------------------------------------------------------------------------
  4,工具

  C++的辅助工具繁多,我们分门别类的为大家作介绍:

  4.1 文档类

  (1) Doxygen

  参考站点:http://www.doxygen.org

  Doxygen是一种适合C风格语言(如C++、C、IDL、Java甚至包括C#和PHP)的、开放源码的、基于命令行的文档产生器。

  (2) C++2HTML

  参考站点:http://www.bedaux.net/cpp2html/

  把C++代码变成语法高亮的HTML

  (3) CodeColorizer

  参考站点:http://www.chami.com/colorizer/

  它能把好几种语言的源代码着色为HTML

  (4) Doc-O-Matic

  参考站点:http://www.doc-o-matic.com/

  Doc-O_Matic为你的C/C++,C++.net,Delphi/Pascal, VB.NET,C#和Java程序或者组件产生准确的文档。Doc-O-Matic使用源代码中的符号和注释以及外部的文档文件创建与流行的文档样式一致的文档。

  (5) DocVizor

  参考站点:http://www.ucancode.net/Products/DocBuilder/Features.htm

  DocVizor满足了面向对象软件开发者的基本要求——它让我们能够看到C++工程中的类层次结构。DocVizor快速地产生完整可供打印的类层次结构图,包括从第三方库中来的那些类,除此之外DocVizor还能从类信息中产生HTML文件。

  (6) SourcePublisher C++

  参考站点:http://www.scitools.com/sourcepublisher_c.html

  给源代码产生提供快速直观的HTML报表,包括代码,类层次结构,调用和被调用树,包含和被包含树。支持多种操作系统。

  (7) Understand

  参考站点:http://www.scitools.com/ucpp.html

  分析任何规模的C或者C++工程,帮助我们更好的理解以及编写文档。

  4.2 代码类

  (1) CC-Rider

  参考站点:http://www.cc-rider.com

  CC-Rider是用于C/C++程序强大的代码可视化工具,通过交互式浏览、编辑及自动文件来促进程序的维持和发展。

  (2) CodeInspect

  参考站点:http://www.yokasoft.com/

  一种新的C/C++代码分析工具。它检查我们的源代码找出非标准的,可能的,以及普通的错误代码。

  (3) CodeWizard

  参考站点:http://www.parasoft.com

  先进的C/C++源代码分析工具,使用超过500个编码规范自动化地标明危险的,但是编译器不能检查到的代码结构。

  (4) C++ Validation Test Suites

  参考站点:http://www.plumhall.com/suites.html

  一组用于测试编译器和库对于标准吻合程度的代码库。

  (5) CppRefactory

  参考站点:http://cpptool.sourceforge.net/

  CPPRefactory是一个使得开发者能够重构他们的C++代码的程序。目的是使得C++代码的重构能够尽可能的有效率和简单。

  (6) Lzz

  参考站点:http://www.lazycplusplus.com/

  Lzz是一个自动化许多C++编程中的体力活的工具。它能够节省我们许多事件并且使得编码更加有乐趣。给出一系列的声明,Lzz会给我们创建头文件和源文件。

  (7) QA C++ Generation 2000

  参考站点:http://www.programmingresearch.com/solutions/qacpp.htm

  它关注面向对象的C++源代码,对有关于设计,效率,可靠性,可维护性的部分提出警告信息。

  ( s-mail project - Java to C++DOL

  参考站点:http://sadlocha.strefa.pl/s-mail/ja2dol.html

  把Java源代码翻译为相应的C++源代码的命令行工具。

  (9) SNIP from Cleanscape Software International

  参考站点:http://www.cleanscape.net/stdprod/snip/index.html

  一个填平编码和设计之间沟壑的易于使用的C++开发工具,节省大量编辑和调试的事件,它还使得开发者能够指定设计模式作为对象模型,自动从对象模型中产生C++的类。

  (10) SourceStyler C++

  参考站点:http://www.ochresoftware.com/

  对C/C++源代码提供完整的格式化和排版控制的工具。提供多于75个的格式化选项以及完全支持ANSI C++。

  4.3 编译类

  (1) Compilercache

  参考站点:http://www.erikyyy.de/compilercache/

  Compilercache是一个对你的C和C++编译器的封装脚本。每次我们进行编译,封装脚本,把编译的结果放入缓存,一旦编译相同的东西,结果将从缓存中取出而不是再次编译。

  (2) Ccache

  参考站点:http://ccache.samba.org/

  Ccache是一个编译器缓存。它使用起来就像C/C++编译器的缓存预处理器,编译速度通常能提高普通编译过程的5~10倍。

  (3) Cmm (C++ with MultiMethods)

  参考站点:http://www.op59.net/cmm/cmm-0.28/users.html

  这是一种C++语言的扩展。读入Cmm源代码输出C++的源代码,功能是对C++语言添加了对multimethod的支持。

  (4) The Frost Project

  参考站点:http://frost.flewid.de/

  Forst使得你能够在C++程序中像原生的C++特性一样使用multimethod以及虚函数参数。它是一个编译器的外壳。

  4.4 测试和调试类

  (1) CPPUnit

  CppUnit 是个基于 LGPL 的开源项目,最初版本移植自 JUnit,是一个非常优秀的开源测试框架。CppUnit 和 JUnit 一样主要思想来源于极限编程。主要功能就是对单元测试进行管理,并可进行自动化测试。

  (2) C++Test

  参考站点:http://www.parasoft.com/

  C++ Test是一个单元测试工具,它自动化了C和C++类,函数或者组件的测试。


  (3) Cantata++

  参考站点:http://www.iplbath.com/products/tools/pt400.shtml

  设计的目的是为了满足在合理的经济开销下使用这个工具可以让开发工程师开展单元测试和集成测试的需求.

  (4) Purify

  参考站点:http://www-900.ibm.com/cn/software/rational/products/purif
yplus/index.shtml

  IBM Rational PurifyPlus是一套完整的运行时分析工具,旨在提高应用程序的可靠性和性能。PurifyPlus将内存错误和泄漏检测、应用程序性能描述、代码覆盖分析等功能组合在一个单一、完整的工具包中。

  (5) BoundsChecker

  BoundsChecker是一个C++运行时错误检测和调试工具。它通过在Visual Studio内自动化调试过程加速开发并且缩短上市的周期。BoundsChecker提供清楚,详细的程序错误分析,许多是对C++独有的并且在static,stack和heap内存中检测和诊断错误,以及发现内存和资源的泄漏。

  (6) Insure++

  参考站点:http://www.parasoft.com/

  一个自动化的运行时程序测试工具,检查难以察觉的错误,如内存覆盖,内存泄漏,内存分配错误,变量初始化错误,变量定义冲突,指针错误,库错误,逻辑错误和算法错误等。

  (7) GlowCode

  参考站点:http://www.glowcode.com/

  GlowCode包括内存泄漏检查,code profiler,函数调用跟踪等功能。给C++开发者提供完整的错误诊断,和运行时性能分析工具包。

  ( Stack Spy

  参考站点:http://www.imperioustech.com/

  它能捕捉stack corruption, stack over run, stack overflow等有关栈的错误。

------------------------------------------------------------------------
5,库

  在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。

  5.1 标准库

  标准库中提供了C++程序的基本设施。虽然C++标准库随着C++标准折腾了许多年,直到标准的出台才正式定型,但是在标准库的实现上却很令人欣慰得看到多种实现,并且已被实践证明为有工业级别强度的佳作。

  (1) Dinkumware C++ Library

  参考站点:http://www.dinkumware.com/

  P.J. Plauger编写的高品质的标准库。P.J. Plauger博士是Dr. Dobb's程序设计杰出奖的获得者。其编写的库长期被Microsoft采用,并且最近Borland也取得了其OEM的license,在其C/C++的产品中采用Dinkumware的库。

  (2) RogueWave Standard C++ Library

  参考站点:http://www.roguewave.com/

  这个库在Borland C++ Builder的早期版本中曾经被采用,后来被其他的库给替换了。笔者不推荐使用。

  (3) SGI STL

  参考站点:http://www.roguewave.com/

  SGI公司的C++标准模版库。

  (4) STLport

  参考站点:http://www.stlport.org/

  SGI STL库的跨平台可移植版本。

  5.2 “准”标准库 - Boost

  参考站点:http://www.boost.org

  国内镜像:http://www.c-view.org/tech/lib/boost/index.htm

  Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库由C++标准委员会库工作组成员发起,在C++社区中影响甚大,其成员已近2000人。 Boost库为我们带来了最新、最酷、最实用的技术,是不折不扣的“准”标准库。

  Boost中比较有名气的有这么几个库:

  Regex

  正则表达式库

  Spirit

  LL parser framework,用C++代码直接表达EBNF

  Graph

  图组件和算法

  Lambda

  在调用的地方定义短小匿名的函数对象,很实用的functional功能

  concept check

  检查泛型编程中的concept



  Mpl

  用模板实现的元编程框架



  Thread

  可移植的C++多线程库



  Python

  把C++类和函数映射到Python之中

  Pool

  内存池管理



  smart_ptr

  5个智能指针,学习智能指针必读,一份不错的参考是来自CUJ的文章:
  Smart Pointers in Boost,哦,这篇文章可以查到,CUJ是提供在线浏览的。中文版见笔者在《Dr. Dobb's Journal软件研发杂志》第7辑上的译文。

  Boost总体来说是实用价值很高,质量很高的库。并且由于其对跨平台的强调,对标准C++的强调,是编写平台无关,现代C++的开发者必备的工具。但是Boost中也有很多是实验性质的东西,在实际的开发中实用需要谨慎。并且很多Boost中的库功能堪称对语言功能的扩展,其构造用尽精巧的手法,不要贸然的花费时间研读。Boost另外一面,比如Graph这样的库则是具有工业强度,结构良好,非常值得研读的精品代码,并且也可以放心的在产品代码中多多利用。

  5.3 GUI

  在众多C++的库中,GUI部分的库算是比较繁荣,也比较引人注目的。在实际开发中,GUI库的选择也是非常重要的一件事情,下面我们综述一下可选择的GUI库,各自的特点以及相关工具的支持。

  (1) MFC

  大名鼎鼎的微软基础类库(Microsoft Foundation Class)。大凡学过VC++的人都应该知道这个库。虽然从技术角度讲,MFC是不大漂亮的,但是它构建于Windows API 之上,能够使程序员的工作更容易,编程效率高,减少了大量在建立 Windows 程序时必须编写的代码,同时它还提供了所有一般 C++ 编程的优点,例如继承和封装。MFC 编写的程序在各个版本的Windows操作系统上是可移植的,例如,在Windows 3.1下编写的代码可以很容易地移植到 Windows NT 或 Windows 95 上。但是在最近发展以及官方支持上日渐势微。

  (2) QT

  参考网站:http://www.trolltech.com/

  Qt是Trolltech公司的一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的Linux桌面环境KDE 的基础,同时它还支持Windows、Macintosh、Unix/X11等多种平台。

  (3) WxWindows

  参考网站:http://www.wxwindows.org/

  跨平台的GUI库。因为其类层次极像MFC,所以有文章介绍从MFC到WxWindows的代码移植以实现跨平台的功能。通过多年的开发也是一个日趋完善的GUI库,支持同样不弱于前面两个库。并且是完全开放源代码的。新近的C++ Builder X的GUI设计器就是基于这个库的。

  (4) Fox

  参考网站:http://www.fox-toolkit.org/

  开放源代码的GUI库。作者从自己亲身的开发经验中得出了一个理想的GUI库应该是什么样子的感受出发,从而开始了对这个库的开发。有兴趣的可以尝试一下。

  (5) WTL

  基于ATL的一个库。因为使用了大量ATL的轻量级手法,模板等技术,在代码尺寸,以及速度优化方面做得非常到位。主要面向的使用群体是开发COM轻量级供网络下载的可视化控件的开发者。

  (6) GTK

  参考网站:http://gtkmm.sourceforge.net/

  GTK是一个大名鼎鼎的C的开源GUI库。在Linux世界中有Gnome这样的杀手应用。而GTK就是这个库的C++封装版本。

  5.4 网络通信

  (1) ACE

  参考网站:http://www.cs.wustl.edu/~schmidt/ACE.html

  C++库的代表,超重量级的网络通信开发框架。ACE自适配通信环境(Adaptive Communication Environment)是可以自由使用、开放源代码的面向对象框架,在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++包装外观(Wrapper Facade)和框架组件,可跨越多种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、分布式服务动态(重)配置、并发执行和同步,等等。

  (2) StreamModule

  参考网站:http://www.omnifarious.org/StrMod/

  设计用于简化编写分布式程序的库。尝试着使得编写处理异步行为的程序更容易,而不是用同步的外壳包起异步的本质。

  (3) SimpleSocket

  参考网站:http://home.hetnet.nl/~lcbokkers/simsock.htm

  这个类库让编写基于socket的客户/服务器程序更加容易。

  (4) A Stream Socket API for C++

  参考网站:http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.h
tml

  又一个对Socket的封装库。

  5.5 XML

  (1) Xerces

  参考网站:http://xml.apache.org/xerces-c/

  Xerces-C++ 是一个非常健壮的XML解析器,它提供了验证,以及SAX和DOM API。XML验证在文档类型定义(Document Type Definition,DTD)方面有很好的支持,并且在2001年12月增加了支持W3C XML Schema 的基本完整的开放标准。

  (2) XMLBooster

  参考网站:http://www.xmlbooster.com/

  这个库通过产生特制的parser的办法极大的提高了XML解析的速度,并且能够产生相应的GUI程序来修改这个parser。在DOM和SAX两大主流XML解析办法之外提供了另外一个可行的解决方案。

  (3) Pull Parser

  参考网站:http://www.extreme.indiana.edu/xgws/xsoap/xpp/

  这个库采用pull方法的parser。在每个SAX的parser底层都有一个pull的parser,这个xpp把这层暴露出来直接给大家使用。在要充分考虑速度的时候值得尝试。


  (4) Xalan

  参考网站:http://xml.apache.org/xalan-c/

  Xalan是一个用于把XML文档转换为HTML,纯文本或者其他XML类型文档的XSLT处理器。

  (5) CMarkup

  参考网站:http://www.firstobject.com/xml.htm

  这是一种使用EDOM的XML解析器。在很多思路上面非常灵活实用。值得大家在DOM和SAX之外寻求一点灵感。

  (6) libxml++

  http://libxmlplusplus.sourceforge.net/

  libxml++是对著名的libxml XML解析器的C++封装版本

  5.6 科学计算

  (1) Blitz++

  参考网站:http://www.oonumerics.org/blitz/

  Blitz++ 是一个高效率的数值计算函数库,它的设计目的是希望建立一套既具像C++ 一样方便,同时又比Fortran速度更快的数值计算环境。通常,用C++所写出的数值程序,比 Fortran慢20%左右,因此Blitz++正是要改掉这个缺点。方法是利用C++的template技术,程序执行甚至可以比Fortran更快。Blitz++目前仍在发展中,对于常见的SVD,FFTs,QMRES等常见的线性代数方法并不提供,不过使用者可以很容易地利用Blitz++所提供的函数来构建。

  (2) POOMA

  参考网站:http://www.codesourcery.com/pooma/pooma

  POOMA是一个免费的高性能的C++库,用于处理并行式科学计算。POOMA的面向对象设计方便了快速的程序开发,对并行机器进行了优化以达到最高的效率,方便在工业和研究环境中使用。

  (3) MTL

  参考网站:http://www.osl.iu.edu/research/mtl/

  Matrix Template Library(MTL)是一个高性能的泛型组件库,提供了各种格式矩阵的大量线性代数方面的功能。在某些应用使用高性能编译器的情况下,比如Intel的编译器,从产生的汇编代码可以看出其与手写几乎没有两样的效能。

  (4) CGAL

  参考网站:www.cgal.org

  Computational Geometry Algorithms Library的目的是把在计算几何方面的大部分重要的解决方案和方法以C++库的形式提供给工业和学术界的用户。

  5.7 游戏开发

  (1) Audio/Video 3D C++ Programming Library

  参考网站:http://www.galacticasoftware.com/products/av/

  ***3D是一个跨平台,高性能的C++库。主要的特性是提供3D图形,声效支持(SB,以及S3M),控制接口(键盘,鼠标和遥感),XMS。

  (2) KlayGE

  参考网站:http://home.g365.net/enginedev/

  国内游戏开发高手自己用C++开发的游戏引擎。KlayGE是一个开放源代码、跨平台的游戏引擎,并使用Python作脚本语言。KlayGE在LGPL协议下发行。感谢龚敏敏先生为中国游戏开发事业所做出的贡献。

  (3) OGRE

  参考网站:http://www.ogre3d.org

  OGRE(面向对象的图形渲染引擎)是用C++开发的,使用灵活的面向对象3D引擎。它的目的是让开发者能更方便和直接地开发基于3D硬件设备的应用程序或游戏。引擎中的类库对更底层的系统库(如:Direct3D和OpenGL)的全部使用细节进行了抽象,并提供了基于现实世界对象的接口和其它类。

  5.8 线程

  (1) C++ Threads

  参考网站:http://threads.sourceforge.net/

  这个库的目标是给程序员提供易于使用的类,这些类被继承以提供在Linux环境中很难看到的大量的线程方面的功能。

  (2) ZThreads

  参考网站:http://zthread.sourceforge.net/

  一个先进的面向对象,跨平台的C++线程和同步库。

  5.9 序列化

  (1) s11n

  参考网站:http://s11n.net/

  一个基于STL的C++库,用于序列化POD,STL容器以及用户定义的类型。

  (2) Simple XML Persistence Library

  参考网站:http://sxp.sourceforge.net/

  这是一个把对象序列化为XML的轻量级的C++库。

  5.10 字符串

  (1) C++ Str Library

  参考网站:http://www.utilitycode.com/str/

  操作字符串和字符的库,支持Windows和支持gcc的多种平台。提供高度优化的代码,并且支持多线程环境和Unicode,同时还有正则表达式的支持。

  (2) Common Text Transformation Library

  参考网站:http://cttl.sourceforge.net/

  这是一个解析和修改STL字符串的库。CTTL substring类可以用来比较,插入,替换以及用EBNF的语法进行解析。

  (3) GRETA

  参考网站:http://research.microsoft.com/projects/greta/

  这是由微软研究院的研究人员开发的处理正则表达式的库。在小型匹配的情况下有非常优秀的表现。

  5.11 综合

  (1) P::Classes

  参考网站:http://pclasses.com/

  一个高度可移植的C++应用程序框架。当前关注类型和线程安全的signal/slot机制,i/o系统包括基于插件的网络协议透明的i/o架构,基于插件的应用程序消息日志框架,访问sql数据库的类等等。

  (2) ACDK - Artefaktur Component Development Kit

  参考网站:http://acdk.sourceforge.net/

  这是一个平台无关的C++组件框架,类似于Java或者.NET中的框架(反射机制,线程,Unicode,废料收集,I/O,网络,实用工具,XML,等等),以及对Java, Perl, Python, TCL, Lisp, COM 和 CORBA的集成。

  (3) dlib C++ library

  参考网站:http://www.cis.ohio-state.edu/~kingd/dlib/

  各种各样的类的一个综合。大整数,Socket,线程,GUI,容器类,以及浏览目录的API等等。

  (4) Chilkat C++ Libraries

  参考网站:http://www.chilkatsoft.com/cpp_libraries.asp

  这是提供zip,e-mail,编码,S/MIME,XML等方面的库。

  (5) C++ Portable Types Library (PTypes)

  参考网站:http://www.melikyan.com/ptypes/

  这是STL的比较简单的替代品,以及可移植的多线程和网络库。

  (6) LFC

  参考网站:http://lfc.sourceforge.net/

  哦,这又是一个尝试提供一切的C++库

  5.12 其他库

  (1) Loki

  参考网站:http://www.moderncppdesign.com/

  哦,你可能抱怨我早该和Boost一起介绍它,一个实验性质的库。作者在loki中把C++模板的功能发挥到了极致。并且尝试把类似设计模式这样思想层面的东西通过库来提供。同时还提供了智能指针这样比较实用的功能。

  (2) ATL

  ATL(Active Template Library)

  是一组小巧、高效、灵活的类,这些类为创建可互操作的COM组件提供了基本的设施。

  (3) FC++: The Functional C++ Library

  这个库提供了一些函数式语言中才有的要素。属于用库来扩充语言的一个代表作。如果想要在OOP之外寻找另一分的乐趣,可以去看看函数式程序设计的世界。大师Peter Norvig在 “Teach Yourself Programming in Ten Years”一文中就将函数式语言列为至少应当学习的6类编程语言之一。

  (4) FACT!

  参考网站:http://www.kfa-juelich.de/zam/FACT/start/index.html

  另外一个实现函数式语言特性的库

  (5) Crypto++

  提供处理密码,消息验证,单向hash,公匙加密系统等功能的免费库。

  还有很多非常激动人心或者是极其实用的C++库,限于我们的水平以及文章的篇幅不能包括进来。在对于这些已经包含近来的库的介绍中,由于并不是每一个我们都使用过,所以难免有偏颇之处,请读者见谅。

------------------------------------------------------------------------
6,书籍

  以前熊节先生曾撰文评论相对于Java程序设计语言,C++的好书多如牛毛。荣耀先生在《程序员》杂志上撰文《C++程序设计之四书五经》也将本领域内几乎所有的经典书籍作了全面的介绍,任何关于书的评论此时看来便是很多余的了。个人浅见,除非你打算以C++作为唯一兴趣或者生存之本,一般读者确实没有足够的时间和必要将20余本书籍全部阅读。更有参考价值的是荣耀先生的另一篇文章:《至少应该阅读的九本C++著作》,可以从下面的地址浏览到此文:

  http://www.royaloo.com/articles/articles_2003/9CppBooks.htm

  下面几本书对于走在C++初学之路上的读者是我们最愿意推荐给大家的:

  (1) 《C++ Primer》

  哦,也许你会抱怨我们为什么不先介绍TCPL,但对于走在学习之路上的入门者,本书内容更为全面,更为详细易懂,我们称它为“C++的超级宝典”并不过分。配有一本不错的习题解答《C++ Primer Answer Book》可以辅助你的学习之路。

  (2) 《Essential C++》

  如果说《C++ Primer》是C++领域的超级宝典,那么此书作为掌握C++的大局观当之无愧。正如《.NET大局观》一书能够让读者全揽.NET,本书讲述了C++中最核心的全部主题。书虽不厚,内容精炼,不失为《C++ Primer》读者茶余饭后的主题回顾之作。

  (3) 《The C++ Programming Language》

  Bjarne为你带来的C++教程,真正能够告诉你怎么用才叫真正的C++的唯一一本书。虽然如同“某某程序设计语言”这样的书籍会给大家一个内容全揽,入门到精通的感觉,但本书确实不太适合初学者阅读。如果你自认为是一名很有经验的C++程序员,那至少也要反复咀嚼Bjarne先生所强调的若干内容。

  (4) 《Effective C++》,《More Effective C++》

  是的,正如一些C++爱好者经常以读过与没有读过上述两本作品来区分你是否是C++高手。我们也极力推崇这两本著作。在各种介绍C++专家经验的书籍里面,这两本是最贴近语言本质,看后最能够有脱胎换骨感觉的书,读此书你需每日三省汝身。

  技术书籍仁者见仁,过多的评论反无太多意义,由读者喜好选择最适合自己的书方为上策。

------------------------------------------------------------------------
7,资源网站

  正如我们可以通过计算机历史上的重要人物了解计算机史的发展,C++相关人物的网站也可以使我们得到最有价值的参考与借鉴,下面的人物我们认为没有介绍的必要,只因下面的人物在C++领域的地位众所周知,我们只将相关的资源进行罗列以供读者学习,他们有的工作于贝尔实验室,有的工作于知名编译器厂商,有的在不断推进语言的标准化,有的为读者撰写了多部千古奇作……
  (1) Bjarne Stroustrup
  http://www.research.att.com/~bs/

  (2) Stanley B. Lippman
  http://blogs.msdn.com/slippman/
  中文版 http://www.zengyihome.net/slippman/index.htm

  (3) Scott Meyers
  http://www.aristeia.com/

  (4) David Musser
  http://www.cs.rpi.edu/~musser/

  (5) Bruce Eckel
  http://www.bruceeckel.com

  (6) Nicolai M. Josuttis
  http://www.josuttis.com/

  (7) Herb Sutter
  http://www.gotw.ca/

  ( Andrei Alexandrescu
  http://www.coderncppdesign.com/

  (9) 侯捷先生
  http://www.jjhou.com

  (10) 孟岩先生
  先生繁忙于工作,痴迷于技术,暂无个人主页,关于先生的作品可以通过CSDN的专栏和侯先生的主页访问到。

  (11) 荣耀先生
  http://www.royaloo.com/

  (12) 潘爱民先生
  http://www.icst.pku.edu.cn/panaimin/pam_homepage.htm

  除了上述大师的主页外,以下的综合类C++学习参考站点是我们非常愿意向大家推荐的:

  (1) CodeProject
  http://www.codeproject.com

  (2) CodeGuru
  http://www.codeguru.com

  (3) Dr. Dobb's Journal
  http://www.ddj.com

  (4) C/C++ Users Journal
  http://www.cuj.com

  (5) C维视点
  http://www.c-view.org

  (6) allaboutprogram
  http://www.allaboutprogram.com
  其他资料

  (1) ISO IEC JTC1/SC22/WG21 - C++:标准C++的权威参考
  http://anubis.dkuug.dk/jtc1/sc22/wg21/

  (2) C++ FAQ LITE — Frequently Asked Questions: 最为全面的C++FAQ
  http://www.sunistudio.com/cppfaq/index.html
  C/C++ 新闻组:
  你不妨尝试从这里提问和回答问题,很多不错的Q&A资源......

  (1) .alt.comp.lang.learn.c-c++
  这个简单些,如果你和我一样是个菜鸟

  (2) .comp.lang.c++.moderated
嗯,这个显然水平高一些

  (3) .comp.std.c++
  如果你需要讨论标准C++相关话题的话

------------------------------------------------------------------------
8,不得不写的结束语

  结束的时候也是总结现状,展望未来的时候。虽然C++从脱胎于C开始,一路艰难坎坷的走过来,但是无论如何C++已经取得了工业基础的地位。文章列举的大量相关资源就是最好的证明,而业界的大量用C++写成的产品代码以及大量的C++职业工程师则是最直接的证明。同时,我们可以看到各个高校的计算机专业都开设有C++这门课程,网络上对于C++的学习讨论也从来都没有停过。但是,在Java和.NET两大企业开发平台的围攻下,给人的感觉是C++越来越“不行”了。

  C++在面向企业的软件开发中,在开发便捷性等方面的确要比Java和C#差很多,其中一个问题是C++语言本身比较复杂,学习曲线比较陡峭,另外一个问题是C++标准化的时间太长,丧失了很多的壮大机会,耗费了很多精力在厂商的之间的斗争上,而C++的标准库离一个完善的程序开发框架还缺少太多太多的内容,各个第三方的类库和框架又在一致性和完整性上没法和随平台提供的框架相提并论。难道C++真的要退出历史舞台了?

  从C++目前的活跃程度,以及应用现状来说是完全能够肯定C++仍然是软件工业的基础,也不会退出历史舞台的。另外从Boost,Loki这些库中我们也能够看到C++的发展非常活跃,对于新技术新思维非常激进,C++仍然广泛受到关注。从ACE在高性能通信领域的应用,以及MTL这样的库在数值计算领域的出色表现,我们可以看到C++在高性能应用场合下的不可替代的作用,而嵌入式系统这样的内存受限开发平台,比如Symbian OS上,C++已经发挥着并且将发挥更大的作用。可以预见的是以后的软件无论上层的应用怎么变,它的底层核心都会是由C/C++这样的系统级软件编写的,比如Java虚拟机,.NET Framwork。因为只有这样的系统级软件才能完全彻底的发挥机器的功能。

  需要看到的是两个趋势,一个趋势是C++变得更加复杂,更加学院派,通过模板等有潜力的语法因素构造越来越精巧的库成为了现代C++的热点,虽然在利用库实现新的编程范式,乃至设计模式等方面很有开创意义,也确实产生了一些能够便捷开发的工具,但是更多的是把C++变得更加强大,更加复杂,也更加难懂,似乎也更加学院派,不得不说它正在向边缘化道路发展。另一个趋势是C++在主流的企业应用开发中已经逐渐退出了,ERP这样的企业软件开发中基本上不会考虑C++,除非需要考虑性能或者和遗留代码的集成这些因素。C++退守到系统级别语言,成为软件工业的基础是大势所趋。然而反思一下,真的是退守么?自从STL出现,无数的人风起云涌的开始支持C++,他们狂呼“我看到深夜消失了,目标软件工程的出现。我看到了可维护的代码。”是的,STL在可维护性下做得如此出色。但是又怎样呢?STL为C++铺平了现代软件工程的道路,而在上层应用程序软件开发领域这块场地早不单独属于C++,很多程序设计语言都做得很出色,疯狂的支持者会毫不犹豫地说我们应当支持C++,因为它是世界上最棒的语言。而坦率地说,你的腰杆真的那么硬么?也许只是在逃避一些事实。C++是优秀的,这不可否认,STL的出现让C++一度走上了最辉煌的时刻,然而现在看来……我的一位恩师曾言:真正能够将STL应用得淋漓尽致的人很保守地说国内也不超过200人,或许不加入STL能够使C++向着它应当发展的方向发展的更好,而现在看来,C++也应当回首到真正属于他的那一片圣地上……

2006年10月28日

《神奇遥控器》Click --珍惜你的生活吧~!

晚上和女友一起看完这部电影,感觉有一种更加热爱生活的冲动!这部电影是在学校BBS电影版上看到别人评论后想要观看的。看完之后感觉非常不错,向大家推荐一下啦~!





影片名:《神奇遥控器》Click
导演/编剧:弗兰克·克拉奇 Frank Coraci
主演: 亚当·桑德勒 Adam Sandler
西恩·奥斯汀 Sean Astin
詹姆斯·杜蒙特 James DuMont
凯特·贝金赛尔 Kate Beckinsale

地区:美国
类型:剧情
片长:——
上映:2006年6月23日




剧情:遥控人生 失控人生

人到中年的建筑师迈克·纽曼(亚当·桑德勒)必须在老板和家庭之间做出抉择。最近刚被事务所老板视为“可重点培育对像”的迈克整天卖命工作,以求老板将他视为合作伙伴并将一半股份分给他。虽然迈克渴望得到老板赏识的目的是为了赚更多的钱让漂亮老婆(凯特·贝金赛尔)和两个可爱的孩子过上更幸福的日子,但很明显,家人对于迈克的做法并不心存感激,试想一下一个为工作而忘记老婆生日,忘记参加女儿学校家长会的父亲怎么可能得到认可?迈克和家人的关系越来越冷淡。迈克当然有发现这一点,但他觉得自己之所以这么做完全是为了家人着想,直到有一天,他发现自己连家里哪个是空调遥控器哪个是电视遥控器都分不清时,他觉得必须做出改变了。

迈克到附近商店买能控制家里所有电器的多功能遥控器,商店老板莫蒂(克里斯托弗·沃肯),一个怪怪的老头拿出一个能“掌控人生”的遥控器给他,迈克买回家之后才发现,原来这个遥控器具有十分神奇的功能。

譬如,当老婆和他吵架时,只要迈克按一下“快进”键,充满火药味的谈话马上终止;深更半夜,家里的狗狂吠,迈克只要摁一下“消声”键,一下就安静下来;当老板分派一堆活给他时,迈克按一下“删除”键就能马上下班……诸如此类的方便功能让迈克快乐不已,他可以把时间倒退回去为老婆庆祝生日,和孩子外出游玩,迈克靠着遥控器过着完美的生活。直到有一天,神奇遥控器的智能芯片产生思想,自己设定迈克该经历什么事情该错过什么活动,迈克的生活被疯狂的遥控器搅得乱七八糟……



幕后:例牌的亚当·桑德勒与“花瓶”的凯特·贝金赛尔

被美国小孩视为“最佳老爸”的亚当·桑德勒这次演的角色和他以往任何角色没什么不同:憨厚得几近呆的中年男人,好好先生,爱老婆疼孩子那类的。他算笑星,但和金·凯瑞类的靠“疯狂的五官”闯天下的好莱坞笑星走得是截然不同的道路,也正因为他平凡的外表加平凡的戏路,亚当·桑德勒成了一堆平凡人的代言人,任何人××突破”这样的话。他的表演和《初恋50次》《婚礼歌手》之类的没任何不同,桑德勒只要继续傻傻地演下去,观众就很受落。不仅他的表演,就连电影本身粗略看一下都有种似曾相识的感觉,甚至可以将其称为“脚踏实地”版《冒牌天神》,从故事到人物设置两片都没什么差别。

桑德勒电影的另一个特点就是,女主角都是好莱坞出名的美女,继《初恋50次》《婚礼歌手》中的德鲁·巴里摩尔之后,这次与他搭档的是英伦玫瑰凯特·贝金赛尔。靠《珍珠港》护士角色在好莱坞引起关注的凯特在沉寂了一阵之后靠着B级片《黑夜传说》以女吸血鬼战士的形象重返好莱坞引起广泛关注,当年的《黑夜传说》无论在票房还是口碑上都取得巨大成功。今年年初,《黑夜传说2》继续大卖,凯特在好莱坞的地位更为稳固。如今事业生活两得意的凯特在《神奇遥控器》中以几近“花瓶”的角色与桑德勒配戏,在这部电影中,她的任务只有两个,懂得打扮,还有偶尔和忘记她生日的“老公”桑德勒发发小脾气,那她就完成表演任务了。不知刚为人妇的凯特是否有将片中的“妻子”“母亲”的角色当成自己人生的一次“实习机会”呢。

除了两位明星之外,在片中扮演商店老板莫蒂的克里斯托弗·沃肯以“爱恩斯坦”造型出现,向来好戏的他这次以玩票的姿态扮演这个神经兮兮的老板,不知能否给观众带来新体验呢?




拍摄动机:没有未来的人生是可怕的

在这部电影的导演弗兰克·克拉奇是桑德勒的老搭档,他们两人自学生时代就是死党,曾合作过两部电影(《婚礼歌手》《呆呆向前冲》),在《呆呆向前冲》中,弗兰克不仅当导演,还在片中客串演出桑德勒的“老爸”,两人的默契程度可想而知。在与成龙合作拍摄了让人绝望的《环游世界80天》之后,桑德勒与受挫的老友再次联手推出了这部《神奇遥控器》。

导演弗兰克·克拉奇想通过“人生遥控器”来探讨一个话题:假如真能随意控制时间,人是不是真能过得开心快乐?弗兰克说经常能见到对美好回忆充满向往,常常感叹美好的时光一去不复返。他就想通过电影来给这样的人一个希望,通过“模拟人生”的方法与大家探讨,假如世界上真有时间倒流这回事,同样也不会让人生过得更好。“我们肯定不能忘记过去,美好的回忆痛苦的回忆在我们的人生中都有应该有的地位,但是如果一个人时常回忆故去,那生活就无法前进,永远为过去的事情忙碌,没有未来的人生是可怕的。”听完导演的拍摄动机,看这部电影的时候就别再只关注片中的白痴搞笑成分了,想想人生吧。



2006年10月26日

Definitions of terms used in Information Extraction

Attribute
a property of an entity such as its name, alias, descriptor, or type

Annotation
mark up of a text span in a specific format that indicates a feature or features of the text within the span

Benchmark
assessment of performance according to standard measures

Data
textual input for an information extraction system

Dataset
a set of newswire texts chosen according to pre-specified conditions and meant to represent a rich text stream

Database
data in tabular format stored with the assistance of a relational database management system

Developer
a researcher who implements a system

Dry Run
an end-to-end practice run of an evaluation

Entity
an object of interest such as a person or organization

Evaluation
assessment of performance according to agreed upon measures

Event
an activity or occurrence of interest such as a terrorist act or an airline crash

Fact
a relationship held between two or more entities

Formal Test Material
a blind dataset, task definitions, test procedure, answer keys, and scoring software

Formal Run
the "official" evaluation

Information Extraction
the extraction or pulling out of pertinent information from large volumes of texts

Information Extraction Systems
an automated system to extract pertinent information from large volumes of text

Information Extraction Technologies
techniques used to automatically extract specified information from text

Metrics
pre-defined measures of performance calculable by comparison of system output with human-generated answer keys

MUC
Message Understanding Conference held at the end of the evaluation and attended only by participants and invited potential customers

Named Entity
a named object of interest such as a person, organization, or location

SAIC
Science Applications International Corporation

Scoring Software
fully automated software for the comparison of system performance against answer keys that tallies and reports metrics and error types for developers and evaluators

Search Engine
software which gives relevance rankings to documents in a collection based on a user query

Sources of News
edited electronic feeds from established news organizations such as the Wall Street Journal and the New York Times News Service

Statistical Algorithm
algorithm to determine the statistical significance of evaluation results

Systems Integration
building a system from off-the-shelf components to accomplish a job previously not automated

Systems Integrator
builder of a system from off-the-shelf components

Task Definition
document which defines the format and criteria for annotation or extraction of text and placement into a database or template. For example, task definitions give general guidelines and examples for the extraction of named entities, attributes, facts, and events from texts.

Text
electronically encoded alphabetic material from some human language

Training
process by which a system learns about a dataset



Source: http://www-nlpir.nist.gov/related_projects/muc/info/definitions.html

2006年10月24日

如何读书??

每每听到别人在提及自己时,都会被说为“他在念书呢!”
念书即读书,但是如何读书,看完《林语堂论读书》前,我一直是浑噩的。


林语堂论读书

  本篇演讲只是谈谈本人对于读书的意见,并不是要训勉青年,亦非敢指导青年。所以不敢训勉青年有两种理由:第一,因为近来常听见贪官污吏到学校致训词,叫学生须有志操,有气节,有廉耻;也有卖国官僚到大学演讲,劝学生要坚忍卓绝,做富贵不能淫,威武不能屈的大丈夫。暗讽时事。不幸的是这样的事如今也一样发生。孟子曰,人之患在好为人师,料想战国的土豪劣绅亦必好训勉当时的青年,所以激起孟子这样不平的话。第二,读书没有什么可以训勉。世上会读书的人,都是书拿起来自己会读。不会读书的人,亦不会因为指导而变为会读。譬如数学,出五个问题叫学生去做,会做的人是自己脑里做出来的,并非教员教他做出,不会做的人经教员指导,这一题虽然做出,下一题仍旧非指导不可,数学并不会因此高明起来。我所要讲的话于你们本会读书的人,没有什么补助,于你们不会读书的人,也不会使你们变为善读书。所以今日谈谈,亦只是谈谈而已。

  读书本是一种心灵的活动,向来算为清高。说破读书本质,“心灵”而已。“万般皆下品,惟有读书高。”所以读书向称为雅事乐事。但是现在雅事乐事已经不雅不乐了。今天读书,或为取资格,得学位,在男为娶美女,在女为嫁贤婿;或为做老爷,踢屁股;或为求爵禄,刮地皮;或为做走狗,拟宣言;或为写讣闻,做贺联;或为当文牍,抄账簿;或为做相士,占八卦;或为做塾师,骗小孩……诸如此类,都是借读书之名,取利禄之实,皆非读书本旨。亦有人拿父母的钱,上大学,跑百米,拿一块大银盾回家,在我是看不起的,因为这似乎亦非读书的本旨。读书本旨湮没于求名利之心中,可悲。可惜现在也一样。

  今日所谈,亦非指学堂中的读书,亦非指读教授所指定的功课,在学校读书有四不可。(一)所读非书。学校专读教科书,而教科书并不是真正的书。今日大学毕业的人所读的书极其有限。然而读一部小说概论,到底不如读《三国》、《水浒》;读一部历史教科书,不如读《史记》。 (二)无书可读。因为图书馆存书不多,可读的书极有限。(三)不许读书。因为在课室看书,有犯校规,例所不许。倘是一人自晨至晚上课,则等于自晨至晚被监禁起来,不许读书。(四)书读不好。因为处处受训导处干涉,毛孔骨节,皆不爽快。且学校所教非慎思明辨之学,乃记问之学。记问之学不足为人师,礼记早已说过。书上怎样说,你便怎样答,一字不错,叫做记问之学。倘是你能猜中教员心中要你如何答法,照样答出,便得一百分,于是沾沾自喜,自以为西洋历史你知道一百分,其实西洋历史你何尝知道百分之一。学堂所以非注重记问之学不可,是因为便于考试。如拿破仑生卒年月,形容词共有几种,这些不必用头脑,只需强记,然学校考试极其便当,差一年可扣一分;然而事实上与学问无补,你们的教员,也都记不得。要用时自可在百科全书上去查。又如罗马帝国之亡,三大原因,书上这样讲,你们照样记,然而事实上问题极复杂。有人说罗马帝国之亡,是亡于蚊子(传布寒热疟),这是书上所无的。在学校读过书者,皆当会心而笑。然想到教科书规范头脑,湮塞性灵,却又堪哭。

  今日所谈的是自由的看书读书,无论是在校,离校,做教员,做学生,做商人,做政客有闲必读书。这种的读书,所以开茅塞,除鄙见,得新知,增学问,广识见,养性灵。人之初生,都是好学好问,及其长成,受种种的俗见俗闻所蔽,毛孔骨节,如有一层包膜,失了聪明,逐渐顽腐。读书便是将此层蔽塞聪明的包膜剥下。能将此层剥下,才是读书人。点明读书要能破俗见陋习,复人之灵性。对死读书本固持陈念之人一段讥讽,令人心惊警惕。盖我们也未尝不有鄙俗之时。并且要时时读书,不然便会鄙吝复萌,顽见俗见生满身上,一人的落伍、迂腐、冬烘,就是不肯时时读书所致。所以读书的意义,是使人较虚心,较通达,不固陋,不偏执。一人在世上,对于学问是这样的:幼时认为什么都不懂,大学时自认为什么都懂,毕业后才知道什么都不懂,中年又以为什么都懂,到晚年才觉悟一切都不懂。大学生自以为心理学他也念过,历史地理他亦念过,经济科学也都念过,世界文学艺术声光化电,他也念过,所以什么都懂,毕业以后,人家问他国际联盟在哪里,他说“我书上未念过”,人家又问法西斯蒂在意大利成绩如何,他也说“我书上未念过”,所以觉得什么都不懂。到了中年,许多人娶妻生子,造洋楼,有身分,做名流,戴眼镜,留胡子,拿洋棍,沾沾自喜,那时他的世界已经固定了:女子放胸是不道德,剪发亦不道德,社会主义就是共产党,读《马氏文通》是反动,节制生育是亡种逆天,提倡白话是亡国之先兆,《孝经》是孔子写的,大禹必有其人,……意见非常之多而且确定不移,所以又是什么都懂。其实是此种人久不读书,鄙吝复萌所致。此种人不可与深谈。但亦有常读书的人,老当益壮,其思想每每比青年急进,就是能时时读书所以心灵不曾化石,变为古董。

  读书的主旨在于排脱俗气。黄山谷谓人不读书便语言无味,面目可憎。须知世上语言无味面目可憎的人很多,不但商界政界如此,学府中亦颇多此种人。然语言无味,面目可憎在官僚商贾则无妨,在读书人是不合理的。所谓面目可憎,不可作面孔不漂亮解,因为并非不能奉承人家,排出笑脸,所以“可憎”;胁肩谄笑,面孔漂亮,便是“可爱”。若欲求美男子小白脸,尽可于跑狗场、跳舞场,及政府衙门中求之。有漂亮脸孔,说漂亮话的政客,未必便面目不可憎。读书与面孔漂亮没有关系,因为书籍并不是雪花膏,读了便会增加你的容辉。所以面目可憎不可憎,在你如何看法。有人看美人专看脸蛋,凡有鹅脸柳眉皓齿朱唇都叫做美人。但是识趣的人若李笠翁看美人专看风韵,笠翁所谓三分容貌有姿态等于六七分,六七分容貌乏姿态等于三四分。有人面目平常,然而谈起话来,使你觉得可爱;也有满脸脂粉的摩登伽,洋囡囡,做花瓶,做客厅装饰甚好,但一与交谈,风韵全无,便觉得索然无味。“风韵”二字读书而来。性灵可决定面目,此处也说的这个道理。黄山谷所谓面目可憎不可憎亦只是指读书人之议论风采说法。若浮生六记的芸,虽非西施面目,并且前齿微露,我却觉得是中国第一美人。男子也是如是看法。章太炎脸孔虽不漂亮,王国维虽有一条辫子,但是他们是有风韵的,不是语言无味面目可憎的。简直可认为可爱。亦有漂亮政客,做武人的兔子姨太太,说话虽漂亮,听了却令人作呕三日。

  至于语言无味(著重“味”字),都全看你所读是什么书及读书的方法。读书读出味来,语言自然有味,语言有味,做出文章亦必有味。有人读书读了半世,亦读不出什么味儿来,都是因为读不合的书,及不得其读法。读书须先知味。读书知味。世上多少强读人,听到此语否?这味字,是读书的关键。所谓味,是不可捉摸的,一人有一人胃口,各不相同,所好的味亦异,所以必先知其所好,始能读出味来。有人自幼嚼书本,老大不能通一经,便是食古不化勉强读书所致。袁中郎所谓读所好之书,所不好之书可让他人读之,这是知味的读法。若必强读,消化不来,必生疳积胃滞诸病。

  口之于味,不可强同,不能因我的所嗜好以强人。先生不能以其所好强学生去读。父亲亦不得以其所好强儿子去读。所以书不可强读,强读必无效,反而有害,这是读书之第一义。有愚人请人开一张必读书目,硬着头皮咬着牙根去读,殊不知读书须求气质相合。人之气质各有不同,英人俗语所谓“在一人吃来是补品,在他人吃来是毒质”。因为听说某书是名著,因为,要做通人,硬着头皮去读,结果必毫无所得。过后思之,如作一场恶梦。甚且终身视读书为畏途,提起书名来便头痛。小时候若非有随时扔掉不喜之书之权,亦几乎堕入此道矣!萧伯纳说许多英国人终身不看莎士比亚,就是因为幼年塾师强迫背诵种下的果。许多人离校以后,终身不再看诗,不看历史,亦是旨趣未到学校迫其必修所致。

  所以读书不可勉强,因为学问思想是慢慢胚胎滋长出来。其滋长自有滋长的道理,如草木之荣枯,河流之转向,各有其自然之势。逆势必无成就。树木的南枝遮荫,自会向北枝发展,否则枯槁以待毙。河流遇了矶石悬崖,也会转向,不是硬冲,只要顺势流下,总有流入东海之一日。世上无人人必读之书,只有在某时某地某种心境不得不读之书。警句。有你所应读,我所万不可读,有此时可读,彼时不可读,即使有必读之书,亦决非此时此刻所必读。见解未到,必不可读,思想发育程度未到,亦不可读。孔子说五十可以学易,便是说四十五岁时尚不可读《易经》。刘知几少读古文《尚书》,挨打亦读不来,后听同学读《左传》,甚好之,求授《左传》,乃易成诵。《庄子》本是必读之书,然假使读《庄子》觉得索然无味,只好放弃,过了几年再读。对庄子感觉兴味,然后读庄子,对马克思感觉兴味,然后读马克思。读书要等兴味来。若有不喜欢之书,搁下几年,未尝不变做喜欢,于我心有戚戚焉。

  且同一本书,同一读者,一时可读出一时之味道出来。其景况适如看一名人相片,或读名人文章,未见面时,是一种味道,见了面交谈之后,再看其相片,或读其文章,自有另外一层深切的理会。或是与其人绝交以后,看其照片,读其文章,亦另有一番味道。四十学《易》是一种味道,五十而学《易》,又是一种味道。所以凡是好书都值得重读的。自己见解愈深,学问愈进,愈读得出味道来。譬如我此时重读Lamb的论文,比幼时所读全然不同,幼时虽觉其文章有趣,没有真正魂灵的接触,未深知其文之佳境所在。一人背痈,再去读范增的传,始觉趣味。

  由是可知读书有二方面,一是作者,一是读者。程子谓《论语》读者有此等人与彼等人。有读了全然无事者;亦有读了不知手之舞足之蹈之者。所以读书必以气质相近,而凡人读书必找一位同调的先贤,一位气质与你相近的作家,作为老师,这是所谓读书必须得力一家。若单就读书,得力一家,失之于简率。然林语堂意思是要人找到师法对象,全心投入、气质浸润。此即读书以“情”读和以“智”读之区别。不可昏头昏脑,听人戏弄,庄子亦好,荀子亦好,苏东坡亦好,程伊川亦好。一人同时爱庄荀,或同时爱苏程是不可能的事。找到思想相近之作家,找到文学上之情人,心胸中感觉万分痛快,而魂灵上发生猛烈影响,如春雷一鸣,蚕卵孵出,得一新生命,入一新世界。George Eliot自叙读卢骚自传,如触电一般。尼采师叔本华、萧伯纳师易卜生,虽皆非及门弟子,而思想相承,影响极大。当二子读叔本华、易卜生时,思想上起了大影响,是其思想萌芽学问生根之始。因为气质性灵相近,所以乐此不疲,流连忘返,流连忘返,始可深入,深入后,如受春风化雨之赐,欣欣向荣,学业大进。

  谁是气质与你相近的先贤,只有你知道,也无需人家指导,更无人能勉强,你找到这样一位作家,自会一见如故,苏东坡初读庄子,如有胸中久积的话,被他说出,袁中郎夜读徐文长诗,叫唤起来,叫复读,读复叫,便是此理。这与“一见倾心”之性爱同一道理。你遇到这样作家,自会恨相见太晚。一人必有一人中意的作家,各人自己去找去,找到了文学上的爱人,“文学上的爱人”,奇语,但极有道理。读书若无爱情,如强迫婚姻,终究无效。他自会有魔力吸引你,而你也乐自为所吸,甚至声音相貌,一颦一笑,亦渐与相似,这样浸润其中,自然获益不少,将来年事渐长,厌此情人,再找别的情人,到了经过两三个情人,或是四五个情人,大概你自己也已受了熏陶不浅,思想已经成熟,自己也就成了一位作家。若找不到情人,东览西阅,所读的未必能沁入魂灵深处,便是逢场作戏,逢场作戏,不会有心得,学问不会有成就。

  知道情人滋味便知道苦学二字是骗人的话。苦学误人!警句。只可惜读教科书,却非苦学不可。然如能从浸润各色奇书来长己之才智,未必不能过考卷关。学者每为“苦学”或“困学”二字所误。读书成名的人,只有乐,没有苦。据说古人读书有追月法、刺股法、又丫头监读法。其实都是很笨。读书无兴味,昏昏欲睡,始拿锥子在股上刺一下,这是愚不可当。一人书本摆在面前,有中外贤人向你说极精彩的话,尚且想睡觉,便应当去睡觉,刺股亦无益。叫丫头陪读,等打盹时唤醒你,已是下流,亦应去睡觉,不应读书。而且此法极不卫生,不睡觉,只有读坏身体,不会读出书的精彩来。若已读出书的精彩来,便不想睡觉,故无丫头唤醒之必要。刻苦耐劳,淬励奋勉是应该的,但不应视读书为苦。视读书为苦,第一着已走了错路。天下读书成名的人皆以读书为乐;汝以为苦,彼却沉湎以为至乐。比如一人打麻将,或如人挟妓冶游,流连忘返,寝食俱废,始读出书来。以我所知国文好的学生,都是偷看几百万言的三国水浒而来,决不是一学年读五十六页文选,国文会读好的。试问在偷读三国水浒之人,读书有什么苦处?何尝算页数?好学的人,是书无所不窥,窥就是偷看。于书无所不偷看的人,大概学会成名。

  有人读书必装腔作势,或嫌板凳太硬,或嫌光线太弱,这都是读书未入门路,未觉兴味所致。有人做不出文章,怪房间冷,恐蚊子多,怪稿纸发光,怪马路上电车声音太嘈杂,其实都是因为文思不来,写一句,停一句。一人不好读书,总有种种理由。“春天不是读书天,夏日炎炎最好眠,等到秋来冬又至,不知等待到来年。”其实读书是四季咸宜。古所谓“书淫”之人,无论何时何地可读书皆手不释卷,这样才成读书人样子。读书要为书而读,不是为读而读。顾千里裸体读经,便是一例,即使暑气炎热,至非裸体不可,亦要读经。欧阳修在马上厕上皆可做文章,因为文思一来,非做不可,非必正襟危坐明窗净几才可做文章。一人要读书则澡堂、马路、洋车上、厕上、图书馆、理发室,皆可读。而且必办到洋车上、理发室都必读书,才可以读成书。

  读书须有胆识,有眼光,有毅力。说回前面论点,最后一点,也即读书全部之主旨,读出自己性灵来。胆识二字拆不开,要有识,必敢有自己意见,即使一时与前人不同亦不妨。前人能说得我服,是前人是,前人不能服我,是前人非。人心之不同如其面,要脚踏实地,不可舍己耘人。诗或好李,或好杜,文或好苏,或好韩,各人要凭良知,读其所好,然后所谓好,说得好的道理出来。或竟苏韩皆不好,亦不必惭愧,亦须说出不好的理由来,或某名人文集,众人所称而你独恶之,则或系汝自己学力见识未到,或果然汝是而人非。学力未到,等过几年再读,若学力已到而汝是人非,则将来必发现与汝同情之人。刘知几少时读前后汉书,怪前书不应有古今人表,后书宜为更始立纪,当时闻者责以童子轻议前哲,乃“赧然自失,无辞以对”,后来偏偏发见张衡、范晔等,持见与之相同,此乃刘知几之读书胆识。因其读书皆得之襟腑,非人云亦云,所以能著成《史通》一书。如此读书,处处有我的真知灼见,得一分见解是一分学问,除一种俗见,算一分进步,才不会落入圈套,满口烂调,一知半解,似是而非。

(《大荒集》1934年)

2006年10月11日

[收藏]学习过程中的几本书

我学习过程中的几本书,推荐给大家!!!!
faq-it.org/cgi/
如今,计算机方面的好书越来越多了,虽然对计算机图书的抱怨仍不绝于耳,但是挑选余地越来越大却是不争的事实。但我却发现,不但好多学生对于如何系统学习计算机知识很困惑,而且现在好多人只满足于下载电子书而不计划着去看,希望我的读书计划(并带有点评)可以“唤醒“这部分人,也算是我给寒冷中苦苦艰熬的IT人的一份“小礼物”吧。

让我们苦练内功,挺起自信的胸膛去等候IT的春天吧!

前面的*号是我个人的点评,见笑,见笑!

――――――――――――――――――――――――――――――――――――――――――――――――以前看的:
****钱能的《c++程序设计》: 已看完,看的是纸版书。
****《essetial c++》:已看完,看的是电子打印版。
****《Effective C++》:已看完,看的是纸版书。
*****《Inside the c++ model》:已看完,看的是纸版书。
*****《Design patterns elements of Reuseable object oriented software》:已看完,看的是纸版书。

――――――――――――――――――――――――――――――――――――――――――――――――
去年(2001年底到2003年初),我的读书计划已实施情况。大多数的电子版都被我打印出来了,否则眼睛受不了的。
****《more Effective C++》:已看完,看的是电子打印版。
*****《c++primer》:在看( 没时间,只能打游击:( ),看的是纸版书。
*****《Refactoring_Improving the Design of Existing Code》:已看完,看的是电子打印版。
***《UMLCHINA培训资料》:已看完,看的是电子版,共337页PPT。感觉没有希望的那么好,请看过的朋友评一下。
****《UML APPLIED》:已看完,看的是电子打印版,共123页,英国某培训机构的FREE-DOWNLOAD教材,JIEJIE推荐!
****《Applying Use Case Driven Object Modeling with UML》:已看完,看的是电子打印版,ADDISON WESLEY 2001年6月出版。
****《ESSENTIAL ATL》:已看完,看的是纸版书。
****《WTL DOC》:已看完,看的是电子打印版。
****《APPLYING UML PATTERNS》:已看完,看的是电子打印版。
****《人月神话》:已看完,看的是纸版书。
*****《侯捷的STL源码分析》:在看( 没时间,只能打游击:( ),看的是纸版书。
**《Mastering UML with Rational Rose 2002》:已看完,看的是电子版。为入门书,几小时就可看完,不推荐。看《UML DISTILLED》吧。
****《GURU OF THE WEEK》:在看( 没时间,只能打游击:( ),看的是电子打印版。EXCEPTIONAL C++和MORE EXCEPTIONAL C++都在了,:)
*****《XPROGRAMMER》:不错,不错。每期必看。

――――――――――――――――――――――――――――――――――――――――――――――――
今年(2003年初到2004年初),我的读书计划,帮我看评一下特别是好坏,谢谢。大多数计划看的电子版都被我打印出来了,否则眼睛受不了的。
必须看的:
***《Iterative UML Development Using Visual C++ 6》:计划看。工作所需,必须看。
***《Iterative UML Development Using JAVA》:计划看。工作所需,必须看。
***《项目管理》:计划看,纸版书。工作所需,必须看。
****《Relational Database Access Layers A Pattern Language》:计划看,下载了电子版。工作所需,必须看。

短小文章和书:
*****《Robert Martin thesis》:计划看,电子版。
***《华为文档》:计划看,电子版。
****《最后期限》:计划看,电子版。
****《effective java》:计划看,英文电子版。
***《Object-Oriented Analysis and Design with UML Test》:计划看,看看俺的掌握度,呵呵。

书:
*****《OBJECT-ORIENTED SOFTWARE CONSTRUCTION》:计划看,电子版。
****《XP EXPLORED》:计划看,电子版。
****《analysis pattern》:计划看,电子版。
***《Objects, Components, and Frameworks with UML》:计划看,电子版。

――――――――――――――――――――――――――――――――――――――――――――――――
摇摆中的计划:
*****《Windows Graphics Programming Win32 GDI and DirectDraw by Feng Yuan》:我粗粗看了一下,确实如CSDN杂志上所说的那样,是本好书。

――――――――――――――――――――――――――――――――――――――――――――――――
实在没有时间计划看的书,可惜啊。
****《ENTERPRISE SOFTWARE FRAMEWORK BY MARTIN FOWLER》:MARTIN FOWLER的好书,没计划看,电子版。
*****《writing_effective_use_cases》:COCKBURN的好书,没计划看,电子版。
****《PATTERN FOR effective use cases》:COCKBURN的好书,没计划看,电子版。
****《Thinking in Patterns with Java》:BRUCE的好书,没计划看,电子版。
****《MORDERN C++ DESIGN》:LOKI的好书,没计划看,部分电子版。
****《Large Scale, Component-Based Development》:没计划看,电子版。
****《人件》:没计划看,电子版。
***《REFACTORYING WORK BOOK》:没计划看,电子版。
****《A UML Pattern Language》:没计划看,电子版。大致翻了一下,不错。
***《Applied Java Patterns BY Stephen Stelting》:没计划看,电子版。
****《DESIGN PATTERN EXPLAINED》:没计划看,电子版。
****《Project Management Nation》:没计划看,电子版。
《sp8000doc》:我无法评分,你不知道这是社么吗?赫赫,你在CSDN尽灌水了吧。去软工看看,别人的经验
(不管好坏,不管成功还是失败)都是对你有益的。对吧。

――――――――――――――――――――――――――――――――――――――――――――――――
疑惑中,帮我参谋一下,是否需要看,谢谢。
《建筑的永恒之道》:电子版。
《UML DISTILLED》:是不是入门书?有没有新的东西?



By JieJie
01/31/2003

2006年10月10日

[收藏] 特别关注:IT人请保重健康

  4月8日,在上海出席夏新与爱立信移动平台公司的一项商务协议签署仪式后,爱立信中国总裁杨迈于傍晚回到北京。当日他在健身房的跑步机上跑步时,由于心脏骤停,倒了下去,终年54岁。
  杨迈的猝死吸引了众多媒体的眼球,也引发了半个月以来新一波对IT从业人员健康问题的热烈讨论。事隔不久,又听到了4月19日麦当劳公司董事长兼CEO吉姆·坎塔卢波同样由于心脏病猝死的消息。虽然是不同行业的人物,也再一次增加了普遍的健康恐慌情绪。

  每一次恶性事件发生时总是会触动大众的危机意识,并且开始比照审视自身的情况,但是这种警醒又会被随后的平静规律生活所冲淡,直到下一次听到重大恶性事件的报道。公众对杨迈猝死事件的关注,或多或少是由于笼罩在事件人物头上大公司总裁头衔的光芒所致。更多IT从业人员的健康状况同样不容乐观。他们背后还涉及千千万万个家庭的幸福,该社会问题不容忽视。据《光明日报》报道,国家有关部门公布的一个专项调查结果表明,我国知识分子平均寿命为58岁,低于全国平均寿命10岁左右;而北京中关村知识分子的情况更为触目惊心,平均死亡年龄为53.34岁,比10年前缩短了5.18岁。
 

  IT人的工作与生活

  北京人用自己独到的方式嘲弄着IT行业,他们说北京有三种男人:中关村的男人,有钱没时间;三里屯的男人,有时间没钱;建国门的男人,既有钱也有时间。无形之中,作为IT创业园区的中关村与外企聚集地建国门变成了行业生态链中的两个极端。IT围城里的人总是奉劝那些想进去的人三思,“爱一个人,让他去做IT;恨一个人,也让他去做IT。”因为这个行业平均收入高,不但造就了丁磊、张朝阳等“30来岁、四五年奋斗就迈入中国最有钱的人行列”的新财富神话,而且普通IT从业人员的收入在各行业中也一直排在历次网络薪资调查的前三甲。当然这是与行业新,机会多、潜力大;以及从业人员的平均受教育水平高等原因分不开的。不过,天天加班到后半夜、在办公室打地铺睡睡袋、婚恋难、工作压力引发过激的个人或家庭问题等故事总是零星地在行业内流传,身处其中的人也或多或少地遭遇过类似的困扰。

  “35岁就退休”是IT人最先提出的一句响亮口号。背后包含着对迅速成功的强烈渴望,以及一种“就苦十年”然后开始过幸福生活的人生设计。越来越多的人开始引用这样一句话来形容自己的生活状态:“现在是拿命换钱,以后恐怕得拿钱换命。”

  IT恐怕是将“量化管理”和“过程管理”实行得最好的行业,很多管理方法根本就是这个行业创造出来的,还希望推广到所有行业去。这意味着你一分钟都不能偷懒!而且众多的年轻的、聪明的人都涌进了这个行业。激烈的竞争、超负荷的工作压力、无时不在的电子邮件遥控、7天/每天24小时的全天候待命状态、缺乏任何福利的临时工(微软就雇佣了1/3这样的员工)......高科技从业者的承受力都锻炼得很强,因为必须在生存压力下接受这一切。

  英特尔总裁安德鲁·格鲁夫认为自己是一个成功的偏执狂,写出了《只有偏执狂才能生存》的书。某次会议上,因为一名员工迟到,格鲁夫用棒球棍狠狠地砸在会议桌上,以示不满和警告。为了促进员工的工作效率与内部竞争,格鲁夫设计了一整套计算员工工作量和工作效绩的苛刻的排名方法。长期处于紧张竞争状态中的员工抱怨说:“工作压力如此巨大,竞争如此激烈,我们同事之间简直不敢互相帮助。”另一些故事则可以写进黑色幽默小说。比如,在英特尔任职科研工作的一名单身父亲下班回家,刚吃过饭,就把两个小孩摁上床,只为了自己能早点赶回公司加班。

  一位著名跨国IT公司的中国区副总裁在公开场合讲这样一个故事:某航空公司曾劝一位超级VIP客户减少飞行的次数,说他乘机的频繁程度都超过安全几率了。这正是他们公司的一名技术维护工程师,曾经一个星期飞过五六个城市。这位副总说的时候是带着赞扬语气的。因为高强度工作、做“空中飞人”几乎已经是现在工作人的共识。许多媒体文章也把在各地飞来飞去、夜晚泡吧等通宵工作或娱乐的生活描述为一种时髦,言下之意似乎是只有小公务员、小老百姓才按时上下班、买菜做饭。

  通讯科技渗透到工作领域,初衷是为了让人们从朝九晚五的死板时间和方格办公室中解放,谁料竟成了噩梦。电子邮件、移动电话时刻跟随着疲累的工作者,入侵他们的私人空间。无论何时何地都可能会突然接到上司的指令,8小时工作制变成了全天候待命服务。IT人的饮食结构中,快餐(包括盒饭)占有极其重要的地位,一个IT人一年当中吃掉的食物只有很少一部分来自于家庭的炉灶。大多数的IT人在饮食上极不健康,简单地说,IT人的胃里空间是由快餐面、盒饭、可乐、饼干以及膨化食品等组成的。社会关系方面也是一团糟。《北京青年报》曾刊登过一篇《上地白领择偶难》的文章,报道出来以后当时社会反响非常强烈。

  IT行业在对社会经济发展做着巨大贡献,国家也一直在倡导“信息化带动工业化”的发展政策。但是创造这些财富的从业人员的根本健康问题呢?中关村人力资源经理协会和佰众健康体检中心联合开展的中关村园区企业员工与人力资源经理健康指数网上调查给出了一个让人忧虑的结果:高达89.9%中关村人对自己的健康不自信。参与此次调查的企业有82家,员工达2642人。他们的年龄约80%在26岁到35岁之间。“中关村综合症”主要表现为:不运动、睡眠差、不吃早餐的生活习惯;颈椎病、骨质疏、微量元素缺的健康特点;心理强迫症多和体质基础好而心肺功能差。对中关村企业家的检查发现,他们八成以上没有运动习惯,只是不定期地偶尔运动;四成以上有吃饭快的特点;此外,一多半的人承认睡眠没有规律。心理测查显示出明显的中关村特点:很多被查者存在轻度强迫症。这和中关村人自己创业当老板的艰辛历程有关,也与个体毅力强、机警敏锐的做事风格有关。


  生活方式病

  “杀手”究竟是谁?在所谓IT高科技的职业生涯背后,健康正在被偷走。

  辐射

  你知道计算机的辐射量是多少吗?键盘为1000V/m、鼠标450V/m、屏幕218V/m、主机170V/m。身处IT业,你上班的第一个动作是开电脑,下班后最后一个动作是关电脑。即使回家以后,还习惯性地打开电脑娱乐。一次行业会议上,主持人问台下观众每天用多长时间的电脑。回答是“超过十个小时”,而且大部分人还在窃窃私语说时间恐怕更长。新西兰惠灵顿医学研究中心的科学家提出:除了电脑屏幕的辐射对人体有害外,长时间的“电脑办公”可能形成致命的血栓,致人死亡。他们是在对一个猝死的32岁男子的死因进行研究时得出这一结论的。死者血液里有凝块,而且已聚集到肺部。他平均每天要在电脑前连续工作18小时,长期缺乏运动使他的血液很容易凝结。

  用眼过度

  视觉模糊,视力下降,眼睛干涩、发痒、灼热、疼痛,畏光等,还时常伴有头痛。这是每天面对电脑的时间超过8小时甚至达到18个小时的后果。

  而且很多公司为了节约成本的缘故,通常只给员工配备最差的兼容台式机,超期使用的老显示器更是“视力杀手”。

  熬夜加班

  IT人加班是家常便饭。经常加班熬夜会导致焦虑、失眠、记忆力减退、精神抑郁,甚至轻微的抑郁症和精神分裂。如果这种疲劳持续6个月或更长时间,你可能会出现低烧、咽喉肿痛、注意力下降、记忆力减退等症状。而且,非常严重的长期性疲劳很可能就是其他病症的先兆。

  腰背酸痛

  颈椎、肩部酸痛,脖子忽然不能转动,手掌、手腕、前臂时有胀痛的感觉。这是长时间频繁使用手腕和手指工作的结果。

  睡眠不佳

  由于经常透支睡眠时间,睡眠生物钟紊乱,偶尔出现的呼吸困难和四肢乏力可能都是因为缺乏睡眠。要知道,“多睡一小时,你得到的不只是工作时更加充沛的精力,你可能挽救了自己的生命。”

  饮食不妥

  早上贪睡误了早餐,中午随便对付解决了午餐,晚上加班泡了碗快餐面,吃高热量的夜宵,给客户敬酒……摄入的蛋白质、脂肪和碳水化合物不平衡,于是造成了脂肪肝、将军肚和高血脂。

  所有这些不健康的生活方式都留下了隐患,形成各种“综合症”。

  例如“办公室综合征”。因为不愿意去办公室上班,所以有“星期一综合症”。没有间歇的接收邮件,在办公小隔间里长时间面对屏幕,接听上司和客户不间断的电话,办公室荧光灯太亮有些晃眼……一进入现代化的办公室,就会感到胸闷头疼。越到下午,就越是头疼得厉害。这些莫名其妙地烦恼,使人做事打不起精神来,思维迟钝,爱钻牛角尖。

  身为IT人的你,每天收集大量的信息,但你仍担心自己漏掉了什么信息,每天一有空就无目的地上网寻觅,始终处在焦虑状态之中。不知不觉就患上了“信息焦虑综合征”。没有任何病理变化,也没有任何器质性改变,但会突发性地出现恶心、呕吐、焦躁、神经衰弱、精神疲惫等症状。在心理学家看来,你已经患有一种自我强迫和紧张所造成的心理疾病。信息焦虑综合征患者虽然没有任何病理变化,但会出现突然的恶心、呕吐以及情绪急躁不安、精神疲惫等症状,它还会使你在心理上出现失落感,容易对自己失去信心。

  IT人还崇尚“快节奏”,总感到时间越来越不够用,工作的压力使你感到焦躁不安,紧张过度。你做任何事情都会过分地关注时间,哪怕是在逛街购物,都会不自觉地看手表,要尽快结束。你甚至闲不下来,一闲下来就会神情恍惚,感到无所事事。你不知道,“时间综合征”患者都习惯强迫自己处于快节奏的生活中,容易使中枢神经和植物神经系统功能失调,出现神经性头痛、神经性呕吐、神经性厌食等症状。长期处在快节奏的环境中,还会引起情绪波动,引发心率加快、血压升高、呼吸急促。

  “过劳死”如瘟疫般蔓延,开始威胁到越来越多的人。“过劳死”是长期过度的劳累,引发人体心衰、肺衰、肾衰、心肌梗、脑溢血等病症造成的猝死。这种猝死的死因主要是冠心病、主动脉瘤、心瓣膜病、心肌病和脑出血,与一般猝死没什么不同。只不过这些病的潜在性常被过劳者忽略,以至酿成严重后果。

  形容IT人的话充满辛酸滋味:“看着比谁都好!干活比驴还多。”身高181.5厘米的软件工程师张帅体重只有120斤,被公认为是IT人的标准体型。奇怪的是IT女性则相反,一天14小时以上的坐在电脑前不停的吃着零食,因为没时间出去吃,使她们的脂肪增多、越来越胖。

  
  逃离崩溃边缘

  如果你已经身处IT行业,行业局面又不会一时间改观,那么你必须要学会“自我逃离”。

  按生物钟作息

  你的生物钟,是你体内各个器官所固有的生理节律。你应该按照自身的生理节律来安排作息。如果你反其道而行之,晚上熬夜,三餐不定时,自然整天昏昏沉沉,疲惫不堪。

  强化三餐营养

  一日三餐要品种多样,要各品种之间的比例均衡,偏废不得。当然,也不排除在保持“平衡”原则的前提下,根据你的生理特点对营养物质做出某些调整,以便更好地促进身体健康。至于具体食品,营养学家建议你无论何时,都不要忘记鸡肉、豆类、菠菜、鱼类、草莓、香蕉、燕麦片、海带、脱脂酸奶等几种,因为它们富含能量,能帮助你避免过劳伤害,保证你的身体这台发动机高效率运转。

  学会主动休息

  身处IT界,持续工作愈久或强度愈大,疲劳的程度就愈重,消除疲劳的时间也就愈长,你会发现 “累了才休息”的传统休息方式效果并不很有效。因此你要学会主动休息,不仅可保护身体少受或不受疲劳之害,而且能大幅度提高工作效率,你可以考虑:重要活动之前抓紧时间先休息一会儿。而且尽量保证每天8小时睡眠,星期天应进行一次“整休”,轻松、愉快地玩玩,为下一周紧张、繁忙的工作打好基础。清晨,你先给自己做好全天的安排,除了工作、进餐和睡眠以外,还应明确规定一天之内的休息次数、时间与方式,除非不得已,不要随意改变或取消。最后,重视并认真做好工间休息,充分利用这段短短的时间到室外活动,或做深呼吸,或欣赏音乐,使身心得以放松。

  定期体检

  无论青年还是中老年人,也不论体力还是脑力劳动者,最好每年做一次体检,包括心电图(运动负荷试验)及有关心脏的其他检查,以便早期发现高血压、高血脂、糖尿病、特别是隐性冠心病,这样你才能及时发现疾病,不论轻重,你都要及时认真治疗。

  善于劳逸结合

  人人都要学会调节生活,短期旅游、爬山远眺、呼吸新鲜空气、忙里偷闲听听音乐、跳跳舞、唱唱歌,都是解除疲劳,让紧张的神经得到松弛的有效方法,也是防止疲劳症的精神良药。

  坚持合理运动

  你的工作往往有静有余动不足,而最易使人疲惫的莫过于长期不活动。运动医学专家认为,要想保持持久旺盛的精力,需要经常运动,以增加体能储存,每周散步4~5次,每次30~45 分钟,或一星期进行3~4次温和的户外活动,每次30分钟,都是必要的。但是人到中年以后也要特别警惕过于激烈的运动。刚开始时,你也许会感到运动后更为疲劳,这正说明你的机体需要调整,坚持一段时间后便会慢慢适应,体能会逐渐增加,抵抗疲劳的能力会得到强化。

  保持心情舒畅

  心理性过劳—失望、焦虑、恐惧、神情沮丧等也可使你精力衰竭。当你感到烦恼、苦闷、焦虑的时候,你身体的血压和氧化作用就会降低;而你的心情愉快时,整个新陈代谢就会改善。俗话说“笑一笑、十年少”,烦闷、懊悔、愤恨、焦虑、忧伤,是产生疲劳的内在因素。因此,要防止疲劳,保持充沛的精力,就必须经常保持愉快的心情,始终保持积极向上的、乐天的生活态度。

  除了平时注意保持较好的工作和生活习惯以外,“35岁退休”或者转行的确是可以考虑的事情。如果你能很年轻就成功地解决了经济压力,可以随心所欲去干自己喜欢的事情,那么恭喜你。如果还不行,那么也可以尝试过一种比较简单的生活。美国一位活跃的咨询专家说:今后越来越多的求职简历中央会划出一条清晰的界限——有人可能会在通用公司做了20年经理后,再来申请一个完全不同类的入门职位。职业分层现象越来越多——职业生涯前20年用来做高收入高压力的工作;第二个20年做结构性强但报酬梢低的工作,例如教师;然后的时间做报酬很低、压力也较小的工作,如高尔夫球场发球员。
 

  制度关怀

  经济发展不能以破坏环境为代价,这个观点已经得到了公认。可是社会经济发展、企业业绩增长,个人的收入增长与成功欲望,更不能以人体健康为代价。应该保护IT业这个对社会经济做出了巨大贡献的群体。从另一方面来说,早期管理理论把人假设为“经济人”,认为金钱是刺激积极性的唯一动力。但事实上人的需求是多方面的,马克思、恩格斯将人的需求分为生存、享受和发展;马斯洛的需求层次理论认为,人的需求活动包括生存、安全、交往、社会承认和自我实现。因此要留住人才并使其努力工作,还必须从社会、心理方面去努力。

  下面的一些做法,也许可以提供一些借鉴。

  人性化奖励

  说到奖赏,我们通常想到的便是加薪、升职或是假期、红包等等,总之都是一些物质上的东西。而很少想到一封亲笔信便是一份特别的奖励。拥有肯德基、必胜客等知名企业的美国百胜集团总裁诺瓦克,为了调动员工的积极性,亲手给员工写过数千张“感谢您”的信函,还有趣地在签名后面画上一张笑脸。给员工发放一个午睡用的小枕头,中午关闭办公室刺眼的灯光,让他们小憩一下会让员工感恩戴德。

  心理培训

  12人排成两行,各自伸出两个食指,同时将一根很轻很细的木棍缓缓抬起来,放下去,直到步调一致......这是在中关村一家知名电脑高科技公司工作的陈先生和他的同事日前所玩的一个心理培训游戏,旨在让每个人感受到“我在公司的岗位很重要”。目前,一些专业的心理培训机构正走进高科技企业,以解开员工的“心理疙瘩”。

  联想、TCL、实达公司等都常年请培训公司开展心理培训。培训涉及的领域包括“人际关系协调”、“群体决策”、“时间管理”等,心理培训则贯彻在培训过程之中。

  健康福利

  每年的定期体检已经在许多公司成为制度,费用由公司买单。这应该推广到所有从业人员中去。

  上海市黄浦区中心医院内科副主任樊雨良说,我国实行知识分子体检至今已有20多年,但由于缺乏健康教育、疾病干预等一系列公共卫生体系的有力支撑,体检还不能充分发挥其应有的作用。樊雨良认为,单位应为知识分子建立健康档案,就像人事档案一样,有专人负责。每年体检后,都应归档以备查用;在体检项目上,也应根据知识分子工作特点,重点监控与高血压、高血脂、肾病、糖尿病等有关的数据;针对有些知识分子对健康体检不重视的情况,做好健康宣传和教育工作,甚至推出规定时间内未做健康体检就不予上岗等强制措施,促使知识分子提高疾病防护意识。

  日本三菱银行的方案是每周安排20位分布各地的员工到总公司接受健康研修训练,设置了一系列课程进行例行健康检查,还进行个别体能运动的体力测定、心理卫生的自律训练、性格分析和心理检查等。

  不良的生活习惯影响着人们的健康,日本企业采取了很多措施纠正员工不良的生活习惯,典型的例子就是禁烟。由于吸烟过多使员工致病或早逝,企业需要支付大量费用,而且吸烟者迟到率高,劳动效率低,又容易引起火灾和其他事故。因此,许多企业都不聘任吸烟者,对正在吸烟的员工采取了软硬兼施的戒烟措施。

  为了进行有效的健康教育,日本企业实施了健康咨询服务项目,比如为员工开设减肥咨询训练班,提供控制饮食的营养菜单,开办营养讲座,聘请专家传授滑雪、健美操、防身术等方面的知识。

  同时企业意识到投资健身设施可以促进员工的健康,减少的费用远远大于投资,现在很多公司兴建游泳池、体育馆、手球室等。为了鼓励员工经常参加锻炼,企业还免费提供毛巾、无领衫和短裤。

  比利时的“信贷工时”

  2004年初,比利时劳动就业部门调整了对“信贷工时”的补贴方式,使其更加简便透明。从2002年1月1日起,比利时用“信贷工时”这一新劳动法规,取代了关于中断劳动合同的旧法律条款。根据新法规,私营企业的职工可以选择半日工作或减少五分之一工作时间,从而避免因家务或个人原因放弃工作机会或提前退休。这种更为灵活的工作方式受到妇女和年长职工的欢迎。“信贷工时”对50岁以上的职工采取倾斜的鼓励政策,通过每周减少一天工作时间,留住经验丰富的职员,比起终止劳动合同或提前退休更合算。劳动者虽然由于工作时间减少使薪金递减,但却可以额外享受国家劳动就业部门的补贴。

  由于工作和从事家务的时间安排经常发生冲突,所以人们都希望能够像支配资金一样,合理调配工作时间,在不耽误工作的情况下,兼顾孩子和照看亲人,或实现一个梦想已久的旅行计划。自由支配劳动时间也是劳动者的权利。比利时的“信贷工时”满足了私营企业职工这方面的需求,有效提高了“有牵挂”职工的个人工作和生活质量,因而被越来越多的人接受,逐渐成为一种时尚。

  走在欧美国家的大街上,中国人常常奇怪怎么看不到什么人。一位IT杂志记者有一次出差到美国旧金山,走在夜晚的街道上,突然看见一座四五层高的“落地玻璃窗大楼”中满是锻炼的人群,特别显眼。

  让中国的IT从业人员也来发起一场全行业的健康运动!

2006年10月4日

想做就做……决心、热诚->恒心、毅力

想做就做


在日常生活中,有许多应该做的事,不是我们没有想到,而是我们没有立刻去做。时间一过,就把他忘了。

其原因,有时是因为忙,有时是因为懒。一个事务繁忙的人,想到某一件事该做,但他当时没有时间,于是想,“等一下再说吧!”但等一下后,为其他事务分神,就把这件事忘了。

有些人虽然不忙,可是,他喜欢拖延。该做的是虽然想到,却懒得立刻着手去做。心想,“等一下在做吧!”可是,等一下之后,他就忘了。或者已是事过境迁,失去当作的时机了。

如果是做事有效率,最好是“想到就做”。

养成“想到就做”的习惯之后,你就发现自己虽是多有新的成绩:问题随手解决,事务即可办妥。这种爽利的感觉,会使你觉得生活充实,而心情愉快。

拖延的习惯,不但耽搁的工作的进行,而且在自己精神上也是一种负担。事情未能随到随做,随做随了,却都堆在心上,既不去做,又不敢忘,实在比多做事情更加疲劳。

做事有始无终,也会使自己心情上有负债之感。

无论大小事,既经开始,就应勇往直前的把他做完。我国传统规矩,家庭教子弟写字,无论有什么事打扰,也不准把一个字只写一半。即使这个字写错了,准备涂掉重写,也要把他写完了再涂。这正是教人不忽视任何小事的最好的起点。在日常小事上养成有始有终的好习惯,将来做时才不会轻易的半途而废。

假如你又为完成的工作。未缝完的衣服,未写成的稿件,等等,希望你肯把他们找出来整理一下,安心去把他们完成。相信当完成之后,你会觉得非常快乐。当他们未完成时不过是些废物,而当你只要在付出一半或十分之二三的心力,把他们完成之后,他们却办成漂亮的成品和可观的成绩,那种意料之外的成功,更会令你惊奇。

有些事,并不是我们不能做,而是我们不想做。只要我们肯在多付出一分心力和时间,就会发现,自己实在有许多未曾使用的潜在本领。

也有些人在面临一项新的工作时,会为他的繁重与困难而心情紧张,沉重,不安。这些人大多较为拘谨而责任感又重的人。祛除这种紧张,沉重与不安的办法,只有立刻着手去做这件事。当开始工作之后,他会很意外的发现,事实并不那么困难。而对自己也有了信心。

“想到就做”不是一件难事,他只是需要明快,果决有信心。但是,一件事情即经开始之后,是否能够有始有终,则要靠毅力与恒心。许多事往往在一开始时,凭一股冲力做了一阵,然后就渐渐觉得厌倦;加以任何工作总难免遭遇一点困难或外力的干扰,这时,不但兴趣消失,信心也没有了。很多工作多因此而中途停顿。而只是那些能克服这中途障碍的才是成功的人。

开始一件工作,所需的是决心与热诚;完成一件工作所需的是恒心与毅力。缺少热诚,工作无法发动。只有热诚而无恒心与毅力,工作不能完成。