这个点子奏效了,也许有点太好了。通过把“赞”做成一个零阻力的手势,到了2012年,大家的点赞次数已经超过1万亿次,并且的确释放出了大量的验证。但是它的副作用也令人不安。我们发布了一张照之后片,就会坐在那里焦急地不断刷新页面,等待点赞数的增加。我们想知道为什么别人拿到的点赞数会比自己的多。于是我们开始给自己日常的在线行为放大功率:想变得更有趣、更刻薄、更迷人、更极端。
代码塑造了我们的生活。就像风投家MarcAndreessen所写那样:“软件蚕食整个世界”,尽管此刻说软件正在消化世界可能会更准确些。
从文化角度上来讲,代码是比较下层的存在。我们可以感觉到它对我们日常现实的神秘影响,但是却很少能看到它,而且对于非初学者来说有点高深莫测。(硅谷的人喜欢这样这有助于他们自我神话为巫师。)我们给电影、游戏和电视都立了十大排行榜,让那些塑造了我们灵魂的作品扬名立万。但是,即便代码跟这些类型的作品一样反映了时代思潮,我们却未曾坐下来汇编过世界上最重要的代码清单。
所以Slate杂志决定自己来做这件事。为了弄清楚有哪些让世界为之倾斜的软件,杂志编辑对计算机科学家、软件开发人员、历史学家、政策制定者以及新闻工作者进行了民意调查。这些人需要做出以下选择:哪些代码段影响巨大?哪些代码改变了我们的生活?约有75位受访者提出了各种各样的想法,Slate从中选择了36位。鉴于写成的有影响的代码如汗牛充栋,这里的清单并不完整,也不可能完整。(我很喜欢的一个并没有人选:快速排序算法!或者AdaLovelace的伯努利算法也许也算一个。)就像所有的榜单一样,它的目的是启发,去帮助我们重新思考代码是如何影响我们的生活,以及程序员所做的决策是如何影响未来的。
里面的有些代码你可能已经听说过,比如HTML什么的。有的代码功能强大(比如用来对概率建模的蒙特卡洛模拟),但一般人完全不知道是什么。有的则包含了致命错误,比方说波音737Max的缺陷。还有一些令人毛骨悚然,比方说让营销人员知道你是否已打开电子邮件的像素跟踪。
有一个趋势是很明显的:最重要的代码往往会通过消除阻力来塑造新行为。当软件让做某件事情变得更容易时,这种事情我们就会做得更多。1988年编写的代码第一次建立起“InternetRelayChat(IRC,多人在线交谈系统)”,这使得早期的网民彼此可以实时进行文字聊天。现在,实时文字聊天已经无处不在,从令人应接不暇的Slack职场闲聊吹水,到Twitch直播的钓鱼和反钓鱼之战,不一而足。
代码的影响可能会让所有人感到惊讶,包括写代码的人在内。—CliveThompson,《程序员:新部落的形成和世界的重塑(Coders:TheMakingofaNewTribeandtheRemakingoftheWorld)》作者
1、二进制穿孔卡片年代:1725
第一段代码
二进制编程早在计算机诞生之前就有了。大家认为BasileBouchon是第一个给纸片打孔并用来控制机器的人:1725年,他发明了一种织布机,这种机器可以根据送入的穿孔卡片的指令编织图案。打孔的是“1”,没有打孔是“0”。尽管此后东西发生了很大的变化,但代码的基本构建块并没有改变。—ElenaBotella,Slate
2、执行的第一段现代代码年代:1948
既开辟了计算机代码的使用,也引领了塑造冷战军备竞赛的核毁灭计算机模型的使用
ENIAC(电子数字积分计算机)是第一台可编程的电子计算机。机器于1945年建成,每解决一个新问题都要靠重新连线许多部件来完成。当一项任务(比如加法)完成时,会用一个脉冲来触发下一项任务。但是几年后,克拉拉·丹·冯·诺依曼和洛斯阿拉莫斯的科学家NicholasMetropolis对ENIAC重新进行了接线,让这台机器跑出来有史以来在任何计算机上执行的第一段现代代码:从可寻址只读存储器(ENIAC的函数表开关)执行数百条数字指令。他们模拟了新墨西哥州洛斯阿拉莫斯国家实验室正在评估的几种原子弹设计的爆炸情况,用蒙特卡洛技术来模拟一个复杂系统,几乎是一步步地把可能结果的概率分布呈现出来。冯·诺依曼和Metropolis)向洛斯阿拉莫斯的核科学家发送了20000多张卡片,跟踪弹头引爆后模拟中子的变化情况。知道今天,这段代码的子孙后代还在洛斯阿拉莫斯那里发挥作用。—ThomasHaigh,《ENIACinAction:MakingandRemakingtheModernComputer(ENIAC实战:现代计算机的制造和改造)》合著者
3、GraceHopper的编译器年代:1952
令计算机处理文字成为可能
来自维基百科
当GraceHopper决定通过以人类语言为基础来简化整个过程时,她正在对一台早期计算机进行编程。二战期间,Hopper加入了美国海军预备队,她知道,像她在部队的上司一样,大家都在努力去理解二进制代码。而如果编程语言是基于英语的话,那么这项工作就不会那么容易出错,并且对于那些没有数学博士学位的人来说也更加平易近人了。
一些人对这种想法嗤之以鼻,但1950年代初时,她设计出了一种编译器,也就是一组可以将更容易理解的代码转化为由机器处理的较低级代码的指令。通过这一工具,她和她的实验室开发出了FLOW-MATIC,这是第一种将英语纳入该过程的编程语言。——MollyOlmstead,Slate
4、星际飞行(Spacewar)!年代:1961年
SteveRussell,收集自
1961年末,一群年轻的MIT雇员、学生和同事(其中很多是TechModelRailroad俱乐部的成员)拿到了最近别人捐赠的DECPDP-1计算机的深夜使用权。属于非军事计算前沿技术的PDP-1售价为12万美元(按今天计算将超过100万美元),字长达18位,程序存储用的是纸带。这帮程序员用五个月的时间开发了一个游戏,里面是两名玩家控制着飞船(针和楔形物)进行一对一的太空战,同时还要避开位于屏幕中心的恒星的引力。
5、电子邮件的起源年代:1965
拜托,这是电子邮件。