日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

如果當(dāng)初學(xué)習(xí)編程時(shí)能有人給我這些忠告該多好

 mybook564 2013-12-08

伯樂(lè)在線導(dǎo)讀: Cecily Carver  是多倫多的一位程序媛,和 Jennie Faber 一起創(chuàng)辦了一個(gè)游戲制作工作室。她喜歡歌劇、舞蹈和彈鋼琴。Cecily 在這篇文章分享她在編程道路上的所感所想,給出很多值得思考的編程箴言以及一些思想誤區(qū),比如在你學(xué)習(xí)編程之前思考一下你的目標(biāo)、編程不是什么神秘的東西、堅(jiān)持比方法更重要等,可以讓我們?cè)诰幊搪飞仙僮咭恍澛?,從而有更多的時(shí)間學(xué)習(xí)技術(shù)讓自己變的越來(lái)越強(qiáng)大。

 

在你學(xué)習(xí)編程之前思考一下你的目標(biāo)

要知道編程大多時(shí)候就是在創(chuàng)造,當(dāng)你有最終目標(biāo)感時(shí)道路會(huì)更加的清晰。如果你的目標(biāo)是“學(xué)習(xí)編程”而不是更具體的學(xué)習(xí)哪種程序及如何讓你的生活更好,那么你可能會(huì)發(fā)現(xiàn)這不過(guò)是一次令人沮喪的實(shí)踐。

我有點(diǎn)慚愧地承認(rèn)我學(xué)習(xí)計(jì)算機(jī)科學(xué)的部分動(dòng)機(jī)是為了證明我聰明,及我想干“聰明人”的工作。我也喜歡思考數(shù)學(xué)和理論(《哥德?tīng)?、艾舍爾、巴?集異璧之大成 》這本書在我易受影響的年紀(jì)進(jìn)入了我的腦海),編程是一個(gè)不錯(cuò)的選擇。當(dāng)然這并不足以使我堅(jiān)持這么久,真正讓我堅(jiān)持的是我發(fā)現(xiàn)了編程可以將科技與我真正喜愛(ài)的東西(如音樂(lè)和文學(xué))連接到一起。

那么,你想要寫什么?網(wǎng)站?游戲?iPhone應(yīng)用?致富的商業(yè)軟件?交互藝術(shù)?你是想讓老板印象深刻?或你是想自動(dòng)執(zhí)行一些乏味的任務(wù)以讓你有更多的時(shí)間看水獺照片嗎(譯者注:這里應(yīng)該指有更多的時(shí)間看外面的風(fēng)景)?也許你只是想更具有就業(yè)競(jìng)爭(zhēng)力,因?yàn)榭梢詫⒓夹g(shù)流行詞添加到簡(jiǎn)歷,或者只為了實(shí)現(xiàn)你的教育需求。所有的這些都是有價(jià)值的目標(biāo),你得確定知道哪個(gè)才是你想要的目標(biāo)然后相應(yīng)的去學(xué)習(xí)吧。

 

沒(méi)有什么神秘的東西

編程跟其他東西一樣,是一門技術(shù)。跟語(yǔ)言學(xué)習(xí)一樣,有需要掌握的語(yǔ)法和詞匯;跟數(shù)學(xué)一樣,有解決特定類型問(wèn)題的流程方法;像各種工藝和藝術(shù)創(chuàng)作一樣,有技術(shù)、工具以及人們經(jīng)年累月發(fā)展起來(lái)的最佳實(shí)踐方案,專門解決各種不同類型的任務(wù),你可以自由的使用、修改或棄之不用。

Joel Spolsky(一個(gè)非常聰明的家伙,他的一些其他的觀點(diǎn)我也很喜歡且頻繁認(rèn)同)曾論斷:在有著“程序員真正思想”的人和缺乏該領(lǐng)域成功所必備的知識(shí)能力的任何人之間有一條很清晰的界限。據(jù)他所言,這條界限包括指針和遞歸(這里和這里有為感興趣的人提供的入門資料)。

我在學(xué)校學(xué)習(xí)過(guò)指針和遞歸,當(dāng)我掌握了過(guò)后,大腦發(fā)生了一次愉悅的波動(dòng)—這種智力快感使我想要將學(xué)習(xí)計(jì)算機(jī)科學(xué)排在第一位。但是,除了課堂練習(xí)外,其他時(shí)候用指針和遞歸來(lái)完成任務(wù)的次數(shù)就相對(duì)較少了。后來(lái)在一次次的幫助他人學(xué)習(xí)時(shí),我發(fā)現(xiàn)大家根本不用掌握這兩項(xiàng)技術(shù)中的任何一項(xiàng)就可以完成一些非常有趣有益的項(xiàng)目。

想知道或怕知道自己是否“足夠聰明”其實(shí)沒(méi)什么意義。當(dāng)然,你的任務(wù)越復(fù)雜越深?yuàn)W,你需要掌握的知識(shí)水平就越高。不過(guò)這也同樣適用于其它的任何領(lǐng)域。除非你計(jì)劃完全靠編程生活,否則你可能并不需要成為一個(gè)掌握遞歸的天才來(lái)完成你的任務(wù)。

 

