| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 503 人关注过本帖
标题:你知道Hello World程序究竟从何而来吗?
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:8 
你知道Hello World程序究竟从何而来吗?


这是一个最著名的程序。对每一位程序员来说,这个程序几乎是每一门编程语言中的第一个示例程序。那么,这个著名的程序究竟从何而来呢?

实际上,这个程序的功能只是告知计算机显示Hello World这句话。传统意义上,程序员一般用这个程序测试一种新的系统或编程语言。对程序员来说,看到这两个单词显示在电脑屏幕上,往往表示他们的代码已经能够编译、装载以及正常运行了,这个输出结果就是为了证明这一点。

这个测试程序在一定程度上具有特殊的象征意义。在过去的几十年间,这个程序已经渐渐地演化成为了一个久负盛名的传统。几乎所有的程序员,无论是在你之前,或在你之后,当第一次实现与计算机成功沟通之后,在某种程度上,他们的肾上腺素就会急剧上升(激动不已)。以下就是这个著名程序的诞生故事。

Hello World究竟从何而来?

Hello, World最早是由 Brian Kernighan 创建的。1978年,Brian Kernighan写了一本名叫《C程序设计语言》的编程书,在程序员中广为流传。他在这本书中第一次引用的Hello World程序,源自他在1973年编写的一部讲授 B语言的编程教程:

main (){  

extrn a,b,c;  

}

a 'hell';

b 'o, w';

c 'orld';

但是非常不幸的是,当 Forbes India 杂志采访他的时候,他自己对这段传奇故事中一些记忆已经有点儿模糊了。当他被问及为什么选择『Hello, World!』时,他回答说,『我只记得,我好像看过一幅漫画,讲述一枚鸡蛋和一只小鸡的故事,在那副漫画中,小鸡说了一句‘Hello World’』。

鉴于Hello World这个计算机程序的广泛流行程度,这个起因看起来还是蛮合适的。

那个时候,无论是Kernighan,还是他的同事 Dennis Ritchie - C语言之父,都无法想象C语言以及这本教程书将会在今天如此之流行。他们所做的工作只是贝尔实验室的一个研究项目,而在当时,贝尔实验室也只是美国电话电报公司(AT&T)的技术研究与开发机构而已。

尽管没人能够科学地解释为什么Hello World如此地流行,但是,Hello, World程序的确在计算机发展历史上成为了一个具有重要意义的里程碑。我们一起来回顾一下当时的历史环境。

襁褓中的变革

现在你可能很难想象,但是在Hello World连同Kernighan的编程书出版之前,计算机对于公众来说,几乎隐含着一种负面的意义。在1970年代,主机时代的计算机,不仅运行缓慢,体积庞大到足以占用整个一间屋子,而且还需要一位全职的科学家或者研究者来维护它。事实上,在1970年代后期之前,计算机科学家在编程的时候还要使用大量的打孔卡!

通常情况下,一般人认为计算机是一种不可触碰、复杂,而且极其昂贵的设施,它们仅仅适用于学术、政府或者国防。事实上,即使是那些专注计算机领域的工业巨头们也在努力克服这些障碍。当时谁也无法想到,事隔多年之后,也就是现在,如果我们暂时失去了我们的个人数字设备(如手机等),我们甚至会感到焦虑。

第一个著名的计算机应用的案例发生在1890年- 为了收集和统计超过六千万美国人口的相关数据。另一个案例出现在1940年,也就是二战期间,Bombes & Colossus 计算机被用于破解德国人的通讯密码。

在1950年,世界上迎来了第一代商用计算机,如 Zuse 3和UNIVAC,在当时主要应用于算术运算,但如果你想要买到这些设备,需要花费上百万美元。

从教育相关的角度来看,绝大多数早期的有关编程语言的图书,如FORTRAN或BASIC,常常都会从一点入手:计算机非常有用。这是算法工程师和研究者 John Mount 的一个重要观点。Mount认为,Hello World大范围流行开启了一个崭新的时代–计算机科学家不再需要说服社会和大众,计算的工具化特征已经所处可见。

