Re: [問題] 為什麼作業系統都用C寫? 而不用C++呢?

看板C_and_CPP作者 (我要加入劍道社!)時間15年前 (2009/03/06 18:22), 編輯推噓5(507)
留言12則, 8人參與, 最新討論串4/37 (看更多)
※ 引述《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
我印象中有些情況 cout 比 printf 快耶
03/06 19:21, 1F

03/06 19:44, , 2F
看一下 10268 篇吧
03/06 19:44, 2F

03/06 21:11, , 3F
我覺得 Linus說的很中肯 C++擴充C 但不代表 C++比C優越
03/06 21:11, 3F

03/06 21:14, , 4F
遺憾的是 C++ 並非 C 的擴充。
03/06 21:14, 4F

03/06 21:22, , 5F
C++ 如果不是 C 的擴充為什麼要叫 C++?
03/06 21:22, 5F

03/06 21:26, , 6F
對阿 C# 還是 C++++ 呢
03/06 21:26, 6F

03/06 21:27, , 7F
C#跟C就有本質上的不同了吧 XD
03/06 21:27, 7F

03/06 21:34, , 8F
不是那麼「本質」的不同吧
03/06 21:34, 8F

03/07 00:16, , 9F
C#其實是個變形VB,自戀地覺得自己是C++,其實啥都不是
03/07 00:16, 9F

03/07 00:17, , 10F
它跟舊的VB 6應該也很不一樣,我倒比較認同它是變形Java
03/07 00:17, 10F

03/07 22:11, , 11F
他是一個變態的Java沒錯,不過我認為他骨子裡還是VB XD
03/07 22:11, 11F

03/08 11:39, , 12F
他是 java
03/08 11:39, 12F
文章代碼(AID): #19iFbKcK (C_and_CPP)
討論串 (同標題文章)
完整討論串 (本文為第 4 之 37 篇):
文章代碼(AID): #19iFbKcK (C_and_CPP)