1946年4月7日,也就是二战结束的次年,在美国纽约布鲁克林区的一个普通家庭,诞生了一个男婴。
男婴的父亲,是一家陀螺仪工厂的技术员。而他的母亲,则是一个普通家庭主妇。
对于这个家庭来说,刚刚经历完战争的波折,能够喜得贵子,是一件非常开心的事情。
夫妻俩对这个孩子寄予厚望,希望他长大之后,能够出人头地,成为一个顶尖的工程师(那时候工程师是个很有地位的职业)。
果然,这个名叫梅特卡夫的男婴没有辜负他们的期望。他长大后,在学习上表现出极高的天赋。1964年,他高中毕业,成功考上了全美顶级名校(也是当时一流工程师的摇篮)——麻省理工学院。
梅特卡夫的父母应该不会想到,自己的孩子后来不仅真的成为了一名顶尖工程师,更是创立了一家世界500强企业。他的一项伟大发明,改变了无数人的生活,也给IT产业的走向产生了深远影响。
是的,这个梅特卡夫,就是以太网(Ethernet)技术的发明人、著名科技公司3Com的创始人、梅特卡夫定律的提出者,罗伯特·梅兰克顿·梅特卡夫(Robert Melancton Metcalfe)。

罗伯特·梅兰克顿·梅特卡夫
1969年,23岁的梅特卡夫从麻省理工学院顺利毕业,拿到了电气工程和工商管理两个学位。一年后,他又拿到了哈佛大学的计算机科学硕士学位,并且继续攻读哈佛的博士学位。
在攻读博士学位期间,梅特卡夫在麻省理工学院的MAC项目组找了一份工作。这个MAC项目组,专门从事操作系统、计算理论和人工智能方面的研究,后来非常有名。
1969年,美国国防部推动建设的ARPANET(阿帕网,也就是互联网的前身)正式诞生,将四所名校的大型计算机进行了互联。

加州大学洛杉矶分校、加州大学圣巴巴拉分校、斯坦福大学、犹他州大学
梅特卡夫关注到了这一事件,觉得很有搞头。于是,他极力建议哈佛大学和麻省理工,将校内大型计算机系统也接入ARPANET。(梅特卡夫既是哈佛的研究生,也是麻省理工的研究员。)
傲慢的哈佛大学拒绝了他的建议,但麻省理工同意了。
很快,梅特卡夫完成了网络接口的搭建,将麻省理工的大型计算机连接到了ARPANET上。
基于自己的设计和研究(在ARPANET IMP和PDP-10分时小型机之间建立了一个高速网络接口和协议软件),他写了一篇博士论文,提交给哈佛大学的学位委员会。
1972年6月,梅特卡夫的博士论文答辩失败了,原因是学位委员会认为他的论文缺乏“数学性”和“理论性”。
打击并不仅仅来自于哈佛。在参与ARPANET项目时,梅特卡夫曾经带领10名美国电话电报公司(AT&T)的官员参观ARPANET演示。结果,系统在演示时崩溃了。
梅特卡夫在回忆中写道:
“我痛苦地抬起头,看到他们在嘲笑分组交换(数据包交换)的不可靠。……这一点我永远不会忘记。对他们来说,这证实了电路交换技术(传统固话所采用的技术)将继续存在,而分组交换是一种不可靠的玩具,永远不会对商业世界产生多大影响。”
接二连三的打击,让梅特卡夫有点失落。不久后,他收到了施乐公司(Xerox)帕洛阿尔托研究中心(Palo Alto Research Center)实验室主任鲍勃·泰勒(Bob Taylor,阿帕网的主要发起人之一)的热情邀请,让他加入实验室,完成自己的论文。梅特卡夫欣然同意。
帕洛阿尔托研究中心,就是著名的PARC实验室。

PARC实验室诞生了很多伟大发明,例如激光打印机、鼠标、图形化用户界面(GUI)、位图图形等。乔布斯苹果电脑的很多创新,都来自于这里。
来到PARC实验室之后,梅特卡夫很快开始了自己的工作。
当时,PARC实验室想要设计出世界上第一台个人计算机(也就是后来著名的Alto)。梅特卡夫的任务,就是为这个计算机设计一个网络接口,让它们互相连接起来。
建设一个多用户终端的计算机网络,最大的问题在于,如何协调各个计算机主机对网络的访问占用。