例如,在1964年,一本名叫 My Computer Likes Me When I Speak Basic 的图书,在它的前言部分,就专门讲述了计算机编程语言的一般性用途。而且,书中的第一个例子的输出结果就是『MY HUMAN UNDERSTANDS ME』。之所以使用这个示例的原因,目的是为了帮助人们理解计算机这个新生事物,并且希望告诉人们:你可以和计算机进行交流。在此之后,也就是1956年,动态编程语言开启了将计算机应用于现实世界的更多实例。

在C语言以及Hello World程序流行起来之前,计算机并没有得到大范围的应用和普及,计算机行业也没有开始真正的腾飞。

Hello World,编程时代的真正来临

引发Hello World广泛传播的一个最主要催化剂,是PDP-11型计算机的面世,PDP-11是一款在商业上极其成功的小型计算机。数字设备公司(DEC)以$10,000的单价,总共出售了六十万台。尽管如此,这种类型的计算机已经比当时价值几百万美元的大型机在价格上便宜了许多。另外,其中PDP-11 16-bit系列不要求使用打孔卡,你可以使用相应的编程语言直接与计算机进行沟通。在那个年代,这还是第一次。

有趣的是,为了加速社会的广泛接受度,数字设备公司并没有将其称为『计算机』。为了和以往那些大型主机相区别,数字设备公司改称其为『可编程的数据处理器』。当越来越多的机构开始采购越来越多的可编程计算机时,对于C语言编程书籍的需求也变得越来越旺盛了。

C语言和UNIX操作系统首先在PDP-11这个机型上变得流行了起来。因此,在接下来的一段时间里,其他类型的商用计算机也开始支持这个C编程语言以及UNIX,这种流行趋势最终促使成千上万的计算机相关工作者,开始阅读这本两百来页的《C程序设计语言》。当然,这其中自然包括了Hello World这个例子程序。

在八十年代以及九十年代,几乎每一位曾在桌面软件领域工作过的程序员,都曾拥有一本《C程序设计语言》。在当时,这本书大约售出了几百万本之多。

也许有很多不同的基本程序可供初学者动手尝试,但是截至目前为止,Hello World则是其中最为著名的一个。每一位程序员都曾记得他们的第一个Hello World程序,因为对他们来说,这就是一个重大事件。也许有些人还没有意识到这一点,但是,当一名新程序员清除完一些障碍顺利抵达Hello World时,他的内心体验到的不仅仅是一种成功的喜悦,更重要的是,他正在亲身经历一个跨越历史的时刻。

本文编译自hackerrank,作者Ritika Trikha。
搜索更多相关主题的帖子: 象征意义 编程语言 计算机 程序员 单词 
2015-11-01 04:54
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:15 
已阅 结
2015-11-01 07:46
Spy001
Rank: 9Rank: 9Rank: 9
来 自:山那边
等 级:贵宾
威 望:10
帖 子:138
专家分:1360
注 册:2015-1-23
收藏
得分:15 
已接

千百年之后,谁又还记得谁........
2015-11-01 11:23
暴风晕
Rank: 12Rank: 12Rank: 12
来 自:冥界
等 级:火箭侠
威 望:6
帖 子:402
专家分:3107
注 册:2015-8-8
收藏
得分:15 
我当时写这个程序成功的事情时候确实很高兴
2015-11-01 12:41
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:15 
hello world

一片落叶掉进了回忆的流年。
2015-11-01 17:11
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:15 
Goodbay

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-11-01 19:28
朱大哥
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:72
专家分:123
注 册:2015-1-16
收藏
得分:15 
请结贴
2015-11-01 21:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
中国黑客攻破Edge浏览器,夺取Win10系统控制权

作者:史中·方枪枪
 

原标题:《Win10被搞定!中国黑客通过Edge拿下Win10》,IT之家编辑酌情修改。

路人甲:说一个笑话吧。

路人乙:Windows很安全。

路人甲+路人乙:哈哈哈哈哈

为了让这样的笑话成为历史,微软拼了。不要小看Windows10,在开发的时候就卯足了劲要打翻身仗的微软为这款系统加入了无数先进的安全机制(控制流执行保护、字体隔离、虚拟化安全、符号链接缓和等)。和Windows10青梅竹马的Edge浏览器由于没有历史的包袱,同样装备上了极其“残酷”的安全策略,安全性甩掉了IE八条街。

所以MJ0011闻讯而至。

