【譯(日)】讀完了《C現代程式設計》!全面的現代C語言嵌入式開發技術!
說明:
-《C現代程式設計》終於出版了,這裡隨手翻譯一份日本網友的讀書感想,算是對本書的推薦。希望能幫助持幣觀望的朋友下定決心^_^。
- 原文地址:「モダンC言語プログラミング」を読んだ!C言語の組込みエンジニアのためのモダンテクニックが満載
本書適合嵌入式領域開發人員
本書的適合嵌入式領域開發人員,書中的示例也含有嵌入式的內容。不過好像使用C語言的人幾乎都是嵌入式開發人員。書中介紹瞭如何將現代開發方法引入到嵌入式開發過程中。
通過檢視TIOBE的程式語言統計可以發現使用C語言進行程式設計的程式設計師佔到了兩成左右。我也是第一次知道這個資料,作為C程式設計師由衷地感到高興。書中首先分析了C語言為何這麼重要。
● www.tiobe.com/content/paperinfo/tpci/index.html
本書的內容
雖然我希望在內容上能夠更加深入些,但實際上各章的內容雖廣但不深,感覺與本書的宗旨略有不符。(譯者注:我可以不小心漏譯這句話嗎?^_^)
本書所講解的內容正是我在每天的開發工作中所煩惱問題,因此讀完後非常激動。下面將我每章的讀書筆記進行了整理和彙總。
開發環境
關於開發環境,本書講解了Ubuntu(譯者注:實際上是Xubuntu)的安裝方法和Eclipse的使用方法。到目前為止好像沒什麼收穫。以下是一些參考資料:
● 全C/C++ プログラマに捧ぐ!Eclipse CDTを使う時のオススメ機能/プラグインまとめ | Futurismo
● Windows上のCentOSをVmwarePlayerからVirtualBoxへ移行した手順 | Futurismo
● WindowsでVMware Player上のUbuntuを動かしてみたメモ | Futurismo
物件導向程式設計
本書介紹了使用C語言進行物件導向程式設計的技巧。我自己原本對此一知半解,作者教會了我們使用C語言也是可以進行物件導向程式設計的。
如果想要學習C語言物件導向程式設計,本書再合適不過了。當然,我也推薦下面這本書:
● C言語によるオブジェクト指向プログラミング入門
設計模式
自己明年(譯者注:這篇文章寫於2013年底,現在作者應該是設計模式高手了吧^_^)重點學習的目標之一就是要掌握設計模式。本書介紹了使用C語言實現設計模式的方法。我對本章中的知識瞭解不多,因此非常感興趣。
本章介紹了以下設計模式:
⚫︎ 狀態模式
⚫︎ 模板方法模式
⚫︎ 觀察者模式
⚫︎ 職責鏈模式
⚫︎ 訪問者模式
我還沒有看到過其他介紹C語言設計模式的日語書籍。在我看過的書中,本書可能是最好的。下面這本書雖然我還沒有讀過,但今後我打算也學習一下。
● Patterns in C by Adam Petersen Tornhill [Leanpub PDF/iPad/Kindle]
不管怎樣,我都會再學習一遍本章中的內容。
TDD與重構
本書介紹了測試框架GoogleTest。另外,本書還以嵌入式例項講解了如何針對遺留程式碼進行重構。當然,作者也分析對效能問題的影響。
書中還介紹了利用namespace強制包含static函式來對其進行測試的技巧。該技巧同樣適用於C++的單元測試中。
namespace unit_test {
#include "hogehoge.c"
TEST(hoge,hogehoge) {
EXPECT_EQ(3, hoge(1, 2));
}
}
書中談及的mock和stub的定義與我的理解有些差異就算了,但是書中說沒有好的Mock測試框架,這一點我就不同意。不是有CMock和fff嗎?(譯者注:關鍵是怎麼理解這“好框架”這幾個字^_^)
● 恐るべきレガシーコードの救世主になるか?!ドロドロ依存なモジュールたちを『CMock』ですっ裸にする | Futurismo
● レガシーコードをC言語のTDD用フレームワーク『Fake Function Framework (fff)』ですっぽんぽんにする | Futurismo
如果你想用C語言進行TDD開發,那麼下面這本本書不容錯過。
● テスト駆動開発による組み込みプログラミング ―C言語とオブジェクト指向で學ぶアジャイルな設計
持續整合
本章介紹了jenkins,這部分也沒有什麼新東西。
● C言語/C++でJenkins実踐入門してみるよ | Futurismo
本章介紹了使用sCons編寫構建指令碼。最讓我有感觸的是用冒煙測試中用到Python程式碼連線串列埠進行驗收測試。作者可能喜歡用Python吧。我打算用ruby也這麼試一下。
● C言語のビルドでほのぼのrakeでmakeするよ | Futurismo
● 組込み開発のシステムテスト・機能テストを自動化できるか?Rubyのminitestで非同期テストを実施する方法を本気出して考えてみた | Futurismo
● これぞテストの最終形態!FitNesseとRubySlimで実現するエンドツーエンドテスト | Futurismo
另外,本章還花了不少篇幅介紹在嵌入式開發過程中使用Valgrind排查記憶體洩漏和訪問非法記憶體地址等問題的方法。Valgrind是Linux上的工具,所以我還沒有用過(譯者注:作者可能是在Win上進行嵌入式開發的,不過你至少應該玩下虛擬機器吧^_^),不過我打算查閱下相關資料。
● 地獄の苦しみ、メモリ破壊をCppcheckで華麗に食い止めよう! | Futurismo
總結
為什麼在嵌入式開發領域這些技術沒有普及呢?Eclipse沒有普及也就算了。畢竟就程式碼編輯器而言,不是隻有Eclipse,Emacs和Vim並不比Eclipse差。
物件導向程式設計和設計模式沒有普及可能是因為擔心效能問題。而TDD(特別是Mock)
只有在進行物件導向程式設計時更容易實施。CI沒有普及則可能是程式設計文化的原因。
⚫︎ C程式設計師中固守傳統思想的人太多了
⚫︎ 認為維護遺留系統不需要新技術
⚫︎ 認為遺留程式碼是以過去的開發手法編寫的程式碼,沿用這些程式碼時不適合新的技術
話雖如此,但沒有一條理由是足夠充分的。我認為歸結為一點就是 “缺少新技術的相關知識”。
我自己也收集過一些C語言的相關資訊,個人感覺與其他程式語言相比,C語言的資訊差了幾個數量級。Eclipse也一樣,TDD也一樣,Jenkins也一樣。
對於C程式設計師而言缺少的是指引方向的資訊和書籍。C語言可是使用率第一的程式語言啊(譯者注:已經排名第二了,淚)!希望今後可以看到更多這樣的書籍!
相關文章
- 現代編譯原理C語言描述pdf編譯原理C語言
- 現代c++與模板超程式設計C++程式設計
- 現代前端開發技術棧前端
- DPC++中的現代C++語言特性C++
- [譯] 現代 JavaScript 開發中的設計模式JavaScript設計模式
- C語言程式設計-現代方法 第二版 2.1小節 顯示雙關語C語言程式設計
- 現代c++模板超程式設計:遍歷tupleC++程式設計
- 現代 CPU 技術發展
- 用C語言實現有限狀態機--讀《C專家程式設計》C語言程式設計
- C語言程式設計-現代方法 第二版 第6.1小節 顯示平方表C語言程式設計
- 實驗1 現代C++程式設計初體驗C++程式設計
- 《現代前端技術解析》讀後鬼扯前端
- 學懂現代C++——《Effective Modern C++》之轉向現代C++C++
- 現代php程式設計PHP程式設計
- C語言如何實現泛型程式設計?C語言泛型程式設計
- 雜談現代高階程式語言
- 現代程式語言用什麼語言寫成?
- C語言程式設計-現代方法 第二版 第2.4.4小節 計算箱子的空間重量C語言程式設計
- 用C語言技術進行CGI程式設計(轉)C語言程式設計
- 23種設計模式:現代C++實現 V2.0設計模式C++
- 自動現代化C++程式碼C++
- C語言程式設計-現代方法 第二版 第5.2.3小節 計算股票經紀人的佣金C語言程式設計
- PureBasic 現代 BASIC 程式語言編輯器
- C語言程式設計C語言程式設計
- Rust 與 C++:現代開發人員的困境RustC++
- 沒學過C語言的代價C語言
- C語言異常與斷言介面的實現C語言
- Objective-C 的現代語法和新特性Object
- C語言程式設計-現代方法 第二版 第4.1小節 計算通用產品程式碼的校驗位C語言程式設計
- 現代程式設計 homework-03程式設計
- C語言編譯全過程C語言編譯
- C語言程式設計-現代方法 第二版 第3.1小節 用printf函式格式化數C語言程式設計函式
- 現代Web開發需要學習的15大技術Web
- C語言程式設計原理C語言程式設計
- c語言程式設計題C語言程式設計
- java開發C語言編譯器:為C語言提供API呼叫JavaC語言編譯API
- C語言程式設計-現代方法 第二版 第2.5小節程式碼 計算箱子的空間重量改進版C語言程式設計
- 《現代通訊網路技術》讀書筆記筆記