报价
HOME
报价
正文内容
hd2 nand 拥有一台 HTC HD2,你的安卓刷机史才算完整|极客博物馆
发布时间 : 2024-10-06
作者 : 小编
访问数量 : 23
扫码分享至微信

拥有一台 HTC HD2,你的安卓刷机史才算完整|极客博物馆

极客博物馆 vol.27:如果用生命力来衡量一款手机的经典程度,那么 HTC HD2 一定能挤进前十。有着「刷机神器」称号的它,不仅仅拥有超多 Android ROM 可选,跨系统刷机才是它真正的魅力。

有那么一些已经老去的产品,它们也许早已淡出人们的视线,但每每想到却令我们充满回忆。作为极客之选(微信号 GeekChoice)怀旧栏目,《极客博物馆》希望找到这些曾经带给我们惊喜和感动的产品,带你重拾它们迷人的特质。

极客博物馆栏目两个月前曾经写过一期「硬核」智能手表 Moto ACTV 的文章,一位网友留言希望能看到有关 HTC HD2 的内容。本期极客博物馆我们就满足这位网友的愿望,让我们来聊一聊「刷机神器」——HTC HD2。

HTC HD2 的完整型号是 HTC Touch HD2,研发代号为 LEO,在某些论坛大家也习惯用这个代号。这款 HTC 在 2009 年发布的机型,本身预装的是 Windows Mobile 6.5 操作系统,因为各种机缘巧合,它成为传奇一般的刷机神器。实际上关于这篇文章,我个人有相当多跟 HD2 有关的故事,但碍于篇幅还是决定以回顾的形式,来全面了解一下这款颇具传奇色彩的手机。

为什么 HD2 能刷这么多系统?

想要了解这款手机,就必须从它最大的特点——刷机开始。在前文中已经提到了 HTC HD2 官方预装的系统是 Windows Mobile 6.5,但在各路大神的努力下它成功运行了 WindowsPhone 7、Ubuntu(Touch)、Linux、Firefox、MeeGo、Sailfish 等,不过最受欢迎的系统肯定还是 Android,这其中叫得上的名字的就有 CyanogenMod、MIUI、HTC Sense、Flyme 等等,剩下大大小小各种魔改版、自制版更是数不数胜。

为什么一款 2009 年发布的 Windows Mobile 机型能刷入这么多系统?这个事儿就要从 HTC 泄露了 HD2 的底层驱动说起,这也为运行其他系统提供了基础。其实这和厂商适配新系统是一个道理,之所以 Google 每次发布 Android 新版系统后,厂商们都要过一段时间才会推送升级,就是因为厂商要做驱动适配、兼容性以及稳定性测试,这也是 Project Treble 出现的原因。

简单点说,这个原理就像是 PC 上的「黑苹果」一样,假如能够找到对应的驱动程序,任何 PC 或者笔记本电脑都可以基本完美地运行 mac OS。

除了底层驱动以外,HTC HD2 的硬件规格在当时绝对是实打实的旗舰机,高通 QSD8250 芯片的 CPU 主频能够达到 1GHz,同时它还拥有 448MB RAM。这样的规格对于 Andriod 系统来说绰绰有余,强大的硬件配置也是能够移植系统的基础之一。

有了底层驱动和强力硬件两个先决条件,一位来自俄罗斯 ID 为 Cotulla 的技术大神则编写了 MAGLDR 引导程序,随后 Recovery 则成功移植到 HD2 上。在有了底层驱动和Recovery 的基础上,安装 Android 系统的难度就降低了很多,因为 MAGLDR 的存在也让 WP7 和其他系统移植提供了先决条件。

在后期 NativeSD 技术出现后,HTC HD2 甚至可以完成多系统共存,在不用刷机的情况下,切换 ROM。当然这一切,除了技术大神的无私奉献以外,对于用户来讲也有一定的门槛,起码要有一定的理论知识基础,好在 HD2 并不是那么容易「变砖」,只要能够进到三色屏,HTC HD2 基本上都能通过重新注入引导程序和 Recovery 成功「救砖」。

