问题

如何看待谷歌工程师透露谷歌有20亿行代码,相当于写40遍Windows?

回答
谷歌工程师透露谷歌有20亿行代码,相当于写40遍Windows的说法,是一个非常有意思且发人深省的观点。要理解这个说法,我们需要从多个角度进行分析,包括代码量本身的含义、规模的对比、以及从中反映出的谷歌和Windows的差异。

一、 代码量本身意味着什么?

首先,20亿行代码是一个极其庞大的数字。让我们尝试理解它意味着什么:

庞大的软件生态系统: 这意味着谷歌并非只拥有一个简单的应用程序或操作系统。这20亿行代码可能涵盖了谷歌旗下的几乎所有产品和服务,包括但不限于:
搜索(Search): 核心的搜索算法、索引系统、网页爬虫、排名机制等。
广告(Ads): 谷歌广告的投放、竞价、优化、追踪等系统。
Android: 整个移动操作系统,包括内核、框架、系统应用等。
Chrome: 浏览器本身的代码,包括渲染引擎、JavaScript引擎、安全模块等。
云服务(GCP): 谷歌云平台的各个服务,如计算、存储、数据库、AI/ML平台等。
地图(Maps): 地图数据处理、导航算法、街景服务等。
YouTube: 视频托管、推荐算法、内容分发、广告系统等。
Gmail、Drive、Docs等生产力工具。
AI/ML研究与应用: TensorFlow、DeepMind等前沿技术的代码。
内部工具与基础设施: 用于管理、部署、监控、测试的大量内部工具。
硬件相关的软件: 如Pixel手机的固件、Nest设备的软件等。

复杂性和多样性: 如此庞大的代码量意味着谷歌的产品和服务极其复杂,涉及到各种技术栈、编程语言(C++, Java, Python, Go, JavaScript等)、架构模式和开发流程。它也意味着谷歌需要管理一个庞大的工程师团队,并且要协调不同团队之间的协作。

持续的迭代和维护: 20亿行代码并非一成不变。谷歌以快速迭代和持续创新著称,这意味着这20亿行代码中包含了大量的历史代码、实验性代码、以及不断更新和重构的代码。维护如此庞大的代码库需要极高的工程能力和严格的流程。

二、 与Windows的对比:40倍的差距

将谷歌的代码量与Windows进行对比,是为了更直观地理解其规模。虽然具体Windows的代码量数据不尽相同,但通常估计在几千万行到上亿行(特别是考虑到早期的代码和不同版本的累积)。如果按这个标准,20亿行代码确实是Windows的几十倍。

这个对比突显了:

谷歌的业务范畴和复杂性: Windows主要是一个操作系统,虽然也包含了各种组件和驱动程序,但其核心功能相对集中。而谷歌的业务则横跨互联网搜索、广告、移动操作系统、云计算、人工智能、硬件等多个领域,每个领域都可能拥有极其庞大的代码库。

软件的“原子性” vs “生态系统”: Windows可以被视为一个相对独立的、完整的操作系统。而谷歌的20亿行代码则更像是一个庞大的、互相连接的软件生态系统。这些代码并非孤立存在,而是相互依赖、相互支持,共同构成了一个巨大的数字服务平台。

“行”的定义可能不同: 需要注意的是,代码行数只是一个衡量标准,而且可能存在一些模糊性。例如,不同语言的代码“密度”不同,有些语言一行代码可以实现很多功能,而有些语言则需要更多代码来完成同一任务。此外,自动化生成代码、配置文件、注释等是否计入代码行数也可能影响最终的数字。但即便如此,巨大的数量级差距仍然是显著的。

三、 这20亿行代码反映出的谷歌的特点和挑战

创新驱动和快速迭代: 谷歌之所以拥有如此庞大的代码量,与其持续的创新和快速迭代的文化息息相关。几乎每个产品都在不断地进行A/B测试、实验和改进,这会产生大量的代码变动和新功能。

