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

好吧,需要算算了。按美国平均水平,每个程序员每天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行每人天的估算是开发团队组织效率的,不是程序员个人生产力。

程序员所有代码都一个一个自己敲出来的吗?

代码只有少部分是程序员自己一个一个敲出来的。程序员是戏称为码农,搬砖的是有一定的依据的。下面以安卓开发举例说明。其实做安卓应用开发跟用画图板画画有点类似,我可以根据脑海中想象的样式,借助画图板上已经集成的功能进行画画。我要画一个粉色的矩形,我只要点中矩形按钮,再选中红色。拖动鼠标就可以快速的画出一个矩形。

整个过程是非常简单愉悦的,我不需要知道电脑是如何绘制矩形的,电脑是如何把线的颜色变成红色的,电脑是如何把画面呈现出来的。我只要调用画图板的功能即可。鼠标点击,选择各种功能就是执行画图板的各种指令。安卓开发也是如此,就好比画画调用画图板的各种指令一样。比如我想做一个音乐播放器。刚开始进入的是欢迎界面,我调用系统的UI界面库,把图片显示在界面上。

然后进入登录界面,我调用网络请求库,把用户名、密码发送到服务器进行验证。最后进入播放页面,点击播放歌曲,我调用系统的多媒体库,把音乐播放出来。整个过程跟画画是十分类似的,只不过你是用鼠标触发然后调用画图板指令,而我是借助代码调用各种库函数。整个安卓系统是非常庞大的,里面各种模块、功能已经是高度封装好了的,大部分的开发者都没怎么看过系统源码,因为他实在是太庞大了。

更何况是自己手动去实现他,我们都是在原有的基础上进行二次、三次、四次发开,开发者只需要调用,把功能拼凑出来即可。当然,这只是形象的比喻。实际的情况要比这复杂的多,比如在欢迎界面,各种安卓机显示出来的样式不统一。在登录页面,用户名、密码的参数限制,网络差、没有网络咋办。在播放页面,一首首歌曲是按什么顺序排列,播放的循环模式等等,这就需要程序员自己手写、自己调试了。


文章TAG:lol源代码有多少行  LOL源代码乐芙兰  lol  源代码  代码  
下一篇