来自 科技 2019-11-26 12:42 的文章

写代码也是一份人命关天的工作:盘点改变世界

  2009年,Facebook推出了一份改变世界的代码——点「赞」按钮。「赞」是包括LeahPearlman和JustinRosenstein在内的数名程序员和设计师的创意。他们认为Facebook用户经常太忙而无法在朋友的帖子上发表评论,但是如果有一个简单的按钮可以使用,那一定会大受欢迎。「朋友们可以更频繁、更轻松地相互点赞互动」,Pearlman说。
  这个按钮奏效了,甚至有点超乎想象。到2012年,「赞」这个按钮已经有了超过1万亿次的点击。但它也产生了副作用。我们发布一张照片后,会坐立不安地刷新页面,等待更多的「赞」。我们想知道为什么别人的赞越来越多。因此,我们开始在社交网络中「暗暗发力」:变得更有趣、更犀利、更迷人、更极端。
 
  代码重构了我们的生活。正如风险资本家MarcAndreessen写的那样,「软件正在吞噬整个世界」,不过说软件正在消化这个世界可能更准确。
 
  因此,美国Slate杂志做了这样一个调查。为了厘清改变世界的那些软件,编辑们对计算机科学家、软件开发人员、历史学家、政界人士和新闻工作者进行了民意调查。他们需要选择:哪些代码有巨大影响力?哪些改变了我们的生活?有75位人士提出了自己的想法,Slate选择了其中36位(译文有删减)。这并不是一个完整的清单,因为有影响力的代码太多。该清单旨在激发思想——帮助我们重新思考代码如何影响我们的生活以及程序员的决策如何影响未来。
 
  二进制穿孔卡片(1975年)
 
  第一种代码
 
  二进制编程出现时间比计算机都早。BasileBouchon是第一个在纸上打孔并用它来控制机器的人:1725年,他发明了一种织机,该织机根据所送入的穿孔纸编织出不同图案。打孔是「1」,没有打孔是「0」。此后机器发生了很多变化,但基本的代码组成并没有改变。——ElenaBotella,Slate
 
  执行的第一个现代代码(1948年)
 
  引领了计算机代码的使用和核灾难计算机模型的出现,为冷战时期的军备竞赛打下了基础
 
  电子数字积分计算机是第一台可编程电子计算机。它于1945年完成,通过在许多组件之间进行连接来为每个新问题进行配置。当一项任务(例如加法)完成时,一个脉冲会触发下一项任务。但是几年后,冯·诺依曼(VonNeumann)和LosAlamos的科学家NicholasMetropolis改进了ENIAC,运行了在计算机上执行的第一条现代代码:从可寻址的只读存储器(ENIAC的功能表开关)执行数百条数字指令。他们使用蒙特卡洛技术模拟了在新墨西哥州的洛斯阿拉莫斯国家实验室提出的几种原子弹设计的爆炸过程,通过这种方法逐步模拟了复杂系统,绘制了可能结果的概率分布。冯·诺依曼和梅特罗波利斯向洛斯阿拉莫斯的核科学家发送了20,000多张卡片,通过引爆弹头追踪了模拟中子的过程。如今,此代码的后续版本仍在洛斯阿拉莫斯使用。——ThomasHaigh,《ENIACinAction:MakingandRemakingtheModernComputer》合著者
 
  GRACEHOPPER的编译器(1952年)
 
  使计算机处理单词成为可能
 
  GraceHopper在对一台早期计算机编程时,为了简化整个过程决定将编程语言植根于人类语言。霍珀(Hopper)在第二次世界大战期间加入了美国海军预备役。她知道,像她的军事上司一样,人们都在努力理解二进制代码。如果编程语言可以是基于英语的,那么这项工作就不会那么容易出错,并且对于那些不是数学博士的人来说也更容易理解。
 
  一些人对此想法不以为然,但到了1950年代初,她设计了一个编译器,即一组指令,将一种更易懂的代码转换为机器直接处理的低级代码。她和她的实验室使用该工具开发了FLOW-MATIC,这是第一种将英文单词融入该过程的编程语言。——MollyOlmstead,Slate