出品 | 码农的荒岛求生 (ID:escape-it)
最近查资料时看到有人提出了一个很有趣的问题:对于世界上最牛的程序员来说有可能自己手撸windows操作系统吗?这个问题的评论也很有趣,是这样评论的:这个问题就是想在问“我是世界上最厉害的桥梁建造师,有可能自己建造出这货吗”:答案是显而易见的,即使是世界上最牛的程序员也不可能自己一个人完成windows系统这样的庞大工程。据估计,Win10操作系统大概有4000万行代码,我们假设这位世界上最牛的程序员可以在1秒钟内写出一行代码,那么单单敲出这些代码就需要4000万秒。那么4000万秒是什么概念呢?这大概是1万小时,我们假设这位万里无一的天才程序员一天任劳任怨的工作12小时,那么只是写出这些代码就需要833天,大概是2年多。但是,操作系统绝不像互联网公司里的业务流水账,我们把思考或者设计的时间也考虑在内,假设这位天才一小时可以写出100行代码,一天工作12小时,那么写出4000万行代码的时间就来到了3万天,大概需要91年。可是作为程序员我们知道,代码几乎从来不会“一次成型”,代码没有bug是不可能的。我们假设100行代码中只有一个bug,那么4000万行代码就会有40万个bug,假设这位天才程序员能在20分钟内搞定一个bug(不管这个bug有多难),依然假设每天工作12小时,那么单单解决这些bug就需要额外增加27年。但这个数字和程序员的经验实际上并不太相符,实际调试bug所需要的时间一般比单纯写代码的时间要多,但考虑到这毕竟是天才程序员而不是路人甲程序员姑且这样计算吧。这样,91年写代码的时间加上调试代码需要的27年,一共需要118年,这位天才从出生开始立刻写代码也需要到118岁才能搞定。就这样我们还忽略了每次修完bug重新编译整个windows系统需要的时间以及测试需要的时间,像windows系统这样的庞然大物绝不可能像玩具程序那样几秒钟就能编译完成的。据说windows的git仓库大小超过了300GB,可以想象编译一遍这样的工程会需要多少时间,同时你也可以想象这样的项目改动后会有多少测试用例需要跑一遍。所以结论很明显,没有可能自己一个人写出windows系统这样的项目。