「T 版」的 HTC HD2 最受欢迎

之所以有人如此热衷于为 HTC HD2 写引导、做 ROM,其实还是源自于对 HTC HD2 的不甘心,2009 年的 Android 已经积累了一定的人气,但远没有现在和 iOS 平分天下的气势,HTC 仅仅为 HD2 这样一款硬件给力的手机预装了 Windows Mobile 6.5 系统着实有些可惜,虽然当时也有不少人折腾 Windows Mobile 系统,但可玩性远不如 Android。所以不少人是因为觉得这个硬件放在 WM 6.5 上太过「浪费」,才不断地研究能否用上其他系统,而 HTC 泄露底层驱动甚至被看作是有意而为之。

这次极客之选淘到的 HTC HD2 虽然没有全套包装,但整体成色非常不错,而且身为 HTC HD2 老用户的我可以看出这款 HD2 绝非是翻新机,这一点着实难能可贵。因为 HD2 在当时水货市场中非常受欢迎,出货量也不小,同时也因为刷机 ROM 非常丰富,生命周期也相当的长,所以当时不少无良商家就做起了翻新的勾当。

HTC HD2 拥有一块 4.3 英寸 WVGA(480*800 像素)电容屏,之所以特别注明电容屏幕是因为 2009 年前后仍然有一些厂商还会推出搭载电阻屏的产品。Wi-Fi、蓝牙、GPS、支持 MicroSD 卡扩展这些也算是保证了配置上不落伍,唯一有些遗憾的可能就是没有前置摄像头,不过在那个 3G 还没有普及的年代,前置摄像头并不算在标配的行列。

尽管那时还没有「全面屏」的概念,但 HTC HD2 的边框控制非常不错,正面屏占比在当时算是非常高的。事实上,「HD」这个名字也正是因为它拥有 4.3 英寸的巨屏,在那个 iPhone 还是 3.5 英寸,Android 机型 3.7 英寸屏幕是主流的时代,用巨屏这个词并不显得过分。当时我作为用户都在思考「这个屏幕这么大,这应该是手机屏幕尺寸的极限了吧?」但现在的事儿不用我多说你们也都知道了。

HTC HD2 背面采用了三段式的设计,上下两部分采用了类肤质涂层,手感摸起来非常不错,但如果不带壳「裸奔」的话,时间长了表面的涂层很容易磨损脱落。

因为 HTC HD2 采用了可更换电池的设计,所以其背面中间部分的后盖是可以拆卸,后盖为金属材质,一些奸商翻新过的 HD2 采用的都不是原厂后盖,所以经过一段时间的使用掉漆情况也同样明显。

很多用户在选购 HTC HD2 时会犹豫版本的选择,在当时市面上一共有 3 个版本,中国行货使用的是「多普达」的品牌,型号为 T8585;另外两个版本都使用的是 HTC 品牌,所谓的「HTC 版」同现在的公开版是一个概念;另外还有一个「T 版」,该版本是美国运营商 T-Mobile 的定制版本,这也是相对更受欢迎的一个版本。

在外观上,多普达 T8585 和 HTC HD2 除了 logo 标识不同以外并没有什么差别。T 版的 HTC HD2 则在机身长度上稍稍长了 1.5mm,接听和挂断键分别采用了绿色和红色(HTC 版按键均为白色),听筒下方也多了「T-Mobile」的 logo。

CM、MIUI 和 HTC Sense 最受欢迎

在前文中就已经说过了,HTC HD2 最大的魅力就是拥有非常多的系统可选,Android 的 ROM 数量占据了 90%,剩下的 WindowsPhone 系统也有一些,其他的就相对小众,大多数基本上是体验一下,或者抱着尝试的态度刷一刷。

之前所说的 T 版 HD2 最受欢迎是因为这个版本在刷机上有天然的优势。公开版本的 HTC HD2 采用了 448MB RAM+512MB ROM 的内存组合,而 T 版的 HTC HD2 则采用了 576MB RAM+1GB ROM 的内存组合。

