速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

谷歌最好的程序员 Jeff Dean:我用过 18 种编程语言

  • 2023-02-22
    北京
  • 本文字数:4666 字

    阅读完需:约 15 分钟

谷歌最好的程序员Jeff Dean:我用过 18 种编程语言

当地时间 2 月 21 日,谷歌大神 Jeff Dean 在参与网友“学习编程语言顺序”的话题中,又不小心秀了下自己的“肌肉”:自己至今已经学习和使用了 17 种编程语言。但他分明忘记了自己还用过 Sawzall ,还是在网友的提醒下才想起来。这样算来,Dean 已经用过至少 18 种编程语言了!



Dean 的评论区一时间也成为网友的“答疑区”。“你还记得这些吗? 我学 Python 的时候忘了 Java,学 Java 的时候又忘了 C……我想我的大脑内存严重不够。”网友 Ravi Ahuja 不禁问道。

 

“我认为这有点像骑自行车?为了记住我不经常用到的、感觉模糊的地方,我会做一些查究。但通常来说,看到那些代码都很舒服。如果在一段时间不用后开始使用,那么一两天之后情况就会变得更好。”Dean 回答道。

 

还有网友 Avik Dutta 问道,“如何为特定的问题或项目选择编程语言?”Dean 回答称,这是多种因素造成的,其中包括性能有多重要、需要与之交互的现有代码、是一个少数人参与的小项目还是一个大项目等等。

 

不过,Dean 在博客介绍中也提到,尽管多年来使用其它编程语言写了大量代码,但他大部分代码都是用 C++编写的。

“成神之路”

 

有很多“关于 Dean 的事实”的段子流传至今。比如,2007 年的愚人节,一些对 Dean 抱有崇敬之情的谷歌工程师决定以诺里斯式幽默的方式向他致敬,热情宣扬他在编程领域的成就。例如:

 

  • 不是由编译器向 Dean 报警,而是 Dean 向编译器报警。

  • Dean 直接用二进制码编程,再把源代码转换成其他开发者能看懂的文档。

  • 对 Dean 来说,人体工程学要保护的不是他,而是键盘。

  • 有一回,Dean 想优化一个函数来让返回先于调用,于是异步 API 就此诞生。

 

抛开段子不谈,Dean 的编程能力到底多让人信服?Hacker News上曾有人问:你见过的最优雅的代码是什么?放在首位的回答就是 Jeff Dean 的 MapReduce 最初实现。

 

IIRC 只有 3 个 C++ 类和几百行代码。它将大部分分发、任务运行和磁盘访问任务外包给其他谷歌基础设施,只专注在运行计算、为每个键收集结果并分发给 reducer。

 

当前(截至 2012 年,不再是当前版本)的 MapReduce 版本更快、更可靠,但用几百行代码启动一个价值数万亿美元的行业,确实也是一种的优雅。

 

在当前(也是自 2012 年起)的 MapReduce 代码中,还有另一个同样由 Jeff Dean 设计的令人毛骨悚然的东西。这是一种外部排序算法,与大多数外部排序一样,它通过编写一堆整机 RAM 大小的临时文件然后执行 N 路合并来工作。但它是如何对机器的 RAM 进行排序的呢?当然是使用 STL qsort() 函数!但是,如何使用标准库函数有效地对 64GB 的数据进行排序呢?他编写了一个自定义比较器,一次比较整个记录,使用 IIRC 编译器的内在机制编译成 SIMD 指令,并执行某种 Duff's device(类似展开)来考虑不同的密钥长度。它是标准库函数与高度优化的专用代码的巧妙结合。

 

Dean 曾为 MapReduce、Bigtable 和 Spanner 等重要项目做过贡献,正是这些技术,让谷歌乃至众多现代 Web 产品得以存在。他所从事的项目,也随时可能再次颠覆整个信息技术世界。

 

Dean 是 1999 年加入谷歌的,当时的他已经是享誉全球的顶尖年轻计算机科学家之一。Dean 回忆道,当时家用计算机正在蓬勃发展,他一直希望能在给定的设备上做更多的事情。

 

还在读高中的 Dean 编写了一个用于分析大量流行病学数据的软件,而且速度比当时专家们常用的产品“快 26 倍”。这套系统定名为 Epi Info,后来被翻译成 13 种语言版本供世界各地的疾控中心使用。读博期间,他又开始探索编译器课题,希望将源代码转换为计算机能够轻松执行的语言。“我一直喜欢能快速运行的代码。”

 

但 Dean 不满于此,他不愿把一辈子都耗费在编译器身上。于是他离开学术界,在两年多之后加入了当时只有 20 名员工的谷歌。

 

