0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

那些有着巨大影响力的代码盘点

strongerHuang 来源:机器之心 作者:机器之心 2021-10-12 15:46 次阅读

2009 年,Facebook 推出了一份改变世界的代码——点「赞」按钮。「赞」是包括 Leah Pearlman 和 Justin Rosenstein 在内的数名程序员和设计师的创意。他们认为 Facebook 用户经常太忙而无法在朋友的帖子上发表评论,但是如果有一个简单的按钮可以使用,那一定会大受欢迎。「朋友们可以更频繁、更轻松地相互点赞互动」,Pearlman 说。

这个按钮奏效了,甚至有点超乎想象。到 2012 年,「赞」这个按钮已经有了超过 1 万亿次的点击。但它也产生了副作用。我们发布一张照片后,会坐立不安地刷新页面,等待更多的「赞」。我们想知道为什么别人的赞越来越多。因此,我们开始在社交网络中「暗暗发力」:变得更有趣、更犀利、更迷人、更极端。

代码重构了我们的生活。正如风险资本家 Marc Andreessen 写的那样,「软件正在吞噬整个世界」,不过说软件正在消化这个世界可能更准确。

因此,美国 Slate 杂志做了这样一个调查。为了厘清改变世界的那些软件,编辑们对计算机科学家、软件开发人员、历史学家、政界人士和新闻工作者进行了民意调查。他们需要选择:哪些代码有巨大影响力?哪些改变了我们的生活?有 75 位人士提出了自己的想法,Slate 选择了其中 36 位(译文有删减)。这并不是一个完整的清单,因为有影响力的代码太多。该清单旨在激发思想——帮助我们重新思考代码如何影响我们的生活以及程序员的决策如何影响未来。

二进制穿孔卡片(1975 年)

第一种代码

二进制编程出现时间比计算机都早。Basile Bouchon 是第一个在纸上打孔并用它来控制机器的人:1725 年,他发明了一种织机,该织机根据所送入的穿孔纸编织出不同图案。打孔是「1」,没有打孔是「0」。此后机器发生了很多变化,但基本的代码组成并没有改变。——Elena Botella, Slate 执行的第一个现代代码(1948 年)

引领了计算机代码的使用和核灾难计算机模型的出现,为冷战时期的军备竞赛打下了基础

电子数字积分计算机是第一台可编程电子计算机。它于 1945 年完成,通过在许多组件之间进行连接来为每个新问题进行配置。当一项任务(例如加法)完成时,一个脉冲会触发下一项任务。但是几年后,冯·诺依曼(Von Neumann)和 Los Alamos 的科学家 Nicholas Metropolis 改进了 ENIAC,运行了在计算机上执行的第一条现代代码:从可寻址的只读存储器(ENIAC 的功能表开关)执行数百条数字指令。他们使用蒙特卡洛技术模拟了在新墨西哥州的洛斯阿拉莫斯国家实验室提出的几种原子弹设计的爆炸过程,通过这种方法逐步模拟了复杂系统,绘制了可能结果的概率分布。冯·诺依曼和梅特罗波利斯向洛斯阿拉莫斯的核科学家发送了 20,000 多张卡片,通过引爆弹头追踪了模拟中子的过程。如今,此代码的后续版本仍在洛斯阿拉莫斯使用。——Thomas Haigh,《ENIAC in Action: Making and Remaking the Modern Computer》合著者

GRACE HOPPER 的编译器(1952 年)

使计算机处理单词成为可能

d4fd0af6-2b2c-11ec-82a8-dac502259ad0.png

Grace Hopper 在对一台早期计算机编程时,为了简化整个过程决定将编程语言植根于人类语言。霍珀(Hopper)在第二次世界大战期间加入了美国海军预备役。她知道,像她的军事上司一样,人们都在努力理解二进制代码。如果编程语言可以是基于英语的,那么这项工作就不会那么容易出错,并且对于那些不是数学博士的人来说也更容易理解。

一些人对此想法不以为然,但到了 1950 年代初,她设计了一个编译器,即一组指令,将一种更易懂的代码转换为机器直接处理的低级代码。她和她的实验室使用该工具开发了 FLOW-MATIC,这是第一种将英文单词融入该过程的编程语言。——Molly Olmstead, Slate

