• 生活小妙招免费各类生活中的小问题知识以及音乐简谱等,是你了解世界未知知识的好地方。

如何看待华为1100亿行规模的代码库?

十万个为什么 空空 2024-4-15 04:16:57 7次浏览

关于问题如何看待华为 1100 亿行规模的代码库?一共有 5 位热心网友为你解答:

【1】、来自网友【孤独使人自由】的最佳回答:

有价值的代码块,

主要是,可以重复利用,

通用性好,

所以,

那种库函数、框架,

是比较有价值的,

普通的程序员就是砖头工,

框架已经搭好了,

只需要把一块块封装好的

功能模块,即砖头,

按照一定的规则,拼接起来,

砌墙,给架子填料。

全部填满了,

房子也就建成了。

【2】、来自网友【抱扑若拙】的最佳回答:

好吧,需要算算了。按美国平均水平,每个程序员每天 10 行代码,中国比较勤奋,就算 30 行吧!一人一年 1 万行吧。算下来大约是 1100 万人年。软件有生命期,好的情况下自己败坏周期在 5-20 年,质量一般的话,也就 10 年(如此大量代码,只能是行业平均水平)。也就是说,大约需要 110 万程序员。嗯,什么概念呢?大约至少得 10 个微软吧!

再说恐怖的,cmm3 级(这不是平均水平,而是较高水平了),一千行大约 3 个问题出厂,1100 亿大约是,3 亿个 bug(也就是 3 亿个问题)。解决这些问题足够让一个微软公司破产了。但华为活得好好的,其危机却与这个没关系。所以,可以明白的是目前华为的产品代码,绝对达不到这么大。如果此事真实,其中大多数代码应该被抛弃了,因为即便是 cmm5 也得有 3 千万 bug,这不可能是真实的。

好了,如果代码库真的有这么多,到底是什么情况呢?估计多数是开源代码库的中依赖的部分复制和开发者保存的备份。这是防止断网影响项目进展的防范手段。所以别太嗨了。呵呵。

算完了,但果是不被质疑的。程序员的感受是,一天 10 行代码?搞笑呢?

那我先拿一个职业生涯中的例子看看个人生产情况:

我刚开始产品级编程是一个通信系统(与华为同行,可比较)。整个系统中开发 2 年,大约在 1991-1993 年。我负责系统中的一个核心模块编程项目。敲代码,我最快 18 小时,3000 行汇编,这个小项目的全部代码,强实时,时钟级设计,无操作系统。但全过程过程实际算下来大约有将近 6 个月。包括原理设计,代码执行机制规划,算法设计,原理机验证测试,逻辑分析仪调试。那 18 个小时不过是敲代码,基本没有稍微深入一点的思考(主要思考内容:寄存器分配调配;内存效率;3 级任务协调;周期计算;累加器溢出控制;可靠性监测周期等细节,以保持遵循详细设计定下的原则)。没有单元测试、没有功能测试、没有代码评审、没有团建和各种活动。(那台逻辑分析仪够我当时 10 年工资。)一天不到 20 行代码吧?

项目期间我为自己还开发了 4000 多行 c 语言的工具,有算法仿真工具的、有分解烧录文件的、有原型实验的。还有几百行快速编译的 dos 批处理文件。但这都与产品无关,算不上产品代码。当然还有过程中,放弃了 20000 行汇编(毕竟当时还是经验不足),主要是架构问题达不到要求,最终代码中没这个,也不能算。就呵呵了,难道连失败的东西都要算到工资奖金里吗?

项目结果:前两年和华为交流,他们说那套 91 年的代码实现的指标到现在也是先进的。那套代码到最后收到保险柜也没有再改过一行。这中间三年试运行,审查、鉴定、定型、销售,再没改过,所有性能、可靠性监测的保护机制从未启动过,最长运行时间是 2 万小时。

这是通信领域个人手工业作战的基本情况。

当这种工作被分解给多个人之后就是团队计算了。这是软件工业难点之一:工时估算。

在产品市场问题解决后,开发成本估算就是软件开发难点。最现实的估算是,专家用背靠背评估最终实现代码行数。这些代码行数除以组织软件开发成熟度估算效率(也就是 10 行每人天的意义),再乘以开发团队的平均人天成本就可大致得到成本量级。所以,10 行每人天的估算是开发团队组织效率的,不是程序员个人生产力。

另外:

1、代码库是一种软件工程中的保护机制,不反应软件生产的实际情况。

2、代码不是越多越好,任何以代码行数计算开发人员生产力的想法,都是很外行的。

【3】、来自网友【云峰互联网】的最佳回答:

华为 1100 亿行规模的代码库,从我 10 多年的从业经历来看,除了震惊之余,还有以下几个方面的解读。

1.华为做了很多事