RAM 上多出 100 多兆也许以现在的眼光来看不算什么,但 20% 的提升在当时也不容忽视。最重要的是,拥有 1GB ROM 的 T 版 HD2 拥有更多 ROM 选择,不依靠「A2SD+」技术就能直接刷入完整的 ROM,公开版的 HD2 则经常需要精简一些系统组件或者是挂载在 MicroSD 卡上,这不仅仅增加了刷机的复杂程度,也同时对存储卡的速度有一定要求。

对于大多数用户来说,MIUI 和 CM7 是相对稳妥的选择,稳定性、流畅度都是 ok 的。极客之选手中这台就是 T 版的 HTC HD2,刷入的是 CM7 系统,事实上直到 CM10 系统,HD2 也是拥有 CyanogenMod 官方支持的,Android 6.0 下 HTC HD2 的流畅度依旧不错。至于技术大神的移植版,直到 Android 7.0 都是有 ROM 发布的,但体验比较一般。

对于我个人来讲,MIUI 是最为喜欢的 ROM,因为 Android 2.X 的时代,Android 系统虽然大部分功能性应用已经补全,但原生系统的体验确实还有很大不足,并且几乎没有本地化可言。相比之下,MIUI 无论是在 UI 交互、功能性、稳定性以及本地化上都有着相当不错的口碑,更新速度以及新功能的添加也非常及时。实际上,那段时间也是 MIUI 迅速积累口碑和用户的关键期。

对于 HTC Sense UI 青睐有加的用户,他们也会选择选择刷 HTC 风格的 ROM,因为硬件的相似性,HTC HD2 的体验和 HTC G7(Desire) 并没有太大差别,但在价格上却有着较大的优势。

对于 WindowsPhone 系统而言,大多数用户其实是为了尝鲜,但 WP 系统对于硬件的需求很低,即使到了后期的 WP7.5 和 WP8 系统,HTC HD2 都能非常流畅的运行,而且远胜于 Android 系统。不过因为省电优化以及软件资源的问题,如果想用 HD2 当做主力机使用,大多数人还是会选择 Android 系统。

有缺陷,但无可替代

和众多产品一样,HTC HD2 并非完美,而且通病还不少。在这其中最被熟知的可能就是「虚焊门」,和所有虚焊机型一样,在高温情况下主板上某些芯片会出现虚焊情况,会直接导致手机关机,在降温之后才能正常开机。

真正解决这个问题则需要将手机拆机,把虚焊的芯片取下之后再重新焊在主板上,虚焊问题在当时的「中标」率非常的高,无论是 T 版还是公开版的 HD2 都会出现这个问题。这个问题其实很容易分辨,假如使用手机录制视频能够连续录制 15 分钟以上视频不死机,基本上就证明这款手机没有虚焊问题。在 HTC HD2 火爆的那几年,市场上很多二手货都有这个问题,并且这个问题对于 HTC 本身来说也造成了一定的信任危机。

另外,HTC HD2 的电池触点因为设计上的缺陷,也容易出现问题,用户如果发现突然某一天无法开机,那么很可能不是手机坏了,也不是刷成砖了,而是电池的触点没有连接到电池上。

HTC HD2 的屏幕触控以及按键也都是问题高发地带,如果说触控问题是因为底层驱动或者其他一些原因造成的,但按键就要归咎于厂商的设计问题了,因为 HTC HD2 使用的是常规的物理按键,又没有独立的电源键,所以锁屏和解锁都要通过挂机键实现,长时间的使用之后按键非常容易失灵,这也是用户很常见的问题之一。

尽管 HTC HD2 有很多的不足甚至是缺陷,但由于机缘巧合它成为了独一无二的存在。在 Android 2.X 的时代,刷机是非常多用户的选择,通过刷机能够获得更出色的体验、更酷炫的功能。