太空战争!(1961 年)

第一个分布式视频游戏(Spacewar)

d50aaeae-2b2c-11ec-82a8-dac502259ad0.png

电子邮件的起源(1965 年)

Come on,电子邮件来了!

d5495d34-2b2c-11ec-82a8-dac502259ad0.png

阿波罗 11 号登月舱救援代码(1969 年)

防止登月舱计算机在太空中空间耗尽的代码

d577c372-2b2c-11ec-82a8-dac502259ad0.jpg

Hello, World!(1972 年或更早)

引领一代又一代人打开编程大门的代码

d5b0cd3e-2b2c-11ec-82a8-dac502259ad0.png

当你坐下来学习一种新的编程语言时,教程要求你做的第一件事就是让计算机显示「Hello,world!」。也许最著名的早期示例来自贝尔实验室的「C—A 编程教程」。该教程写于 1974 年,尽管在 1972 年的手册中也发现了另一种更早的语言 B。

「Hello,world!」这是极好的教学方法。这是一项小的、可实现的任务,能够使学生有成就感。这是一个标准,有助于说明不同编程语言之间的差异。这也是高级程序员确保安装新环境后一切正常的一种快速简便的方法。(有时程序员使用「到‘hello world’的时间」比较语言和环境的速度。)也许最重要的是,「Hello,world!」能帮你打开编程的大门,它告诉你这就是新世界。——Chris Noessel,IBM AI 设计主管。

以空字符结尾的字符串(1972 年)

计算史上最大的灾难性设计错误

d5d2d492-2b2c-11ec-82a8-dac502259ad0.png

1972 年,Dennis Ritchie 做出了一个重大决定:用一种名为「空字符结尾字符串」(null-terminated string)的新语言来表示文本。这个概念早就出现了,但是他把其写进了他称为 C 的新语言中,这个决定就一直影响我们到现在。

编程语言代表一段文本的主要方式有两种:一是具有固定、显式长度——「只包含 10 个字符,不能再多了」或者可以以空值结尾——「这里有一串字符,继续努力,直到看到零字节为止!」

C 代码中有一个非常常见的错误,在将一个长字符串复制到一个较短的字符串中时,会出现结尾溢出,即你破坏了刚好在附近的其他数据。就像在白板的边缘上乱涂乱画一样。

除了仅使程序出现故障外,还可以利用此类错误来改变程序行为,方法是使用经过精心设计的特定数据覆盖某些内容。这些就是缓冲区溢出攻击。你听说过的几乎所有安全漏洞都从 1988 年的 Morris Worm 开始。

你必须在 C 语言中仔细编码以避免此类错误,但是此类错误仍然容易发生。从路由器到「智能」灯泡,几乎每种现代语言都避开了空字符结尾字符串,但是 C 和 C++仍然在语言界有支配地位。因此,近 50 年后的现在,我们还在「饱受折磨」。——Jamie Zawinski,Netscape 开发人员、Mozilla.org 创始人

温哥华股票交易所的交易错误(1982 年)

不起眼的小数误差造成极大损失

d5ef0f86-2b2c-11ec-82a8-dac502259ad0.png

1982 年初,温哥华证券交易所推出了一种电子股票指数,该指数最初定为 1000 点。在两年内,它跌了一半,这在 1980 年代初期的牛市中似乎匪夷所思。一项调查显示,使用 floor() 而非 round(),会造成对索引的计算错误。该命令意味着该值会被直接截止而不是四舍五 入到小数点后三位。(数字计算机必须具有有限的分辨率,因此需要四舍五入或直接截止。)因此,如果索引计算为 532.7528,则会被存储为 532.752,而不是四舍五入为 532.753。在每天数千次计算的过程中,这种看似很小的差异——每次必须四舍五入时未进行四舍五入——导致了巨大损失。这个编程错误最终在 1983 年 11 月得到解决,当时周五的收盘指数在 500 点左右。问题解决后,该股票于周一重新开盘,指数就超过了 1,000 美元,损失的价值得以恢复。——Lav Varshney,伊利诺伊大学香槟分校助理教授

THERAC-25(1985-1987 年)