技术深度和广度: 谷歌在很多技术领域都投入了巨大的研发力量,例如在AI、机器学习、分布式系统、大规模数据处理等方面,这些都需要大量精密的软件来实现。

工程文化和标准化: 要管理如此庞大的代码库,谷歌必然拥有非常成熟的工程文化、代码审查流程、自动化测试、持续集成/持续部署(CI/CD)等体系。这保证了代码的质量、稳定性和可维护性,即使在如此大的规模下。

挑战与风险:
复杂性管理: 如此庞大的代码量给管理带来了巨大的挑战。理解不同模块之间的依赖关系、避免引入潜在的Bug、以及快速响应安全漏洞都需要极高的工程能力。
技术债务: 在快速迭代的过程中,不可避免地会积累一定的技术债务,即为了快速上线而牺牲的长期维护性和效率。如何管理和偿还技术债务是谷歌需要持续面对的问题。
新员工的学习曲线: 对于新加入谷歌的工程师来说,理解和适应如此庞大和复杂的代码库将是一个巨大的挑战。
可维护性和演进: 随着时间的推移,保持代码的清晰、模块化和易于维护,以及能够随着技术的发展进行平滑的演进,是谷歌长期发展的重要课题。

四、 总结

谷歌工程师透露的20亿行代码,是一个惊人的数字,它生动地展示了谷歌作为一家科技巨头的规模、复杂性、以及其在软件工程领域的实力。这个数字不仅仅是一个简单的代码计数,更是:

谷歌产品和服务庞大生态系统的体现。
谷歌在多个技术领域深耕细作的证明。
其强大的工程能力和组织能力的佐证。
同时也暗示了其在管理复杂性、技术债务和新员工培训方面面临的挑战。

这个对比Windows的说法,更像是一种类比,旨在帮助大众更直观地理解谷歌的工程规模,但同时也可能简化了两种不同类型产品和发展模式的差异。总而言之,20亿行代码代表着一个庞大的、持续演进的数字帝国,它支撑着我们日常生活中众多重要的互联网服务。

网友意见

user avatar

兰州军区美女网络尖兵:90天写40万行代码

也就是说,3 个优秀解放军月可以写 40 万行代码,20 亿行代码就是 15000 个优秀的解放军月。

Google 有多少个程序员?Google 开了多少个月了?

我只看到了差距


兰州军区美女网络尖兵:90天写40万行代码(图)_新闻



李聪娜在工作中(5月18日摄)



李聪娜参加执勤演练(5月4日摄)

作为一名携笔从戎的优秀大学生,兰州军区某部科室主任李聪娜潜心钻研信息网络尖端领域,勇攀自主创新高峰,取得了优异成绩:12项全军重大科研项目的领军人,连续在全军性比武中摘金夺银,多次获军队科技进步奖……

(一)

去年底,李聪娜被表彰为第十二届“全军学习成才标兵”的喜讯传来,领导和战友们都说:“她的成功成才都是自己逼出来的!”

2000年,李聪娜考入国防科技大学计算机专业,实现从军梦。毕业时,她放弃保研资格和到沿海科研单位工作的机会,主动申请到信息化人才缺乏的西北军营,从事网络安全工作。

网络,被称为是继陆、海、空、天、电磁之后,世界各军事强国激烈争夺的“第六空间”。2008年初,总部赋予李聪娜所在部队紧急研发一种网络终端服务系统的任务,部队长王国玉安排她编写一套底层驱动程序。

原本打算借机“露一手”,可真要编写程序时,她才发现这远远不同于传统意义上的软件编程,不仅此前没有学过,有些东西连听都没听过。

看着一行行读不懂、看不明的源代码,她急得直想哭!

背记相关函数、学习协议机制,研究国内外范例程序……李聪娜把自己宅在办公室,挑灯研读。一个月时间,30万行代码、100多类函数、60多种协议机制、20多个设计算法,一块块硬骨头被她“啃”了下来。

2008年底,李聪娜代表兰州军区参加全军网络安全比武竞赛。

那段日子,她几乎24小时“泡”在枯燥的训练中,构建战场环境,探寻攻坚路径,一个月下来,瘦了整整15斤。

