搜索

人类历史上最重要的36个代码片段(三)

神译局 · 2019-10-30
阿波罗11号、JPEG、第一个弹出式广告,以及另外33个改变了世界的代码段。

神译局是36氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。

编者按:Marc Andreessen十年前说的“软件蚕食世界”不仅完全正确,而且似乎不仅如此:软件正在重塑世界。人类世界的运转已经无法离开软件。在浩如烟海的软件代码当中,哪些对我们起到了关键作用呢?Slate网站邀请了各方人士对那些改变了一切的代码进行评选,这里筛选出36个代码片段。如果你有更好的选项,不妨在评论区留下你的意见。原文作者是Future Tense,标题是:The Lines of Code That Changed Everything。鉴于篇幅太长,我们将分三部分刊出,此为第三部分。

人类历史上最重要的36个代码片段(一)

人类历史上最重要的36个代码片段(二)

25、GeoCities鼠标轨迹

年代:1990年代中期

它让网站最平凡的元素也能酷炫起来。

JSFX.FireSpark.prototype.changeColour = function()
{
 var colour="";

 r2= Math.random()*255;
 g2= r2;
 b2= 0;

 if(!(r2 | g2 | b2))
 {
   r2=255;
   g2=255;
   b2=0;
 }

 colour = "#" + dec2hex(r2) + dec2hex(g2) + dec2hex(b2);
 this.setBgColor(colour);
}

Roy Whittle

Douglas Englebart和Bill English在1960年代后期发明的鼠标改变了我们与计算机沟通的方式。尽管使用鼠标很直观,但当时的显示技术通常无法跟上鼠标的快速移动。操作系统开发人员于是添加了鼠标轨迹,也就是瞬时的阴影图像,显示出光标在之前的位置,从而更易于跟踪和查找。

在1990年代中期,GeoCities 是第一个提供免费服务,让用户可以轻松创建自己的Web内容的公司。GeoCities 所见即所得(WYSIWYG)的编辑器使得创建者可以轻松地拖拽内容,添加自定义的代码段,包括用于定制访问者看到的鼠标轨迹的代码。在GeoCities的网页上,你的光标可以留下童话般的灰尘、气泡或小小的万圣节蝙蝠的痕迹。这些绚丽的像素是一个时代的缩影,说明我们已经能够自己建立自己的“网络空间”——Nikki Stevens,亚利桑那州立大学博士研究生

26、RSS(简单信息聚合)

年代:1999

让大家在一个地方就能阅读《纽约时报》、Gizmodo 以及Garfield Minus Garfield。

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
 <channel>
   <title>RSS Title</title>
   <description>This is an example of an RSS feed</description>
   <link>http://www.example.com/main.html</link>
   <lastBuildDate>Mon, 06 Sep 2010 00:01:00 +0000 </lastBuildDate>
   <pubDate>Sun, 06 Sep 2009 16:20:00 +0000</pubDate>
   <ttl>1800</ttl>

   <item>
     <title>Example entry</title>
     <description>Here is some text containing an interesting description.</description>
     <link>http://www.example.com/blog/post/1</link>
     <guid isPermaLink="false">7bd204c6-1655-4c27-aeee-53f933c5395f</guid>
     <pubDate>Sun, 06 Sep 2009 16:20:00 +0000</pubDate>
   </item>

 </channel>
</rss>

维基百科

通过将新闻报道、博客、blawgs(法律博客)、播客以及其它web内容形式发布成标准格式,RSS代码让你可以用一种简单、有效以及高效的方式去消费各种信息来源。在巅峰时期,大概是从2005年Google Reader推出到2013年Aaron Swartz(致力于RSS 1.0开发的互联网自由主义者)不幸去世的这段时间内,RSS几乎就相当于在去中心化的互联网上发布的代名词。尽管Google Reader已经不复存在,但从新闻聚合器到播客应用,RSS依旧站在可用互联网的最前沿。——David S. Levine,埃隆大学法学院副教授

