|
我覺得,基本上可以說每個程序員都很熟悉“Hello World!”程序。依照慣例,它是學(xué)習(xí)編程語言、編譯并運行你的首個程序的一種快速方法。然而,除此之外,它的價值不大。下面是我認為Hello World的十個問題。
10. 為什么是“Hello World”?為什么不叫“Hello Dave”或者“It Works!”?(Dave就是《2011太空漫游》中的HAL 9000)
我知道這個問題有點夸張。“Hello World”這種說法從何而來呢?除你之外,最后一次有人運行你的程序是什么時候?也許用“Hello <輸入你的名字>”更合理些。
9. 它只適用于一件事情?
我不是在發(fā)表“Hello World”一無是處的言論。然而,他們唯一擅長的就是合理性檢查。
“Hello World”并不能幫你學(xué)習(xí)任何編程語言,它能做的只是幫你寫一個能編譯和運行的簡單程序。
它可以幫助你檢查其合理性,然后你便可以告訴你自己,“我成功了!”
8. 既不給力又不好玩
隨著游戲中精細圖形及互聯(lián)網(wǎng)交互性的發(fā)展,幾乎沒有人再對那些在屏幕上輸出一些字的應(yīng)用程序感興趣。
就像剛才說的那樣,寫一個“Hello World!”程序,除了你自己之外,不會給任何人留下印象。此外,它也不可能是你學(xué)習(xí)編程的動力。
7. 它不切實際
你最后一次編寫僅要求將字符串顯示到標準輸出的程序是什么時候?有人可能會說,現(xiàn)在很少有程序不包含圖形用戶界面——不管是網(wǎng)頁、窗口界面,或者甚至是對文件、數(shù)據(jù)庫的操作。可能它在學(xué)術(shù)界很實用,在學(xué)術(shù)界可以始終如一地讓程序顯示運算或者數(shù)值,但專業(yè)領(lǐng)域并非如此。
6. 沒有交互性
“Hello Word!”這個例子,除了需要終端用戶驗證“HelloWorld!”是否顯示在屏幕上之外,不依賴用戶做任何其它操作。它沒有要求用戶輸入用戶名、退出程序或重新運行程序之類的交互。關(guān)于終端用戶和程序之間如何進行交互,“Hello Word!”并沒有涉及相關(guān)內(nèi)容。
5. 沒有邏輯和運算
計算處理非常依賴于邏輯結(jié)構(gòu)(如:當這個條件為真時,打印這條語句)和運算。大多數(shù)程序的編寫將運用一些標準下的決策邏輯。甚至計算機的基本組成部分(機器代碼)也代表一種邏輯表達式:1=真,0=假。
4. 在不同語言下,太過相似
如果你觀察一下不同語言編寫的“Hello World!”程序,你會發(fā)現(xiàn)它們之間非常相似。
一旦你精通于用一種語言寫出 “Hello World!”程序,那么你也差不多能用其他語言熟練地編寫這個程序。
3. 只使用一個關(guān)鍵字
如果你看過各種Hello World范例,你會發(fā)現(xiàn)他們的共同點就是都只使用一個關(guān)鍵字。
一門編程語言有多少關(guān)鍵字:數(shù)百?上千?在編程語言的學(xué)習(xí)中,只學(xué)一個關(guān)鍵字是微乎其微的一步。
2. 忽略了變量和常量
正如我前面提到的,學(xué)習(xí)一門編程語言,除了要學(xué)習(xí)如何將一些東西顯示在屏幕上之外,還要學(xué)習(xí)相當多的其他知識。
很少有程序不使用變量。
你可以說,由于“Hello World!”把語句中的字符串給寫死了,因而這個程序會誤導(dǎo)大家學(xué)習(xí)不好的編程習(xí)慣。
“Hello World”例子至少可以用一個常量來儲存“Hello World”字符串的值。
1. 忽略了函數(shù)和OO等概念
“Hello World!”例子并沒有用到一門給定編程語言的其他特性。
比如下面這些:
- 函數(shù)簽名
- 類結(jié)構(gòu)
- 命名空間
- 繼承
大多數(shù)老練的程序員能理解這些東西,但對于那些新手或者只有過程化編程背景的人來說,這還是會讓他們沮喪。
譯文出處:伯樂在線 - 職場博客
譯文鏈接:http://www.jobbole.com/entry.php/469
原文作者:Repeat Geek 編譯:伯樂在線 敏捷翻譯組 - 高志翔
如需轉(zhuǎn)載,但請注明原文/譯文出處、譯文超鏈接和譯者等信息,否則視為侵權(quán),謝謝合作!
it知識庫:“Hello World!”的十個問題,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。