在为 Google News 和 Adsense 做出重要早期贡献之后,Dean 意识到谷歌的广告业务将必定互联网经济的基本规则,于是他开始将注意力转向即将到来的核心问题:规模。

 

谷歌的两位创始人 Larry Page 和 Sergey Brin 本身就是一流的开发人员。1990 年代末,他们开发出一种能将最相关结果返回至给定搜索查询的算法 Pagerank。这种对相关性的关注,让谷歌一举超越了上个世代的霸主雅虎、Altavista 和曾经代表先进生产力的其他对手。但随着业务占比的提升,谷歌也面临着巨大的计算挑战。Dean 曾感叹道,“我们部署机器的速度”总是跟不上需求。

 

为此,Dean 与其他几位优秀同事联手合作,并意识到高中时做的 Epi Info 已经蕴藏着正确的方向:把看似硬件的问题,转化成软件形式来解决。

 

Dean 和同事 Sanjay Ghemawat 开发了一款名叫 MapReduce 的编程工具,能帮助开发人员在机器上并行处理庞大的数据集。就像编译器能帮助程序员完成代码转换一样,MapReduce 能帮助谷歌开发者调整搜索算法或添加新计算,又不必分神于并行化操作或者处理设备故障。

 

Dean 和 Sanjay 的成就震古烁今,因此在 2004 年发布开创性研究论文后,其很快成为行业标准和后来 Hadoop 的实现基础。尽管如今的谷歌已经逐渐超越 MapReduce,但每当有新的时期实习生参与新项目时,仍然经常会从 MapReduce 起步。

 

谷歌的联合创始人们经常讨论“10 倍”效能,而 MapReduce 正是个绝佳案例。所谓 10 倍效能,就是不满足于将效能提升 10%,而是直接扩大 10 倍。MapReduce 也是如此,它不是让每项操作都快上一点,而是让谷歌的开发者们得以做出以往无法想象的尝试。

 

Dean 参与的其他一些项目也带来了类似的指数级效应。在 Google File System 的基础之上,他和 Sanjay 一同创建了名为 Bigtable 的分布式数据存储系统,亮点是能够处理 PB 级别的数据(1 PB 约等于 100 万 GB)。

 

之后他们又更进一步,开发出了号称是“全球最大单体数据库”的 Spanner。凭借一种创新的计时方法,Spanner “在全球覆盖的同时又保持着类似于单地部署运行感受”。换句话说,即使更新在抵达各地节点的时间上并不相同,Spanner 也能让全球数据中心网络保持一致。在 Spanner 出现之前,很多人认为这根本不可能实现。

 

大家应该能理解开头那些“关于 Dean 的事实”完全是在搞笑。Dean 本人觉得“有点尴尬,但也挺好玩的。”而且他总是强调,自己的一切成就都离不开合作。

 

通过采用新的数据库方法和大规模数据分析帮助谷歌成为一个计算强国,Dean 也赢得了业界最有才华的编码员之一的荣誉。

 

每天早上,Dean 都会到加州山景城的 Googleplex 总部上班,跟其他核心员工坐下喝杯咖啡。虽然大家的工作方向并不一样,有些同事也随谷歌业务的拓展而搬到了别处,但这种轻松愉快的每日讨论仍然不断激发着彼此的思路。咖啡对话帮助 Dean 把自己的优化、并行化和软件基础设施方面的专业知识,推广到了更多谷歌项目当中。作为他的长期搭档,Sanjay 说“他对我们的工作总是非常热情和乐观,似乎没什么能够阻挡他的脚步。”



“Dean 证明了它确实有效”

 

Dean 天生不愿安于现状:一旦看到问题解决方案的轮廓,这个问题对他而言也就失去了吸引力。

 

2011 年,在全世界都向云计算张开怀抱时,他开始与来自斯坦福大学的计算机科学教授吴恩达合作。吴恩达教授当时在谷歌公司负责领导一个关于神经网络研究(即利用虚拟「神经元」构建计算机程序)的秘密项目。

 

Dean 曾在本科求学阶段接触过神经网络,但那个时候还无法解决真实世界中的问题。吴恩达告诉 Dean,情况正在快速发生改变。在斯坦福大学,研究人员们发现向神经网络提供大量数据之后,即可取得一系列激动人心的结果。吴恩达认为,在谷歌庞大的业务规模支撑之下,神经网络不仅将在实用性层面有所提升,更会变得无比强大。

 

神经网络与传统计算机程序截然不同。神经网络的行为并非由程序直接指定,而是通过输入与反馈自行“学习”到的。自从本科毕业之后,Dean 的神经网络知识就一直停滞不前,于是 Dean 的妻子 Heidi 很快发现家里的卫生间中摆满了相关教材。Dean 决定每周拿出一天了解这个被称为“谷歌大脑(Google Brain)”的项目。

 

当时,谷歌公司内部有很多人对这项技术持怀疑态度,谷歌员工 Alan Eustace 回忆道:“这简直是在浪费人才。”就连 Sanjay 也对 Dean 的举动无法理解,他说道,“你的工作在于管理基础设施,整那些没用的干啥?”

 

在接下来的七年时间里,谷歌大脑团队开发出了远超以往最佳方案的机器翻译以及语音与图像识别神经网络。最终,这些神经网络模型取代了谷歌最重要的搜索结果排序与定向广告算法,这也使得谷歌大脑团队成为公司内增长速度最快的部门之一。

 

2001 年加入谷歌公司的工程师 Claire Cui 提到,Dean 的参与标志着谷歌内部人工智能开发工作的历史性转折点:“当时有人相信这项技术,也有人不信,但 Dean 证明了它确实有效。”

 

事实证明,人工智能以规模化为前提,而 Dean 这位系统工程师正是规模化实现的好手。他的一项重要努力在于领导了 TensorFlow 项目的开发——目标是为人工智能创造出与 MapReduce 相似的简化方案。

 

TensorFlow 极大降低了将神经网络分配至多台计算机的门槛,从而将大量计算设备视为统一的庞大主脑。2015 年,TensorFlow 正式亮相,并成为人工智能领域的客观标准。谷歌 CEO Sundar Pichai 此后骄傲地宣布谷歌是一家“AI 优先”的企业,并任命 Dean 领导公司内的所有 AI 开发项目。

 

Dean 每周拿出四天时间管理谷歌大脑团队,包括团队中的三千名成员。他到处发表演讲,每周召开一次关于新型计算机芯片(即专为神经网络设计的张量处理单元,简称 TPU)的例会。此外,他还参与到 AutoML 的开发协助当中——这是一套尝试利用神经网络设计其它神经网络的系统。在如此繁重的工作压力之下,如今他每周与 Sanjay 一同编写代码的机会只剩下一次。

 

结束语

 

其他行业不太一样,IT 领域的开发者具有很强的不可替代性。

 

一位出色的会计师也许能帮企业省下 5%的税费,一名出色的棒球运动员可能比普通选手的抢垒率更高。但出色的软件开发者可不一样,一位大神七天能做完的工作,普通的小型开发团队可能需要几个月的时间。这是一种指数级的差距,所以各大科技巨头才愿意竭尽全力吸引最顶尖的编程人才。显而易见,Dean 就是这样的顶尖人才,以至于在很多人眼中,Jeff Dean 就是谷歌技术的代名词。

 

还有一个“关于 Dean 的事实”的段子说道,Dean 能光靠小键盘上的 0 和 1 就完成发明。但真正的 Dean 承认,他自己并不是机器学习专家,只是渴望帮助他人构建起可扩展的高性能系统。

 

跟人们想象中的技术天才不同,Dean 认为硬堆时间来寻求最佳答案的可能性很低。相反,他的解决过程往往从后续计算起步,尝试在给定过程的质量和速度之间取得最佳平衡点。在他看来,“在许多领域,从机器翻译到搜索质量,我们总是在对每条查询的计算方法做权衡。也许无法实现理论上的最佳方法,但如果我们能用某种方式来求取近似,那没准能用 1%的算力获得 98%的收益。”

 

Dean 也确实是这么做的,他甚至整理了一份“每位计算机工程师都该知道的数字”清单——比如数据包从加利福尼亚到阿姆斯特丹的往返大约需要 150 毫秒。他认为牢记这些数字很重要,因为工程师们经常需要“在 20 分钟内只靠一块白板,计算出三种设计里哪种最好。”这事并不容易,但 Dean 表示“只要能把所有细节转换成能够直接比较的粗略结论,后面就比较容易推进了。”

 

如果非要说 Dean 拥有什么超人的力量,那这种力量跟所谓“神迹”肯定没半点关系。他的力量是优先级、优化和数量级意义上的力量。更直白地讲,这是一种能在更少时间内完成更多工作的力量。在硅谷,这种力量可比舞刀弄棒酷多了。

 

参考链接:

https://slate.com/technology/2013/01/jeff-dean-facts-how-a-google-programmer-became-the-chuck-norris-of-the-internet.html

https://www.infoq.cn/article/rAJiubRpi9xSl_LEhI2N

2023-02-22 15:038037

评论 4 条评论

发布
用户头像
Dean确实是大拿,从事过6种语言的编译器或解释器的工作。我们就多种语言用用就好了。
2023-02-24 10:50 · 湖北
回复
用户头像
嘿~我也用过 18 种编程语言 = html、asp、php、jsp、basic、vb、c#、c++、java、as、js、go、erlang、elixir、ruby、python、rust、dart
2023-02-23 11:25 · 广东
回复
用户头像
Ubuntu
2023-02-23 10:03 · 江苏
回复
用户头像
百万美元年薪
2023-02-23 08:21 · 浙江
回复
没有更多了
发现更多内容

为什么OpenAPI是未来企业数字化转型的决定性因素?

平平无奇爱好科技

财务共享中心建设项目的变革管理与沟通机制

用友BIP

财务共享

强大的Git客户端Tower 密钥激活版最新

mac大玩家j

Mac软件 Git客户端

Wireshark的捕获过滤器

小魏写代码

华为云11.11 PaaS产品|云端援手:智能枢纽应对数字资产挑战

平平无奇爱好科技

FonesGo iPhone Unlocker for Mac(iPhone解锁工具)

Rose

iPhone解锁 FonesGo iPhone Unlocker Mac解锁软件

macbook翻译软件就用Translatium for Mac

Rose

翻译软件 Translatium中文版 Translatium下载 Translatium Mac Mac翻译工具

​🔒 一文带你了解多文件混淆加密

分布式基础概念-选举算法

派大星

分布式 Java 面试题

macbook屏幕亮度调整工具:Lunar Pro for Mac破解版 附Lunar Pro注册机

Rose

Mac屏幕亮度调整工具 Lunar Pro破解版 Lunar Pro注册机 Lunar Pro下载

天翼云以科技硬实力亮相第八届IDC中国数字化转型年度盛典

Geek_2d6073

华为云11.11 PaaS产品|精密云工程:智能激活业务速率限时优惠倒计时

平平无奇爱好科技

IBM SPSS Statistics v27.0.1中文破解版 spss详细图文安装教程

Rose

spss数据统计 IBM SPSS Statistics 27

「智造」第9期:一招砍成本、四档提效率,“智造”下半场如何仗剑破局?

用友BIP

智能制造

自然环境渲染工具Terragen 4 for mac破解版 附Terragen永久证书

Rose

Terragen 4破解 自然景观生成工具 Terragen 4下载 Terragen许可证书

IBM SPSS Statistics 27 Mac(spss统计分析软件)

展初云

Mac mac数据分析统计软件 IBM SPSS Statistics 27

GitKraken for Mac(Git客户端) v9.10中文版

展初云

git Mac软件 GitKraken

华为云11.11 PaaS产品|坐看云卷云舒:运维开发一步到位

平平无奇爱好科技

中国唯一!华为入选Gartner®企业低代码应用平台魔力象限

平平无奇爱好科技

强大的鼠标增强软件BetterMouse 激活版最新中文

胖墩儿不胖y

Mac软件 鼠标增强工具 鼠标管理工具

项目管理体系文件代码评审规范

金陵老街

软件开发文档

数智化赋能公立医院干部管理 激发组织活力

用友BIP

干部管理

ShareMouse 破解 for Mac共享鼠标工具 ShareMouse下载安装

Rose

mac软件下载 ShareMouse 破解版 Mac鼠标共享工具 ShareMouse下载

Moho Pro 14 for Mac(2D动画制作软件)附注册机v14.1激活版

Rose

Moho Pro 14下载 Moho Pro 14中文版 Moho Pro 14破解 二维动画制作

BetterMouse for Mac(鼠标增强软件)

展初云

Mac BetterMouse Mac鼠标辅助软件

Mac文本对比工具UltraCompare中文版 支持M/intel

Rose

文件对比工具 UltraCompare 中文版 UltraCompare 下载

Comsol Multiphysics for Mac(建模仿真软件) v6.2中文版

展初云

Mac COMSOL Multiphysics 物理场仿真软件

华为云11.11 PaaS产品|抢救未来增长策略:稳定、强力的云服务限时优惠进行中

平平无奇爱好科技

什么年代了,还不会 CI/CD 么?

极狐GitLab

CI/CD

万能蓝光播放器:Apeaksoft Blu-ray Player for Mac

Rose

Mac蓝光播放软件 Apeaksoft Blu-ray Player

谷歌最好的程序员Jeff Dean:我用过 18 种编程语言_语言 & 开发_褚杏娟_InfoQ精选文章