27、消失的火星气候轨道器

年代:1999

一个数学错误导致一项任务失败

1999年9月23日,NASA的科学家与价值1.25亿美元的火星气候轨道器失去了联系。经过调查,确定了失联的原因:一家承包商用英制单位给轨道器写了程序,但是NASA的软件用的却是公制。就因为两段代码之间简单的沟通错误,导致轨道器飞到了未知的地方。

很容易会把这种公制——英制的错误当作意外错误而一笔勾销,但这说明了当今软件互联的世界是多么的脆弱。所有的连接技术(电话、宇宙飞船、机器人榨汁机等等)都要靠接口来定义与它者的通信方式。哪怕是最小的差错也会导致混乱。——Charles Duan

28、将地狱火导弹挂接无人机的代码

年代:大约2000–2001年

开辟了无人机战争的先河。

 “捕食者”无人机早期版本的武器化是个标志性的时刻,不仅在技术史上如此,在军事和政治史上亦然。现在,无人系统已经遍布整个战场,重塑了士兵的作战方式,甚至改变士兵的来源。捕食者的武器化也使得美国进入了“无人机战争”的时代。而且,随着鉴于机器人日益自动化、武器化引起的问题,我们现在才刚刚开始。一个简单的程序可能就会带来法律上、道德上甚至是生存性的问题。——PW Singer,《连线战争:21世纪的机器人革命与冲突》作者

29、Roomba的导向系统

年代:2002

为技术(和猫)在现实世界的移动建立了新途径

(define-behavior (bounce
       :start-when (or (bump?)
                     bounce-trigger? )
       :abort-when (bump-edge?)
       :onetime? t
     )
)

iRobot

你永远也不会忘记自己的第一台Roomba:我的大概是在17年前在一个朋友家。当它在房子里面嗡嗡地由着自己的性子转来转去时,我正坐在沙发上哈哈大笑。这是机器人革命的曙光,一场看起来很蠢但是又很认真的革命。(跟炸弹清理机器有着一样DNA的机器人正在数百万个家庭里面吸尘,这一点着实让人吃惊。)从那以后,别人再也难以复制它的成功。Roomba证明,尽管我们的注意力重心已经开始向硬件倾斜(比如波士顿动力怪异的膝盖向后弯、会开门的机器狗)上,但软件对于一件产品的广泛采用可能更为重要。阿西莫夫化的iRobot并没有创造出第一个真空吸尘机器人,但是Roomba成为一个必备的利基产品不是因为它吸尘效果好,而是因为它在房间里面的导航效果不错。就像成千上万的小猫视频可以证明那样,在现代计算时代,几乎没有什么东西能比看着Roomba撞到桌腿、转圈一周然后前进更令人满足的了。——Lowen Liu,Slate

30、无线网络的比例公平调度

年代:约2003年

令手机网络成为可能的解决方案

[~, b_user] = max(drc(i, :)/_avg_thruput(i, :));
avg_thruput(i+1, :) = (i/(i+1))*avg_thruput(i, :);
avg_thruput(i+1, b_user) = (i/(i+1))*avg_thruput(i, b_user)+drc(i, b_user)/(i+1);

“使用路径分集公平地最大化吞吐量的定向发射机多接收机系统”,美国专利第6444990号,2002年9月10日

任何时候在任何一个地方,手机的数量通常都要比基站数量多。如果不进行调解的话,所有的传输都会相互干扰并阻碍信息的可靠接收。因此,基站需要解决优先级问题:确保所有用户都能完成通话,同时还要考虑到在嘈杂环境的用户需要赋予更多资源才能得到同样服务质量这一点。解决方案?要在个体用户需求与网络整体性能之间进行折衷。比例公平调度可确保所有用户至少享有最低级别的服务,同时最大程度地提高总的网络吞吐量。这是通过将较低的优先级赋予预期需要更多资源的用户来实现的。仅三行代码就让全球所有的3G和4G无线网络正常工作。——Lav Varshney

31、比特币

年代:2008年

