1. 程式人生 > >你知道Hello World程式的由來嗎?

你知道Hello World程式的由來嗎?

Hello World是一個最著名的程式。對每一位程式設計師來說,這個程式幾乎是每一門程式語言中的第一個示例程式。實際上,這個程式的功能只是告知計算機顯示Hello World這句話。傳統意義上,程式設計師一般用這個程式測試一種新的系統或程式語言。對程式設計師來說,看到這兩個單詞顯示在電腦螢幕上,往往表示他們的程式碼已經能夠編譯、裝載以及正常運行了,這個輸出結果就是為了證明這一點。

這個測試程式在一定程度上具有特殊的象徵意義。在過去的幾十年間,這個程式已經漸漸地演化成為了一個久負盛名的傳統。幾乎所有的程式設計師,無論是在你之前,或在你之後,當第一次實現與計算機成功溝通之後,在某種程度上,他們的腎上腺素就會急劇上升(激動不已)。以下就是這個著名程式的誕生故事。

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程式的確在計算機發展歷史上成為了一個具有重要意義的里程碑。我們一起來回顧一下當時的歷史環境。

襁褓中的變革

現在你可能很難想象,但是在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時,他的內心體驗到的不僅僅是一種成功的喜悅,更重要的是,他正在親身經歷一個跨越歷史的時刻。

相關推薦

知道Hello World程式由來

Hello World是一個最著名的程式。對每一位程式設計師來說,這個程式幾乎是每一門程式語言中的第一個示例程式。實際上,這個程式的功能只是告知計算機顯示Hello World這句話。傳統意義上,程式設計師一般用這個程式測試一種新的系統或程式語言。對程式設計師來說,看到這兩個

程式設計師吐槽年薪170w沒有上升空間,網友:知道窮是什麼感覺

現在國內的網際網路行業對於大齡程式設計師不太友好,於是很多邁過30歲的大齡程式設計師往往會惴惴不安,認為自己就是那個被辭退的,所謂的“拔x無情”大概就是這樣的吧,用完就丟,沒什麼情面好講。 中年危機確實成為程式設計師們關注的一個熱點問題: 如果有想學習java的程式設計師,可來我們的java

同學hello world? 給我講清楚點

少點程式碼,多點頭髮 本文已經收錄至我的GitHub,歡迎大家踴躍star 和 issues。 https://github.com/midou-tech/articles 面試官超級喜歡問hello world問題 特別是校招,我校招碰到過3次 其實很多看起來順其自然簡單的東西,背後是一套複雜的

指尖陀螺這麽火 知道它從哪來?

畢業 照片 利用 由於 心理 log 留下 電話會議 想要 指尖陀螺是什麽呢? 傳統的陀螺是在地上旋轉,而指尖陀螺,顧名思義就是在手指上旋轉的陀螺——兩個手指從上下夾住陀螺的中心,再用手給一個讓它旋轉的力,指尖陀螺就能滴溜溜地轉起來啦。 指尖陀螺的結構非常簡單,中間有一個

php取反運算值 {echo ~2;}知道結果是什麽

計算機 表示 請問 color clas ech tro brush 第一個 echo ~2;   請問結果值是多少呢? 答案是 -3 為什麽? 首先計算機用補碼來存儲的,正數的原碼、反碼、補碼都是一樣的, 例如: 3的原碼、反碼、補碼都是

知道android的MessageQueue.IdleHandler

源碼 .com 有一個 開始 關系 研發流程 nis 想要 tin WeTest 導讀 幹貨!幹貨!或許可以是一種處理問題的新思路喲! 前言 我們知道android是基於Looper消息循環的系統,我們通過Handler向Looper包含的MessageQueue

知道怎麽用find?[root@MOMOCO-02 ~]# find /etc/ -name s

linux2.23 find命令[root@MOMOCO-02 ~]# which lsalias ls='ls --color=auto' /usr/bin/ls【我們之前說過這個命令可以搜索一個命令是否有別名,也可以找到他的絕對路徑在哪裏。他是在環境變量PATH裏面找的】[root@MOM

Python真的無所不能!連黑客技術都要用它!知道要用哪些技術

獲取 ctypes env 應用 轉儲 apt 當前 發行版 社區 網絡愛好者總是要掌握編程語言的,這裏推薦:python。下面,一文了解黑客們會用到哪些Python技術! 進群:548377875 即可獲取數十套PDF哦! 安裝依賴包 很多時候讀者們會

Linux裏隱藏的計算器,知道它的奧秘

