译注:Joe Casad是 C/C++ Users Journal 杂志的主编(editor-in-chief)。原文发表于 CUJ Online Exclusives, March 2003,网址为:http://www.cuj.com/webonly/2003/0303/web0303a/web0303a.htm
基本信息:书名: C# Primer: A Practical Approach作者: Stanley B. Lippman出版商:Addison Wesley Professional, 2001页数: 400定价: $44.99
在两年来围绕 .NET 的空前大肆宣传的硝烟散去之后,你也许会问:“究竟 C# 为何物?” 大概正如你所揣想的,世界上真的出现了一门你可能会实际用到的新语言。尽管微软早先为 Java 和 C++ 奏起的挽歌已经证明是错误的,但事实上,几乎所有程序员都能从学习 C# 的基础知识中获益。 Stanley Lippman 的《C# Primer: A Practical Approach》是为那些已工作的而又想把 C# 添加为自己的“保留曲目”的程序员准备的。有编程经验的读者常常不会理睬标有"primer"字样的书,这些读者已经知道什么是循环,而不想看到一些罗嗦的关于普通编程概念的讨论。不过,Lippman 成功地做到在介绍 C# 的同时,避免了从头开始讲授程序设计。因此,这本书可能正是你要找的能迅速引领你上路的书。
Microsoft 曾多次声明,C# 是 .NET framework 的首选编程语言。这个声明总是会引发这样的疑问“谁首选的?”有人听着一两条来自 Microsoft 的小道消息,就开始分析微软这个提法的市场意图,而完全不从技术层面评析这句话的含义。但不管怎么说,这本书能帮你理清“将来有一天会使用 C# 吗?”的问题。毫无疑问, Lippman 视《C# Primer》为他《C++ Primer》的续篇,后者第一版出版于1986年。这也从侧面反映了 C# 是 C++ 的继承和发展。无论如何,要是有人能够站在 C++ 的角度来描述 C# 的话,那个人大概就是 Lippman 了。他目前在 Microsoft 致力于 .NET 的开发,他深厚的 C++ 历史背景一直可以追溯到在 Bell Labs 工作的日子和 Stroustrup 最初的 C++ 实现 (implementation)。《C# Primer》实际上借用了 Kernighan 和 Ritchie 在其经典著作《The C Programming Language》中所采用的叙述方式。在两段概略的引述之后,作者投入到一个简单程序的设计中,并在随后的几章中有系统地为这套课程新增一层层复杂性。当然,“Hello, world”几乎是为所有编程书籍所采用的标准叙述方式,然而许多尝试采用这种记述方式的书实际上并没有领悟其精髓,它们简直一文不值。作者必须严格恪守每次只增加介绍一个语言要素的原则,还必须克制发表海阔天空离题万里的长篇大论的欲望。作者还最好有一只能够简洁地阐明"纷繁细节的本质"与"技术的来龙去脉"的生花妙笔。这些 Lippman 都做到了。
在扼要介绍完基本的 C# 组件和概念(诸如继承(inheritance)、异常(exceptions) 和尤为重要的垃圾回收机制(garbage collection))之后,作者用了整章的篇幅来讲类的设计(class design),随后又用一章来论述 C# 中的面向对象程序设计(object-oriented programming)。面向对象这章的内容很好地体现了 Lippman 的讲述方法(也充分印证了本书的副标题--实践之路):尽管 Lippman 包含了所有必要的解说,然而对于完全从零开始学习面相对象程序设计的新手来说,叙述还是显得稍快了些。作者暗定的目标是,针对已经对面向对象程序设计有所了解的读者,为他们提供在 C# 中使用面向对象的编程方法的必备知识。
安排完语言的介绍之后,作者花一章的篇幅来讲解如何利用 Windows Forms Designer 来制作 C# 的图形用户界面(GUI),然后再用一章来介绍 ASP.NET 的 Web Forms 设计工具。其它章节则涵盖了.NET 的核心概念,如 System 命名空间(namespace)和CLR(Common Language Runtime)。和本书的其他部分一样,后面这几章的着眼点并不在于把作者知道的一切都告诉读者,而是在于组织素材以求达到最佳的教育效果和指导意义。
如果你在寻求一本厚重的,几乎回答了所有有关 .NET 的问题的案头参考书,那么或许你应该把目光投向别处。不过,如果你是一名 C++ 程序员,想成为 C# 程序员而又不想花费太多的时间和精力,就请试试看 Lippman 的这本《C# Primer》吧。
<.完.>