这篇文章十周年了,最近看到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
的优缺吗
作者:
bdvstg (bdvstg)
2019-06-12 23:17:00不同编译器装饰名称规则不同?
作者:
firejox (Tangent)
2019-06-13 03:14:00看过用haskell写的
作者:
loadingN (sarsaparilla)
2019-06-13 10:42:00ABI的问题吗?
作者:
CoNsTaR ((const *))
2019-06-13 10:51:00用 Rust 写问题会是什么?目的码体积太大?
挖了一下source 我看着觉得很多地方很modern呀....XDzircon/system/ulib/下有一个fbl的library里面有整套拿template刻的intrusive structure跟linux比的话用macro作抽象的频率也低了很多整个coding style就是C with templates当然有不少地方还是写得很C没错 不过以kernel负责的工作来讲要写得不像C也很难
Rust 当然可以实作 OS,Redox OS 就是了C++ 实作的 OS 可以看看 haiku过十年还能吵这个,C 真的是被过度神话的语言
作者:
CoNsTaR ((const *))
2019-06-16 19:03:00目前只要能让人写出堪用的东西就算是好语言你看看Java像C这样务实的语言相比真的算很好了
作者:
y3k (激流を制するは静水)
2019-06-17 13:55:00可能高阶的API可以用C++写 但是底层跟Assembly通的还是要C吧
我猜是因为name(signature) mangling的关系不过这问题应该主要是会卡linux系列的kernel