Re: [問題] 為什麼作業系統都用C寫? 而不用C++呢?
※ 引述《yehsd (急)》之銘言:
: : 那為啥不用C++寫作業程式 而用C呢?
: 通常來說, 作業程式(你指的是與 system 相關的嗎?) 需要較好的 performance,
: 很少人會希望自己的 operating system 慢到抓狂吧..?? C++ 因為用物件來表示
: unit, 無形中加了許多對系統 performance 有影響的東西, 比如 constructor,
: 或 destructor, 雖然 compile 完後沒幾行, 但是若是常被系統跑到的 function,
: (1000,000,000 次 x 多出來的 instruction) 我想這個數字會拖慢效能多少,
只要你不寫 constructor 或 destructor
產生/銷毀物件時就不會有額外的負擔
compiler 沒那麼笨,明知道 constructor 是空的還去 call function
如果你的資料需要初始化
那產生物件時的確需要 constructor
但若你用 C 實作相同的功能
也一樣要去呼叫某個 function 去初始化
呼叫 constructor 和呼叫一般 function 的效率並沒有差別
同樣的道理也可以應用在 destructor 身上
更何況 constructor 是 compiler 幫你自動呼叫的
在 C 裡面你可能宣告了變數卻忘了初始化
C++ 的 constructor 正好可以避免這種情況
: 應該就顯而易見了吧, C 可以用許多 tricky 避開會影響效能的 code, 最常見的
: 就是 goto.
C++ 也可以用 goto 呀
: : 難道C++有何缺點以至於不適合寫作業程式嗎?
: 同上, 主要是 C++ compiler "偷"加了許多你不知道的 code 在裡面. 這些
: code 就是為了達到 C++ 能夠成為 object-oriented 的基礎.
: : 還是只是大部分設計人員的習慣呢?
: 所以當設計人員發現 C 真的比較快時, 自然而然不會去選擇用 C++ 來寫
: 系統相關的 program....
若用相同的方法做相同的事情
C++ 並不會比 C 慢
用 C++ 會變慢多半是因為寫的人不太了解 C++
至於用不同的方法做相同的事情
的確有時候 C 比 C++ 快 (printf 比 cout 快是不爭的事實)
但也有許多 C++ 比 C 快的情況 (例:STL 的 sort 狂勝 C 的 qsort)
既然做法不一樣 那比這個也沒什麼意義可言
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.151.2
→
03/06 19:21, , 1F
03/06 19:21, 1F
推
03/06 19:44, , 2F
03/06 19:44, 2F
推
03/06 21:11, , 3F
03/06 21:11, 3F
→
03/06 21:14, , 4F
03/06 21:14, 4F
推
03/06 21:22, , 5F
03/06 21:22, 5F
推
03/06 21:26, , 6F
03/06 21:26, 6F
→
03/06 21:27, , 7F
03/06 21:27, 7F
推
03/06 21:34, , 8F
03/06 21:34, 8F
→
03/07 00:16, , 9F
03/07 00:16, 9F
→
03/07 00:17, , 10F
03/07 00:17, 10F
→
03/07 22:11, , 11F
03/07 22:11, 11F
→
03/08 11:39, , 12F
03/08 11:39, 12F
討論串 (同標題文章)
完整討論串 (本文為第 4 之 37 篇):