网易首页 > 网易号 > 正文 申请入驻

程序员的成长和代码行数的关系

0
分享至

在2011年John D. Cook写了一篇博客,其中提到:

我的朋友Clift Norris发现了一个基本常数,我称之为Norris常数,一个未经培训的程序员在他或她遇到瓶颈之前能写出的平均代码量。Clift估计这个值是1500行。超过这个数以后,代码会变得如此混乱,以至于本人都无法轻而易举的进行调试和修改。

我还不了解足够多的初级程序员来验证这一结果,不过我自己认识到,程序员生涯的下一个瓶颈将发生在20,000行。我把Norris常数改成2,000那样正好变成十倍。

在我离开大学之后的第一份工作中,我和我的同事一样(和我差不多年纪)反复遇到了20,000行的瓶颈。在梦工厂我们有950个程序给动画师使用,行数统计显示多的一些基本在20,000 至25,000行。超过这个数的话即再多的努力也无法增加新特性了。

在1996年年中的时候我负责编写梦工厂的照明工具(和另外两个程序员),我知道这将远远超过20,000行代码。我改变了我的编程方法并且这个工具一年后以大约200,000行的代码量成功交付。(这个工具计划于2013年退役,在16年时间里它被每天使用并用来拍摄了21部电影。)我因为写了好几个行数在10万到20万的程序,我很确定我遇到了下一个瓶颈,我已经能够能感觉到它。

特别难的部分是和一些没有像你一样打破了好几道瓶颈的人讨论技术。打破这些瓶颈意味着做出不同的取舍,特别是一些短期内看起来不合理但以后会有所帮助决定。这很难去争论,短期内的优点是显而易见的,但我无法说服任何人说从现在起一年内可能有人会做出一个看似无害但是会破坏现有代码的改动。

Edsger Dijkstra 在1969年写道:

一个一岁多的孩子会以一定的速度匍匐前进,比如说每小时一英里。但每小时一千英里的速度就是一架超音速喷气机。就物体的移动能力而言这两者是没有可比性的,任何其中一个可以到的但是另一个不能做到,反之亦然。

一个Clift所指的初级程序员,学会了爬行,接着蹒跚学步,然后行走,然后慢跑,然后再跑步,最后冲刺,他认为,“以这样加速度前进我可以赶上超音速喷气机的速度!“但他跑进了2,000行的极限,因为他的技能不会再按比例增加。他必须改变移动方式,比如开车去获得更快的速度。然后,他就学会了开车,开始很慢,然后越来越快,但有进入到了20000行极限。驾驶汽车的技术不会变成开喷气式飞机。

我的朋友Brad Grantham用新手程序员用“蛮力”解决问题来说明了这一点。我认为这是正确的:当代码是在2,000行以下,你可以写任何混乱肮脏的代码并依靠你的记忆拯救你。深思熟虑的类和包分解会让你的代规模达到20,000行。

突破这个瓶颈的关键是什么?对我而言,就是让事情保持简单。除非现在就非常需要,否则完全拒绝添加任何新特性或者新代码。我已经在Every Line Is a Potential Bug中提高了这一点(在Simple is Good之前还是一知半解)。梦工厂的首席特效架构师是这么理解的:

对我而言,照明工具成功的地方在于他选择了一系列容易使用和维护的小功能并且强大到足够成为一个非常棒的照明工具。

作为一名技术领导我明白我主要的贡献是对那些同事觉得非常重要但不能证明其合理的需求说“不”。但真正的诀窍是知道什么需求增加了线性的复杂度(只和自身相关)和指数级复杂度(和别的需求有关联)。两者都因该去避免,但后者需要更令人信服的理由。

举个例子,在2012年,Linux内核有1500万行代码。其中75%是具有线性复杂度的(驱动,文件系统和处理器结构相关的代码)。你可能有许多视屏驱动,但他们之间没有任何(或很少)的交互。剩下的则有更多的依赖关系。

Dijkstra觉得很难去教授这些先进的方法,因为他们只对那些2万行或者20万行的程序才有意义。任何的类或者规范必须限制其示例在几百行以内,暴力方法在这里也同样适用。你真的需要范例给你显示30,000行代码然后证实因为程序上手并不是非常复杂所以新功能能够很容易的被添加。但这实际上是不可能的。.

我不知道做出什么改变来突破20万行的瓶颈。我最近已经切换到了更纯粹的函数式风格并减少了可变状态,也许这些能让我有所突破。

而且我很想知道到代码量达到2000万行的时候会变成什么样子。

在三百万到四百万行代码左右似乎有 一道无形的墙,无论多少人(数以百计)或多少年(数十年)花在上面增长率将会显著降低。-Dan Wexler

本文由 伯乐在线 - 左手的灵魂 翻译自 teamten 的文章 Norris Numbers

原文 http://www.teamten.com/lawrence/writings/norris-numbers.html

翻译 http://blog.jobbole.com/76139/

Crossin的新书《码上行动:用ChatGPT学会Python编程》已经上市了。 本书以ChatGPT为辅助,系统全面地讲解了如何掌握Python编程,适合Python零基础入门的读者学习。

购买后可加入读者交流群,Crossin为你开启陪读模式,解答你在阅读本书时的一切疑问。

Crossin的其他书籍:

添加微信 crossin123 ,加入编程教室共同学习 ~

