這是一個最著名的程序。對每一位程序員來講,這個程序幾乎是每一門編程語言中的第一個示例程序。那麼,這個著名的程序究竟從何而來呢?java
實際上,這個程序的功能只是告知計算機顯示 Hello World 這句話。傳統意義上,程序員通常用這個程序測試一種新的系統或編程語言。對程序員來講,看到這兩個單詞顯示在電腦屏幕上,每每表示他們的代碼已經可以編譯、裝載以及正常運行了,這個輸出結果就是爲了證實這一點。git
這個測試程序在必定程度上具備特殊的象徵意義。在過去的幾十年間,這個程序已經漸漸地演化成爲了一個久負盛名的傳統。幾乎全部的程序員,不管是在你以前,或在你以後,當第一次實現與計算機成功溝通以後,在某種程度上,他們的腎上腺素就會急劇上升(激動不已)。如下就是這個著名程序的誕生故事。程序員
Hello World 究竟從何而來?算法
Hello, World 最先是由 Brian Kernighan 建立的。1978年,Brian Kernighan 寫了一本名叫《C 程序設計語言》的編程書,在程序員中廣爲流傳。他在這本書中第一次引用的 Hello World 程序,源自他在1973年編寫的一部講授 B 語言的編程教程:編程
main(){ extrn a,b,c; putchar(a); putchar(b); putchar(c); putchar('!*n'); } 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 程序的確在計算機發展歷史上成爲了一個具備重要意義的里程碑。咱們一塊兒來回顧一下當時的歷史環境。網站
襁褓中的變革ui
如今你可能很難想象,可是在 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 時,他的心裏體驗到的不只僅是一種成功的喜悅,更重要的是,他正在親身經歷一個跨越歷史的時刻。
原網站:http://blog.hackerrank.com/the-history-of-hello-world/