HTC HD2 不仅仅拥有超多的 Android ROM 可选,原生的 Windows Mobile、Windows Phone、Ubuntu、Firefox 等超多系统的选择更是让它成为了当时极客精神的代表之一。HTC HD2 不仅见证了 Android 阵营的迅速崛起,更见证了其他系统的没落,它更像是一个时代的代名词。

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

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

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

早在2009年,Facebook推出了改变世界的代码段——点“赞”按钮。“赞”是几名程序员和设计师的创意,其中包括Leah Pearlman和Justin Rosenstein在内。他们推测,Facebook用户常常因为太忙而没时间到朋友的帖子上发表评论,所以想如果有一个简单的按钮可以按一下的话,也许互动就会爆发:这可以释放出大量令人兴奋的肯定。就像Pearlman 后来所说那样:“朋友们可以通过这种频繁的多、容易得多的互动手段来相互验证。”

这个点子奏效了,也许有点太好了。通过把“赞”做成一个零阻力的手势,到了2012年,大家的点赞次数已经超过1万亿次,并且的确释放出了大量的验证。但是它的副作用也令人不安。我们发布了一张照之后片,就会坐在那里焦急地不断刷新页面,等待点赞数的增加。我们想知道为什么别人拿到的点赞数会比自己的多。于是我们开始给自己日常的在线行为放大功率:想变得更有趣、更刻薄、更迷人、更极端。

代码塑造了我们的生活。就像风投家Marc Andreessen所写那样:“ 软件蚕食整个世界”,尽管此刻说软件正在消化世界可能会更准确些。

从文化角度上来讲,代码是比较下层的存在。我们可以感觉到它对我们日常现实的神秘影响,但是却很少能看到它,而且对于非初学者来说有点高深莫测。(硅谷的人喜欢这样这有助于他们自我神话为巫师。)我们给电影、游戏和电视都立了十大排行榜,让那些塑造了我们灵魂的作品扬名立万。但是,即便代码跟这些类型的作品一样反映了时代思潮,我们却未曾坐下来汇编过世界上最重要的代码清单。

所以Slate杂志决定自己来做这件事。为了弄清楚有哪些让世界为之倾斜的软件,杂志编辑对计算机科学家、软件开发人员、历史学家、政策制定者以及新闻工作者进行了民意调查。这些人需要做出以下选择:哪些代码段影响巨大?哪些代码改变了我们的生活?约有75位受访者提出了各种各样的想法,Slate从中选择了36位。鉴于写成的有影响的代码如汗牛充栋,这里的清单并不完整,也不可能完整。(我很喜欢的一个并没有人选:快速排序算法!或者Ada Lovelace的伯努利算法也许也算一个。)就像所有的榜单一样,它的目的是启发,去帮助我们重新思考代码是如何影响我们的生活,以及程序员所做的决策是如何影响未来的。

里面的有些代码你可能已经听说过,比如HTML什么的。有的代码功能强大(比如用来对概率建模的蒙特卡洛模拟),但一般人完全不知道是什么。有的则包含了致命错误,比方说波音737 Max的缺陷。还有一些令人毛骨悚然,比方说让营销人员知道你是否已打开电子邮件的像素跟踪。

有一个趋势是很明显的:最重要的代码往往会通过消除阻力来塑造新行为。当软件让做某件事情变得更容易时,这种事情我们就会做得更多。1988年编写的代码第一次建立起“Internet Relay Chat(IRC,多人在线交谈系统)”,这使得早期的网民彼此可以实时进行文字聊天。现在,实时文字聊天已经无处不在,从令人应接不暇的Slack职场闲聊吹水,到Twitch直播的钓鱼和反钓鱼之战,不一而足。

某些代码什么时候具备了划时代意义未必总是很清晰。一开始它只是个怪异的尝试,一个实验气球。《Spacewar !》是第一个获得病毒式流行的视频游戏。可是在1961年的时候,用价值12万美元(相当于2019年的100万美元)的机柜式计算机万游戏被视为一种相当无聊的使用方式。但是它独创了很多帮助计算机进入主流的概念:用图标表示数据,让用户用手持控制器操作这些图标。

