Hello World程序的起源与历史

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

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

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

Hello World 究竟从何而来?

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


  1. main(){ 
  2.   extrn a,b,c; 
  3.   putchar(a); putchar(b); putchar(c); putchar('!*n'); 
  4.   } 
  5.  
  6. a 'hell'; 
  7. b 'o, w'; 
  8. 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』。之所以使用这个示例的原因,目的是为了帮助人们理解计算机这个新生事物,并且希望告诉人们:你可以和计算机进行交流。实际上,动态规划(Dynamic
Programming)在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
时,他的内心体验到的不仅仅是一种成功的喜悦,更重要的是,他正在亲身经历一个跨越历史的时刻。

作者:佚名

来源:51CTO

时间: 2024-09-20 05:19:52

Hello World程序的起源与历史的相关文章

Hello World 程序的起源与历史

这是一个最著名的程序.对每一位程序员来说,这个程序几乎是每一门编程语言中的第一个示例程序.那么,这个著名的程序究竟从何而来呢? 实际上,这个程序的功能只是告知计算机显示 Hello World 这句话.传统意义上,程序员一般用这个程序测试一种新的系统或编程语言.对程序员来说,看到这两个单词显示在电脑屏幕上,往往表示他们的代码已经能够编 译.装载以及正常运行了,这个输出结果就是为了证明这一点. 这个测试程序在一定程度上具有特殊的象征意义.在过去的几十年间,这个程序已经渐渐地演化成为了一个久负盛名的

在PHP应用程序开发中不正当使用mail()函数引发的血案

一.前言 在我们挖掘PHP应用程序漏洞的过程中,我们向著名的Webmail服务提供商Roundcube提交了一个远程命令执行漏洞(CVE-2016-9920).该漏洞允许攻击者通过利用Roundcube接口发送一个精心构造的电子邮件从而在目标系统上执行任意命令.在我们向厂商提交漏洞,发布了相关的漏洞分析文章后,由于PHP内联函数mail()导致的类似安全问题在其他的PHP应用程序中陆续曝出.在这篇文章中,我们将分析一下这些漏洞的共同点,那些安全补丁仍然存在问题,以及如何安全的使用mail()函数

那些对混合云开发和应用程序环境的错误认识

企业架构师们在开发混合云计算应用程序并为支持程序云计算而选择云计算供应商之前,他们应当好好完成他们的准备工作.选择错误的供应商和在错误的环境中开发应用程序都会对应用程序的运行性能.工作流程.变更成本.以及与客户的沟通和交易带来负面影响. 在本文中,我就是要对混合云计算开发和应用程序环境的某些错误认识进行澄清,并针对如何为混合云计算应用程序选择合适的供应商给出一些标准的定义. 目前,业界对于混合云计算环境有着很多的定义,但是大多数人都有一个共识,即混合云计算环境至少应包括一个私有云计算和一个公共云

《从问题到程序:用Python学编程和计算》——第1章 程序设计和Python 1.1 计算机和程序

第1章 程序设计和Python 我们已经生活在信息时代,环顾四周,信息技术的影响无处不在.由于信息科学技术的发展和应用,我们的世界的方方面面都与20年前大不相同了,例如: 个人生活:看看人们在每天生活中做的各种事情,有多少是在与屏幕键盘(可能是触摸屏)交互,这些都是20年前没有的事情. 人际交流:20年前的人际交流方式很简单.除面对面交流外,只能通过纸笔写信或长途电话(要找专门的电话或者到电话局).今天人手一部手机,可以通过电话.短信.各种网络即时消息相互交流.电子邮件也是私人之间的交流媒介,而

Check Point披露Facebook聊天应用程序存在漏洞

全球最大的专注于安全的解决方案提供商Check Point以色列捷邦安全软件科技有限公司 (NASDAQ: CHKP)日前披露了关于在Facebook Messenger在线和移动应用程序中发现的漏洞的详细信息.在Check Point披露之后,Facebook迅速修复了漏洞. 该漏洞允许恶意用户修改Facebook Online Chat &Messenger应用程序中的会话历史.通过该漏洞,可修改或删除发送的任何消息.照片.文件.链接等.漏洞在六月初向Facebook安全小组全面披露.Fac

宽带资本董事长田溯宁畅谈中国云产业联盟起源

为推进中国云产业发展和生态系统建立,4月20日,由北京航空航天大学.宽带资本.百度.用友.中国联通.龙湖地产.TCL.联想.阿里巴巴.腾讯.http://www.aliyun.com/zixun/aggregation/34205.html">北京大学共同发起的中国云产业联盟(简称"云联盟")在北京宣告成立. 宽带资本作为联合创始单位,其董事长田溯宁将在今天的发布会现场回顾中国云产业联盟起源.历史,并展望中国云产业生态系统建设前景. 北京航空航天大学校长怀进鹏:今天是我

什么时候该用RabbitMQ ,什么时候该用 Apache Kafka

人类如何做出决策? 在日常生活中,情感总是短路因素,导致在复杂或压倒性的决定上扣动扳机.但对于做有长期影响,复杂决策,的表意识,不可能是纯粹的冲动.高性能的人通常使用断路器,"本能," "直觉," 或其他的情绪,只有一次他们的表意识,潜意识吸收了作出决定所需的所有事实. 今天有很多的消息传递技术, 数不清的 ESBs, 和近100 iPaaS供应商在市场上. 自然,这导致了有关如何为您的需要-特别是那些已经投资在一个特定的选择,选择正确的消息传递技术的问题 .我们批

php 什么是PEAR?_php基础

PHP爱好者必喜欢PEAR,我们的目的就是希望将PEAR介绍给PHP的程式开发人员,我个人认为引用程式库的程式开发方式已经渐渐成为趋势了,除了php.JSP外,像perl.C++也都有专属的程式库供其开发人员引用. 借着引入PEAR,php的程式开发者除了可以大幅缩減撰写程式码的工作与时间外,还可以用很简单的方式得到许多強大的动态网页功能,我将会列举许多的实例,让大家看了后,一定会啪掌叫好,並深深的迷上了PEAR.此外,程式码很容易维护,安全性高也是PEAR另2个很吸引人的优点,PAER程式库宛

基于flex4技术从零开发flex博客系统:1 开发环境配置与hello world

一,如何学好flex 学习技术,最好的方法莫过于边学边用,一边阅读官方文档,一边在项目中实践.但是官方文档太过乏味:若是没人带,从头做项目又不知从何下手.若是有这么一个人,从他最初学习到最后学有所成,这个过程一一被记录下来,别人沿着他这个轨迹学习,一定会更容易入门. 对于初学者,学习内容若太难了,不易理解:若太容易了,又丧失了学习的兴趣与动力.cookbook居说很好,例子很丰富,无论什么问题都能找到答案.但CookBook只是只是针对简单.单一问题的解答集合,很松散,问题与问题之间没有联系,解