激发大家对一种货币的信心的代码,没有它就没有这种货币

double AttackerSuccessProbability(double q, int z)
{
   double p = 1.0 - q;
   double lambda = z * (q / p);
   double sum = 1.0;
   int i, k;
   for (k = 0; k <= z; k++)
   {
       double poisson = exp(-lambda);
       for (i = 1; i <= k; i++)
           poisson *= lambda / i;
       sum -= poisson * (1 - pow(q / p, z - k));
   }
   return sum;
}

中本聪

不管你是比特币的布道者还是怀疑者,或者不大确定它是什么,你大概都知道这可是个大事物。比特币本身已经获得了数千亿美元的直接投资,但是也许更重要的是,其基础的技术原理,也就是区块链,似乎有着无穷无尽的应用,从确保民主选举到结束非自愿的性接触等等都在它的应用范围。

这一切始于2008年,当匿名的中本聪发表了一份白皮书,宣布要推出比特币。上述代码就是实现的一部分,这些代码的作用是计算出攻击者接管比特币区块链的可能性极小。这里的数学让世界相信,由不可靠的人组成的系统仍然可以信任,这为至少2777种其他加密货币的创建铺平了道路。——Elena Botella

32、Conficker 蠕虫

年代:2008年10月至2009年

把受感染的计算机变成恶意的机器人大军,同时又保护其他的一些计算机

; BOOL __cdecl HasUkrainianLocale()
               push    ebx
               mov     ebx, ds:GetKeyboardLayoutList
               push    ebp
               push    esi
               xor     ebp, ebp
               push    ebp
               push    ebp
               call    ebx
               mov     esi, eax
               cmp     esi, ebp
               jz      short loc_37680A

这段代码是安全研究人员Tillmann Werner和Felix Leder 编写的,后来还进行了功能等效性测试,为的是理解和对抗Conficker 蠕虫。

Tillmann Werner和Felix Leder

十年前,感染Conficker的计算机数量多达1500万台。这是一种利用Windows操作系统的漏洞的病毒。这种病毒虽然令人恐惧,但也因为它的老辣而备受推崇:它会邀请每一台计算机加入到庞大的僵尸大军,等候命令下达,还会阻止受感染的计算机打开安全程序或下载可以清除病毒的补丁程序。其最早版本还有一个非常有趣且很能说明问题的怪癖:如果驻留在任何使用乌克兰键盘或乌克兰IP地址的系统就会自毁。多年后,对该病毒进行逆向工程的主管部门和研究人员得出结论,Conficker的开发者确实是乌克兰人,他们这样设计病毒是为了避免违反自己国家的法律。幸运的是,这些黑客一直都没有动用过那支僵尸大军来作恶,截至到2018年,估计仍有35万台计算机感染这种病毒,这提醒我们娴熟的程序员要想发动国际攻击,有选择地对用户造成破坏可以是多么的容易。——Jane C. Hu

33、点赞按钮

年代:2009

它催生了监视经济。