过度自信是致命的

当真相浮出水面时,各大媒体的头版头条就对机器现代化发出了警告。《洛杉矶时报》宣称:「在这个复杂时代,软件漏洞变得致命。」一台用于治疗癌症的机器在几家医疗机构中对六名患者进行了大剂量过量辐射,造成至少三人死亡。

研究人员发现,Therac-25 的代码可能带来致命的错误。该机器提供低功率和高功率治疗,后者需要一个金属设备来过滤光束。但是由于软件中的错误,操作员可能会在没有金属设备的情况下意外触发高功率模式。

Therac-25 被设计为 Therac-20 的「改进」,设计时被认为是万无一失的,不需要外部安全检查。结果:几起死亡归咎于过度自信的工程师,他们没有考虑到失误的可能性。——Molly Olmstead

互联网中继聊天(1988 年)

最初的在线挂机

d5fbca00-2b2c-11ec-82a8-dac502259ad0.png

莫里斯蠕虫病毒(1988 年)

惊觉互联网已经如此庞大

d62c3e56-2b2c-11ec-82a8-dac502259ad0.png

罗伯特·莫里斯(Robert Morris)和互联网本身都还年轻。当时 23 岁的康奈尔大学研究生 Morris 发布了「莫里斯蠕虫病毒(Morris Worm)」,这是所谓的「互联网上的首次重大攻击」。近 60,000 台连接到互联网的计算机中有 10%遭到破坏,造成数百万美元的损失,该事件导致《纽约时报》首次刊登了「互联网」一词。即使是精通技术的人也会吃惊于蠕虫病毒的影响范围之广。Morris 说,他从未想过有如此大的损失,他成为根据《计算机欺诈和滥用法》被起诉的第一人。在被判处三年缓刑后,他成为著名的创业孵化器 Y Combinator 的共同创始人和麻省理工学院的计算机科学助理教授。——Elena Botella

只有一行代码的病毒(日期:90 年代)

单行代码的功能以及计算机惊人的脆弱

d663c9de-2b2c-11ec-82a8-dac502259ad0.png

上图展示的是一种名为「fork 炸弹」的单行病毒。它需要一些特定的条件才能被触发(包括较旧、易受影响的 Unix 操作系统副本)。如果在 Bash 中键入此命令,它将一遍又一遍地复制自己,直到耗尽计算机中的所有可用内存并导致崩溃。

它之所以有名不是因为它相对于其大小所表现的危险性,而是它使用冒号作为函数名称。大多数函数(可重复使用的代码行)都以描述性方式命名,例如「Print」或「isThisEmailValid」,但并没有规定必须如此。在大多数计算语言中,不能使用冒号作为函数名称,但在 Bash 中可以。

2002 年,我在德国法兰克福的 Angewandte Kunst 博物馆第一次看到作为展品的这行代码。博物馆中没有展示多少代码。——Chris Noessel

HTML 超链接(1990 年)

连接一切的工具

d6975ab0-2b2c-11ec-82a8-dac502259ad0.png

JPEG(1992 年)

改变了我们与摄影的关系

d6a96962-2b2c-11ec-82a8-dac502259ad0.png

Mosaic 浏览器(1993 年)

第一个获普遍使用且能够显示图片的网页浏览器

d6d23e50-2b2c-11ec-82a8-dac502259ad0.jpg

跟踪像素(1993 年)

现代数据收集始于这些看不见的图像。

d700dd00-2b2c-11ec-82a8-dac502259ad0.png

通过跟踪像素下载,他们会了解了你的身份和位置,并触发一个 cookie 下载到你的浏览器中。该 cookie 使广告商可以在多个网站上跟踪你。

像素跟踪的成功直接导致了 Facebook 的点「赞」按钮出现,该按钮可在每个嵌入的网站上进行跟踪。大量的数据收集实现了高度定向,也使 Facebook 广告大获成功,最终 Facebook 从媒体公司口袋里赚到数十亿美元。

Robots.txt(1994 年)

一个对搜索及其他应用均具有重大意义的小工具

d7257084-2b2c-11ec-82a8-dac502259ad0.png

维基(1994 年)

为维基百科铺平了道路

