Hello World 程序的起源與歷史

2015-11-05 16:32:12來(lái)源:GAD作者:紅藍(lán)巴薩

這是一個(gè)最著名的程序。對(duì)每一位程序員來(lái)說(shuō),這個(gè)程序幾乎是每一門編程語(yǔ)言中的第一個(gè)示例程序。那么,這個(gè)著名的程序究竟從何而來(lái)呢?

這是一個(gè)最著名的程序。對(duì)每一位程序員來(lái)說(shuō),這個(gè)程序幾乎是每一門編程語(yǔ)言中的第一個(gè)示例程序。那么,這個(gè)著名的程序究竟從何而來(lái)呢?

實(shí)際上,這個(gè)程序的功能只是告知計(jì)算機(jī)顯示 Hello World 這句話。傳統(tǒng)意義上,程序員一般用這個(gè)程序測(cè)試一種新的系統(tǒng)或編程語(yǔ)言。對(duì)程序員來(lái)說(shuō),看到這兩個(gè)單詞顯示在電腦屏幕上,往往表示他們的代碼已經(jīng)能夠編譯、裝載以及正常運(yùn)行了,這個(gè)輸出結(jié)果就是為了證明這一點(diǎn)。

這個(gè)測(cè)試程序在一定程度上具有特殊的象征意義。在過(guò)去的幾十年間,這個(gè)程序已經(jīng)漸漸地演化成為了一個(gè)久負(fù)盛名的傳統(tǒng)。幾乎所有的程序員,無(wú)論是在你之前,或在你之后,當(dāng)?shù)谝淮螌?shí)現(xiàn)與計(jì)算機(jī)成功溝通之后,在某種程度上,他們的腎上腺素就會(huì)急劇上升(激動(dòng)不已)。以下就是這個(gè)著名程序的誕生故事。

Hello World 究竟從何而來(lái)?

\

Hello, World 最早是由 Brian Kernighan 創(chuàng)建的。1978年,Brian Kernighan 寫了一本名叫《C 程序設(shè)計(jì)語(yǔ)言》的編程書,在程序員中廣為流傳。他在這本書中第一次引用的 Hello World 程序,源自他在1973年編寫的一部講授 B 語(yǔ)言的編程教程:

main(){ extrn a,b,c; putchar(a); putchar(b); putchar(c); putchar(‘!*n‘); }a ‘hell‘;b ‘o, w‘;c ‘orld‘;

但是非常不幸的是,當(dāng) Forbes India 雜志采訪他的時(shí)候,他自己對(duì)這段傳奇故事中一些記憶已經(jīng)有點(diǎn)兒模糊了。當(dāng)他被問(wèn)及為什么選擇『Hello, World!』時(shí),他回答說(shuō),『我只記得,我好像看過(guò)一幅漫畫,講述一枚雞蛋和一只小雞的故事,在那副漫畫中,小雞說(shuō)了一句‘Hello World’』。

鑒于 Hello World 這個(gè)計(jì)算機(jī)程序的廣泛流行程度,這個(gè)起因看起來(lái)還是蠻合適的。

那個(gè)時(shí)候,無(wú)論是 Kernighan,還是他的同事 Dennis Ritchie - C 語(yǔ)言之父,都無(wú)法想象 C 語(yǔ)言以及這本教程書將會(huì)在今天如此之流行。他們所做的工作只是貝爾實(shí)驗(yàn)室的一個(gè)研究項(xiàng)目,而在當(dāng)時(shí),貝爾實(shí)驗(yàn)室也只是美國(guó)電話電報(bào)公司(AT&T)的技術(shù)研究與開發(fā)機(jī)構(gòu)而已。

盡管沒(méi)人能夠科學(xué)地解釋為什么 Hello World 如此地流行,但是,Hello, World 程序的確在計(jì)算機(jī)發(fā)展歷史上成為了一個(gè)具有重要意義的里程碑。我們一起來(lái)回顧一下當(dāng)時(shí)的歷史環(huán)境。

襁褓中的變革

現(xiàn)在你可能很難想象,但是在 Hello World 連同 Kernighan 的編程書出版之前,計(jì)算機(jī)對(duì)于公眾來(lái)說(shuō),幾乎隱含著一種負(fù)面的意義。在1970年代,主機(jī)時(shí)代的計(jì)算機(jī),不僅運(yùn)行緩慢,體積龐大到足以占用整個(gè)一間屋子,而且還需要一位全職的科學(xué)家或者研究者來(lái)維護(hù)它。事實(shí)上,在1970年代后期之前,計(jì)算機(jī)科學(xué)家在編程的時(shí)候還要使用大量的打孔卡!

\

通常情況下,一般人認(rèn)為計(jì)算機(jī)是一種不可觸碰、復(fù)雜,而且極其昂貴的設(shè)施,它們僅僅適用于學(xué)術(shù)、政府或者國(guó)防。事實(shí)上,即使是那些專注計(jì)算機(jī)領(lǐng)域的工業(yè)巨頭們也在努力克服這些障礙。當(dāng)時(shí)誰(shuí)也無(wú)法想到,事隔多年之后,也就是現(xiàn)在,如果我們暫時(shí)失去了我們的個(gè)人數(shù)字設(shè)備(如手機(jī)等),我們甚至?xí)械浇箲]。

