枪迷或者看过尼古拉斯.凯奇(Nicolas Cage)主演的电影“战争之王”(Lord of
War)的人也许还记得影片开头的一段话:(在所有轻武器中,)最有名的是阿卡 47( AK47)冲锋枪(也就是中国的五六式冲锋枪的原型),因为它从不卡壳、从不损坏、可在任何环境下使用、可靠性好、杀伤力大并且操作简单。
我认为,在计算机中一个好的算法,应该向阿卡 47 冲锋枪那样简单、有效、可靠性好而且容易读懂(或者说易操作),而不应该是故弄玄虚。Google 的杰出工程师阿米特.辛格博士 (Amit Singhal) 就是为 Google 设计阿卡 47 冲锋枪的人,在公司内部,Google 的排序算法便是以他的名字命名的。
从加入 Google 的第一天,我就开始了和辛格长期而愉快的合作,而他一直是我的一个良师益友。辛格、Matt Cutts(中国一些用户误认为他是联邦调查局特工,当然他不是)、马丁和我四个人当时一同研究和解决网络搜索中的问题(Spam)。我们需要建一个分类器,我以前一直在学术界工作和学习,比较倾向找一个很漂亮的解决方案。我设计了一个很完美的分类器,大约要花三个月到半年时间来实现和训练,而辛格认为找个简单有效的办法就行了。我们于是尽可能简化问题,一、两个月就把的数量减少了一半。当时我们和公司工程副总裁罗森打了个赌,如果我们能减少
40% 的,他就送我们四个家庭去夏威夷度假,后来罗森真的履约了。这个分类器设计得非常小巧(只用很小的内存),而且非常快速(几台服务器就能处理全球搜索的分类),至今运行得很好。
后来我和辛格一起又完成了许多项目,包括对中、日、韩文排名算法的改进。每一次,辛格总是坚持找简单有效的解决方案。这种做法在 Google 这个人才济济的公司常常招人反对,因为很多资深的工程师怀疑这些简单方法的有效性。不少人试图用精确而复杂的办法对辛格的设计的各种“阿卡47” 进行改进,后来发现几乎所有时候,辛格的简单方法都接近最优化的解决方案,而且还快得多。另一条选择简单方案的原因是这样设计的系统很容易查错(debug)。
当然,辛格之所以总是能找到那些简单有效的方法,不是靠直觉,更不是撞大运,而是靠他丰富的研究经验。辛格早年从师于搜索大师萨尔顿(Salton)教授,毕业后就职于 AT&T 实验室。在那里,他和两个同事半年就搭起了一个中等规模的搜索引擎,这个引擎索引的网页数量虽然无法和商用的引擎相比,但是准确性却非常好。在 AT&T,他对搜索问题的各个细节进行了仔细的研究,他的那些简单而有效的解决方案,常常是深思熟虑去伪存真的结果。
辛格非常鼓励年轻人不怕失败,大胆尝试。一次一位刚毕业不久的工程师因为把带有错误的程序推出到 Google 的服务器上而惶惶不可终日。辛格安慰她讲,你知道,我在 Google 犯的最大一次错误是曾经将所有网页的相关性得分全部变成了零,于是所有搜索的结果全部是随机的了。这位工程师后来为 Google 开发了很多好的产品。
辛格在 AT&T 时确立了他在学术界的地位,但是,他不是一个满足于做实验写论文的人,于是他离开了实验室来到了当时只有百、十人的 Google。在这里,他得以施展才智,重写了 Google 的排名算法,并且一直在负责改进它。辛格因为舍不得放下两个孩子,很少参加各种会议,但是他仍然被学术界公认为是当今最权威的网络搜索专家。2005年,辛格作为杰出校友被请回母校康乃尔大学计算机系在 40 年系庆上作报告,获得这一殊荣的还有大名鼎鼎的美国工程院院士,计算机独立磁盘冗余阵列(RAID)的发明人凯茨(Randy Katz)
教授。
来自:http://googlechinablog.com/2006/07/google-47.html
分享到:
相关推荐
Acappella阿卡贝拉课堂安利PPT教学课件.pptx
徐州阿卡产品目录pdf,徐州阿卡调节阀及阀门定位器介绍
Logactaesque Akka实验 使用 akka 演员系统玩足球比赛...
akarsite:阿卡网站
java8 集合源码分析 java 实例来自from Oracle官方并发教程 Thread Objects 线程对象 #####定义并启动一个线程 任务:创建线程打印hello ...定义并启动一个Actor也是很简单的 ...如java线程不同,akka执行完成后是不会自动...
闲话摆弄实现电影数据库的Toy项目,功能包括: Rest接口,使用Spray-json解析json 挥舞着记录路线和json Java定义的接口的Scala实现
德国阿卡 Series 530 Steam Conditioning Valves产品手册(英文)pdf,德国阿卡 Series 530 Steam Conditioning Valves产品手册(英文)
德国阿卡 Series 340/350 Angle Type Valves产品手册(英文)pdf,德国阿卡 Series 340/350 Angle Type Valves产品手册(英文)
这是一个可以有多种形式实现选项阿卡的小例子
德国阿卡 Series 8C-6N-6H Single-Seat Control Valves ECOTROL产品手册(英文)pdf,德国阿卡 Series 8C-6N-6H Single-Seat Control Valves ECOTROL产品手册(英文)
活化剂-akka-scala-seed 使用 Scala 构建的 Akka 的最小种子模板
微型计算机原理--阿卡嵌入式技术开放实验室系列普及讲座.非常详细的计算机原理讲座胶片.另外附有对应的计算机部件实物图片.
feruhi.github.io 页面 这是我的网站 所有其他链接都将被删除
阿卡聊天使用 Akka 和 Scala 的简单聊天服务器。1. 第一个版本演员 ChatServer:加入和离开聊天组,向所有当前聊天成员广播传入消息演员 ChatClient:加入聊天组,广播第一条介绍信息ChatApp:首先运行具有三个 ...
阿卡在行动 这些示例的灵感来自 Raymond Rosestenburg、Rob Bakker、Rob Williams 合着的 Akka In Action 尽管书籍示例有一个 github 存储库 - 我发现消息的命名约定令人困惑,并且在进一步阅读诸如 Effective ...
计算机视觉中的数学方法.pdf
阿卡学习测试测试AKKA\n
苏斯问题阿卡巴拉姆! Cansado de ter que顾问是否可以列出lembrar queméquem的名单? 苏斯问题是阿卡巴拉姆。 扩展:Quadrilha,自动添加到citados pelo apelido carinhoso criado pelo De Propina da Odebrecht。...
======== 阿卡-irc Scala 和 Akka 中类似 IRC 的简单客户端和服务器实现。 感谢 LSUG 的人为使它更像 Scala 所做的贡献。 怎么跑 这个程序需要安装 Simple Build Tool ,它要求你至少有 java 1.6。 build.sbt 文件...
阿卡 . . 使用 akka 和其他流行技术的基于 Scala 的轻量级服务框架。 . 使用 Scala、Akka、Spray 和 Camel/ActiveMQ 的微服务示例 . Lagom 框架用于编写基于 Java 的微服务的示例用法 分析 . 作为 Node.js 微服务的...