感谢 转发点赞 的各位~

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
43岁范冰冰受封拿督,事业疑获新大佬支持,全面进军海外市场

43岁范冰冰受封拿督,事业疑获新大佬支持,全面进军海外市场

萌神木木
2025-08-24 13:52:35
霍启刚高调发文!被郭晶晶培养了13年的儿子,早已成为他的骄傲

霍启刚高调发文!被郭晶晶培养了13年的儿子,早已成为他的骄傲

手工制作阿歼
2026-08-17 15:59:09
美国宣布制裁国际刑事法院院长赤根智子

美国宣布制裁国际刑事法院院长赤根智子

新华社
2026-08-19 04:06:07
黄圣依离婚后首次带儿子安麟出镜,儿子眉眼长相很像黄圣依

黄圣依离婚后首次带儿子安麟出镜,儿子眉眼长相很像黄圣依

韩小娱
2026-08-18 13:24:17
23场18球6助攻!27岁正值巅峰!国足归化他或有望冲击2030年世界杯

23场18球6助攻!27岁正值巅峰!国足归化他或有望冲击2030年世界杯

兵哥篮球故事
2026-08-18 19:11:57
一个强暴犯嚣张成这样,他凭什么!

一个强暴犯嚣张成这样,他凭什么!

BenSir本色说
2026-08-15 00:53:42
张敏为何多年后重回视线,依旧让人记得住

张敏为何多年后重回视线,依旧让人记得住

情感大头说说
2026-08-19 07:27:12
台湾名嘴扎堆到访大陆:有人在祖先墓前长跪不起,有人叹乡村巨变

台湾名嘴扎堆到访大陆:有人在祖先墓前长跪不起,有人叹乡村巨变

徐云流浪中国
2026-08-19 00:14:09
《牛来》票房破1.35亿,全网彻底疯了

《牛来》票房破1.35亿,全网彻底疯了

营销头版
2026-08-18 18:05:12
2小时11分钟干件大事!中国金花一夜双杀两个克星,球迷给看跪了

2小时11分钟干件大事!中国金花一夜双杀两个克星,球迷给看跪了

凉了时光人
2026-08-19 00:52:58
《重器》四对情侣结局,陈一众痛失爱人终身未娶,余高远判无期

《重器》四对情侣结局,陈一众痛失爱人终身未娶,余高远判无期

阿废冷眼观察所
2026-08-19 01:10:38
逼外资迁出中国,大批美企绕了一圈,得出一个结论:还是中国好!

逼外资迁出中国,大批美企绕了一圈,得出一个结论:还是中国好!

乌克兰小静
2026-08-19 02:05:14
知名综艺突发直播事故!误放画面流出

知名综艺突发直播事故!误放画面流出

南方都市报
2026-08-16 13:53:22
杨毅提出质疑:CBA可以打,全运会可以打,男篮比赛却打不了

杨毅提出质疑:CBA可以打,全运会可以打,男篮比赛却打不了

体育哲人
2026-08-18 06:50:03
终于知道为什么有这么多人怀念疫情前的生活了!看着看着就破防了

终于知道为什么有这么多人怀念疫情前的生活了!看着看着就破防了

另子维爱读史
2026-08-12 22:07:01
8月18日晚间上市公司重大事项公告

8月18日晚间上市公司重大事项公告

风风顺
2026-08-19 01:00:03
最新放假通知!请三天假可休13天

最新放假通知!请三天假可休13天

上观新闻
2026-08-18 14:34:49
原来老郭是满满的正能量

原来老郭是满满的正能量

长江说正事
2026-08-19 06:25:27
杭州酒局风波,赵海峰之后,郁廷栋副区长也被刑拘了,媒体不该再沉默了!

杭州酒局风波,赵海峰之后,郁廷栋副区长也被刑拘了,媒体不该再沉默了!

迷世书童
2026-08-18 18:46:45
77岁徐小凤别墅聚会,头发乌黑浓密惹人羡,3亿身家独享雍容晚年

77岁徐小凤别墅聚会,头发乌黑浓密惹人羡,3亿身家独享雍容晚年

娱乐E君
2026-08-18 16:21:06
2026-08-19 08:31:00
Crossin编程教室 incentive-icons
Crossin编程教室
简单有趣的python入门
431文章数 709关注度
往期回顾 全部

科技要闻

英伟达的资本局:从AI卖铲人到AI央行

头条要闻

日本防卫省被指计划大规模扩编设3部门 日媒:非常罕见

头条要闻

日本防卫省被指计划大规模扩编设3部门 日媒:非常罕见

体育要闻

中国男篮,一直被质疑,永远被期待

娱乐要闻

蓝盈莹官宣新恋情

财经要闻

一场酒局献祭,掀开了杭州地产潜规则

汽车要闻

北京现代造了一台“京北小兰博”?艾尼氪 V静态体验

态度原创

健康
时尚
本地
艺术
军事航空

女孩更易侧弯?几类孩子风险偏高

松弛感白衬衫,要配牛仔裤才时髦啊

本地新闻

邂逅活珊瑚的西沙,感受独属于国人的浪漫

艺术要闻

吴昌硕的山水是人代笔?

军事要闻

美国防部:正在落实总统缩减美韩军演指令

无障碍浏览 进入关怀版