給所有初學(xué)者的干貨,自學(xué)編程的3點(diǎn)建議! 現(xiàn)在IT新技術(shù)日新月異。就常用編程語(yǔ)言而言,有C/C++、匯編、Java,C#、Python等; 操作系統(tǒng)平臺(tái)有unix /linux,windows系列; 開(kāi)發(fā)工具有VC、visualStudio2008、 Eclipse、NetBeans等; 每個(gè)大平臺(tái)下,還有很多的的方向:如網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)、腳本、HTML、動(dòng)態(tài)網(wǎng)站、游戲開(kāi)發(fā)等;有人還在學(xué)Dreamweaver做網(wǎng)頁(yè)、Flash做動(dòng)畫(huà)、Photoshop做美 工、3DMax做三維動(dòng)畫(huà)…… 是的,我們什么都想學(xué)。恨不得把所有的知識(shí)統(tǒng)統(tǒng)都塞到肚子里去。看到什么,就想學(xué)什么! file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml20548\wps5.png 今天看VC的書(shū),明天又看Java,后天又看C#,東搞西搞!看到別人做網(wǎng)頁(yè)。自己興趣了來(lái)了。 好,學(xué)html語(yǔ)言,我也做網(wǎng)頁(yè),聽(tīng)說(shuō)做網(wǎng)頁(yè)要會(huì)“網(wǎng)頁(yè)三劍客”,所以又想學(xué)Dreamweaver、Flash。 后來(lái)開(kāi)始知道有JSP、PHP、ASP.NET做動(dòng)態(tài)網(wǎng)站這玩意兒。也想去學(xué), 學(xué)學(xué)學(xué)…… 這是幾乎所有初學(xué)者的通病。但是,這不是壞事,甚至可以說(shuō)是好事。說(shuō)明了你“求知欲”高!總比那些,生活沒(méi)有激情,整天知道泡妞、上網(wǎng)、打游戲、混日子的強(qiáng)。 但是如果你今天想學(xué)這個(gè),明天又想學(xué)那個(gè)。這樣你就能永遠(yuǎn)徘徊在技術(shù)的門(mén)外。 很多人都有過(guò)或者正在經(jīng)歷這樣的苦悶日子:總覺(jué)得有“太多東西”要學(xué)了,然而人的精力是有限的,總有永遠(yuǎn)學(xué)不完的感覺(jué)。 所以心理特別急,整天惶惶不可終日,不知道先要學(xué)哪個(gè),一會(huì)兒拿起這本書(shū),一會(huì)拿起那本書(shū),折騰了幾個(gè)月,突然發(fā)現(xiàn)自己什么都沒(méi)有學(xué)到…… 每一個(gè)大方向如果沒(méi)有上幾年的學(xué)習(xí),很難能學(xué)習(xí)出什么來(lái)。但程序設(shè)計(jì)的最根本的東西是相同的。所以我們學(xué)習(xí)要抓根本。俗話說(shuō):通一理,融百里。 學(xué)程序設(shè)計(jì)就像習(xí)武一樣,如果內(nèi)功學(xué)的好,其他功夫就很容易上手。君不見(jiàn)《倚天屠龍記》中的張無(wú)忌練了“九陽(yáng)神功”8年,練“乾坤大挪移”只需12個(gè)時(shí)辰嗎? 古人歷經(jīng)千辛萬(wàn)苦才能找到這些“武功秘籍”。我們現(xiàn)在這些后輩,比起古人來(lái)說(shuō):簡(jiǎn)直太幸運(yùn)了。 學(xué)XX還是學(xué)XX更有前途? 看了上面的話,有的小伙伴已經(jīng)開(kāi)始煩了,“知道了知道了,不止一個(gè)像你這樣的所謂的‘老前輩’跟我說(shuō)過(guò)‘學(xué)什么都一樣。 思想才是最重要’的大 道理,可是你們站著說(shuō)話不嫌腰疼呀,現(xiàn)實(shí)是有很多技術(shù)需要學(xué),比如做Web開(kāi)發(fā)就有JSP、PHP、ASP.NET等好多方向,我總得選一個(gè)吧! 到底學(xué)哪個(gè)有前途呢?我必須要選擇一個(gè)有前途的,選錯(cuò)了就麻煩了。” 其實(shí)像“學(xué)XX還是學(xué)XX更有前途”的話沒(méi)意義。 因?yàn)?/font>“選擇JSP還是選擇PHP”的前途的差別不像“選擇英語(yǔ)還是選擇日語(yǔ)”的前途差別那樣大,不存在“選錯(cuò)方向”的問(wèn)題,因?yàn)槎际窍嗤ǖ摹?/div> 你也不能保證你畢業(yè)以后搞的就是你學(xué)的那個(gè)方向,更不能保證你靠你學(xué)的這點(diǎn)東西就能吃一輩子。 不過(guò)就像上邊說(shuō)的“做Web開(kāi)發(fā)就有JSP、PHP、ASP.NET等好多方向,我總得選一個(gè)吧!”這個(gè)問(wèn)題是非常實(shí)際的,因?yàn)橹挥邢葘W(xué)一個(gè)才能深入這個(gè)方向,把這個(gè)方向?qū)W通了才能想以后“一通百通”。 因此我的建議就是學(xué)校教過(guò)什么語(yǔ)言,你就繼續(xù)深入學(xué)習(xí)這門(mén)語(yǔ)言,而不要去問(wèn)“這門(mén)語(yǔ)言有沒(méi)有前途”這樣的傻問(wèn)題。 盡量不要去學(xué)一門(mén)所謂“有前途”的新語(yǔ)言,因?yàn)槟闳W(xué)一門(mén)新語(yǔ)言就要把很多精力耗費(fèi)在語(yǔ)言、語(yǔ)法本身,而耽誤了編程的實(shí)戰(zhàn)。 而以一個(gè)已經(jīng)學(xué)過(guò)的語(yǔ)言來(lái)學(xué)習(xí)的話,起碼語(yǔ)法本身不用再去學(xué)、開(kāi)發(fā)工具本身不用再去熟悉,只要研究怎么使用這門(mén)語(yǔ)言開(kāi)發(fā)有用的程序就ok了。 不要管“哪門(mén)語(yǔ)言好就業(yè)、有前途”,因?yàn)槟切昂镁蜆I(yè)、有前途”都是紙老虎。盡量不要學(xué)新語(yǔ)言,從自己最熟悉的語(yǔ)言入手,深入研究,出山后你就是被用人單位爭(zhēng)搶的紅人。 企業(yè)里都需要什么方面的才能? 這個(gè)要視用人單位的要求而定了。你現(xiàn)在還沒(méi)有畢業(yè),也不知道未來(lái)要面對(duì)什么樣的崗位。 因此建議大家在上學(xué)期間不要偏科,所以的課程都要好好學(xué),學(xué)好專(zhuān)業(yè)課, 培養(yǎng)自己的“內(nèi)功心法”,然后進(jìn)入一個(gè)大公司,那么大公司自然會(huì)為你安排一個(gè)人才培養(yǎng)計(jì)劃,在工作的環(huán)境中學(xué)習(xí)就更有目的性。 學(xué)什么最容易? 由于現(xiàn)在的快速開(kāi)發(fā)工具的不斷推出,使得軟件開(kāi)發(fā)越來(lái)越容易,進(jìn)入軟件開(kāi)發(fā)的門(mén)檻也越來(lái)越低。 很多人在IDE工具的誘騙之下,快的十天,慢的半個(gè)月就可以進(jìn)入所謂“程序員”的領(lǐng)域,成了一個(gè)所謂的“程序員”。 這對(duì)于IDE提供商來(lái)說(shuō)是樂(lè)得合不攏嘴的事情,但是對(duì)于軟件來(lái)說(shuō)卻是一個(gè)無(wú)形的打擊。 由于快速工具的盛行,很多人把開(kāi)發(fā)看作小菜一碟,特別是很多在校的大學(xué)生,都認(rèn)為現(xiàn)在教的內(nèi)容一旦出了學(xué)校都已經(jīng)是落伍,無(wú)形中產(chǎn)生了厭學(xué)的心理。 今后的軟件開(kāi)發(fā)逐漸趨于兩極化,一方面有越來(lái)越多的人將從事簡(jiǎn)單的重復(fù)性開(kāi)發(fā),而且這部分的開(kāi)發(fā)難度會(huì)逐漸降低;另外一方面核心部分的開(kāi)發(fā)會(huì)越來(lái)越復(fù)雜,這部分的入門(mén)所涉及的知識(shí)內(nèi)容會(huì)逐步增加。 所以對(duì)于今后希望從事軟件開(kāi)發(fā)的同學(xué)們,需要好好的努力學(xué)習(xí),學(xué)校的東西會(huì)有他們的用處,只要現(xiàn)在把基礎(chǔ)打扎實(shí)了,即后你們?cè)谲浖念I(lǐng)域會(huì)有很好的機(jī)會(huì),不要盲目的放棄學(xué)習(xí)的機(jī)會(huì)。 有什么速成的辦法沒(méi)有? 一個(gè)人學(xué)一門(mén)技術(shù)的速成方法就是不學(xué)那些所謂“沒(méi)用”的東西,直接告訴他最終結(jié)論和操作方式。 但是很多東西是在探索中、學(xué)習(xí)中才能領(lǐng)悟的,很多人在鉆研一個(gè)技術(shù)難題的過(guò)程中查資料、看書(shū)、求證。 在這過(guò)程中不僅鍛煉了自己思考問(wèn)題的能力,而且夯實(shí)了基礎(chǔ)知識(shí), 最重要的是在探索過(guò)程中收獲了很多意想不到的新東西,有很多朋友在鉆研一個(gè)問(wèn)題的時(shí)候經(jīng)常能無(wú)意中的學(xué)會(huì)很多新東西。 上山的“速成”方法是直接坐纜車(chē)上去,可是你會(huì)比那些登山者少看到很多路邊的風(fēng)景。 那么你是愿意做一個(gè)掌握“速成”方法的人,還是愿意有機(jī)會(huì)看看路邊的風(fēng)景呢? 最后一句話:切務(wù)浮沙筑高臺(tái),練從難處練,用從易處用!無(wú)速成,唯有堅(jiān)持! 另外,初學(xué)編程的人大多都有這些錯(cuò)誤認(rèn)識(shí),今天老九君就這些錯(cuò)誤認(rèn)識(shí)給小伙伴們解惑。 1 C/C++太老了,過(guò)時(shí)了,平時(shí)用得很少,現(xiàn)在流行都Java、C#等等。 解惑:不要?jiǎng)硬粍?dòng)覺(jué)得什么東西過(guò)時(shí)了,COBOL還有OO版本面世,還有FORTRAN,LISP,好古老的語(yǔ)言吧,現(xiàn)在還用得很廣呢。“ 一切語(yǔ)言都是紙老虎,一通百通”,學(xué)校已經(jīng)開(kāi)了編程語(yǔ)言的課,并且想繼續(xù)深入學(xué)習(xí)編程,那么就繼續(xù)使用學(xué)過(guò)的語(yǔ)言來(lái)學(xué)習(xí),不要再去學(xué)一門(mén)新的語(yǔ)言。 2 入門(mén)要從OO開(kāi)始,培養(yǎng)用OO方式思考的習(xí)慣。 解惑:初學(xué)者一入門(mén)便擺弄Java、C++等很容易形成誤解,似乎OO=Java,C++… 一切編程語(yǔ)言的根本都是面向過(guò)程的,Java、C++ 等語(yǔ)言也是支持面向?qū)ο筇匦缘拿嫦蜻^(guò)程的語(yǔ)言。 面向過(guò)程就是if……else……、while、for這些東西,Java、C++等語(yǔ)言中難道就沒(méi)有這些語(yǔ)句了嗎? 過(guò)程式語(yǔ)言(或者說(shuō)結(jié)構(gòu)化方法)的精髓不會(huì)消亡,OO里面也不可能擺脫掉一條條的語(yǔ)句、函數(shù)調(diào)用,結(jié)構(gòu)化方法。 OO方法不是那么容易學(xué)會(huì)的(OO語(yǔ)言的語(yǔ)法弄得很熟練不代表你懂OO),而結(jié)構(gòu)化那套方法,自個(gè)寫(xiě)個(gè)千把行的程序就很能體會(huì)了 我是說(shuō)寫(xiě)個(gè)實(shí)用點(diǎn)的東西,比如試著自個(gè)實(shí)現(xiàn)一些數(shù)據(jù)結(jié)構(gòu)和算法,寫(xiě)幾個(gè)小游戲等。寫(xiě)個(gè)一千行Helloworld等于沒(méi)寫(xiě)。 我覺(jué)得方法是實(shí)踐中體會(huì)出來(lái)的,不是看看書(shū)就能學(xué)會(huì)的。過(guò)程式語(yǔ)言的代碼一般比較簡(jiǎn)練,我們編程序最終的目的是要解決問(wèn)題,是要計(jì)算,是要獲取信息,不要被OO、設(shè)計(jì)模式等迷糊了。 3 過(guò)程式語(yǔ)言弄久了,很難轉(zhuǎn)入OO的思維模式 解惑:我以前也沒(méi)有深想過(guò)這個(gè)理由,不過(guò)時(shí)間久了,發(fā)覺(jué)自己不過(guò)是把數(shù)據(jù)和方法集中在一起而已,看著方便。 其實(shí)有很多不合理的東西,這里頭就需要 OO的理論指導(dǎo)了,還是需要時(shí)間來(lái)體會(huì)。 我相信有很多用OO語(yǔ)言的人也不過(guò)是在框架里頭添添代碼,調(diào)用來(lái)調(diào)用去而已,把人類(lèi)當(dāng)作數(shù)據(jù)和操作的打包器。 file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml20548\wps6.png 個(gè)人覺(jué)得只有在用過(guò)程式方法做了十來(lái)年,編碼上十萬(wàn)行后才有思維定勢(shì),難以習(xí)慣用OO的眼光看待系統(tǒng)。 然而這個(gè)轉(zhuǎn)變,我仍覺(jué)得比改變一個(gè)人的惡習(xí)容易許多。OO方法不是學(xué)了個(gè)Java,C++等就能掌握的,需要實(shí)踐,需要時(shí)間。 過(guò)程式語(yǔ)言也容易培養(yǎng)一個(gè)人嚴(yán)謹(jǐn)?shù)淖鍪聭B(tài)度,比如用匯編,C等寫(xiě)代碼,沒(méi)有命名空間、沒(méi)有一大堆類(lèi)庫(kù),沒(méi)有模板、沒(méi)有異常。 你要花很多心思處理一些細(xì)節(jié),比如警惕數(shù)組索引越界、懸掛指針、野指針等等,請(qǐng)不要覺(jué)得麻煩,這個(gè)就是計(jì)算機(jī)啊,底層就是這樣的啊。 |