代码的影响可能会让所有人感到惊讶,包括写代码的人在内。—Clive Thompson,《程序员: 新部落的形成和世界的重塑(Coders: The Making of a New Tribe and the Remaking of the World)》作者

1、二进制穿孔卡片

年代:1725

第一段代码

二进制编程早在计算机诞生之前就有了。大家认为Basile Bouchon 是第一个给纸片打孔并用来控制机器的人:1725年,他发明了一种织布机,这种机器可以根据送入的穿孔卡片的指令编织图案。打孔的是“1”,没有打孔是“0”。尽管此后东西发生了很大的变化,但代码的基本构建块并没有改变。— Elena Botella ,Slate

2、执行的第一段现代代码

年代:1948

既开辟了计算机代码的使用,也引领了塑造冷战军备竞赛的核毁灭计算机模型的使用

ENIAC(电子数字积分计算机)是第一台可编程的电子计算机。机器于1945年建成,每解决一个新问题都要靠重新连线许多部件来完成。当一项任务(比如加法)完成时,会用一个脉冲来触发下一项任务。但是几年后,克拉拉· 丹·冯·诺依曼和洛斯阿拉莫斯的科学家Nicholas Metropolis对ENIAC重新进行了接线,让这台机器跑出来有史以来在任何计算机上执行的第一段现代代码:从可寻址只读存储器(ENIAC的函数表开关)执行数百条数字指令。他们模拟了新墨西哥州洛斯阿拉莫斯国家实验室正在评估的几种原子弹设计的爆炸情况,用蒙特卡洛技术来模拟一个复杂系统,几乎是一步步地把可能结果的概率分布呈现出来。冯·诺依曼和Metropolis)向洛斯阿拉莫斯的核科学家发送了20000多张卡片,跟踪弹头引爆后模拟中子的变化情况。知道今天,这段代码的子孙后代还在洛斯阿拉莫斯那里发挥作用。—Thomas Haigh ,《ENIAC in Action: Making and Remaking the Modern Computer(ENIAC实战:现代计算机的制造和改造)》合著者

3、Grace Hopper的编译器

年代:1952

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

IF END OF DATA GO TO OPERATION 14 .

来自维基百科

当Grace Hopper决定通过以人类语言为基础来简化整个过程时,她正在对一台早期计算机进行编程。二战期间,Hopper加入了美国海军预备队,她知道,像她在部队的上司一样,大家都在努力去理解二进制代码。而如果编程语言是基于英语的话,那么这项工作就不会那么容易出错,并且对于那些没有数学博士学位的人来说也更加平易近人了。

一些人对这种想法嗤之以鼻,但1950年代初时,她设计出了一种编译器,也就是一组可以将更容易理解的代码转化为由机器处理的较低级代码的指令。通过这一工具,她和她的实验室开发出了FLOW-MATIC,这是第一种将英语纳入该过程的编程语言。——Molly Olmstead,Slate

4、星际飞行(Spacewar)!

年代:1961年

发行的第一款视频游戏

/ this routine handles a non-colliding ship invisibly

/ in hyperspace

hp1, dap hp2

count i ma1, hp2

law hp3 / next step

dac i ml1

law 7

dac i mb1

random

scr 9s

sir 9s

xct hr1

add i mx1

dac i mx1

swap

add i my1

dac i my1

random

scr 9s

sir 9s

xct hr2

dac i mdy

dio i mdx

setup .hpt,3

lac ran

dac i mth

hp4, lac i mth

sma

