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