最近總有一些小伙伴問我,現在大二,想自學編程,但是
不知道如何下手?
不知道該學哪一門編程語言,c/c++?java?c#?還是php?
不知道c++、Java、php之間有什么區別?
是不是學習java之前要學c?
學習了Java基礎之后又該學什么?
如果你也有這些疑問,那就繼續看下去,如果沒有就可以return了。
首先不要灰心哈,小編到底也是過來人,純自學的,你們現在遇到的坑,我基本上都爬過。我大二的時候都不知道javascript和Java有什么區別,甚至以為數據庫和數據結構有緊密的聯系,我現在依然能找到一份滿意的工作和待遇!!只要記住——你們現在有大把的時間去爬坑。小編也將從以下幾個方面,通俗易懂的表達以下自己的經驗和想法,希望可以幫助到大家。
一、首先有必要了解一些常見的編程語言
小編接觸到的一些常見的編程語言,c、c++、Java、c#、php、python、javascript、Objective-C、Swift、R等。
1.學習的順序
小編大學課程中有”譚浩強c語言程序設計”這門課程,我當時想學習Java同時也很迷惑,c和java有什么關系?是不是要學習java必須先學習c語言?你們有木有如此迷惑過?現在告訴你,沒有半毛線關系!你如果想學java,c#,php等任何一門語言,立即就可以學,沒有先學c才能學java的必要條件。只不過是說,你如果有了其中一門語言的基礎,學習其它的比較容易入門而已,畢竟所有的編程語言也有一些共性,都會有基本的語法,數據類型,順序結構等。
2.語言特性及歸類(此部分也可以直接break(跳過))
當然以下常見編程語言的分類只不過是我個人的理解及淺薄的經驗之談。做個參考就好。按照語言的特性,大概可以這樣歸類一下:
如c、c++語言是面向結構的。c++擴展了c語言的特性,具有一些面向對象的特性。Objective-C據周圍同事說是蘋果公司對c語言一種封裝,反正是用來開發ios應用的,其語言特性和調用方式與c語言很像,因此如果你有c語言的基礎,入門ios開發很easy.
如java 、c#是面向對象的。具有抽象、繼承、封裝、多態等特性,因此你如果學習了其中一門語言,另一門語言也能很快上手。至于面向結構和面向對象有什么區別,小編不知道如何表達,自行百度吧.
如python、javascript是腳本語言,具有動態語言的特性。意思就是可以再程序運行時改變變量的類型,例如在javascript語言中,聲明一個變量賦值為一個數字,運行程序后,你把此變量動態賦值為字符串,沒問題是合法的,程序正常運行;相反如果在java(沒有動態語言特性的)中聲明一個為int類型,如果你給這個變量賦值為字符串類型,程序就會報錯編譯不通過。
因此,如果你想學習兩種編程語言,建議你不要選擇特性一樣的兩種語言學習,例如你如學習了java,你可以選擇Python或者c++學習,這樣學習的時候可以比較一下不同特性編程語言各自的優缺點,對你以后做架構,選擇業務實現的技術方案有很大的幫助。
二、如何選擇一門編程語言
了解了基本的編程語言后,相信你又跌入了該學習哪一門語言的坑中。這個問題的關鍵在于你不知道學了這門語言能干什么!也就是編程語言的應用領域或者開發方向。
以Java為例(小編是學Java出身),Java在移動端,服務端,大數據等領取有著廣泛的應用,那么你學習Java基礎之后就可以選擇這個幾個方向,移動端就是Android開發,服務端像Javaweb開發,大數據如hadoop技術等。
c語言可以 嵌入式方向學習;c++ 可以用來開發游戲、游戲服務器框架及游戲引擎、編譯器等;c#可以向 winfrom窗體程序開發(就是window上安裝的exe程序,如qq),asp.net網站開發技術,服務端開發,Unity3D游戲開發等;javascript,這個語言的方向就太多了,號稱全站開發語言,node.js全棧開發技術,web前端jQuery,Vue.js,移動端技術ReactNative等;python,可以用來做網站爬蟲,搜索引擎,也可以開發網站,人工智能領域應用更廣泛如數據分析,機器學習等。。。。。
小編理解的大概也就這么多,說的并不準確,建議大家去谷歌 or 百度,或者去知乎找答案,關鍵詞如java開發方向或應用領域。
更加強烈建議大家去一些互聯網招聘網站如拉勾網看看一些技術崗位,這樣定位更加準確,如下圖
這下你總該知道你要學習什么了吧
三、尋找學習路線
當你確定了你想學習的編程語言及以后的開發方向或應用領域后,你肯定又不知所措,我該怎么學習呢,先學什么,后學什么。
這個問題小編就心有余而力不足啦,畢竟也只是學過Android和一點點
javaweb而已,最多知道它倆的學習路線。
但是你可以百度搜索,作為一個程序員搜索引擎才是你最好的老師!!,如你想學習ios,關鍵詞ios學習路線圖,肯定有不少。菜鳥要飛的平臺上也提供了常見開發技術的學習路線圖。小編更推薦你去一些培訓機構的官網瀏覽他們的培訓的課程目錄,很詳細的!否則怎么吸引人呢。
四、我該選擇哪一個方向
即使前3步你都OK,你肯定還會問類似的問題,我到底是學Android還是ios,哪個工資高?大數據技術現在很熱門,選擇haoop吧?
首先,根據你自己的興趣。這個和不說的一樣,作為一個小白,你都不知道Android開發到底做些什么,hadoop又是什么玩意,談什么興趣呢?除非你確定你對某一個領域感興趣,那就去學吧。
其次,你只是為了畢業以后好找工作,待遇好些。這個就稍微能找些實際的參考依據啦,去拉勾網等類似的互聯網招聘網站,搜索職位關鍵詞分別看一下對應的職位的數量,比較一下同樣的工作經驗哪個工資更高。無論你是選擇移動端還是we前端還是服務端,只要技術好工資都不低!
還有,新技術相對而言工資是高點,但崗位也少。如大數據,人工智能等這些新技術的崗位也就在一線城市可以搜索到,你學了這些就意味著你必須去北上廣深拼搏,否則找不到工作。所以如果你有心儀的奮斗城市,就結合一下該城市的崗位去選擇你要學習的技術。
最后,并不是你現在學習了Android開發,工作以后就一定一直做Android。編程技術的變化和發展是很快的,說不定什么時候就被淘汰了;工作后,要根據工作需要學習對應的開發技術。所以最重要的是培養自己學習新技術的能力。而大學期間,最好多學習一些技術,擴展自己的廣度,畢業后找工作的選擇會多一點。畢竟沒有工作的實戰場景想提高某一個開發技術的深度是很難的。個人認為,大學期間的學習最大的作用是通過學習不同的技術來尋找真正適合自己的方向。技術深度的提高是在工作的實戰中積累的。而提高自己技術廣度最好的辦法就是自己獨立或者和別人合伙,完整一個簡單的線上項目,這個過程會讓你對很多疑惑豁然開朗!
以上只是小編淺薄的經驗之談,歡迎留言交流!