主页 > imtoken最新版下载 > 写代码也是一项要命的工作:盘点那些改变世界的代码

写代码也是一项要命的工作:盘点那些改变世界的代码

imtoken最新版下载 2023-12-27 05:13:14

2009年,Facebook推出了一段改变世界的代码——点击“赞”按钮。 Like 是几位程序员和设计师的心血结晶,其中包括 Leah Pearlman 和 Justin Rosenstein。 他们认为 Facebook 用户通常太忙而无暇评论朋友的帖子,但如果有一个简单易用的按钮就会大受欢迎。 “朋友们可以更频繁、更容易地喜欢彼此,”珀尔曼说。

莱特币和比特币代码_比特币挖矿代码实现_比特币代码有多少位

按钮起作用了,甚至有点超乎想象。 到 2012 年,“赞”按钮的点击次数已超过 1 万亿次。 但它也有副作用。 发布照片后,我们坐立不安并刷新页面,等待更多的“赞”。 我们想知道为什么别人的点赞越来越多。 于是,我们开始在社交网络中“暗暗发力”:变得更有趣、更犀利、更迷人、更极致。

代码重构了我们的生活。 正如风险投资家马克·安德森所写,“软件正在吞噬世界”,尽管说软件正在消化世界可能更准确。

因此,美国《板岩》杂志进行了这样的调查。 为了确定改变世界的软件,编辑们对计算机科学家、软件开发人员、历史学家、政治家和记者进行了调查。 他们需要做出选择:哪些代码产生了巨大影响? 哪些改变了我们的生活? 75 人贡献了他们的想法,Slate 选择了其中的 36 个(翻译已删节)。 这不是一个完整的列表,因为有太多有影响力的代码。 这份清单旨在激发思考——帮助我们重新思考代码如何影响我们的生活以及程序员的决定如何影响未来。

二进制穿孔卡片 (1975) 第一码

二进制编程早于计算机。 Basile Bouchon 是第一个在纸上打孔并用它来控制机器的人:1725 年,他发明了一种织机,可以根据送入的穿孔纸织出不同的图案。 打孔为“1”,不打孔为“0”。 从那时起机器发生了很大变化,但基本的代码组成没有变化。 - Elena Botella,石板

执行的第一个现代代码(1948 年)

率先使用计算机代码和核灾难计算机模型,为冷战军备竞赛奠定了基础。

电子数字积分计算机是第一台可编程电子计算机。 它于 1945 年完工,通过在许多组件之间建立连接来针对每个新问题进行配置。 当一个任务(例如加法)完成时,一个脉冲触发下一个任务。 但几年后,冯·诺伊曼和洛斯阿拉莫斯的科学家尼古拉斯·梅特波利斯改进了 ENIAC,使其能够运行第一个在计算机上执行的现代代码:表开关)来执行数百条数字指令。 他们使用蒙特卡洛技术模拟了新墨西哥州洛斯阿拉莫斯国家实验室提出的几种原子弹设计的引爆,这种方法逐步模拟复杂系统,绘制可能结果的概率分布。 冯诺依曼和大都会向洛斯阿拉莫斯的核科学家发送了 20,000 多张卡片,以通过弹头的爆炸来追踪模拟的中子。 此代码的后续版本今天仍在洛斯阿拉莫斯使用。 ——Thomas Haigh,ENIAC 的合著者:制造和改造现代计算机。

GRACE HOPPER 编译器 (1952)

使计算机处理文字成为可能

比特币代码有多少位_比特币挖矿代码实现_莱特币和比特币代码

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

有些人驳回了这个想法,但到 20 世纪 50 年代初,她设计了一个编译器,这是一组指令,可以将更易于理解的代码转换为机器可以直接处理的低级代码。 使用该工具,她和她的实验室开发了 FLOW-MATIC,这是第一种将英语单词纳入流程的编程语言。 - 莫莉奥姆斯特德,石板。

太空大战! (1961)

第一个分布式视频游戏(太空大战)

比特币代码有多少位_莱特币和比特币代码_比特币挖矿代码实现

比特币挖矿代码实现_比特币代码有多少位_莱特币和比特币代码

电子邮件的起源 (1965)

来吧,电子邮件来了!

比特币代码有多少位_比特币挖矿代码实现_莱特币和比特币代码

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

防止登月舱计算机在太空空间不足的代码

比特币挖矿代码实现_比特币代码有多少位_莱特币和比特币代码

你好世界! (1972 年或更早)

为几代人打开编程之门的代码

比特币挖矿代码实现_比特币代码有多少位_莱特币和比特币代码

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

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

空终止字符串 (1972)

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

比特币挖矿代码实现_莱特币和比特币代码_比特币代码有多少位

1972 年,丹尼斯·里奇 (Dennis Ritchie) 做出了一个重大决定,即用一种称为以空字符结尾的字符串的新语言来表示文本。 这个概念已经存在,但他将其写成一种他称之为 C 的新语言,这一决定至今仍伴随着我们。

编程语言可以通过两种主要方式来表示一段文本:一种具有固定的显式长度——“仅包含 10 个字符,不能再多了”,或者可以以 null 结尾——“这是一串字符,继续尝试,直到你看到零字节!”

这是 C 代码中一个非常常见的错误比特币代码有多少位,当将一个长字符串复制到一个较短的字符串时,您会遇到结束溢出,这会破坏恰好在附近的其他数据。 这就像在白板的边缘涂鸦。

比特币挖矿代码实现_比特币代码有多少位_莱特币和比特币代码

除了使程序出现故障之外,还可以利用此类错误通过用特定的、精心制作的数据覆盖某些内容来改变程序的行为。 这些是缓冲区溢出攻击。 您听说过的几乎所有安全漏洞都始于 1988 年的莫里斯蠕虫病毒。

您必须在 C 中仔细编写代码以避免此类错误,但它们仍然很容易发生。 从路由器到“智能”灯泡,几乎所有现代语言都避开了以 null 结尾的字符串,但 C 和 C++ 仍然主导着语言世界。 所以现在,将近 50 年后,我们仍在“受苦”。 ——Jamie Zawinski,Netscape 开发者,Mozilla.org 创始人

温哥华证券交易所交易失误 (1982)

小数点错误造成巨大损失

莱特币和比特币代码_比特币挖矿代码实现_比特币代码有多少位

1982年初,温哥华证券交易所推出了电子股票指数,最初设定为1000点。 两年之内,它减半了比特币代码有多少位,这在 80 年代初的牛市中似乎是不可想象的。 一项调查表明,使用 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 的“改进”,设计为万无一失,不需要外部安全检查。 结果:数起死亡事故归咎于过于自信的工程师,他们没有考虑到可能出现的错误。 ——莫莉奥姆斯特德

互联网中继聊天 (1988)

初始在线挂断

比特币挖矿代码实现_莱特币和比特币代码_比特币代码有多少位

莫里斯蠕虫 (1988)

惊讶于互联网变得如此庞大

莱特币和比特币代码_比特币挖矿代码实现_比特币代码有多少位

莱特币和比特币代码_比特币挖矿代码实现_比特币代码有多少位

罗伯特莫里斯和互联网本身都还很年轻。 当时 23 岁的康奈尔大学研究生莫里斯发布了“莫里斯蠕虫”,他称之为“互联网上的第一次重大攻击”。 连接到 Internet 的近 60,000 台计算机中有 10% 遭到破坏,造成数百万美元的损失,并导致纽约时报首次使用“Internet”一词。 即使精通技术的人也对蠕虫的影响范围感到惊讶。 莫里斯说他从未想过会发生这样的损失,他是第一个根据《计算机欺诈和滥用法》被起诉的人。 在被判三年缓刑后,他成为著名创业孵化器 Y Combinator 的联合创始人和麻省理工学院计算机科学助理教授。 ——埃琳娜·博泰拉

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

一行代码的力量和计算机惊人的脆弱性

比特币代码有多少位_莱特币和比特币代码_比特币挖矿代码实现

上图显示了一种称为“叉子炸弹”的单行病毒。 它需要触发某些特定条件(包括 Unix 操作系统的较旧、易受影响的副本)。 如果您在 Bash 中键入此命令,它会一遍又一遍地自我复制,直到它用完计算机中的所有可用内存并崩溃。

它之所以出名,不是因为它相对于它的大小而言是危险的,而是因为它使用冒号作为函数名。 大多数功能(可重复使用的代码行)都以描述性方式命名,例如“Print”或“isThisEmailValid”,但没有要求必须如此。 在大多数计算语言中,您不能使用冒号作为函数名,但在 Bash 中可以。

