2016年7月1日 星期五

Programming Principles and Practice Using C++ by Bjarne 兩個中文版


孟岩谈《C++程序设计原理与实践》這篇寫的真不錯, 真希望我也能寫出那樣的文字。

這是台灣繁體中文的版本, 定價 990, 不過我買的是簡體中文版本 - C++程序设计原理与实践。為什麼選擇簡體中文版本呢? 不單單是因為價錢的問題。

C++ 編程規範這本書一樣有簡體/繁體中文兩個版本, 我花了 414 nt 買了這本薄薄的小書, 而不是買 200 nt 的簡體中文版本。侯捷翻譯的版本讓我願意以較高的價錢購買 (我甚至沒去實體書店翻過書), 也相信碁峰製作書籍的品質。


那為什麼這本我要買簡體中文版本呢? 從價錢、厚度、書的品質上我做了這樣的選擇。

我雖然讀過不少大部頭書籍, 但還是對大部頭書籍心生畏懼, 對於大部頭書籍還是能免則免, 而且書架真的沒什麼空間了。

價錢/厚度 (比較薄) 都是簡體中文版本勝出 (108 rmb), 我實在沒空間擺那麼多大部頭書籍。中國的電腦書都會做得很薄, 台灣的書則會想辦法做的很厚, 書做的很厚大家都知道為什麼, 但做得很薄我就不清楚原因了。太厚或是太薄都不是好事, 兩個極端真是令人難以選擇。

本書的英文版出了第二版, 支援了 c++11/c++14, 所以我買的這版並沒有說明 c++11/c++14, 對這本有興趣的朋友可以再等一下, 書商會出新的版本 (應該吧)。

還真的出了:

C++程式設計原理與實務 第二版(Programming Principles and Practice Using C++)

本篇介紹的是我擁有的簡體中文版本 (第一版)。

繁體中文有很多漏詞的小錯誤, 譯者胡嘉璽的翻譯也算通順, 不過有些翻譯還是有點怪怪的就是, 不過那些漏詞的小錯誤讓我很不舒服, 上奇的品質應該不會這樣, 我有點失望, 定價 990 nt 的書應該要有 990 的嚴謹度 (其實就算是定價一元的書, 也應該要有相當的嚴謹度), 這定價並不便宜, 不能因為書厚就定這價錢, 我是買書不是買紙。不過以整體書籍的製作來說, 台灣的繁體中文版本還是比較好。

簡體中文版本是友人幫我從中國亞馬遜代購回來, 2013/12/26 從中國亞馬遜訂購, 20140116 拿到, 價錢 108*5 + 75 = 615 nt

但是簡體中文版本的附錄得從這裡下載, 沒有印在書上:
http://www.hzbook.com/Books/5129.html#download
這實在是欺負人, 怎麼不全本讓我下載就好。哦! 記得要先註冊。

Bjarne Stroustrup 不愧為大師, 不僅研究做得好, 連教學也很有一套。這本書是給初學者看的, 但我覺得裡頭很多主題不一定只對初學者有用。

chapter 6, 7 在談如何寫一個計算機, 你認為這很簡單嗎? 雖然幾乎每個平台都會有計算機, windows 的小計算機, linux 的 bc, 甚至連平版電腦都有計算機, 但要寫出計算機程式並不如想像中的容易, 基本上要靠自己想出來怎麼寫是很困難的。

一開始 Bjarne 會先用很直覺的方式來引導我們寫出計算機, 慢慢的告知我們這樣會有什麼問題, 在適當時機告知我們所謂的文法規則, 就是 compiler 課程上提到的 EBNF, 這是 50 年來的努力, 所以我們突破不了, 也是很正常的。

它牽扯到 compiler 理論, 這個部份很難無師自通。不過 Bjarne 是搞 c++ compiler 的, 這種幼兒程度的計算機當然難不倒他, 但對一般人的我們就沒那麼簡單了, 從這題目用了兩個章節來看就可以知道其難度。

chapter 12 ~ 16, 使用了 fltk 來介紹 GUI 程式設計, 這本書真是來得太慢, 比起聖經 The C++ Programming Language 實在親民許多。這些主題都是比較令人有興趣的主題, 不是只專注在 c++ 語言上。fltk 是一個跨平台的 framework, Bjarne 用它介紹了許多 GUI 觀念, 對我來說很是受用。

chapter 22 講述一些電腦語言的歷史, 可以使人耳聰目明, 有許多大師的照片, 很珍貴的。我幾乎就是因為這章而決定要買這本書。本章介紹了 fortran, cobol, lisp, alogl60, pascal, ada, simula, c, c++。Dennis Ritchie 為 c 的發明人, 提過 c 是強類型, 弱檢查的語言, 這是什麼意思? 不按照 type 定義的方式使用某個 type 是非法的, 但是 c compiler 不會去檢查它, 厄 ... 很奇怪吧!



原文是: C is a strongly typed, weakly checked language. - D. M. Ritchie

ACM 討論程式語言歷史的相關會議資訊

chapter 23 提到的 regular expression 在 c++11 已經是標準程式庫的一部份了 (書上使用的是 boost/regex.hpp), 放心的用他們吧! 這可讓 c++ 處理文字的能力提升不少。

ref:
官網 (已經更新為第二版的資訊, 繁體中文版也已經有了第二版): Programming -- Principles and Practice Using C++
書中範例: http://www.stroustrup.com/Programming/

沒有留言:

張貼留言

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。