短短几行代码对全球产生巨大影响
1997年,Ethan Zuckerman发明了弹出式广告,从而打破了互联网。
他在Tripod.com工作,一家允许人们免费制作小网页的在线服务公司。为了赚钱,Tripod将广告与页面并排出售。问题是,广告最终会出现在淫秽内容的旁边——比如用户的情色页面——而广告商不喜欢这样。
祖曼的老板让他想出一些解决办法。有没有什么方法可以定位广告,让它们不在sexytime用户生成内容旁边?
这时候,祖克曼想出了一个奇怪而老套的解决方案:当你访问一个Tripod页面时,它会生成一个全新的弹出页面,只有广告。这样,从技术上来说,广告不会与任何特定的用户页面相关联。它只是浮在屏幕上。
然而,事情是这样的:祖克曼的JAVAscript创建了弹出广告?它非常短,只有一行代码:
window.open('http://tripod.com/navbar.html' "width=200, height=400, toolbar=no, scrollbars=no, resizable=no, target=_top");
基本上,JavaScript告诉浏览器打开一个新窗口,该窗口宽200像素,高400像素,顶部没有滚动条或工具栏,位于任何其他当前打开的网页的顶部。
简单,但是有害!很快,商业网站复制了祖克曼的创新,互联网上充斥着弹出广告。我在00年代早期认识的一个在下载网站工作的程序员告诉我,他们的大部分收入来自色情弹出广告。
你一定见过弹出式广告。毫无疑问,你恨他们。幸运的是,您使用的浏览器现在可以抑制它们。
正如祖克曼所说,他写了一行代码“让世界变得更糟”。
我在祖克曼为你写的一篇文章里读到了他的故事。你不应该理解这个:26行代码如何改变世界。这是一个非常有趣的短文集,由Torie Bosch编辑,反映了世界在其轴上倾斜的代码片段。
让我着迷的是这些片段大多有多短。这与许多关于编码的流行文化假设完全相反,这些假设通常表明重要的代码是巨大的。好莱坞喜欢用手指形容“程序员编程”,绝对含糊不清,倒出尼亚加拉瀑布般的代码。谷歌一家独大的故事过去常常提到它的“20亿行代码”,好像绝对权重是该公司成功的原因。
通常情况相反。事实上,谷歌的原始创新——一段让谷歌在20世纪90年代超越其搜索引擎同行的代码——是其“PageRank”算法,该算法根据链接到网页的其他页面的数量以及这些链接页面的质量来计算网页的价值。这不是一个长代码;人家用Python/ target=_blank class=infotextkey>Python做了自己的版本,也就几十行。
当然,谷歌的整体运营——就像任何大型科技公司的运营一样——涉及成千上万的流程来保持其运行。这就是他们的总代码库变得如此庞大的原因。但是一些最有影响力的代码可能非常简洁。
你应该读完整本书(或者作为节日礼物送给书呆子),因为例子很吸引人,也很广泛。查尔顿·麦克韦恩(Charlton McIlwAIn)在20世纪60年代末开发的“police beat algorithm”有一章试图预测哪里最有可能发生犯罪,以便执法机构可以向那里派遣更多警察。当然,这最终形成了一个种族主义的反馈循环:由于贫穷的黑人社区相比白人社区已经被过度监管,算法表明那里有更多的警力,导致更多的逮捕,这说服了算法派出更多的警察;冲洗并重复。
警察巡逻算法不是很长;在2005年,你不应该理解这个,艺术家凯利·查德勒画了它...
Police beat algorithm 不是很长;在《你不应该理解这一点》一书中,艺术家凯利·查德勒(Kelly Chudler)把它画了出来……
这是另一个改变世界的较短代码:“跟踪像素”。
正如Lily Hay Newman在她关于跟踪像素的章节中指出的,你可能每天都在不知不觉中与这些代码进行交互。基本上,它是一小段HTML,在电子邮件中嵌入了一个小像素,小到你看不见它。然而,如果有人给我发了一封带有这个跟踪代码的电子邮件,它就会监视我。它是这样工作的:当我打开消息时,代码要求我的浏览器请求那个单像素图像。给我发邮件的人在看,嘿,克莱夫的浏览器请求像素了吗?如此有效,给我发邮件的人在我打开的一瞬间就能知道。
将跟踪像素放入电子邮件非常简单——只需一行代码:
这是最后一个比较老的例子!书中有一章(由 Ellen R. Stofan 和 Nick Partridge 撰写)讲述了阿波罗11号登月任务登月舱的“救援”代码。“救援”代码运行在登月舱的微型机载计算机上,旨在帮助确定事情的优先级:如果计算机过载,它将丢弃除最重要的工作之外的所有工作。
当登月舱接近月球时,这被证明是非常重要的,因为可以肯定的是,计算机已经超载了。“救援”代码立即开始行动,关闭所有对登月舱着陆不太重要的东西。它甚至关闭了登月舱中的一些显示系统,这吓坏了宇航员。但它成功了:登月舱安全着陆。
下面是代码——只有22行......
POODOO INHINT CA Q TS ALMCADR TC BANKCALL CADR VAC5STOR # STORE ERASABLES FOR DEBUGGING PURPOSES. INDEX ALMCADR CAF 0 ABORT2 TC BORTENT OCT77770 OCT 77770 # DONT MOVE CA V37FLBIT # IS AVERAGE G ON MASK FLAGWRD7 CCS A TC WHIMPER -1 # YES. DONT DO POODOO. DO BAILOUT. TC DOWNFLAG ADRES STATEFLG TC DOWNFLAG ADRES REINTFLG TC DOWNFLAG ADRES NODOFLAG TC BANKCALL CADR MR.KLEAN TC WHIMPER
这本书真的很精彩——非常值得一读!