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