sub (311040

spa

add (311040

dac i mth

count .hpt,hp4

xct hd2

dac i ma1

hp2, jmp .

Steve Russell,收集自Bitsavers.org

1961年末,一群年轻的MIT雇员、学生和同事(其中很多是Tech Model Railroad俱乐部的成员)拿到了最近别人捐赠的DEC PDP-1计算机的深夜使用权。属于非军事计算前沿技术的PDP-1售价为12万美元(按今天计算将超过100万美元),字长达18位,程序存储用的是纸带。这帮程序员用五个月的时间开发了一个游戏,里面是两名玩家控制着飞船(针和楔形物)进行一对一的太空战,同时还要避开位于屏幕中心的恒星的引力。

很快,星际飞行!就在早期的“黑客”社区中传播开来。后来DEC把它预装进了每一台PDP-1里面,并预装到核心内存里面,准备在安装时进行演示。这个程序对1960年代规模还很小的编码社区产生了重大影响,并启发了后面数代的视频游戏创作者。现在它还从模拟者那里找到自己的存在,并且在计算机历史博物馆的最后一台可操作PDP-1上还在定期演示。2018年,游戏的首席开发者Steve Russell在史密森尼学会上说:“它已有50多年的历史。没有未解决的用户投诉。没有崩溃报告。而且支持依旧提供。”——Arthur Daemmrich ,导演,勒梅森发明与创新研究中心

5、电子邮件的起源

年代:1965

拜托,这是电子邮件。

WHENEVER A(1).E.FENCE.OR.A(2).E.FENCE.OR.A(3).E.FENCE

PRFULL.(R'1INSTRUCTIONS:$)

PRFULL.($ '4MAIL NAME1 NAME2 PROB1 PROG1 PROB2 PROG2 ...$)

PRFULL.($ WHERE '=NAME1 NAME2'= IS THE FILE TO BE MAILED,$)

PRFULL.($ AND '=PROBN PROGN'= ARE DIRECTORIES TO WHICH '8$,

1 $IT IS TO BE SENT.'B$)

CHNCOM.(0)

END OF CONDITIONAL

CTSS 程序员MAIL手册页

1961年,麻省理工学院的黑客开发了一个系统,这个可以让多个用户登录到同一台计算机上,然后他们开始互相给对方简短留言。1965年,一群编码人员决定开发一个正式的命令系统来发送、接收和显示这些数字化的信函。对于“MAIL”这个命令一开始上级是拒绝的,觉得有点轻率,但它的使用却大行其道,以至于到1971年,麻省理工学院甚至出现了第一条垃圾邮件:一条反越战的信息。——Clive Thompson

6、警察巡逻算法

年代:1968

现代预测警务和种族定性计算机化的开始

1965年,当林登·约翰逊总统组建总统执法与司法委员会时,他下令该委员会研究如何利用计算机来帮助解决美国的的“犯罪问题”,他和该委员会对这个问题的定性是“城市问题”和“黑人问题”。这个问题的答案是“警察巡逻算法(Police Beat Algorithm,PBA)”,该算法旨在解决规划问题,比方说在城市的特定区域需要安排多少名警察巡逻之类的问题。通过将PBA与犯罪数据库相结合,警方可以在犯罪实施之前根据种族人口统计数据自动生成嫌犯档案,并相应部署资源(警察,武器和其他装备)。今天的预测警务对黑人和棕色人种监视并定罪的情况相对不成比例。就像PBA的故事提醒我们那样,这种情况并不是不可预见的技术故障的结果:相反,这是这项技术50年设计的完美体现。——Charlton McIlwain,《黑人软件(Black Software: The Internet & Racial Justice, From the Afronet to Black Lives Matter)》作者

7、阿波罗11号登月舱的紧急救助代码

年代:1969

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

POODOO INHINT

CA Q

TS ALMCADR

TC BANKCALL

CADR VAC5STOR # STORE ERASABLES FOR DEBUGGING PURPOSES.

INDEX ALMCADR

CAF 0

ABORT2 TC BORTENT

OCT77770 OCT 77770 # DONT MOVE

CA V37FLBIT # IS AVERAGE G ON

MASK FLAGWRD7

CCS A

TC WHIMPER -1 # YES. DONT DO POODOO. DO BAILOUT.

TC DOWNFLAG

ADRES STATEFLG

TC DOWNFLAG

ADRES REINTFLG

TC DOWNFLAG

ADRES NODOFLAG

TC BANKCALL

CADR MR.KLEAN

TC WHIMPER

数字化:Virtual AGC与MIT Museum

阿波罗制导系统计算机(AGC)是一个奇迹:就像计算阿波罗重返地球轨迹的Poppy Northcutt告诉我那样,AGC的计算能力还比不上今天记录个人信息的贺卡。但是,它却做到了该做的。

有限的计算能力和存储空间意味着必须细致地管理好任务,因此AGC始终聚焦在最重要的工作上。如果它没有足够的空间来执行任务,那就不可能完成任务。AGC软件团队知道,总有些事情是自己计划不到的。因此,他们开发了BAILOUT。当计算机有空间用完(或“溢出”)的风险时,AGC会触发BAILOUT把不太重要的数据和操作调走,从而让重要的数据和操作保持正常运行。

当Eagle着陆器准备降落到月球表面时,大概在30000英尺高空处,AGC 发出了“1202”的警报,尼尔·阿姆斯特朗和休斯敦的飞控都没有马上意识到这一点。但是在不到30秒的时间内,指挥中心的计算机专家表示,AGC软件正在按预期的方式运行:放弃了低优先级的工作并重新开始重要的工作(这个过程很快,以至于大家都无法察觉)。阿姆斯特朗和Buzz Aldrin可以继续从AGC那里得到他们绝对需要的东西,好继续安全着陆。

在阿姆斯特朗说出“鹰已降落”之前,溢出警报还会再响三声,但永远是因为事情按预期进行才会响。“救助”一词通常表示任务以失败结束,但在这里却让人类的最高成就成为现实。— 史密森尼国家航空航天博物馆主任Ellen Stofan

8、Hello, World!程序

日期:1972年或更早

把世代引入代码的一句话

main{ printf (“ hello,world \ n”); }

当你坐下来学习一门新的编程语言时,教程要你做的第一件事就是让计算机显示出 “Hello,world!”这句话。也许早期最著名的例子来自贝尔实验室备忘录,《C语言编程教程》。 这本书写于1974年,尽管有人发现在1972年的B语言手册里面也发现了它,而且可能时间比这还要早。

Hello, World!是一个很美丽的教材。这是一项很小的、可完成的任务,可以让人早早获得成就感。这已成为了标准,有助于说明不同编程语言之间的差异。对于高级程序员来说,这也是一个快速简便的方法,可确保在安装新环境后一切正常。(有时候程序员会用“实现'hello world'的时间'作为比较语言和环境的速度测试。)也许最重要的是,“Hello,world!”天真、友善,而且有助于说明新程序员的代码可产生的影响范围。那就是全世界。——IBM AI设计主管Chris Noessel 。

9、空终止串——Null

年代:1972

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

char yellow[26] = {'y', 'e', 'l', 'l', 'o', 'w', '\0'};

GNU C参考手册

1972年,丹尼斯·里奇(Dennis Ritchie)做出了一个重大决定:自己的新语言要用一种所谓的“空终止串”来表示文本。这个概念其实早就出现了,但是他在自己的新语言,C语言里面把它奉若神明,而这一决定的遗产从此就一直缠住了我们。

编程语言表示一段文本的主要有两种方式:它可以是内在的固定长度的——“我就包含10个字符,就这么多。”也可以用过空值(null)结尾——这里有一堆的字符,你尽管看下下去,直到最后到达零字节为止,祝你好运!”

C代码中一个极其常见的错误是把一个长字符串复制到一个较短的字符串,造成结尾处溢出,这意味着你破坏了刚好在附近的其他数据。就像在白板边上写东西一样。

除了只是导致程序发生故障外,此类错误还可以用来说服程序用经过精心设计的特定数据去覆盖某些内容,从而改变程序的行为。这就是缓冲区溢出攻击。但凡你听说过的安全漏洞几乎都是从这里开始的,其始作俑者就是1988年的莫里斯蠕虫病毒(Morris Worm)。

仔细写代码可以避免在C语言中出现此类错误,但是这种语言的特点导致此类错误产生容易检测难。几乎所有的现代语言都避开了以null终止的字符串,但是从路由器到“智能”灯泡,C和C ++仍然在世界的基础处运行着。因此,在将近50年后,我们仍跟这类bug在玩打地鼠的游戏。——Jamie Zawinski,Netscape开发者,Mozilla.org创始人,DNA Lounge老板

10、Telenet远程网

年代:1975

第一个基于数据包交换的公共数据网络,是当今互联网的骨干

互联网的前身是ARPANET,这是一个供高级研究计划局(现为DARPA)研究人员机器之间交换数据的计算机网络。随着ARPANET在政府内部的扩张,网络搭建者意识到这项技术可能对普通大众也很有价值,以及参与到其中可以催生多少的商机。1975年8月,ARPANET的商业版本Telenet 在七个城市上线,该网络可让最早期的客户(主要是计算机或数据库公司)用电话拨号方式上传下载(如电子邮件原型消息)或远程访问存储在中央计算机上的代码。虽然ARPANET通常被认为是现代Internet的鼻祖,但实际上为公众消费而设计的Telenet才是Web的前身。实际上,1980年代Telenet的最大客户之一就是Quantum Link,后者后来成为AOL。——Jane C. Hu,Future Tense contributor

11、温哥华证券交易所的舍入误差

年代:1982

一个小小的小数点之别付出的巨大代价

- return floor(value)+ return round(value)

温哥华证券交易所使用的代码大概是这样的。

1982年初,温哥华证券交易所推出了一种一开始锚定基点为1000点的电子股票指数。但是推出后在两年的时间之内,它就跌到了原始价值的一半,这种走势在牛气冲天的1980年代初期是一个令人困惑的反例。一项调查显示,对指数的计算在一个地方出了问题,那就是用floor而不是round。用floor意味着指数被舍入而不是取整到小数点后三位。(数字计算机必须要有有限的精度,因此需要四舍五入或截断。)因此,如果指数计算值为532.7528的话,计算机保存下来的值是532.752,而不是四舍五入为532.753。这一点点的差异本来关系不大,但由于每天都要对指数进行数千次计算,这种看似很小的差异(基本上每次都进行不进位舍入)导致指数值出现急剧下降。这个编程错误最后在1983年11月被修正,当时的某个周五收盘时指数已经降到500左右了。到了下周一指数以超过1000点开盘,损失掉的价值被恢复回来了。——伊利诺伊大学香槟分校助理教授Lav Varshney

12、Therac-25代码

年代:1985–1987年

事实证明,过分自信会杀死人

当真相显现时,头条新闻就现代化发出了警告。《洛杉矶时报》宣称:“复杂时代的软件故障会死人。” 一种本来用于治疗癌症的机器由于在几家医疗机构对六名患者进行了过大剂量的放射,造成了至少三人死亡。

研究人员经过调查发现,Therac-25的程序允许致命错误的出现。本来这台机器提供的是低功率和高功率两种类型的治疗,而后者需要金属设备来过滤光束。但是由于软件存在的错误,操作员可以在没有合适的金属设备就绪的情况下意外触发高功率模式。

在设计上,Therac-25是Therac-20的“改进”版,而且这种软件被认为已经万无一失,因此不需要外部的安全检查。结果:重大死亡的责任要归咎于过度自信的工程师,因为他们没有对错误发生的可能性做出解释。——Molly Olmstead

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

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

译者:boxi。

相关问答

贵的wifi扩展器和便宜的有什么不同?-ZOL问答

andox81195058路由器是接宽带接入的,扩展器是连接路由器的也是路由器的延伸。...手机肯定不能说和电脑比啦,可以选择n97港行的,那个就可以支持无线网络,侧滑的...

GPU源码泄露事件对AMD造成了多大的影响?

AMDGPU源码泄露,而且是RTL级文件,换句话来说这名女黑客手上的代码可以去做物理设计,然后流片。在github上公布了部分代码,该黑客以1亿美金拍卖GPU源代码,并...

 大乌贼  哈尼王子李维真 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部