{"__typename":"PageLikeAction","action_type":"LIKE","label":{"text":"Like"}

2019年9月的Facebook.com 网站

Facebook把点“赞”按钮当作向世界展示我们喜欢辛普森一家或炸薯条的一种手段来兜售。。但实际上,它利用了我们的认知偏见,以及设计的力量,去诱使我们分享更多的信息。由于有了前面Sara Wachter-Boettcher介绍过的像素跟踪,它跟踪我们在互联网的行踪,收集有关我们浏览习惯的数据。Facebook拿走这些信息,再把自己的行为定向广告算法卖给广告主。如果一家户外用品公司想要做广告,Facebook可以锁定那些以前“赞”过远足的文章,访问过露营网站以及有户外朋友的人。当这些用户“赞”了相关公司的广告时,这些信息就会反馈会定向广告算法里面。这样一来,监视和商业操纵就形成了周而复始的循环。这一切都是因为一个小小的蓝色大拇指。——Ari Ezra Waldman,纽约法学院教授

34、HTTP严格传输安全(HTTP Strict Transport Security,HSTS)

年代:2009年左右

默认开启安全通道来保护网站安全

Strict-Transport-Security: max-age=31536000; includeSubDomains

Mozilla开发人员指南

当你通过普通HTTP协议将信息发送到网站时,这是会泄漏的——别人可能会拦截这段信息并窃听你的信用卡、健康信息以及伴侣的宠物名什么的。HTTPS可以加密你的流量,避免别人窥探信息,但是很长一段时间以来,使用这种更先进的协议一直都是可选的。因此就有了HTTP Strict Transport Security,此这种安全措施可确保从一开始往来该网站的流量就是加密的。如果你想要访问http://google.com,它会自动将你重定向到https://google.com。这就是HSTS的作用。

HSTS还没有普及:估计只有11.1%的网站用到。但2015年春天,重要一刻降临,美国联邦政府和行业合作伙伴对19个政府领域实施HSTS,其中包括Whitehouse.gov,AIDS.gov和donotcall.gov。此后不久,所有联邦机构均要求采用该标准。——Rusty D. Pickens,奥巴马政府白宫前代理新媒体总监

35、Heartbleed漏洞

年代:2012年编写,2014年被发现

计算史上传播最广、危害最大的安全漏洞之一

buffer = OPENSSL_malloc(1 + 2 + payload + padding);
bp = buffer;

/* Enter response type, length and copy payload */
*bp++ = TLS1_HB_RESPONSE;
s2n(payload, bp);
memcpy(bp, pl, payload);
bp += payload;
/* Random padding */
RAND_pseudo_bytes(bp, padding);

来自Naked Security

2014年,安全研究人员在OpenSSL(一个非常受欢迎的开源库)中发现了一个漏洞,大约有三分之二的网站(包括DropBox ,Twitter,Yahoo和GitHub)都用到它——用于在两台计算机之间进行在线通信。Heartbleed使得犯罪分子可以通过影响数百万台设备的缓冲区读取漏洞来窃取未加密的机密信息,包括凭据和加密密钥等。这让大家注意到了依靠开源软件来实现关键安全功能所带来的风险,以及识别已被使用多年的代码漏洞的挑战。从更积极的意义上来说,Heartbleed的发现也引发了迅速而有效的全球反应,包括在全球范围内进行的协调宣传和补救工作,其力度和广度均远远超出了以前针对早期漏洞的许多同类行动。-塔夫茨大学助理教授Josephine Wolff

36、波音737 Max

年代:2017年推出

软件错误,加上企业的贪婪,导致数百人丧生,以及大批飞机停飞。

2018年10月,狮航610航班起飞后不久就发生了一次似乎非常怪异的事故,然后坠入海中。波音向公众保证飞机是安全的,并表示需要进行更多的飞行员培训以及“软件升级”。但是仅仅四个月后,埃塞俄比亚航空的一名飞行员抬升机头的努力做了20次,但飞机的自动系统仍然把机头往下推。起飞后的几分钟内,机上所有人员均告死亡。作为对事故的响应,全球的民航当局这这一型号的飞机都停飞了。调查显示,坠机事故是因为737 Max的设计引起的,尤其是鲜为人知,了解程度不高的软件,可能会强制飞机反复做俯冲动作。——技术史学家,《写入程序的不平等》作者Mar Hicks

译者:boxi。




+1
14

好文章,需要你的鼓励

参与评论
登录后才能参与讨论哦...
后参与讨论
提交评论0/1000

请回复有价值的信息,无意义的评论将很快被删除,账号将被禁止发言。

下一篇

阿波罗11号、JPEG、第一个弹出式广告,以及另外33个改变了世界的代码段。

2019-10-30

36氪APP让一部分人先看到未来
36氪
鲸准
氪空间

为你推送和解读最前沿、最有料的科技创投资讯

一级市场金融信息和系统服务提供商

聚集全球最优秀的创业者,项目融资率接近97%,领跑行业