开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2019.11.27
二进制编程的诞生甚至比计算机本身更早。人们认为BasileBouchon是第一个在纸上打孔并借此控制机器的人:1725年,他发明了一种纺织设备,能够根据送入的打孔纸调整纺织图案。有孔代表“1”,无孔代表“0”。
“电子数字积分器与计算机(ENIAC)”是第一台可编程的电子计算机。其诞生于1945年,通过在组件之间配置不同的接线以实现对具体问题的处理。当一项任务(例如加法)完成之后,将有新的脉冲触发下一项操作。
几年之后,冯·诺依曼与洛斯阿拉莫斯国家实验室科学家NicholasMetropolis接手ENIAC,并在计算机上执行了第一条现代代码:在可寻址只读存储器(ENIAC中的功能表开关)中执行数百条数字指令。
(Wikipedia)
GraceHopper当时打算对一台早期计算机进行编程,并决定利用人类语言元素简化编程流程。
1950年初,她设计出第一款编译器,这是一组指令,能够将人类更易懂的代码形式转换为可供机器直接处理的低级代码。她和她的实验室利用该工具开发出FLOW-MASTIC,第一种利用这一过程使用英语单词的编程语言。—MollyOlmstead
/thisroutinehandlesanon-collidingshipinvisibly/inhyperspacehp1,daphp2countima1,hp2lawhp3/nextstepdaciml1law7dacimb1randomscr9ssir9sxcthr1addimx1dacimx1swapaddimy1dacimy1randomscr9ssir9sxcthr2dacimdydioimdxsetup.hpt,3lacrandacimthhp4,lacimthsmasub(311040spaadd(311040dacimthcount.hpt,hp4xcthd2dacima1hp2,jmp.(SteveRussellviaBitsavers.org)
1961年末,一群年轻的麻省理工学院教员、学生及助理人员(其中不少人是当时TechModelRailraod俱乐部的成员)夜以继日地围坐在一台捐赠而来的DECPDP-1计算机面前。
《Spacewar!》在早期“黑客”社区当中迅速传播开来,随后以DECPDP-1计算机上内置程序的身份预加载至核心内存当中,以供演示之用。该项目极大鼓舞了上世纪六十年代的编码社区,并启发了一代又一代电子游戏创作者。
(CTSSProgrammer’sManualPageforMAIL)
1965年,一群编程人员决定开发一套正式的命令系统,用于发阔达、接收以及显示这些短小的数字消息。
虽然当时的“高端人士”拒绝使用MAIL这条看似草率的命令,但其用法却大行其道。到1971年,麻省理工学院甚至收到历史上第一条垃圾邮件:一段反越战信息。—CliveThompson
1965年,时任美国总统的LyndonJohnson组建总统执法与司法委员会,并要求该委员会研究如何利用计算机解决美国国内的“犯罪问题”。
他和该委员会为这个问题设定了两个关键词,其一是“都市”、其二是“黑人”,计算机给出的答案即为“警察执法算法”。
该算法旨在解决规划问题,例如在城市特定区域内应部署多少名巡逻警员。通过将该算法与犯罪数据库相结合,警务人员即可根据种族人口统计数据自动生成嫌疑人档案,并在发生犯罪活动之前部署对应资源(包括警员、武器以及其他装备)。
POODOOINHINTCAQTSALMCADRTCBANKCALLCADRVAC5STOR#STOREERASABLESFORDEBUGGINGPURPOSES.INDEXALMCADRCAF0ABORT2TCBORTENTOCT77770OCT77770#DONTMOVECAV37FLBIT#ISAVERAGEGONMASKFLAGWRD7CCSATCWHIMPER-1#YES.DONTDOPOODOO.DOBAILOUT.TCDOWNFLAGADRESSTATEFLGTCDOWNFLAGADRESREINTFLGTCDOWNFLAGADRESNODOFLAGTCBANKCALLCADRMR.KLEANTCWHIMPER阿波罗制导计算机(AGC)堪称人类科技发展史上的奇迹。
有限的计算容量与存储空间,要求其必须认真管理每一项任务,因此AGC必须始终专注于最重要的工作内容。一旦计算量超出承载能力,整个登月计划都将因此失败。为此,项目成员开发出BAILOUT。
当计算机遭遇空间耗尽(或者说「溢出」)风险时,AGC会触发BAILOUT以丢弃重要度相对较低的数据与运算,从而确保核心数据与运算保持正常运行。
当鹰号着陆器接近月球表面时,AGC在距离月面3万英尺处发出了“1202”警报,遗憾的是阿姆斯特朗以及身处休斯顿宇航中心的控制员们并没有马上察觉。
不到30秒之后,控制中心的计算机专家们得出结论:AGC软件仍在按预期方式运行,即放弃低优先级工作并集中资源处理核心负载(整个切换过程很快,因此机组人员无法察觉)。阿姆斯特朗与奥尔德林继续使用由AGC提供的宝贵数据,引导登月舱一步步完成着陆。
当我们集中注意力学习一种新的编程语言时,教程上的第一个案例就是如何在计算机屏幕上显示短语“Hello,world!”
Hello,World!是一种伟大的教学方法。这是一项能够轻松完成的小任务,同时也代表着一种标准,体现出不同编程语言之间的重要差异。
charyellow[26]={'y','e','l','l','o','w','\0'};(TheGNUCreferencemanual)
1972年,DennisRitchie做出一个重大决定:在新语言中用一种名为“空终止字符串”表示文本。这个概念早已出现,但他决定将其引入自己的新成果C语言当中——而这个决定,给无数编程后继者带来了深远的影响。
虽然可以在C语言中通过认真编码避免此类bug,但这种语言的设计特性使得此类bug极易出现且难以检测。从路由器到“智能”灯泡,虽然几乎每一种现代语言都会刻意避免空终止字符串问题,但C与C仍然统治着整个世界。
在互联网诞生之前,ARPANET首先出现。这是一套计算机网络,主要供高级研究计划局(DARPA)的研究人员在机器之间进行数据交换。随着ARPANET在政府内部的快速扩张,其创造者意识到这项技术可能对普通大众也拥有重要价值,甚至有望带来巨大的财富收入。
尽管ARPANET被普遍视为现代互联网的最早版本,但更准确地讲,为公众消费而设计的Telenet才是真正的互联网鼻祖。
上世纪八十年代,Telenet最大的客户之一正是QuantumLink,也就是后来的AOL美国在线。——JaneC.Hu,FutureTense贡献者
温哥华证券交易所当初本应使用以上代码求取近似值。
这条命令执行的是四舍五入运算,而没有按设计预期原样保留三位小数。(当时的数字计算机处理能力有限,因此必须使用四舍五入或者直接舍去等方法。)这意味着如果指数计算结果为532.7528,那么正确的舍去结果应该是532.752,而非四舍五入后的532.753。
虽然这种差异看似微小,但经过每天成千上万次计算之后,股指开始出现急剧下跌。最终,这一bug在1983年11月得到解决:在上周末收盘于500点左右之后,周一重新开放时公布的指数终于正确超过1000点。——LavVarshney,伊利诺伊大学香槟分校副教授
头条新闻第一次发布由技术发展导致的事故。《洛杉矶时报》宣称,“过于复杂的现代软件正引发故障率的急剧提升。”一种被多家医疗机构中用于治疗癌症的机器在运行过程中发生爆炸,共波及六名患者,其中至少三人死亡。
调查人员事后发现,这台Therac-25设备在编程中存在致命错误。该机器提供低功率与高功率两种照射模式,而高功率模式需要利用金属设备过滤光束。但由于存在软件bug,在未匹配适当金属设备时,操作人员同样可能意外触发高功率模式。
Therac-25机型实际上是Therac-20的“改进”版本,当时人们认为其软件万无一失,因此不需要额外的安全检查。结果就是,工程师的过度自信引发了惨痛的伤亡事故。—MollyOlmstead
/join#cats互联网中继聊天(简称IRC)甚至在大多数人听说“互联网”这个字眼之前就已经存在。这是一种通过小组频道与他人进行实时聊天的流行技术方案。
总而言之,虽然功能非常基础,但对大多数人来说,在线聊天成为他们接触互联网的第一站,也成为后世无数在线会话应用的基础雏形。—AprilGlaser
Morris蠕虫代码中一条关键函数的内容摘录。
那时候,RobertMorris自己乃至互联网都还非常年轻。时年23岁的康奈尔大学研究生Morris发布了Morris蠕虫,并造成“互联网上的首次大规模攻击。”在全球接入互联网的约6万台计算机中,有10%左右遭到破坏,引发数百万美元损失,并导致《纽约时报》首次在纸媒上登出“互联网”一词。
即使是精通技术的从业者,也无法想象这股蠕虫攻势居然带来如此广泛的影响。Morris表示,他从没想过要造成如此重大的损害,但严重后果使其成为因《计算机欺诈与滥用法》遭到起诉的第一人。
:(){:|:&};:请勿在自己的计算机上尝试。
上面这行代码,实际上是一种被称为“叉路炸弹”的单行病毒。其需要一些特定条件才能起效(例如使用较为陈旧且易受感染的Unix操作系统版本)。但只要满足这些条件,我们就可以在Bash中键入此命令,它会一遍又一遍自我复制,直到耗尽计算机的全部可用内存并导致系统崩溃。
之所以如此著名,不单单是因为它既体形小巧又威力巨大,同时也因为它使用了冒号作为函数名称。大多数函数(一种可重复使用的代码行)都会以描述性方式命名,例如“Print”或者“isThisEmailValid”,但这只是一种习惯而并非强制要求。虽然在大多数计算语言中,我们无法使用冒号作为函数名称,但Bash是个例外。
TimBerners-Lee创造的超链接概念,改变了整个世界。链接信息的概念并不算特别新颖,但超链接的新特性在于能够将计算机系统规则中的标点符号拼凑起来,从而建立起://这一标准URL格式。
这些当初根本无法想象的用例告诉我们,当一波技术浪潮达成顶峰时,接下来又会有新的成果迅速跟上。—CharlesDuan,RStreet技术与创新总监
double*NaiveDct_transform(doublevector[],size_tlen){if(SIZE_MAX/sizeof(double) 1992年,联合摄影专家组发布了JPEG规范,旨在缩小图像文件的体积。 虽然当时也出现了其他一些压缩格式,但JPEG之所以能够最终成为全球标准,凭借的就是其免版税许可制度。 JPEG运用的是有损压缩方法,这种处理过程会破坏某些人眼无法察觉的内容,例如颜色的细微变化。事实上,有损压缩思路还影响到1992年诞生的另外一项重大技术成果:mp3。 这种音频文件格式,同样是通过丢弃人耳无法听到的数据比特帮助音频成功实现瘦身。—AaronMak 以上为2.7版本中的部分代码。 此前的浏览器往往非常笨重,虽然能够很好地渲染文本,但却强迫用户在单独的窗口中查看图像。由MarcAndreessen带领的Mosaic技术团队希望打造一款能够同时显示图像与文本的浏览器。 我们自己的robots.txt文件。 2009年,第九巡回法院首席法官AlexKozinski甚至还因此接受过司法不当行为调查。—AmandaLevendowski,乔治敦法学院知识产权与信息政策系主任 WardCunningham首先通过自己的网站WikiWikiWeb发明了维基,在他看来WikiWikiWeb代表着最简单的信息共享方式。 这种可访问格式,使得维基成为众多重要在线活动的首选协作工具,从跟踪安全漏洞到发布在线笔记皆在此列。但与其他在线可编辑内容一样,维基系统也极易受到影响,用户往往对于应该及不应该发布哪些内容而爆发激烈的争论。 正因为如此,维基百科才决定添加关于如何管理与编辑会话页面、以及如何添加新信息的明确规则。—AprilGlaser 以上代码会打开带有特定url的新窗口。 #!/bin/perl-s---export-a-crypto-system-sig-RSA-3-lines-PERL$m=unpack(H.$w,$m.'\0'x$w),$_=`echo'16do$w24Oi0$d*-^1[d2%Sa2/d0 衬衫上写有“警告:这件衬衫属于军火类商品,不得从美国出口或向外国公民展示。” 在PageRank诞生之前,搜索引擎会根据我们的查询词与文档内容的匹配情况进行信息查找。但在PageRank中,LarryPage与SergeyBrin注入了绝妙的新思路:知识即社交——搜索也应如此。 他们开发出一种算法,能够根据在线链接至某一页面的其他页面数量,对该页面的重要度进行估算并形成结果排序。凭借着这一点,谷歌才逐步建立起如今无可匹敌的强大力量。—CliveThompson JSFX.FireSpark.prototype.changeColour=function(){varcolour='';r2=Math.random()*255;g2=r2;b2=0;if(!(r2|g2|b2)){r2=255;g2=255;b2=0;}colour='#'dec2hex(r2)dec2hex(g2)dec2hex(b2);this.setBgColor(colour);}(RoyWhittle) DouglasEnglebart与BillEnglish在上世纪六十年代发明的鼠标,彻底改变了我们与计算机交互的方式。虽然鼠标的使用方式非常直观,但当时的显示技术却往往跟不上鼠标的快速移动功能。 为此,操作系统开发人员添加了鼠标轨迹,旨在显示光标原先所在位置的瞬间阴影图像,从而帮助用户更轻松地跟踪并查找当前光标位置。 从2005年诞生的GoogleReader,到2013年RSS1.0核心开发者、互联网自由活动家AaronWartz不幸逝世,RSS在其巅峰时期几乎垄断了整个互联网上的信息发布渠道。 1999年9月23日,NASA的科学家们发现价值1.25亿美元的火星气候轨道飞行器与控制中心彻底失去联系。后来的一项调查确定了失败原因:某位承包商为轨道飞行器编写了一款采用英制单位的程序,问题是虽然美国国内使用英制单位,但NASA的软件却使用公制单位。正是代码中的单位错误,导致轨道飞行器前进至计划外的未知位置。 早期“捕食者”无人机的武器化,不仅代表着技术史上的一个标志性时刻,同时也成为军事与政治史中的一大里程碑。无人机系统如今在战场上大量涌现,改变了士兵的作战甚至思维方式 (define-behavior(bounce:start-when(or(bump)bounce-trigger):abort-when(bump-edge):onetimet))(iRobot) 大家肯定还记得第一次看见Roomba的情景:我是在17年前在朋友家第一次见到。这台扫地机器人在屋里转来转去,我则在沙发上开怀大笑。但就是这台略显笨拙的小设备,却代表着一场机器人技术革命的新曙光。 2002年9月10日,美国专利号6449490,“定向发射器、多接收器系统采用路径分集机制,最大限度提高了数据吞吐量。” 无论何时、无论何地,基站信号覆盖范围内的手机数量都相当可观。如果不进行调度,所有传输通道都将相互干扰,并阻止其他设备以可靠方式接收信息。因此,基站必须优先实现一项基本要求:确保所有用户都能够完成通话。 考虑到噪音较大位置的用户需要利用更多的资源才能获得相同的服务质量,解决方案必须在个体用户需求与整体网络性能之间进行折衷。等比例公平调度机制确保所有用户至少享有同样的最低服务水平,同时最大限度提升总体网络吞吐量。 这一目标的实现离不开对用户资源需求优先级的调整。区区三行代码,让全世界所有3g与4g蜂窝网络全面运作了起来。—LavVarshney doubleAttackerSuccessProbability(doubleq,intz){doublep=1.0-q;doublelambda=z*(q/p);doublesum=1.0;inti,k;for(k=0;k<=z;k){doublepoisson=exp(-lambda);for(i=1;i<=k;i)poisson*=lambda/i;sum-=poisson*(1-pow(q/p,z-k));}returnsum;}无论你是比特币的支持者、质疑者还是旁观者,至少应该对该项目的巨大影响持肯定态度。 比特币本身已经积累起数千亿美元的直接投资,但更重要的是,从保障民主选举到结束非感官性接触,其背后的基础技术区块链似乎拥有着无穷无尽的可行应用方向。 一切始于2008年,当时自称为“中本聪”的比特币缔造者发布白皮书,这也标志着这种全新货币的正式诞生。 安全研究人员TillmannWerner与FelixLeder共同编写了这段代码,并在对抗Conficker蠕虫的过程中证明了其功能等价性。 十年之前,多达1500万台计算机感染了Conficker病毒。这种病毒利用的,正是Windows操作系统中的固有安全漏洞。 这种病毒令人恐惧,但其中先进的设计理念也让其背后的操纵者备受尊敬:该并不比会将每台计算机转化为超大规模肉鸡集群的一部分,等待命令,并阻止受感染计算机打开安全程序或者下载任何能够清除该病毒的补丁程序。 {'__typename':'PageLikeAction','action_type':'LIKE','label':{'text':'Like'}2019年9月的Facebook.com网站 buffer=OPENSSL_malloc(12payloadpadding);bp=buffer;/*Enterresponsetype,lengthandcopypayload*/*bp=TLS1_HB_RESPONSE;s2n(payload,bp);memcpy(bp,pl,payload);bp=payload;/*Randompadding*/RAND_pseudo_bytes(bp,padding);(NakedSecurity) 2014年,安全研究人员发现了OpenSSL中的一项安全漏洞。OpenSSL是一套非常流行的开源库,约有三分之二的网站(包括dropbox、twitter、yahoo以及github等)利用它实现两台计算机之间的在线通信。 2018年10月,泰国狮子航空的610次航班在出发后不久即坠入大海。这起事故虽然看似反常,但波音公司向公众保证该机型绝对安全,并表示只是需要进一步加强飞行员培训以及“软件升级”工作。但就在4个月之后,埃塞俄比亚航空公司的一位飞行员发现飞机的自动驾驶系统试图将机头向下推。 他连续20次尝试将机头拉起,但几分钟之内,全机乘客仍然不幸遇难。作为回应,世界各地的航空公司立即决定停飞这一机型。调查显示,坠机事故源自737Max的设计问题,特别是一些难以察觉的软件故障,这些软件可能引导飞机反复俯冲。