[2140] Reinvent the Wheel

Title Text:Right now it’s a bicycle wheel, so we’ve had to move to lighter vehicles, but the reduced overhead is worth it. There was one week when a wheel of cheese got dangerously close to the first page, though.

Origin:https://xkcd.com/2140/

https://www.explainxkcd.com/wiki/index.php/2140:_Reinvent_the_Wheel

改造轮子

现在我们搜到的是一个自行车轮子,所以我们不得不使用更轻的车辆,不过由此减少了开销所以也不亏。尽管有一周,一盘(wheel)奶酪曾经危险地靠近了搜索结果第一页。

https://mp.weixin.qq.com/s/DHBZMm7mnZjqeWYbQ2ZZjg

这种解释可能不完整或不正确:由一个奶酪轮创建。请在此提及为何此解释尚未完成。请勿过早删除此标记。如果您可以解决此问题,请编辑该页面!谢谢。

“重新发明轮子”是一个比喻,指的是重复创建先前已经创建或完善的内容而不在过程中添加任何值的重复工作。这句话与圆轮是很久以前发明的想法有关,而且从那个原始概念开始,没有人为轮子提出更好的形状。虽然短语包括“轮子”这个词,但它通常不直接与轮子相关联,而是使用“轮子”这个词,因为相信圆轮是一个古老的发明。

在这部漫画中,Beret Guy为一家汽车公司工作(或者这是他自己的公司),他向Ponytail解释他们决定不再为他们生产的汽车重新发明轮子,使用字面意义上的短语而不是比喻。相反,他们使用每日谷歌图像搜索“轮子”来确定排名最高的轮子,并简单地在他们当天生产的车辆上使用该轮子。

漫画的目的是取笑程序员,他们认为你不应该过于认真地重新发明轮子。当这些人遇到问题时,他们可能会谷歌找到问题的解决方案,当他们找到一个在线代码时,他们会在自己的代码中使用它,即使它最初并不是为了处理任务而设计的。它正在被使用。

程序员在避免重新发明轮子方面走得太远的另一种方式是使用外部依赖。使用外部库是有价值的,特别是对于某些任务具有奇怪边缘情况的应用程序,“重新发明”可能会错过或需要大量开发工作才能正确实现(如时间)。但是,使用其他人的代码意味着承担安全漏洞的风险,并且在实时安装中更新库时,用户还会承担库可能变得不可用或以其他方式中断的风险。在这种情况下,Beret Guy的公司每天都会通过Google的图片搜索更新他们的车轮“库”。谷歌不太可能关闭核心搜索产品,但众所周知他们会关闭人们喜欢的项目,比如Google Reader,他们可能会改变Beret Guy公司使用的API(除非他自己去他们的网站) 。

JavaScript开发社区因过度依赖自动包更新而导致了一些安全性和可靠性事件。在2016年,一个JavaScript开发人员从npm包存储库中取消发布了几个库(包括一个“库”,它只是用于填充字符串的十一行函数,但它包含在数千个项目中并且每月下载数百万次)。这打破了依赖于它们的项目,直到npm未发布他的软件包(带有新的维护者),也开启了一个坏人可以在这些名称下注册恶意项目并劫持他们所有家属的可能性。在2018年7月,攻击者获得了访问ESLint维护者的npm帐户并发布了其软件包的恶意版本,并且在2018年9月,事件流库被恶意维护者接管,他们添加了代码来查找和窃取比特币来自安装它的用户。

在这些情况下,为npm和其他包裹经理工作的人行使了他们的判断并最终修复了有问题的图书馆;据推测,Beret Guy可以很好地行使他的判断力(或者雇用一个明智的人在他的公司工作一次)并且只能“导入”经过审查以满足他的车辆需求的车轮。

标题文字表明Beret Guy目前正在为他的车辆使用自行车车轮,因为自行车车轮不能承受很大的重量,因此要求他的车辆更轻。他说,“减少[s]开销”,这实际上是真实的,他的车辆重量较轻,并且指的是通过使用外部库减少开发成本的通常的比喻愿望。最后,叙述者(据说贝雷特盖伊)解释说,在某一点上,一盘奶酪在谷歌图像搜索的顶部附近。如果它已达到顶部,那将是灾难性的,因为奶酪轮完全不适合用作车辆的车轮。

You May Also Like

[2981] Slingshots

[2980] Lava Lakes

[2979] Sky Alarm

More From Author

[2981] Slingshots

[2980] Lava Lakes

[2979] Sky Alarm

Leave a Reply

Your email address will not be published. Required fields are marked *