网络设备的研发,基站、路由器、交换机等硬件设备,也需要驱动程序和操作系统也需要软件编程。手机业务这块,emui,鸿蒙操作系统、hms 这些也需要编程。智能穿戴设备、内部信息化管理系统……等都需要编程。做的事情多,研发的产品多,做的系统多,代码量 1100 亿行也正常。

2.代码复用度高吗?

软件设计的重要作用就在于提高复用度,规划设计做的不好,出现大量的重复性代码也是导致代码库大的一个重要原因。由于没看华为代码库,所以,也不敢说华为的软件设计不好、代码复用度不高。

3.项目管理是否科学?

没有科学的项目管理规范,造成大量项目的版本备份,也是代码库庞大的一个重要原因。

4.架构设计是否合理?

选择合适的软件架构,是可以降低项目的代码开发量。相反,采用不合适的软件架构,也会增加开发工作量。例如:采用 lombok 包可以降低 java 实体 bean 的代码量。

5.编码规范是否严格执行?

项目如果没有开发规范,任由程序员自主发挥,这可能由于程序员本身的能力问题,造成代码量的增加。可能有些算法设计能力好的程序员 10 行代码完成的功能,有些程序员用了 100 行代码。

结论:华为 1100 亿的代码库,首先是震撼,其次就要去具体看了华为代码库的代码,才能知道有什么问题,否则就只能做一些假设性地猜测。

【4】、来自网友【BWanger 软件开发达人】的最佳回答:

这是真的吗?如此海量的代码库,应当是全球之最,可以申请吉尼斯世界纪录了。

1100 亿行代码,是什么概念,我们做一些比较,就明白了。

上世纪九十年代,大家记忆很深的 WPS1.0,求伯君先生个人开发的,源代码大致 12 万行。这只是华为代码库的百万分之一。

我们公司,是一个开发数控软件系统的公司,各种数控软件,含上、下位机,CAM 系统,数据库管理、数控系统等等软件,源代码累计大致两千万行。大致是华为的 5500 分之一。

世界排名第一的软件巨头一一 Microsoft 公司,开发了史诗般的经典软件。

操作系统,从 MS DOS,到视窗 Windows 3.2,WIN95/98,WIN XP,WIN7,WIN10 等等,其 WIN7 据说有 5000 万行源代码。还有 MS 的办公软件 OFFICE。据说 windows 及 office 源代码大小最大为 63.2GB。以平均 20 个字符为一行,大致有 3G 行代码,即大致 30 亿行代码。

再加上微软的开发工具 VC++,VS 等 IDE 以及相关的测试软件、工具包,我想微软的正规的发行版的源代码,不会超过 100 亿行。

回头再看看华为的产品。先看最大的操作系统鸿蒙,我们假定它是 WIN7 的 10 倍,即五千万的十倍,五亿行代码。华为之前的手机系统也用开源的安卓系统,其中的应用程序,每个版本一亿行代码。我想,荣耀、MATE、P 系列累计源代码应不超道 100 亿行(把每个版本重复计算)。

其它的,如通讯、AI 类、云端、笔记本等等,这些应用类,估计要超过 100 亿行很困难。所以,华为累计发行的产品的源代码,应不超过 200 亿行。

如果大家认为华为一定会是 1100 亿行,那么,我觉得,一定要申请吉尼斯世界纪录。因为这个体量,基本是微软的 10 倍还要多,而华为的利润排名与微软不相上下。

最后,很佩服华为的程序员们,你们辛苦了,为国争了光。

【5】、来自网友【蜜蜂攻城狮】的最佳回答:

华为大多数的代码都是外包人员写的!外包写的!写的!

至于代码质量,只能说凑合吧!

在去年初,内部实行所有的研发人员必须写代码,标准是每人 30 行/天。

另外,至于 1100 亿行代码。其中有很多代码功能相似的模块,在华为内部,实行内部竞争,一个内部使用的工具,有可能有很多个部门在同时的进行研发,然后内部进行对比。选出更好的,所以在内部 rtools 上有很多工具,甚至有非常多的完整版工具都没人使用。

华为其实是一家非常有危机意识的公司,很多工具市面上虽然有,但是如果华为内部觉得这个工具不错的话,会自主进行研发,这个就是典型的危机意识。以便后期的工具不受制于人。所以很多第三方工具,要么使用开源的,要么直接购买,坚决不使用非常好用的工具,但是 pdm 上未收录的工具,如果你想要使用,那么先进行入库申请,由安全专家进行审核。

华为在安全这一块做的算是非常严格的了,相信做产品的都清楚黑鸭二进制扫描,安全整改等事务,有时候会花几个礼拜去专门做这个事情。

华为自己有 1100 亿代码库,至少危险来临的时候有所应对。

作为一个程序员,也应该有自己的代码库。

以上就是关于问题【如何看待华为 1100 亿行规模的代码库?】的全部回答,希望能对大家有所帮助,内容收集于网络仅供参考,如要实行请慎重,任何后果与本站无关!

喜欢 (0)