作者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/cn.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