仿头条之问:为什么当年Linus不用c#去写Linux系统

哈哈,你这仿的有点那个意思了,我也来一个:据说苹果的系统就是基于Linux开发的,为什么Linus没有做出Linux手机呢?
补充:发现一堆回答的人,只有我一个认真看题了,哈哈。

参考:
这个问题问得过于外行,超出预料之外。
不用C#的原因,是因为C#是基于.NET框架的语言体系,是微软搞出来的一套开发语言。
它是面向应用层的,建立在.NET框架上;
而.NET又基于操作系统之上。
所以,如果用它来写操作系统,无异于在一个操作系统上安装.NET框架后再写一个操作系统,这个逻辑根本就行不通!能写操作系统的一定是支持交叉编译工具链的语言或者汇编,但凡需要框架支持的高级语言都没戏。
所以不要再问这种幼稚的问题了。

参考:
linus连c++都看不上,何况c井,linux的可移植性很大程度来自于c,c#这方面差距不是一般的大。
另外从性能角度来说c#更是差了十万八千里。
用rust写个操作系统也好过c#
参考:
写内核,不会用任何自动的内存管理机制。
连C++都不行,更不用说有GC的语言。

参考:
因为当时没有c#,c#也不适合,就这么简单。
你这个问题就像在问,“为什么刘邦没有请诸葛亮出山”一样。

参考:
1.Linux发布时间早于c#Linux发布时间:c#发布时间可以看到.Linux都有九年历史之后c#才诞生.2.Linux上开源社区的.c#是微软开发的.两个范围的东西.3.Linux采用c语言的原因最主要的是c语言执行效率高.而c#是微软公司开发的,对效率没有太大追求的语言.
参考:
用C#开发和java开发在此例子中没啥区别。
用C#开发的成品,必须带.net平台。
啥叫.net平台?
你可以认为是java虚拟机。
.net平台解析C#编译完的成品:byte-code。
你可以理解为软件做的的指令集,.net把它翻译成硬件指令,然后程序才能跑。
在还没有任何操作系统的情况下,也就没有.net,你C#所依赖的运行环境都没有,怎么去开发操作系统?
所以操作系统必须是编译结果为硬件指令级别的程序,例如汇编和C。

参考:
windows vista部分代码是c#写的卡的一批,我觉得你这问题还不够有深度,你应该问问linux,为啥不用微软的画板画个系统出来。



干嘛苦哈哈的写那痛苦的c。

参考:
这个方面,郭德纲是最专业的。
他觉得是因为同行微软不允许这么做,担心wibdows被抢了生意,所以,才不用c#的,毕竟c#也是微软的。

参考:
LINUS写LINUX的时候还没C#,而且操作系统只能拿C去写,因为太底层了。


WINDOWS的内核也应该是C写的。

参考:
所有有GC的需要都无法胜任编写操作系统的任务。
且不说实时操作系统,就通用操作系统来说都是很吃力的。
没有那个内核能接受周期性的停止所有操作,进行内存回收的机制。
最简单的,内核需要处理硬件中断,而在硬件中断的处理方法中是不能停止的,更无法接受内存变动。

标签