第一次運(yùn)行一般不成功,第二次第三次也可能不成功

當(dāng)你第一次學(xué)習(xí)編程時(shí),你會(huì)很快遇到這樣的特殊經(jīng)歷:你認(rèn)為已經(jīng)按照所想的完成了每一件事,檢查了一遍又一遍,卻發(fā)現(xiàn)仍然運(yùn)行不了(出現(xiàn)bug了)。你完全不知道該從哪開始修復(fù)它,錯(cuò)誤信息(如果你夠幸運(yùn)只有一個(gè)的話)好像在說(shuō)“fuck you”。你可能就此放棄,心里想著自己恐怕永遠(yuǎn)也解決不了了,那么你就不適合干編程這行。我一開始就有這種感覺(jué),嘗試著用C++寫一個(gè)程序然后運(yùn)行它,卻只得到“segmentation fault”這個(gè)麻煩。

但是這種經(jīng)歷對(duì)所有不同技術(shù)水平的程序員來(lái)說(shuō)都太普遍了,這絕對(duì)與你的智商、技術(shù)悟性或者是否適合干編程這行沒(méi)有任何關(guān)系。初學(xué)者會(huì)碰到這樣的情況,經(jīng)驗(yàn)豐富的程序員也會(huì)碰到這種事情。主要的區(qū)別就在于你如何應(yīng)對(duì)這種情況。

我發(fā)現(xiàn)新手程序員和有經(jīng)驗(yàn)的程序員之間一個(gè)很大的不同點(diǎn),就在于一種信念(指有經(jīng)驗(yàn)的程序員所具有的信念):相信事情出錯(cuò)是因?yàn)檫壿嬙虿⑶乙欢苷页鰜?lái);相信bug可以修復(fù);相信有辦法實(shí)現(xiàn)目標(biāo)。從“運(yùn)行錯(cuò)誤”到“運(yùn)行正確”的過(guò)程可能不是很明顯,但是有耐心你通常都可以找出問(wèn)題。

 

總是有人說(shuō)你做錯(cuò)了

括號(hào)應(yīng)該另起一行;括號(hào)應(yīng)該放在同一行;用tab鍵來(lái)縮進(jìn),但是tab很邪惡?jiǎn)?;你?yīng)該使用存儲(chǔ)過(guò)程,但實(shí)際上你又不應(yīng)該用它們;你應(yīng)該總是對(duì)代碼進(jìn)行注釋,但是好代碼不需要注釋。

基本上對(duì)于一個(gè)特定的問(wèn)題總是有許多不同的方法,沒(méi)有所謂單一的“正確方法”。許多程序員都非常擅長(zhǎng)倡導(dǎo)他們首選或偏愛(ài)的方法,但是那并不意味著這是“唯一正確的方法”。如果與人們面對(duì)面爭(zhēng)論后告訴我:我是錯(cuò)的,那么我也會(huì)盡力搞明白是否他們就一定是正確的,這是我早期職業(yè)生涯比較重要的一個(gè)方面。

如果你在一個(gè)小組里與其他人一起編程的時(shí)候,肯定會(huì)有人總是對(duì)你做的東西指指點(diǎn)點(diǎn),有時(shí)候他們說(shuō)的的確是正確的,但是總是值得去探究下看你是否真的“做錯(cuò)了”。但有時(shí)候他們完全就是胡扯或只是再次引起了一場(chǎng)古老而沒(méi)有意義的爭(zhēng)論,那么你最好適應(yīng)這樣的情況然后忘掉它吧。另一方面,如果你個(gè)人喜歡這種古老且沒(méi)有意義的爭(zhēng)論的話(比如語(yǔ)法狂,一直看著大家),那么不用多說(shuō),你來(lái)對(duì)了地方。

 

總是有人說(shuō)你不是一個(gè)真正的程序員

HTML不屬于真正的編程;如果不用vi的話,你就不夠嚴(yán)肅認(rèn)真;真正的程序員要懂C;真正的程序員不用Windows;有些人從來(lái)都學(xué)不會(huì);你不應(yīng)該學(xué)習(xí)編程; 你不是一個(gè)計(jì)算機(jī)程序員(但是我是)。

“編程”對(duì)不同的人有著非常不同的含義,而且現(xiàn)在看起來(lái)與過(guò)去也不太一樣。有趣的是,大家都知道,工具、包和框架能夠讓初學(xué)者甚至受過(guò)訓(xùn)練的開發(fā)者更快更容易的做開發(fā),但正因如此這些東西往往被貼上“不是真正的程序員”的標(biāo)簽。(看:“Return of the Real Programmer”)

其實(shí)這背后隱藏的是一種害怕心理:“如果“任何人”敢自稱他們自己是一個(gè)真正的程序員,那么這篇文章的題目就沒(méi)有意義了(譯者注:也就是都不敢自稱自己是真正的程序員)。但是我認(rèn)為這種保守行為是非常具有破壞性的。

