作者jobsdone (完工了)
看板C_and_CPP
標題Re: [問題] 為什麼作業系統都用C寫? 而不用C++呢?
時間Wed Jun 12 22:20:09 2019
這篇文章十周年了,最近看到Google新的作業系統 fuchsia想再來討論看看這個話題
fuchsia的kernel叫作zircon,是個microkernel
看了檔案名稱,大部分是cpp結尾
作業系統用c++寫的也不是說沒有,最近還有一篇論文是用go寫作業系統
但是由於是Google新的作業系統,讓我多思考了一下
看了一下原始碼的內容,給我的感覺更像c而不是c++,至少跟modern c++差很多
雖然c++的彈性很大,想寫成像c也可以
但是為什麼不乾脆寫c就好呢?
看了hacker news上的討論,大家好像共識也是在寫kernel這塊c還是比c++好
我自己這塊還不算太熟,有沒有人可以以自身經驗來猜測Google選用c++來開發新的kernel
的優缺嗎
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.26.103.74 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1560349211.A.234.html
1F:→ bdvstg: 不同編譯器裝飾名稱規則不同? 06/12 23:17
2F:推 TitanEric: 之前看到有人用Rust寫 06/12 23:34
3F:→ firejox: 看過用haskell寫的 06/13 03:14
4F:→ MOONRAKER: 有時要看你主要開發平台上有什麼好用 06/13 10:12
5F:推 loadingN: ABI的問題嗎? 06/13 10:42
6F:推 CoNsTaR: 用 Rust 寫問題會是什麼?目的碼體積太大? 06/13 10:51
7F:推 user1120: C比較低階的緣故吧我猜... 06/13 14:36
8F:→ sarafciel: 挖了一下source 我看著覺得很多地方很modern呀....XD 06/13 16:26
9F:→ sarafciel: zircon/system/ulib/下有一個fbl的library 06/13 16:29
10F:→ sarafciel: 裡面有整套拿template刻的intrusive structure 06/13 16:30
11F:→ sarafciel: 跟linux比的話用macro作抽象的頻率也低了很多 06/13 16:31
12F:→ sarafciel: 整個coding style就是C with templates 06/13 16:36
13F:→ sarafciel: 當然有不少地方還是寫得很C沒錯 不過以kernel負責的工 06/13 16:37
14F:→ sarafciel: 作來講要寫得不像C也很難 06/13 16:37
15F:推 wahaha279: 因為c就是拿來寫os的 06/13 18:28
16F:推 littleshan: Rust 當然可以實作 OS,Redox OS 就是了 06/15 08:55
17F:→ littleshan: C++ 實作的 OS 可以看看 haiku 06/15 08:57
18F:→ littleshan: 過十年還能吵這個,C 真的是被過度神話的語言 06/15 08:59
19F:推 CoNsTaR: 目前只要能讓人寫出堪用的東西就算是好語言你看看Java 06/16 19:03
20F:→ CoNsTaR: 像C這樣務實的語言相比真的算很好了 06/16 19:03
21F:→ y3k: 可能高階的API可以用C++寫 但是底層跟Assembly通的還是要C吧 06/17 13:55
22F:推 Killercat: 我猜是因為name(signature) mangling的關係 06/18 11:27
23F:→ Killercat: 不過這問題應該主要是會卡linux系列的kernel 06/18 11:28