1960年代初期,计算机科学家伦纳德·克兰罗克(Leonard Kleinrock)提出,可以采用数学里的排队论,通过模拟交通拥堵和人们排队,来协调网络中的数据流。
ARPANET采用了这个理论,并证明了它行之有效。
1971年,夏威夷大学教授诺曼·艾布拉姆森(Norm Abramson),建立了一个名为ALOHAnet(ALOHA是夏威夷人常用的问候语)的无线电网络,采用了一种比ARPANET更“激进”的方案。
在ALOHAnet中,数据以微小数据包的形式传输。它并没有尝试避免数据包之间的冲突。相反,任何因冲突而导致消息丢失的用户,只需在随机的时间间隔后,重新尝试发包,即可。

ALOHA的工作原理
这就好比两个人说话。如果两边同时开始说话,那么双方会立刻停下来。稍后,再重启对话。几次尝试后,总会遇到一方没有说话的情况,问题就解决了。
大家会发现,ALOHAnet的策略,有个明显的缺陷:它比较浪费资源,在低流量的情况下,这种方式很有用,但当网络变得拥挤时,冲突会变得频繁,传输效率将大幅下降。
阅读了诺曼·艾布拉姆森的论文之后,梅特卡夫深受启发。很快,他对ALOHAnet的模型进行了改进,提出了一种新模型。
在新模型中,计算机主机会基于冲突频率,独立调整传输重试的等待时间。如果冲突发生的次数很少,他们会很快重试;如果网络拥挤,他们就会退出,以保持通信整体效率。
梅特卡夫的新模型,补足了自己论文的短板。很快,1973年5月,他终于通过了哈佛大学的答辩,获得了博士学位。(值得一提的是,哈佛大学并没有发布他的论文,而是麻省理工学院发布的,这让梅特卡夫耿耿于怀。)
在自己的研究项目中,梅特卡夫也引入了新模型。
1973年5月22日,梅特卡夫分发了一份名为“Alto Ethernet”的备忘录,正式提出了以太网(Ethernet)设想。
在备忘录中,梅特卡夫绘制了以太网的工作原理草图。他提出:“参与的站点,如AlohaNet或ARPAnet,会注入它们的数据包,它们以每秒兆比特的速度传播,会有碰撞、重传和后退。”

备忘录的部分页面
梅特卡夫的以太网设想,结合了诺曼·艾布拉姆森的随机重发机制、自己对系统时钟的调整以及ALOHAnet模型的其它改进,以减轻冲突的影响。
这些理论创新中,有一些是由其他研究人员开发的,但梅特卡夫是第一个将它们集成到实际网络设计中的人。
对于以太网这个名字的由来,小枣君有必要解释一下。
以前还没发现电磁波的时候,人们提出了以太(ether),认为它是无所不在的传输媒介(光就是通过以太传输)。后来,人们发现,以太其实并不存在。
梅特卡夫采用了“以太网”这名称,是将以太网同样视为一种传播媒介。他自己也得到了一个外号,叫做“以太爸爸(Ether Daddy)”。
1973年6月,梅特卡夫获准建造一个100个节点的原型以太网。
为了完成逻辑设计、构建电路板、编写微码等复杂工作,梅特卡夫找来了斯坦福大学的研究生大卫·博格斯(David R. Boggs)帮忙。

梅特卡夫(左)和博格斯(右)
1973年11月11日,在他们俩的努力下,世界上第一个以太网原型系统正式诞生。
当时,这个以太网的传输速率达到每秒2.94兆比特,比之前的终端网络快大约1万倍。
以太网技术诞生之后,梅特卡夫极力建议施乐公司能对这项技术进行商业化。但是,施乐公司管理层的响应速度非常缓慢,迟迟没有实际行动。
1979年,等了六年的梅特卡夫忍无可忍,离开了PARC实验室。他决定自己创办公司,推动以太网技术的普及。他所创立的这家公司,就是后来著名的通信网络企业——3Com。