d7526a1c-2b2c-11ec-82a8-dac502259ad0.png

第一个弹出广告(90 年代中期)

互联网的「害群之马」

d783d0c0-2b2c-11ec-82a8-dac502259ad0.png

Google 的 PageRank 算法(1996 年)

革新我们组织知识的方式

d7b4d7d8-2b2c-11ec-82a8-dac502259ad0.png

在 PageRank 之前,搜索引擎根据我们的查询词是否与文档中的词匹配来查找信息。但是对于 PageRank,拉里·佩奇和谢尔盖·布林提出了一个绝妙的主意:知识是社会性的,搜索也应该是。他们创建了一种算法,通过网络浩瀚的超链接关系来确定一个页面的等级。一个页面的 PageRank 是由所有链向它的页面的重要性经过递归算法得到的,一个有较多链入的页面会有较高的等级。正是两位这种独具慧眼的洞察力造就了 Google 的当今地位。——Clive Thompson

失联的火星气候轨道飞行器(1999 年)

因数学错误而失败的任务

1999 年 9 月 23 日,NASA 的科学家与耗资 1.25 亿美元的「火星气候轨道飞行器」失联。后来的调查确定了原因:承包商使用英制单位为轨道飞行器编写了程序,这在美国是标准的,但是 NASA 的软件使用了公制。两段代码之间一次简单的通讯错误使轨道飞行器飞向了未知的地方。

人们很容易把这种度量错误看做偶然,但这表明当下这个互联软件的世界多么脆弱。所有互联的技术(电话、航天器、机器人榨汁机等等)都依赖于定义与他人进行通信的方式的接口。极小的差异也会导致混乱。——Charles Duan

比特币(2008 年)

激发人们对某种货币的信心的代码

d8005f82-2b2c-11ec-82a8-dac502259ad0.png

点赞按钮(2009 年)

它催化了监视经济。

d827e3a4-2b2c-11ec-82a8-dac502259ad0.png

Facebook 设计的点「赞」按钮,使我们可以向世界展示我们的喜欢《辛普森一家》或炸薯条。但实际上,它利用了我们的认知偏见和设计的力量,诱使我们分享更多的信息。它们利用上面提到的跟踪像素在互联网上跟踪我们,收集有关我们浏览习惯的数据。然后,Facebook 利用该信息,并将其行为定位算法卖给广告商。如果一家户外用品公司想要做广告,那么 Facebook 可以锁定那些「点赞」远足信息、访问露营网站以及有户外朋友的人。当这些用户给公司的广告点赞时,该信息就会反馈到定位算法中。因此,监视和商业操纵会形成循环。都是因为一个小小的蓝色竖起大拇指。——Ari Ezra Waldman,纽约法学院教授

波音 737 Max(2017 年)

软件错误加上公司贪婪,导致数百人丧生,大批飞机停飞