第一個(gè)著名的計(jì)算機(jī)應(yīng)用的案例發(fā)生在1890年 - 為了收集和統(tǒng)計(jì)超過(guò)六千萬(wàn)美國(guó)人口的相關(guān)數(shù)據(jù)。另一個(gè)案例出現(xiàn)在1940年,也就是二戰(zhàn)期間,Bombes & Colossus 計(jì)算機(jī)被用于破解德國(guó)人的通訊密碼。

在1950年,世界上迎來(lái)了第一代商用計(jì)算機(jī),如 Zuse 3 和 UNIVAC,在當(dāng)時(shí)主要應(yīng)用于算術(shù)運(yùn)算,但如果你想要買到這些設(shè)備,需要花費(fèi)上百萬(wàn)美元。

從教育相關(guān)的角度來(lái)看,絕大多數(shù)早期的有關(guān)編程語(yǔ)言的圖書,如 FORTRAN 或 BASIC,常常都會(huì)從一點(diǎn)入手:計(jì)算機(jī)非常有用。這是算法工程師和研究者 John Mount 的一個(gè)重要觀點(diǎn)。Mount 認(rèn)為,Hello World 大范圍流行開啟了一個(gè)嶄新的時(shí)代 - 計(jì)算機(jī)科學(xué)家不再需要說(shuō)服社會(huì)和大眾,計(jì)算的工具化特征已經(jīng)所處可見(jiàn)。

例如,在1964年,一本名叫 My Computer Likes Me When I Speak Basic 的圖書,在它的前言部分,就專門講述了計(jì)算機(jī)編程語(yǔ)言的一般性用途。而且,書中的第一個(gè)例子的輸出結(jié)果就是『MY HUMAN UNDERSTANDS ME』。之所以使用這個(gè)示例的原因,目的是為了幫助人們理解計(jì)算機(jī)這個(gè)新生事物,并且希望告訴人們:你可以和計(jì)算機(jī)進(jìn)行交流。在此之后,也就是1956年,動(dòng)態(tài)編程語(yǔ)言開啟了將計(jì)算機(jī)應(yīng)用于現(xiàn)實(shí)世界的更多實(shí)例。

在 C 語(yǔ)言以及 Hello World 程序流行起來(lái)之前,計(jì)算機(jī)并沒(méi)有得到大范圍的應(yīng)用和普及,計(jì)算機(jī)行業(yè)也沒(méi)有開始真正的騰飛。

Hello World,編程時(shí)代的真正來(lái)臨

引發(fā) Hello World 廣泛傳播的一個(gè)最主要催化劑,是 PDP-11 型計(jì)算機(jī)的面世,PDP-11 是一款在商業(yè)上極其成功的小型計(jì)算機(jī)。數(shù)字設(shè)備公司(DEC)以 $10,000 的單價(jià),總共出售了六十萬(wàn)臺(tái)。盡管如此,這種類型的計(jì)算機(jī)已經(jīng)比當(dāng)時(shí)價(jià)值幾百萬(wàn)美元的大型機(jī)在價(jià)格上便宜了許多。另外,其中 PDP-11 16-bit 系列不要求使用打孔卡,你可以使用相應(yīng)的編程語(yǔ)言直接與計(jì)算機(jī)進(jìn)行溝通。在那個(gè)年代,這還是第一次。

有趣的是,為了加速社會(huì)的廣泛接受度,數(shù)字設(shè)備公司并沒(méi)有將其稱為『計(jì)算機(jī)』。為了和以往那些大型主機(jī)相區(qū)別,數(shù)字設(shè)備公司改稱其為『可編程的數(shù)據(jù)處理器』。當(dāng)越來(lái)越多的機(jī)構(gòu)開始采購(gòu)越來(lái)越多的可編程計(jì)算機(jī)時(shí),對(duì)于 C 語(yǔ)言編程書籍的需求也變得越來(lái)越旺盛了。

C 語(yǔ)言和 UNIX 操作系統(tǒng)首先在 PDP-11 這個(gè)機(jī)型上變得流行了起來(lái)。因此,在接下來(lái)的一段時(shí)間里,其他類型的商用計(jì)算機(jī)也開始支持這個(gè) C 編程語(yǔ)言以及 UNIX,這種流行趨勢(shì)最終促使成千上萬(wàn)的計(jì)算機(jī)相關(guān)工作者,開始閱讀這本兩百來(lái)頁(yè)的《C 程序設(shè)計(jì)語(yǔ)言》。當(dāng)然,這其中自然包括了 Hello World 這個(gè)例子程序。

在八十年代以及九十年代,幾乎每一位曾在桌面軟件領(lǐng)域工作過(guò)的程序員,都曾擁有一本《C 程序設(shè)計(jì)語(yǔ)言》。在當(dāng)時(shí),這本書大約售出了幾百萬(wàn)本之多。

也許有很多不同的基本程序可供初學(xué)者動(dòng)手嘗試,但是截至目前為止,Hello World 則是其中最為著名的一個(gè)。每一位程序員都曾記得他們的第一個(gè) Hello World 程序,因?yàn)閷?duì)他們來(lái)說(shuō),這就是一個(gè)重大事件。也許有些人還沒(méi)有意識(shí)到這一點(diǎn),但是,當(dāng)一名新程序員清除完一些障礙順利抵達(dá) Hello World 時(shí),他的內(nèi)心體驗(yàn)到的不僅僅是一種成功的喜悅,更重要的是,他正在親身經(jīng)歷一個(gè)跨越歷史的時(shí)刻。

關(guān)鍵詞:程序員