3Com公司的名字,来自3个字母,分别是:computer(计算机)、communication(通信)、compatibility(兼容性)。这充分反映了梅特卡夫希望改善计算机通信兼容性的愿望。
3Com成立后,通过销售网络软件、以太网收发器,以及用于小型计算机和工作站的以太网卡,大大提高了以太网的商业可行性。
1980年,在梅特卡夫的撮合下,当时世界第二大计算机公司数字设备公司(DEC)、半导体公司英特尔公司(Intel)和大型系统供应商施乐公司(Xerox),共同组成了一个技术联盟,推出了DIX(三个公司的字母开头)以太网标准。
不久后,1983年,IEEE专门成立了工作组,基于DIX标准的变体,推出了IEEE 802.3标准。
最早的802.3,就是10BASE5,只有10Mbps的吞吐量,介质是粗同轴电缆,使用的是带有冲突检测的载波侦听多路访问(CSMA/CD,理工科同学应该都熟悉)的访问控制方法。
除了以太网之外,美国IBM公司和通用汽车公司也推出了自己的网络标准。
尤其是IBM的令牌环技术,和以太网形成了激烈的竞争。最终,经过20年的角逐,以太网胜出,令牌环被淘汰。
整个20世纪80年代,梅特卡夫都在推动以太网的普及。1984年3月21日,3Com公司成功上市。
80年代中期,梅特卡夫提出了一个重要观点,即:“一个网络的价值,和这个网络节点数的平方成正比”。这一观点,就是著名的“梅特卡夫定律”。
该定律对于理解网络效应和互联网经济的发展,具有重要的参考价值。

1990年,梅特卡夫离开了3Com公司,成为一名评论家和技术专栏作家。
那一时期的梅特卡夫,也犯了不少错误。他的一些奇怪言论,经常让自己成为媒体调侃的对象。
1995年,梅特卡夫认为互联网将在次年遭遇“灾难性崩溃”。他表示,如果自己预测错了,就把自己的话“吃掉”。
后来的事实证明,他确实预测错了。1997年,在第六届国际万维网会议上,他拿出了自己那篇文章的印刷本,把它和一些液体共同放入搅拌机。然后,在观众的欢呼声中,他坦然地吃掉了搅拌后的浆状物。一边吃,他还一边承认了自己的错误。
梅特卡夫的预测错误还包括:Linux将被Windows2000干掉;无线网络将在20世纪90年代中期被放弃;2006年,Windows和Linux将无法处理视频业务。……

不靠谱的预言家
2001年,梅特卡夫离开了媒体领域。他创办了北极星风险投资公司,转型为风险资本家。2011年,梅特卡夫前往德克萨斯大学奥斯汀分校,担任教授。
2022年,他时隔50多年之后,再次回到了麻省理工学院的计算机科学与人工智能实验室(之前的MAC,现在改名为CSAIL),成为一名研究员。
这期间,3Com公司也经历了不少风浪。
1999年,3Com的收入达到57亿美元的峰值。但是很快,互联网泡沫破碎,3Com跌下神坛,市值大幅缩水。2009年11月,3Com公司被惠普以27亿美元现金收购,退出了历史舞台。

晚年的梅特卡夫,因为自己在以太网方面的重大贡献,获奖无数。
1996年,他被授予IEEE荣誉勋章。2003年,他收到了国家技术奖章和马可尼奖。2007年,他入选了美国国家发明家名人堂。
前不久,也就是2023年3月22日,76岁的梅特卡夫被美国计算机协会(ACM)授予了2022年图灵奖,奖金高达100万美元(来自谷歌公司)。
谷歌研究和人工智能高级副总裁杰夫·迪恩(Jeff Dean)在ACM的官方声明中表示:
“今天,全球约有70亿个网络端口。以太网无处不在,我们对此习以为常。然而,人们很容易忘记,如果没有鲍勃·梅特卡夫的发明和努力(即每台计算机都必须联网),我们的互联世界就不会是现在的样子。”
杰夫·迪恩说的没错。以太网技术是人们数据通信网络的基石。作为以太网之父,梅特卡夫的贡献是极为巨大的。
如今,以太网仍然是全球有线网络通信的主要标准。它的处理数据速率,从2.94Mbps、10Mbps,一路升级到了现在的400Gbps、800Gbps,甚至1.6Tbps。