流行 就是 工具 樹莓派 運算 返回 一個 語句 並且 大家都知道,windows下有個計算器工具,我們在工作生活中經常使用到它。但是,你可知Linux下也同樣有個計算器嗎? 當然,良許說的是命令行下的計算器工具,而不是界面型的計算器。良許是Linux應用開發工程師,平時基

輸出hello world!Python開發工具:Pycharm IDE環境搭建

1.什麼是Pycharm? PyCharm是一種PythonIDE,其帶有一整套可以幫助使用者在使用Python語言開發時提高其效率的工具。能夠幫助我們在編寫程式碼時提高效率。 2.下載Pycharm 網上提供的有專業版和教育版之分(windows下的)。 網址:https:

Hello World 程式的起源與歷史

這是一個最著名的程式。對每一位程式設計師來說,這個程式幾乎是每一門程式語言中的第一個示例程式。那麼,這個著名的程式究竟從何而來呢? 實際上,這個程式的功能只是告知計算機顯示 Hello World 這句話。傳統意義上,程式設計師一般用這個程式測試一種新的系統或程式語言。對程式設計師來說,看到這兩個單詞顯示在

Hello world程式的生命週期

版權宣告:轉載,請註明出處    https://blog.csdn.net/wmaoshu/article/details/50575142 <span style="font-size:18px;">Hello world程式: #include

願意嫁給程式設計師?網友的回覆很扎心,很中肯

程式設計師一直被大家貼上各種標籤,譬如 “直男癌”,“品味差”,“地中海”,“顏值低”,“不浪漫“,“加班多“,“情商低“、“智商高”、“收入高”等。 對於這些標籤小編覺得有些說的太過於絕對了,比如 “直男癌”,“品味差”這些跟程式設計師職業沒多大關係了,應該屬於個人生活習慣的問題,就算他不從事

安卓軟件開發知道需要學什麽,看這裏?

鍵值 加背景 方便 android中 至少 soc 組織 主題 activit 當下手機軟甲開發越來越流行,開發主題也逐漸從公司到個人過渡。相對於經驗薄弱的個人來說安卓軟件開發需要學什麽?具備怎樣的基礎呢? 1、Activity生命周期 Android中有四大組件,但Act

Dubbo-第一個Hello World程式

Dubbo 是阿里巴巴在2011年開源的分散式服務框架,是SOA服務化治理方案的核心框架。Dubbo的整體架構如圖所示; Provider: 暴露服務的服務提供方。 Consumer: 呼叫遠端服務的服務消費方。 Registry: 服務註冊與發現的註冊中心。

想學python!知道正確的學習方法

很多人都在問Python學習步驟應該如何安排?多長時間可以達到精通呢? Python學習步驟應該怎樣安排: 首先,學習Python程式設計技術,自學或者參加培訓學習都適用,每個人都有自己的學習方式和方法。 推薦下小編的Python學習群;629440234,不管你是小白還是大牛,小編我都

ROS Indigo beginner_Tutorials-10 編寫 ROS 話題版的 Hello World 程式(Python版)

1. 前言 : Hello world 程式,在我們程式設計界,代表學習某種語言編寫的第一個程式。對於 ROS 機器人作業系統來說,這個 Hello World 程式就是 : 寫一個簡單的訊息釋出器(傳送) 和 訂閱器(接收)。 2. 準備工

**win10java配置環境變數,編寫Hello world程式**

win10java配置環境變數,編寫Hello world程式 配置環境變數:滑鼠右鍵單擊此電腦選擇”屬性“,再選擇“高階系統設定”,於”高階“選項中點開“環境變數” (1)新建一個JAVA_HOME變數值為安裝路徑 (2)新建CLASSPATH變

「ping 一下」的時候,知道它背後的邏輯

我們在遇到網路不通的情況,大家都知道去 ping 一下,看一下網路狀況。那你知道「ping」命令後背的邏輯是什麼嗎?知道它是如何實現的嗎? 一、「ping」命令的作用和原理? 簡單來說,「ping」是用來探測本機與網路中另一主機之間是否可達的命令,如果兩臺主機之間ping不通,則表明這兩臺主機不能建立起連線。

win10java配置環境變數,編寫並執行“Hello world程式

win10java配置環境變數,編寫Hello world程式 配置環境變數:滑鼠右鍵單擊此電腦選擇”屬性“,再選擇“高階系統設定”,於”高階“選項中點開“環境變數” 這裡寫圖片描述 (1)新建一個JAVA_HOME變數值為安裝路徑 這裡寫