电脑小知识:Windows 10是用什么语言写的?到底有多少行代码?
这是微软的内核工程师 axel rietschin在quora的一个回答。
windows 10 的code base 和windows 8.x , 7 , vista , xp , 2000 和windows nt的code base 是相同的,当然是演化过来的,其中的每一代都进行了重大的重构,增加了大量的新功能,提升了性能和对硬件,安全的支持,并且保持了高度的向后兼容性。
(注:考虑到windows的众多版本和海量应用,这是一个很了不起的成就, 也是一个很大的包袱。)
windows 的大部分内核(ntoskrnl.exe)是用c语言写的,你可以在github上看到泄露的windows research kernel 代码,自己研究一下,虽然它已经相当过时,非常不完整,但依然能看出一些重要的东西。
代码库在这里:
https://github.com/markjandrews/wrk-v1.2
比如说,我们熟悉的注册表(registry),在内核中被称为配置管理(configuration manager,简称cm),就在这个目录下:wrk-v1.2/base/ntos/config
(注:windows research kernel是微软为教育目的提供的源代码。高校师生可以修改,编译,以此来学习os的原理。在linux大行其道的时候, 不知道有多少高校在用?)
大部分运行在内核态的代码都是用c语言写的,包括大部分的文件系统, 网络,大部分的驱动, 其中也有一些c++。
如果往上走进入到用户态,c语言就会变少,c++会逐渐增多。
大多数人都没有意识到windows的庞大规模:这是一个真正的史诗般的巨型项目。
在windows的代码树中,有源代码,测试代码,还有其他东西(码农翻身注:可能是图标,声音,图片?),文件数超过400万,500多g。
仅仅是把这个代码树的目录和文件名都浏览一遍,就要花费你一年的时间。这里有50多万个文件夹,其中的代码组成了操作系统工作站和服务器的所有版本,相关工具,开发工具包。
如果你想把源代码都读一遍,可能要穷尽一生。
下面是一个截图,描述了windows源码的统计信息:
有一次,我有几周的时间没有更新我的git, 等我回来的时候,我发现它已经落后60,000次提交了!
你肯定会说一个人不可能阅读完每天的代码提交,更不用说过去三十年积累的代码了。
如果你看到了windows 10 “dvd” 并且想知道是什么编程语言创造了光盘上的东西,我猜98%是c和c++, c是大头。
.net bcl(base class library) 和其他库&框架主要是用c#写的,他们仅仅是c语言海洋(有一点c++小岛)小水滴而已。它们来自不同的部门(the developer’s division), 代码也不是windows代码树的一部分。
其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个c语言c++交流q群951726787,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。
微信公众号:c语言编程学习基地