cuclife.com > IT > C# > 0

Eric Lippert推荐的C#书

网络整理 - 06-27

Eric Lippert是微软C#编译器和C#语言设计小组的重要成员,他还经常出没于Stack Overflow社区,解答开发者提出的问题。其中被问到最多的问题是:能否推荐一些学习C#的好书。最近,在接受InformIT采访时也被问到了这个问题,于是Eric列出了一份C#书单。

Sams Teach Yourself Visual C# 2010 in 24 Hours by Scott Dorman

Eric声称,他并没有被这个名字吓到,倒是被它的内容吓到了。它的价格对于C#初学者来说是相当实惠的(注:该实惠价为$34.99,请对比国内的技术书籍价格)。此外,Scott并没有像其他入门书作者那样,用作者的学习路线来组织本书的结构,相反,而是循序渐进、由浅入深地。

这本书国内没有引进,而且估计没有出版社敢引进。就这个《24小时学会Visual C# 2010》的书名就吓退了所有出版社。别说24小时,就是《24天学会XXX》也会被喷死。这不能怪读者,这是被那些早期的垃圾作者们逼的。

Essential C# 4.0 by Mark Michaelis

C# In Depth, 2nd Edition by Jon Skeet

这两本书Eric经常推荐给中高级C#程序员,这两本书都将全部注意力放到了C#语言上,只是偶尔提到了.NET基础框架。Mark Michaelis的书不仅适合初学者,也适合C#熟手,以及从其他语言转型过来的程序员。(Eric在以前的博文中就曾经推荐过这本书。)图灵引进了这本书的中文版,叫做《C#本质论(第三版)》,由周靖老师翻译。我翻开这本书的时候就感到十分亲切,因为代码的字体用的是我最喜欢的Consolas,读起来畅快淋漓。每一章的开头都有一个思维导图来展示本节的内容,这比仅仅使用一个列表要生动得多,也更利于记忆。

Jon Skeet是StackOverflow传奇,他的书从C# 1.0开始,介绍了各个C#版本的语言特性。如果说Essential C#传达了C#的本质,那么C# in Depth则深入了C#各个晦涩的角落。Jon的英式幽默还贯穿了整本书。

我本人有幸参与了该书第二版的翻译,不出意外年底就应该上市了。此书的价值堪比CLR via C#在CLR领域的地位。我过两天会专门撰文来推荐此书。

Effective C#, 2nd Edition by Bill Wagner

More Effective C# by Bill Wagner

这两本书都不是初学者教程,而是分别探讨了50个编写高质量C#代码的技巧。Bill Wagner总是能简明准确地解释复杂的主题。如果你想了解优秀的(或糟糕的)C#实践,可以浏览Bill在MSDN Developer Center上的文章。这两本书和他的文章将指引优秀的程序员迈向通往伟大的道路。

图灵同样出版了了这两本书的中文版(以及Effective C#第一版),由MVP陈黎夫翻译(Effective C#第一版由李建忠老师翻译)。这三本书的中译本,都属上乘之作,语言流畅,理解透彻,绝对的百里挑一。

The C# Programming Language, 4th edition by Anders Hejlsberg, Mads Torgersen, Scott Wiltamuth and Peter Golde

这是C#之父Anders Hejlsberg一直在更新的书(每当C#出一个版本,就会更新一次),第三版的中译本由华章出版。我本人没有看过这本书,因为它几乎就是C#语言规范的翻版,所以我选择打印一本语言规范放在桌旁,以备不时之需。但实际上按照Eric的说法,本书远不止此,还包括诸多C#专家(包括Eric本人、Jon Skeet、Bill Wagner等)的注释。

Java Puzzlers by Joshua Bloch and Neal Gafter

你一定会奇怪为什么C#书单里会混杂着一本Java书籍,Eric的解释是:

  • 它很有趣
  • Neal Gafter 和Joshua Bloch所指出的这些陷阱对语言的设计者来说是一个警醒。如果开发者落入了陷阱,这是语言设计者的责任,因为他们应该让程序员能轻松有效地避开这些陷阱。
  • 本书介绍的一半以上的陷阱会在等价的C#程序中产生警告或错误!不管是语言设计还是生活,要避免犯错误,就要从其他人犯的错误中吸取教训。
  • Neal现在在微软C#设计和实现小组工作,也许有一天你会看到一本C# Puzzlers。

    本书中译本《Java解惑》依然由图灵发行(你一定想问为什么图灵引进了这么多好书,去图灵社区逛逛吧)。我在前两天京东促销时刚刚入手,准备近期开看。

    Introduction to Algorithms, 3rd Edition by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein

    Purely Functional Data Structures by Chris Okasaki

    这两本书都不直接与C#有关,但Eric却经常向人们推荐。Introduction to Algorithms(著名的算法导论,华章出版)在微软几乎人手一本。很多计算机科学科班出身的开发者很少在日常开发中使用他们学到的理论原则,但C#编译器小组可不是这样。商业软件开发者如果精通计算机科学理论,也可以获益良多。

    我们正处于函数式编程复兴的年代。像F#这样的函数式语言越来越受欢迎,并且纯函数式语言中的一些理念正在逐步融入主流面向对象语言。比如C#和VB中的LINQ,在很大程度上受到了Haskell式的单体查询的影响。同样,纯粹的函数式数据结构在并发程序中能工作地更好。大而全的算法书主要关心的是传统的数据结构,如可变数组、栈、队列等,而Chris Okasaki的这本薄而优雅的算法书则主要关注的是用不可变的、线程安全的、内存高效的部分构建复杂的数据结构。本书中的很多内容都可以在线浏览。C#开发者可能不太适应其紧凑的语法,F#开发者可能要感觉好得多。

    以上就是Eric的C#书单,您看过几本呢?

    您一定会问为什么没有CLR via C#?为什么没有C# 4.0 in a nutshell?Eric这里列出的是个C#书单,可能他觉得CLR via C#太偏重CLR了吧。而对于C# in a nutshell,Eric坦言他并没有读过这本书,所以就没有推荐了。

    其实也没有必要问这么多为什么,您心里一定也有一个自己的C#书单,重要的是把这些书读了,并融汇贯通。但就我目前的了解来看,国内的语言书都卖得不好,图灵出版的C#本质论、深入解析C#以及Effective C#系列,都可以用惨淡来形容(好像没有一本能撑到第二次印刷,也就是说每本书只卖出去不到3000本)。园子里也经常有人要求推荐书,但为什么技术书市场还这么惨不忍睹呢?关键是,您得去买书啊,对不?

    Eric Lippert推荐的C#书