C_and_CPP 板


LINE

※ 引述《guest0079 (火辣辣的大姊姊)》之銘言: : 標題: Re: [問題] 為什麼作業系統都用C寫? 而不用C++呢? : : 在我所發的文中,強調的是語言本身的特性,而不是編譯器的好壞。效能、易讀性、物件 : 導向、複雜度,四點內容所講的全是"語言本身"。問題出在於:"語言本身"所代表的效 : 能涵意是什麼?"程式碼的效能"事實上是與平台密切相關的,但是語言本身又與平台無 : 關。所以語言本身與實際測到的效能是完完全全的兩回事。 ============ 高階語言多數需要 compiler/interpreter 協助, 而 compiler 是由專業 的人寫出來的軟體. compiler 根據語言語法做出的轉譯模組就相當於是由 這些專業的人替使用者寫出那段組語程式(或者說是機碼 code). 談效率又分為兩部份, 一部份是 programmer 耗費的發展時間, 一部份是 執行碼執行的時間. 如果 programmer 堅持用組語自行將需要的功能用自 己的 code 實現, 這位 programmer 當然是相信自己產生的 code 比 編 譯器產生的好. 大家也都知道這位 programmer 在開發的時間上, 就一般 人言, 通常不會很小. 高階語言的作用之一就是協助 programmer 開發軟體時, 縮短開發時 程用的. 那麼, 如果不談轉譯出來的執行碼的執行效率, 而是問那種語言 的開發時間會比較短 ? 這種時候就會像是問 interpreter, compiler 那 種語言工具開發時程比較短. 這道題問的是 OS , 那還得問是那一種模式(model)的 OS , 是老式 的 kernel/monitor 模式 或是 u-kernel 式的 client/server model 還 是 fully distributed object model . 另外, 一個不能排除的因素是可以拿來參考的 OS open source 多數 是那種語言寫的, 有參考來源, 通常開發時程就會縮短. : 比較C與Java兩種語言,哪種寫 : 出來的程式效能會比較好?答案是:視執行平台而定。(說這句一定有人想轉joke了) : 在一般的處理器上(x86, 8051, ARM, xxx單晶片),絕對是用C寫的程式的效能較高 : 只要系統的RAM夠大,再把用C寫的JVM porting到某平台上,就能跑JAVA程式,但是效能 : 一定很差。但是,如果SUM出了一顆新CPU,是一顆JVM硬体處理器,也就把本來是軟体的 : JVM用硬体來實作,則Java程式在該顆CPU上會擁有絕佳的效能,同時,這時候想在上面 : 跑C也不是不可能,只要寫得出compiler就行了。此時,用C程式在這顆CPU上跑的程式八 : 成會遠較Java程式慢 (N年前就聽說SUM要出這種Java專用的CPU,不知出了沒有,我想這 : 有一定的難度) : 我舉這個例子,就是想說明如果要比較程式碼的效能,就一定要指定特定的編譯器與執 : 行平台才有意義 : ======== 如果只談傳統的 kernel/monitor model OS (如老式 unix), 有個語言特性 被提出來, 那就是語言指述能否處理 concurrency 的需求, 因為這是多工 作業系統必然要用到的. 不過, 多數僅止於 monitor 的敘述. 到了網路分 散式系統時代, O-O 被提出來還強調了 message-passing 這個要求. 假如要開發的 OS 是 kernel/object model (這是比較接近 java 的 o-o), 顯然用 O-O-PL 會比較容易敘述與維護. 這是假設這個高階的語言是針對 distributed object 而設計的, 就像 FORTRAN 對於科學計算, 做科學計算 的 programmer 多數使用 FORTRAN. 現在的爭議是 C 跟 C++ , 那就要看要實現的 OS 是使用那種 model, C++ 如同 C 不強調 concurrency 能力, 所以 Kernel 部份是同樣的無能. 如果 是 kernel/object model , 顯然 C++ 應該比較適合. 但在單機或者是share memory 的多機上, 狀況會如何 ? reference pointer 與 message passing 是考量先天的隔離問題. 在這一點上, C++ 是兩面策略, 但強調 o-o 的 message-passing 概念, 而且 inter-process communication 的 process 還是隔離的空間, 幾乎可用網路模式來套用. 開發出的 OS 有個要求就是要堅固可靠, 不能頻頻蕩機. 所以開發需求上是要 時程短又高度可靠堪用. 開發 OS 的喜歡號稱 OS 是被叫用的底層, 經常被用到, 所以要考慮效率. 專 業的開發師開發的應該很有效率, 但其實她的可靠性與易用性佔非常重要的因 素, 因此是小改而非大改. 除了實驗系統外, 一般是較保守的. ..... : : -- :



※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 220.136.212.64 : 推 abcdefghi:C的語法比C++單純很多,所有合法的C都很容易算出overhead 03/08 03:16 : → abcdefghi:,目前的OS kernel也沒複雜到用C會造成實作上的困難,尤其 03/08 03:18 : → abcdefghi:在user-kernel之間溝通時,也沒辦法直接用OO的界面,那到 03/08 03:19 : → abcdefghi:底為什麼要用C++來寫OS? 其實大家討論這麼多,為什麼不弄 03/08 03:20 : → abcdefghi:個小project,直接用C++寫個小kernel,用太多想像和理論來 03/08 03:22 : → abcdefghi:評斷一個軟體專案的實務問題,永遠會輕忽很多的小細節. 03/08 03:23 =============== 這段倒是很合理的要求, 也很配合實際. 不過, 要用 u-kernel/server model 來要求才會顯現語言的功能特性. --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.4.12







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP