Eric Lippert推薦的C#書單

姚琪琳發表於2011-11-14

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 SkeetStackOverflow傳奇,他的書從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 GafterJoshua Bloch(Effective Java的作者)所指出的這些陷阱對語言的設計者來說是一個警醒。如果開發者落入了陷阱,這是語言設計者的責任,因為他們應該讓程式設計師能輕鬆有效地避開這些陷阱。
  • 本書介紹的一半以上的陷阱會在等價的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本)。園子裡也經常有人要求推薦書,但為什麼技術書市場還這麼慘不忍睹呢?關鍵是,您得去買書啊,對不?

相關文章