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