使用那些讓你最容易開發(fā)的工具吧。如果這意味著你的游戲是用Stencyl 或者GameMaker做的,而不是自己從頭開始寫的,沒(méi)關(guān)系啊。如果你首次編程用的是HTML或者Excel宏,也OK啊。只要你能堅(jiān)持下去就行。

當(dāng)你越來(lái)越舒服的時(shí)候(沒(méi)任何挑戰(zhàn)力),你會(huì)自然的開始找出那些工具受限的不足的(而不是有幫助的)地方接而尋找功能更加強(qiáng)大的工具,但是大部分情況,很少有人會(huì)去看你的代碼或問(wèn)你用什么工具—你用這些工具實(shí)現(xiàn)了什么功能才是關(guān)鍵。

 

憂慮所謂的“極客聲譽(yù)(geek cred)”相當(dāng)于慢性自殺

如前所述,我過(guò)去(尤其在學(xué)校)一度非常擔(dān)心從我的穿著,我的講話,我選擇的閱讀資料,甚至我的軟件定制選項(xiàng)是不是證明了自己“不是一個(gè)真正的極客”(不是真正的極客貌似就沒(méi)啥資格進(jìn)入技術(shù)社區(qū)),這嚴(yán)重消耗了我的精力,后來(lái)我決定完全不考慮這些東西后我的技術(shù)更強(qiáng)了(譯者注:與其花時(shí)間搞那些沒(méi)意義的東西不如多學(xué)點(diǎn)技術(shù),這樣你的技術(shù)就會(huì)越來(lái)越強(qiáng))。

你需要謹(jǐn)記一點(diǎn):你擅長(zhǎng)編程的能力與你到底有多適應(yīng)各種極客亞文化沒(méi)有一丁點(diǎn)關(guān)系。如果你內(nèi)心深處知道自己永遠(yuǎn)都不會(huì)適應(yīng)這些亞文化(而因此焦慮的話),那就需要加倍的記住了。你為了證明自己所浪費(fèi)的精力應(yīng)該用來(lái)做真正有有意義的事情,并且就算你是一名無(wú)可爭(zhēng)辯的極客,眼窩中流露中可信賴的光芒,那么也請(qǐng)記?。寒?dāng)你評(píng)價(jià)其他人的信譽(yù)水平時(shí),也并不意味著你認(rèn)為的就一定對(duì),一定是事實(shí)。

 

堅(jiān)持比方法更重要

我們永遠(yuǎn)不缺像學(xué)習(xí)編程的“正確”或“最佳”方法這樣的文章,其實(shí)還有很多潛在的方法。你可以從一本書或通過(guò)完成互動(dòng)練習(xí)或通過(guò)調(diào)試其他人所寫的東西來(lái)學(xué)習(xí)概念。當(dāng)然,在你第一次學(xué)習(xí)的時(shí)候有許多的語(yǔ)言供你選擇,每種語(yǔ)言都有相應(yīng)的宣傳和倡導(dǎo)。

關(guān)于“自學(xué)編程”流程和講習(xí)班的一個(gè)常見(jiàn)的抱怨就是:一開始你會(huì)很愉快的輕松度過(guò)初級(jí)材料的學(xué)習(xí),然后會(huì)越來(lái)越困難,這時(shí)你就會(huì)很快走上陡峭的學(xué)習(xí)曲線。你知道如何在頁(yè)面上打印輸出一些文本行,但是你不知道從哪開始進(jìn)行一個(gè)“真正的”有用的項(xiàng)目。你可能感覺(jué)你只不過(guò)遵循了一些指南而沒(méi)有真正的掌握,然后你可能就會(huì)指責(zé)學(xué)習(xí)資料。

當(dāng)你到了這一步后,大部分可用的教程和在線資源都不是那么有用了,因?yàn)樗麄円呀?jīng)讓你成為一名有經(jīng)驗(yàn)的程序員了。然后困難進(jìn)一步加劇為這樣一個(gè)事實(shí)—“你不清楚自己還有哪些不知道的東西”,而且試圖搞清楚你下一步到底要學(xué)習(xí)什么本身就是一個(gè)難題。

不管你遵循的是什么“編程”方案,沖破這堵墻的唯一方法就是持之以恒。這意味著你要持續(xù)的嘗試新東西,學(xué)習(xí)更多的知識(shí),并且一步步的搞明白怎么去開發(fā)你的項(xiàng)目。如果你非常清楚自己為什么要將編程放在首位的話,最后你也非常有可能成功。

如果你堅(jiān)持一點(diǎn)一點(diǎn)的鋪磚,可能會(huì)花費(fèi)很長(zhǎng)時(shí)間才能得到一道墻,但是最終你還是會(huì)得到。這時(shí)候我先前提到的信念就派上用場(chǎng)了。如果你相信隨著時(shí)間和耐心,你可以完成整個(gè)編程任務(wù),那么到時(shí)候你肯定會(huì)達(dá)成所愿的。




    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多