2018 年 10 月,狮航 610 航班起飞后不久就坠入海中。波音向公众保证飞机是安全的,并表示需要更多的飞行员训练和「软件升级」。但是仅仅四个月后,埃塞俄比亚航空又有一架飞机失事。飞行员努力将机头抬起 20 次,但飞机的自动系统却将机头往下拉。起飞后几分钟内,就机毁人亡。全球航空当局当即将飞机停飞。调查显示,坠机事故是由 737 Max 的设计引起的,尤其是那些鲜为人知的软件,可能迫使飞机不断俯冲。——Mar Hicks,技术史学家,《Programmed Inequality (http://www.amazon.com/dp/0262535181/?tag=slatmaga-20)》作者。

原文链接:https://slate.com/technology/2019/10/consequential-computer-code-software-history.html

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4553

    浏览量

    66665
  • 编译器
    +关注

    关注

    1

    文章

    1570

    浏览量

    48604

原文标题:盘点那些改变世界的代码

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    天合储能获得“储能影响力电池供应商奖”和“储能影响力系统集成商奖”

    2月27日,2024年中国储能技术创新应用峰会暨“北极星杯”储能影响力企业评选典礼在浙江宁波成功召开。
    的头像 发表于 03-01 10:33 180次阅读
    天合储能获得“储能<b class='flag-5'>影响力</b>电池供应商奖”和“储能<b class='flag-5'>影响力</b>系统集成商奖”

    三防平板丨平板终端丨仓库盘点应用

    三防平板是一种能够在恶劣环境下使用的电子设备,其具有防水、防尘、抗震等特性,适用于各种场合,包括仓库盘点。在现代物流行业中,对于仓库盘点来说,三防平板不仅能够提高盘点效率,还可以有效地减少人为错误和操作失误。本文将介绍三防平板在
    的头像 发表于 02-19 09:51 84次阅读
    三防平板丨平板终端丨仓库<b class='flag-5'>盘点</b>应用

    那些杠鸿蒙的现在怎么样了?

    别杠,要杠就是你对。 一个纯血鸿蒙就已经打了那些杠精的嘴,以前是套壳Android,大家纷纷喷鸿蒙。现在鸿蒙已经全栈自研,并且已经展开各大企业生态合作。不管什么独立系统,都是一定要走一遍套壳
    发表于 02-16 22:03

    水质电导率的测量方式(盘点

    水质电导率的测量方式(盘点
    的头像 发表于 01-29 13:58 487次阅读

    大茉莉X16-P,5800M大算称王称霸

    Rykj365
    发布于 :2024年01月25日 14:54:52

    那些隐藏在电阻器上的神秘数字

    电阻器,这个看似普通的电子元件,其实身上藏着一个巨大的秘密。那些看似随意的数字,其实都是电阻值的小提示。
    的头像 发表于 01-23 09:25 186次阅读

    连续两年!维视智造斩获2023年度光能杯最具影响力“智造”企业奖

    连续两年!维视智造斩获2023年度光能杯最具影响力“智造”企业奖
    的头像 发表于 01-15 09:03 249次阅读
    连续两年!维视智造斩获2023年度光能杯最具<b class='flag-5'>影响力</b>“智造”企业奖

    盘点一下CST电磁仿真软件的求解器

    今天我们一起来盘点一下CST电磁仿真软件那些牛叉的求解器。快来数一下,你用了里面的几种吧!
    的头像 发表于 11-20 10:18 2965次阅读
    <b class='flag-5'>盘点</b>一下CST电磁仿真软件的求解器

    帝奥微再度蝉联2023年度“最有影响力IC设计企业奖”

    10月30日,由芯师爷主办的 “2023 年度硬核芯评选颁奖盛典”在深圳启幕,此次颁奖盛典上,帝奥微再度蝉联2023年度“最有影响力IC设计企业奖”!   “硬核中国芯” 是国内兼具创新性和影响力
    的头像 发表于 11-01 14:48 401次阅读

    必易微荣获2023年度最有影响力 IC 设计企业奖

    推荐、评分,荣获 2023 年度最有影响力 IC 设计企业奖。 2023 年度最有影响力 IC 设计企业   必易微——2023 年度 最有影响力 IC 设计企业 必易微(股票代码:6
    的头像 发表于 11-01 10:23 376次阅读

    基于MCU通用GUI大盘点

    基于MCU通用GUI大盘点
    的头像 发表于 10-18 17:07 549次阅读
    基于MCU通用GUI大<b class='flag-5'>盘点</b>

    纳芯微荣获“北极星”杯光伏影响力品牌奖

    2023年9月19-20日,由光伏行业知名媒体“北极星电力网”和“北极星太阳能光伏网”联合举办的 光伏新时代论坛暨第十二届“北极星杯”光伏影响力品牌颁奖典礼 在无锡隆重举办。 纳芯微凭借其在光伏行业
    的头像 发表于 09-20 12:00 227次阅读
    纳芯微荣获“北极星”杯光伏<b class='flag-5'>影响力</b>品牌奖

    5个smt物料盘点方法

    smt物料盘点方法
    的头像 发表于 09-05 10:06 494次阅读

    盘点电机绕组匝间短路可能出现的现象

    盘点电机绕组匝间短路可能出现的现象
    的头像 发表于 08-11 10:28 623次阅读

    聊聊芯片超净间的颗粒

    在芯片制造领域,颗粒的存在可能对生产过程产生巨大影响
    的头像 发表于 07-08 09:28 591次阅读
    聊聊芯片超净间的颗粒