802.3这个令人熟悉的数字,将长期伴随着我们,直到被取代的那一天。
好啦,以上就是今天文章的全部内容,感谢大家的耐心阅读。如果您觉得写得不错,还请转发、点赞支持!谢谢!
1、《以太网发明者鲍勃·梅特卡夫获图灵奖》,澎湃新闻;
2、《图灵奖颁给了以太网之父!》,新智元;
3、《以太网50周年:以太网之父获图灵奖,2023路线图发布》,SDNLAB;
4、维基百科词条。
我正在研究使用EventMachine支持的twitter-streamrubygem来跟踪和捕获推文。我对整个事件编程有点陌生。我如何判断我在事件循环中所做的任何处理是否导致我落后?有没有简单的检查方法? 最佳答案 您可以通过使用周期性计时器并打印出耗时来确定延迟。如果您使用的是1秒的计时器,您应该已经过了大约1秒,如果它更长,您就知道您正在减慢react器的速度。@last=Time.now.to_fEM.add_periodic_timer(1)doputs"LATENCY:#{Time.now.to_f-@last}"@
这里还有一个新手问题:require'tasks/rails'我在每个Rails项目的根路径中的Rakefile中看到了这一行。我猜这行用于要求vendor/rails/railties/lib/tasks/rails.rb加载所有rake任务:$VERBOSE=nil#LoadRailsrakefileextensionsDir["#{File.dirname(__FILE__)}/*.rake"].each{|ext|loadext}#LoadanycustomrakefileextensionsDir["#{RAILS_ROOT}/lib/tasks/**/*.rake"].so
前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型
下面的代码通过ftp上传文件并且它有效。require'net/ftp'ftp=Net::FTP.newftp.passive=trueftp.connect("***")ftp.login("***","***")ftp.chdir"claimsecure-xml-files"ftp.putbinaryfile("file.xls",File.basename("file.xls"))ftp.quit但是如何确定上传是否成功呢? 最佳答案 之后ftp.putbinaryfile("file.xls",File.basename("
整理|王启隆透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。今天是2023年4月26日,在2017年的今天,中国首艘国产001A型航空母舰在大连完成了下水,从开工到下水,历时3年多时间。回首过去,眺望未来,在科技历史上的每个4月26日里,还发生过哪些影响深远的关键事件呢?1938年4月26日:编程校验领域图灵奖得主ManuelBlum出生曼纽尔·布卢姆(ManuelBlum)出生于1938年4月26日,他是委内瑞拉的计算机科学家、卡内基梅隆大学的教授,因对计算复杂度理论做出的贡献,以及在密码学和编程校验上的应用而获1995年图灵奖。布卢姆出生于委内瑞拉的一个犹太家庭,他曾在麻省理工学
我在尝试从它们的数组中检测某个字符串时遇到了一个奇怪的问题。有人知道这里发生了什么吗?(rdb:1)pmagic_string"TimePeriod"(rdb:1)pmagic_string.classString(rdb:1)pmagic_string=="TimePeriod"false(rdb:1)p"TimePeriod".length11(rdb:1)pmagic_string.length14(rdb:1)pmagic_string[0].chr"\357"(rdb:1)pmagic_string[1].chr"\273"(rdb:1)pmagic_string[2].c
我知道类方法告诉对象类的名称是什么,我怎么知道调用方法的名称?有办法知道吗? 最佳答案 ExaminingtheRubyCallStack共享此信息:您有没有想过在不引发异常的情况下查看调用堆栈?caller.each{|c|putsc} 关于ruby-有没有办法知道调用方法?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1859979/
begin#someroutinerescueretry#onthirdretry,output"nodice!"end我想让它在“第三次”重试时打印一条消息。 最佳答案 可能不是最好的解决方案,但一个简单的方法就是制作一个tries变量。tries=0begin#someroutinerescuetries+=1retryiftries 关于ruby:如何知道脚本是否在第3次重试?,我们在StackOverflow上找到一个类似的问题: https://st
有人知道RubySQL解析器吗? 最佳答案 这是一个使用rparsec完成的SQL解析器的示例:http://docs.codehaus.org/display/JPARSEC/SQL+parser+in+rparsec 关于sql-有人知道RubySQL解析器吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2488791/
我正在从csv导入数据,我需要将一些值转换为BigDecimal,如果无法解析则引发错误。根据测试,BigDecimal("invalidnumber")返回0的BigDecimal。这没问题,但有点乱,除了有效值为0...Float("invalidnumber")的行为不同并抛出异常...我目前的解决方案是:classStringdefto_bdbeginFloat(self)rescueraise"Unabletoparse:#{self}"endBigDecimal(self)endend我是否完全遗漏了什么? 最佳答案 在