决赛时,作为64名选手中唯一的女性,李聪娜最终以一金一铜摘得桂冠。

(二)

“昨天的技术,打不赢明天的战争。”在李聪娜的办公室,题写着这样一句醒目的标语。

2009年初,某策略研究让科研团队陷入围城。“能不能另辟蹊径?”角落里,沉默多天的李聪娜咬着笔头认真地说。只见她走到黑板前,飞速地写了起来……

“就让李聪娜主持这个项目!”部队长王国玉当场提议。

连续奋战90多个昼夜,编写代码40多万行……4个月后,系统研发成功,比预期提前半年完成。

总部成立专项课题组研发某信息网络项目,主动点将李聪娜。

当时,国内对这一领域的研究仅限于理论层面,国外成熟产品完全不公开源代码,唯一的参考资料是一本理论教科书。

“走别人的路,早晚会被人反制;自己制定游戏规则,才能掌握主动权。”李聪娜一语解开思想的缰绳。

整整半个月,她带领小组成员重新搭建模拟试验环境,取得20多万组测试数据,证实了自创算法的可行性和科学性。

最终,这项攻克了10多项技术难关的创新成果获得军队科技进步二等奖。

今年3月,李聪娜被表彰为全国“三八”红旗手。在兰州军区司令部举办的庆功会上,她说:“在新领域多攀登一座高峰,我们的空白就会少一点,未来战场取胜的概率就会大一点。”

(三)

2010年5月,李聪娜被任命为科室主任。那一天,她彻夜难眠。

由一名冲锋陷阵的战斗员转变为运筹帷幄的指挥员,李聪娜感到了前所未有的压力。作为成立不满三年的新科室,1个主任5个兵,还凑不够一个班,如何对全区部队的信息网络保驾护航?

在李聪娜的争取下,一批刚毕业的计算机专业高材生被充实到麾下。

刚刚走出校门的大学生,满肚子的理论不知如何转化为实战。面对面辅导、键对键传授、手把手帮带……李聪娜的悉心帮带,很快让这批网络新兵变成了“个顶个”的业务尖兵。

李聪娜还将科室的业务范畴划分为四个小组,放手让一批敢想敢干的年轻人担任课题组长,科室的科研实力开始加速成长——仅2011年就完成大型科研项目5项,创新核心算法20余种,发表科研论文10多篇。

也是在这一年,作为“关键先生”的李聪娜,胸前戴上了一枚金灿灿的二等功奖章。

user avatar

为了这20亿行代码,Google建立了一套世界上最先进的源代码管理/测试/审核/提交系统。1.Google专门建立了一套源代码文件系统,在这套文件系统里,代码默认全部可以访问,但是不下载到本地,用到了才下载。

2.有一个叫做code search的web应用,每天分析一次所有的代码结构,可以随时查阅代码的定义、引用和历史,当然可以飞快地搜索。

3.有一套叫做cider的代码编辑器,也是web应用程序的形式,无需进入eclipse即可飞速编辑源代码。

4.有一套非常简明高效的build file格式,比传统的make file好许多倍。现在开源了叫做bazel。

5.由于所有的代码都在一个主干分支,每块代码的提交都会触发所有直接或间接基于这块代码的所有测试,每个签入都要保证不能弄坏别人的任何一个测试,或者说,每个人都对整个代码库负责,如果升级自己的库,弄坏了别人的测试就要帮他修复。

6.代码审核极其严格,标准非常高,任何一个空行,一个空格,注释里一个标点的错误都不会放过。

7.版本对比是精确到行的,因此即使是多人编辑一个文件,也极少出现需要手动resolve conflict的情况。

8.代码编译执行都是基于最新版本,但都是云编译,成千上万个dependency没一会儿就编译完了。

你可能难以想象,我的工作笔记本(Mac)平时只用chrome一个程序就能完成所有的工作。总而言之,我离开Google以后最怀念的就是这套代码系统,要是能完全开源就好了。

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有