Posts RSS Comments RSS  

重新學C++

最近在重新學C++。簡短的感覺是,C++哪裡是什麼物件導向/「面向對象」的語言嘛。C++設計哲學的精采之處,似乎都表現在「沒有使用pointer」的地方。另外就是,傳統C有的程式庫功能,C++幾乎都有一套「符合自身哲學」的作法。從這點來說,等於是跟C斷裂了。

Objective-C就這一點來說,還是跟C貼近些(Objective-C是C的超集合,但C++不是;合法的C不見得是合法的C++)。

不過,兩者哲學天差地遠就是了。倒是C++因為有行內展開(inlining)這種超邪惡的機制,在處理複雜資料結構上,有著可怕的速度優勢。

最近感受到把某些老程式用C++重寫後獲得2x甚至10x速度的爽感──在完全不改動資料結構或演算法的條件下,一切全拜C++的ADT哲學與STL container之賜。

雖然有一種遲來的快適,不過也幸好是現在才改用C++重寫,而不是在它們還用其他語言寫時,就做很多敲敲打打。因為,套用那句經典名言:

未成年就這麼優,是一切邪惡的根源
Premature optimization is the root of all evil
*誤誤誤誤誤*
註:optimization在台灣以外的地方,通常譯作「優化」。

6 Responses to “重新學C++”

  1. on 30 Dec 2007 at 04:22EvenWu

    真是太妙了,最後那句可以套在任何地方!

  2. on 30 Dec 2007 at 04:30gslin

    最後那句我要丟給 slzzp…

  3. on 30 Dec 2007 at 18:39godfat 真常

    未成年就這麼優 XD

    C99 也有 inline, 也有 const,
    從 C++ 學了不少東西,
    同時 C++09 也從 C99 那邊學了點東西 @@

    雖然兩者有點分道揚鑣了,不過還是有些地方有在融合

  4. on 01 Jan 2008 at 05:48jjgod

    严格来说,合法的 C 程序也不一定是和合法的 Objective-C 程序,比如 int id; 是一个合法的 C declaration, 但 Objective-C 保留了 id 关键字导致必须改掉它 :p

  5. [...] Ruby 是個很慢的語言,但有些作法應用得當,還是會有不錯的改善。不過要知道程式碼的可讀性跟執行效率有時候是衝突的,這點還需拿捏,尤其是 software life cycle 一開始絕對是可讀性比較重要。有句經典名言一定要引一下: [...]

  6. on 16 Jan 2008 at 17:38slzzp

    未熟調教是一切邪惡的根源~

Trackback this post | Feed on Comments to this post

Leave a Reply