最近總有一些小伙伴問我颊乘,現(xiàn)在大二,想自學(xué)編程醉锄,但是
不知道如何下手乏悄?
不知道該學(xué)哪一門編程語言,c/c++?java?c#恳不?還是php?
不知道c++檩小、Java、php之間有什么區(qū)別烟勋?
是不是學(xué)習(xí)java之前要學(xué)c?
學(xué)習(xí)了Java基礎(chǔ)之后又該學(xué)什么规求?
如果你也有這些疑問筐付,那就繼續(xù)看下去,如果沒有就可以return了阻肿。
首先不要灰心哈瓦戚,小編到底也是過來人,純自學(xué)的丛塌,你們現(xiàn)在遇到的坑较解,我基本上都爬過。我大二的時(shí)候都不知道javascript和Java有什么區(qū)別赴邻,甚至以為數(shù)據(jù)庫和數(shù)據(jù)結(jié)構(gòu)有緊密的聯(lián)系印衔,我現(xiàn)在依然能找到一份滿意的工作和待遇!姥敛!只要記住——你們現(xiàn)在有大把的時(shí)間去爬坑奸焙。小編也將從以下幾個(gè)方面,通俗易懂的表達(dá)以下自己的經(jīng)驗(yàn)和想法徒溪,希望可以幫助到大家忿偷。
一、首先有必要了解一些常見的編程語言
小編接觸到的一些常見的編程語言臊泌,c鲤桥、c++、Java渠概、c#茶凳、php、python播揪、javascript贮喧、Objective-C、Swift猪狈、R等箱沦。
1.學(xué)習(xí)的順序
小編大學(xué)課程中有”譚浩強(qiáng)c語言程序設(shè)計(jì)”這門課程,我當(dāng)時(shí)想學(xué)習(xí)Java同時(shí)也很迷惑雇庙,c和java有什么關(guān)系谓形?是不是要學(xué)習(xí)java必須先學(xué)習(xí)c語言?你們有木有如此迷惑過疆前?現(xiàn)在告訴你寒跳,沒有半毛線關(guān)系!你如果想學(xué)java竹椒,c#,php等任何一門語言童太,立即就可以學(xué),沒有先學(xué)c才能學(xué)java的必要條件。只不過是說书释,你如果有了其中一門語言的基礎(chǔ)翘贮,學(xué)習(xí)其它的比較容易入門而已,畢竟所有的編程語言也有一些共性征冷,都會有基本的語法择膝,數(shù)據(jù)類型誓琼,順序結(jié)構(gòu)等检激。
2.語言特性及歸類(此部分也可以直接break(跳過))
當(dāng)然以下常見編程語言的分類只不過是我個(gè)人的理解及淺薄的經(jīng)驗(yàn)之談。做個(gè)參考就好腹侣。按照語言的特性叔收,大概可以這樣歸類一下:
如c、c++語言是面向結(jié)構(gòu)的傲隶。c++擴(kuò)展了c語言的特性饺律,具有一些面向?qū)ο蟮奶匦浴bjective-C據(jù)周圍同事說是蘋果公司對c語言一種封裝跺株,反正是用來開發(fā)ios應(yīng)用的复濒,其語言特性和調(diào)用方式與c語言很像,因此如果你有c語言的基礎(chǔ),入門ios開發(fā)很easy.
如java 乒省、c#是面向?qū)ο蟮?/b>巧颈。具有抽象、繼承袖扛、封裝砸泛、多態(tài)等特性,因此你如果學(xué)習(xí)了其中一門語言蛆封,另一門語言也能很快上手唇礁。至于面向結(jié)構(gòu)和面向?qū)ο笥惺裁磪^(qū)別,小編不知道如何表達(dá)惨篱,自行百度吧.
如python盏筐、javascript是腳本語言监右,具有動態(tài)語言的特性便斥。意思就是可以再程序運(yùn)行時(shí)改變變量的類型肋殴,例如在javascript語言中她肯,聲明一個(gè)變量賦值為一個(gè)數(shù)字胞谈,運(yùn)行程序后纽门,你把此變量動態(tài)賦值為字符串没炒,沒問題是合法的浓领,程序正常運(yùn)行陶耍;相反如果在java(沒有動態(tài)語言特性的)中聲明一個(gè)為int類型奋蔚,如果你給這個(gè)變量賦值為字符串類型,程序就會報(bào)錯(cuò)編譯不通過。
因此泊碑,如果你想學(xué)習(xí)兩種編程語言坤按,建議你不要選擇特性一樣的兩種語言學(xué)習(xí),例如你如學(xué)習(xí)了java馒过,你可以選擇Python或者c++學(xué)習(xí)臭脓,這樣學(xué)習(xí)的時(shí)候可以比較一下不同特性編程語言各自的優(yōu)缺點(diǎn),對你以后做架構(gòu)腹忽,選擇業(yè)務(wù)實(shí)現(xiàn)的技術(shù)方案有很大的幫助来累。
二、如何選擇一門編程語言
了解了基本的編程語言后窘奏,相信你又跌入了該學(xué)習(xí)哪一門語言的坑中嘹锁。這個(gè)問題的關(guān)鍵在于你不知道學(xué)了這門語言能干什么!也就是編程語言的應(yīng)用領(lǐng)域或者開發(fā)方向着裹。
以Java為例(小編是學(xué)Java出身)领猾,Java在移動端,服務(wù)端骇扇,大數(shù)據(jù)等領(lǐng)取有著廣泛的應(yīng)用摔竿,那么你學(xué)習(xí)Java基礎(chǔ)之后就可以選擇這個(gè)幾個(gè)方向,移動端就是Android開發(fā)少孝,服務(wù)端像Javaweb開發(fā)继低,大數(shù)據(jù)如hadoop技術(shù)等。
c語言可以 嵌入式方向?qū)W習(xí)韭山;c++ 可以用來開發(fā)游戲郁季、游戲服務(wù)器框架及游戲引擎、編譯器等钱磅;c#可以向 winfrom窗體程序開發(fā)(就是window上安裝的exe程序梦裂,如qq),asp.net網(wǎng)站開發(fā)技術(shù)盖淡,服務(wù)端開發(fā)年柠,Unity3D游戲開發(fā)等;javascript褪迟,這個(gè)語言的方向就太多了冗恨,號稱全站開發(fā)語言,node.js全棧開發(fā)技術(shù),web前端jQuery,Vue.js味赃,移動端技術(shù)ReactNative等掀抹;python,可以用來做網(wǎng)站爬蟲心俗,搜索引擎傲武,也可以開發(fā)網(wǎng)站蓉驹,人工智能領(lǐng)域應(yīng)用更廣泛如數(shù)據(jù)分析,機(jī)器學(xué)習(xí)等揪利。态兴。。疟位。瞻润。
小編理解的大概也就這么多,說的并不準(zhǔn)確甜刻,建議大家去谷歌 or 百度绍撞,或者去知乎找答案,關(guān)鍵詞如java開發(fā)方向或應(yīng)用領(lǐng)域罢吃。
更加強(qiáng)烈建議大家去一些互聯(lián)網(wǎng)招聘網(wǎng)站如拉勾網(wǎng)看看一些技術(shù)崗位楚午,這樣定位更加準(zhǔn)確昭齐,如下圖
這下你總該知道你要學(xué)習(xí)什么了吧
三尿招、尋找學(xué)習(xí)路線
當(dāng)你確定了你想學(xué)習(xí)的編程語言及以后的開發(fā)方向或應(yīng)用領(lǐng)域后,你肯定又不知所措阱驾,我該怎么學(xué)習(xí)呢就谜,先學(xué)什么,后學(xué)什么里覆。
這個(gè)問題小編就心有余而力不足啦丧荐,畢竟也只是學(xué)過Android和一點(diǎn)點(diǎn)
javaweb而已,最多知道它倆的學(xué)習(xí)路線喧枷。
但是你可以百度搜索虹统,作為一個(gè)程序員搜索引擎才是你最好的老師!隧甚!车荔,如你想學(xué)習(xí)ios,關(guān)鍵詞ios學(xué)習(xí)路線圖戚扳,肯定有不少忧便。菜鳥要飛的平臺上也提供了常見開發(fā)技術(shù)的學(xué)習(xí)路線圖。小編更推薦你去一些培訓(xùn)機(jī)構(gòu)的官網(wǎng)瀏覽他們的培訓(xùn)的課程目錄帽借,很詳細(xì)的珠增!否則怎么吸引人呢。
四砍艾、我該選擇哪一個(gè)方向
即使前3步你都OK蒂教,你肯定還會問類似的問題,我到底是學(xué)Android還是ios脆荷,哪個(gè)工資高凝垛?大數(shù)據(jù)技術(shù)現(xiàn)在很熱門,選擇haoop吧?
首先苔严,根據(jù)你自己的興趣定枷。這個(gè)和不說的一樣,作為一個(gè)小白届氢,你都不知道Android開發(fā)到底做些什么欠窒,hadoop又是什么玩意,談什么興趣呢退子?除非你確定你對某一個(gè)領(lǐng)域感興趣岖妄,那就去學(xué)吧。
其次寂祥,你只是為了畢業(yè)以后好找工作荐虐,待遇好些。這個(gè)就稍微能找些實(shí)際的參考依據(jù)啦丸凭,去拉勾網(wǎng)等類似的互聯(lián)網(wǎng)招聘網(wǎng)站福扬,搜索職位關(guān)鍵詞分別看一下對應(yīng)的職位的數(shù)量,比較一下同樣的工作經(jīng)驗(yàn)?zāi)膫€(gè)工資更高惜犀。無論你是選擇移動端還是we前端還是服務(wù)端铛碑,只要技術(shù)好工資都不低!
還有虽界,新技術(shù)相對而言工資是高點(diǎn)汽烦,但崗位也少。如大數(shù)據(jù)莉御,人工智能等這些新技術(shù)的崗位也就在一線城市可以搜索到撇吞,你學(xué)了這些就意味著你必須去北上廣深拼搏,否則找不到工作礁叔。所以如果你有心儀的奮斗城市牍颈,就結(jié)合一下該城市的崗位去選擇你要學(xué)習(xí)的技術(shù)。
最后晴圾,并不是你現(xiàn)在學(xué)習(xí)了Android開發(fā)颂砸,工作以后就一定一直做Android。編程技術(shù)的變化和發(fā)展是很快的死姚,說不定什么時(shí)候就被淘汰了人乓;工作后,要根據(jù)工作需要學(xué)習(xí)對應(yīng)的開發(fā)技術(shù)都毒。所以最重要的是培養(yǎng)自己學(xué)習(xí)新技術(shù)的能力色罚。而大學(xué)期間,最好多學(xué)習(xí)一些技術(shù)账劲,擴(kuò)展自己的廣度戳护,畢業(yè)后找工作的選擇會多一點(diǎn)金抡。畢竟沒有工作的實(shí)戰(zhàn)場景想提高某一個(gè)開發(fā)技術(shù)的深度是很難的。個(gè)人認(rèn)為腌且,大學(xué)期間的學(xué)習(xí)最大的作用是通過學(xué)習(xí)不同的技術(shù)來尋找真正適合自己的方向梗肝。技術(shù)深度的提高是在工作的實(shí)戰(zhàn)中積累的。而提高自己技術(shù)廣度最好的辦法就是自己獨(dú)立或者和別人合伙铺董,完整一個(gè)簡單的線上項(xiàng)目巫击,這個(gè)過程會讓你對很多疑惑豁然開朗!
以上只是小編淺薄的經(jīng)驗(yàn)之談精续,歡迎留言交流坝锰!