第一次看到这行代码是2002年在德国法兰克福Angewandte Kunst博物馆的一个展品,博物馆里展示的代码不多。 ——克里斯·诺塞尔

HTML 超链接 (1990)

连接一切的工具

莱特币和比特币代码_比特币挖矿代码实现_比特币代码有多少位

格式 (1992)

改变了我们与摄影的关系

比特币代码有多少位_比特币挖矿代码实现_莱特币和比特币代码

马赛克浏览器 (1993)

第一个广泛使用的能够显示图像的网络浏览器

莱特币和比特币代码_比特币挖矿代码实现_比特币代码有多少位

追踪像素 (1993)

莱特币和比特币代码_比特币代码有多少位_比特币挖矿代码实现

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

比特币代码有多少位_莱特币和比特币代码_比特币挖矿代码实现

通过下载跟踪像素,他们了解您是谁以及您在哪里,并触发将 cookie 下载到您的浏览器。 此 cookie 使广告商能够跨多个网站跟踪您。

像素跟踪的成功直接导致了 Facebook 的“赞”按钮,可以在每个嵌入式网站上对其进行跟踪。 广泛的数据收集实现了高水平的目标定位和 Facebook 广告的成功,最终在媒体公司的口袋里赚了数十亿美元。

机器人.txt (1994)

对搜索及其他领域有重大影响的小工具

比特币代码有多少位_比特币挖矿代码实现_莱特币和比特币代码

维基百科 (1994)

为维基百科铺平了道路

比特币代码有多少位_莱特币和比特币代码_比特币挖矿代码实现

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

互联网的“害群之马”

比特币代码有多少位_比特币挖矿代码实现_莱特币和比特币代码

Google 的 PageRank 算法 (1996)

彻底改变我们组织知识的方式

比特币挖矿代码实现_莱特币和比特币代码_比特币代码有多少位

在 PageRank 之前,搜索引擎根据我们的查询词是否与文档中的词相匹配来查找信息。 但是对于 PageRank,拉里佩奇和谢尔盖布林有一个绝妙的想法:知识是社会性的,搜索也应该如此。 他们创建了一种算法,通过网络庞大的超链接网络确定页面的排名。 一个页面的PageRank是根据所有链接到它的页面的重要性通过递归算法得到的,链接越多的页面排名越高。 正是这两种独特的见解造就了今天的 Google。 ——克莱夫·汤普森

比特币代码有多少位_比特币挖矿代码实现_莱特币和比特币代码

失落的火星气候轨道器 (1999)

由于数学错误而失败的任务

1999 年 9 月 23 日,NASA 科学家与价值 1.25 亿美元的火星气候轨道器失去联系。 后来的调查确定了原因:承包商以英制单位对轨道飞行器进行了编程,这是美国的标准,但 NASA 的软件使用的是公制。 两段代码之间的一个简单通信错误会将轨道飞行器送入未知世界。

很容易将这种测量错误视为偶然,但它表明当今互联软件世界是多么脆弱。 所有连接的技术(电话、航天器、机器人榨汁机等)都依赖于定义与他人通信方式的接口。 即使是微小的差异也会导致混乱。 ——查尔斯·段

比特币 (2008)

激发对货币信心的代码

比特币代码有多少位_比特币挖矿代码实现_莱特币和比特币代码

点赞按钮 (2009)

它催化了监视经济。

莱特币和比特币代码_比特币挖矿代码实现_比特币代码有多少位

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

波音 737 Max (2017)

软件错误,加上企业的贪婪,导致数百人死亡并停飞飞机

2018年10月,狮航610航班起飞后不久坠海。 波音公司向公众保证飞机是安全的,并表示需要更多的飞行员培训和“软件升级”。 但仅仅四个月后,另一架埃塞俄比亚航空公司的飞机坠毁。 飞行员尝试将机头抬高 20 次,但飞机的自动系统将机头拉下。 起飞几分钟后,飞机坠毁了。 世界各地的航空当局立即将飞机停飞。 调查表明,坠机是由 737 Max 的设计引起的,尤其是鲜为人知的软件可能迫使飞机不断俯冲。 — 技术史学家马尔·希克斯 (Mar Hicks)

“程序化不等式()”的作者。

原文链接:

【本文为51CTO专栏《机器之心》微信公众号“机器之心(id:almosthuman2014)”原创翻译】

点此阅读作者更多好文