在韩国首尔举行的POC黑客大会上,这位微软的“克星”展示了对Edge的沙箱逃逸操作,以Edge为入口,闪身进入系统,夺得控制权限。只需几步简单的操作,就可以任意访问你的文件,监控你的电脑。

值得一提的是,MJ本次攻击结合了一个远程代码执行漏洞,这意味着攻击者仅仅通过远程操作,就可以实现对系统的远程控制。用这种“隔山打牛”的手法入侵防备森严的Windows,几乎是目前可以实现的最高级别攻击。

Edge有多强

今年早些时候的Pwn2Own黑客大赛上,MJ0011(以下简称MJ)就因为率领他的Vulcan团队17秒攻陷IE而备受瞩目。虽然那个版本的IE开启了所有的的安全防护,但相比Edge来说,还是小巫见大巫。

MJ告诉雷锋网:Edge相当于IE的所有防护手段全部默认开启,外加许多新的防护策略。就连做漏洞生意的朋友都整天抱怨说收不到Edge的漏洞。

不过凡事有利必有弊。Edge武装到牙齿的行为用力过猛,导致几乎不支持插件。就连很多微软自家的网站也无法用Edge打开。为了防止过分打脸,微软做出了一个妥协,那就是允许某些网页跳转到IE当中打开。(纳尼?又回到“好朋友”IE身上了!此处脑补MJ上扬的嘴角。)

于是,依靠“中国人民的老朋友”——IE,MJ长驱直入,一骑绝尘。


微软Edge浏览器

微软的“致谢”和“致歉”

实际上对Edge的破解早在几个月前就完成了。之所以现在才公开演讲其中的技术细节,唯一的原因就是给微软留出时间来修复这一漏洞。

说起来,微软是MJ的好朋友。MJ曾经数次提交致命漏洞而获得微软的致谢或奖励。但是这次微软的回应似乎并不尽如人意。

事实上本次攻击需要两个漏洞

1、Flash漏洞(用于远程执行代码,够到系统沙箱,本漏洞属于Adobe)

2、沙箱逃逸漏洞(用于利用IE的漏洞逃出系统沙箱,获得权限,本漏洞属于微软)

Adobe在收到MJ提交的漏洞之后,迅速做了修补;但但是微软却迟迟没有行动,并且回信给MJ,表示这个漏洞看起来并不严重,只要在IE里设置一下防护就好啦。但MJ并不认同,他的理由有两点:

1、Edge的安全要靠修改IE的设置来保证,简直太怪异了。而且很多用户根本不知道如何对IE进行设置。

2、在10月,MJ找到了对这个漏洞新的利用方法,即使对IE进行设置也无济于事。

为了公众安全,MJ向微软发了无数邮件,并且把这一情况面对面反映给微软漏洞计划的负责人,但是没有得到非常积极的回应。所以,已经等待半年的MJ决定不再给微软留面子。但就在他来韩国之前,微软方面联系到他,希望向他致歉,并且修复漏洞。为了谨慎起见,MJ临时决定涂抹掉了一些最关键的信息,而会务组也没有决定是否会把这场演讲的实况公布于众。

MJ手上还有更多“秘密武器”

著名的谷歌“0计划”旗下黑客James用“进两步,退一步”来形容微软Windows10在安全性方面的改进。

由于Win10比起以前的版本采用了很多新的机制,这些代码都要重新编写,在编写的过程中,又会产生新的漏洞。所以新系统仍然有薄弱的环节。

如此看来,他和微软的“战斗”远无停息之日。

MJ在POC大会演讲中还透露,自己手上仍然掌握着微软的0Day漏洞,留在明年的Pwn2Own大赛上用。“明年的Pwn2Own之后,无论我是否用到了这个漏洞,我都会提交给微软。”他说。

MJ领导的Vulcan团队有一句Slogen:

Live long and Pwn!

(活的久了什么都能破)

(生命不息,破解不止)

和漏洞做一生的朋友也许是MJ所理解的生活方式。或许对于他来说,最大的愉悦莫过于这样一个瞬间:

在POC大会现场演示中,轻点几次鼠标,弹出标志着破解成功的图片——“Hello World”。刹那间,全场猛然爆发出雷鸣般的掌声。

授人以渔,不授人以鱼。
2015-11-07 13:41
快速回复:你知道Hello World程序究竟从何而来吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040976 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved