NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

谷歌最好的程序员 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

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2023-02-22 15:037303

评论 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 · 浙江
回复
没有更多了
发现更多内容

克服传统企业数字化转型的十大阻力

天津汇柏科技有限公司

数字化转型

克魔助手抓包教程:网络数据包分析利器

Sketch for mac(专业矢量绘图设计软件)v99.1中文激活版

iMac小白

泛互联网行业A/B测试全解析:产品优化的创新之道

字节跳动数据平台

A/B 测试

Mac无损音乐播放器 Audirvana中文激活版下载

iMac小白

国外服务器租用:如何在预算内选择最优服务

一只扑棱蛾子

国外服务器

原型设计软件Axure RP 9 for Mac 中文正式破解版下载

iMac小白

一、nextjs如何使项目工程化(c-shopping电商开源)

Geek_9da61c

开源 eslint prettier husky next.js

华为云DTSE助力无锡云数IoT系统:打造超可靠数字化之源

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 华为云DTSE

智能开发助手——华为云CodeArts Snap,揭开智能研发新篇章

华为云PaaS服务小智

人工智能 华为云

阿里云容器服务助力万兴科技 AIGC 应用加速

阿里巴巴云原生

阿里云 云原生 容器服务

Spring Boot 整合 Camunda 实现工作流

EquatorCoco

Java 后端 开发 springboot

阿里云PolarDB开发者大会首度召开,让数据库开发像“搭积木”一样简单

阿里云瑶池数据库

数据库 云计算 阿里云 云原生 开发者大会

​食品饮料行业如何进行数字化转型?

万界星空科技

数字化转型 mes 万界星空科技 食品饮料行业数字化转型 食品MES

QCN9024 and QCN9074: Wallys DR9074 Triband Module ATH11k QSDK Supported

wallyslilly

QCN9074 QCN9024

FlowJo 10 for Mac(流式细胞分析软件)v10.4激活版

iMac小白

JNPF低代码平台的表单设计器

高端章鱼哥

低代码 表单设计 JNPF

鸿蒙Next来了,企业应该如何快速应对

Onegun

鸿蒙 鸿蒙系统

Premiere Pro 2024 for Mac(PR 2024视频编辑软件)v24.1中文激活版

iMac小白

详解KubeEdge EdgeMesh v1.15 边缘CNI特性

华为云开发者联盟

开发 华为云 容器网络 华为云开发者联盟

NTFS Disk by Omi NTFS for mac (NTFS 磁盘管理器)v1.1.4中文版下载

iMac小白

微信公众号短链实时获取阅读量、点赞数爬虫方案(不会Hook可用)

不在线第一只蜗牛

爬虫 微信公众号 工具分享 hook

喜报!博睿数据荣获数据猿“年度创新服务企业奖、年度创新服务产品奖”

博睿数据

可观测性 博睿数据 运维监控

“一次不过、免费再考” 限时活动开启,快来考取亚马逊云科技认证吧!

亚马逊云科技 (Amazon Web Services)

培训与认证

手机崩溃日志的查找与分析

雪奈椰子

Web Components从技术解析到生态应用个人心得指北

zhoulujun

一款轻量级、基于Java语言开发的低代码开发框架,开箱即用!

互联网工科生

Java 低代码 数字化 开发框架 JNPF

万界星空科技注塑行业生产管理MES系统管理

万界星空科技

mes 万界星空科技 注塑制造业 注塑MES 注塑生产管理系统

百度基于金融场景构建高实时、高可用的分布式数据传输系统的技术实践

JackJiang

网络编程 即时通讯 IM

Permute 3 for mac(全能媒体格式转换器)v3.11.4中文版下载

iMac小白

ClickHouse分析效率翻倍提升,揭秘奇点云对归因分析场景的优化实践

先锋IT

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