當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]如何學(xué)習(xí)編程

大家第一次接觸編程的時(shí)候我想很多人都會(huì)在那些Q群啊之類的地方不斷的問(wèn),怎么學(xué)習(xí)編程,要看些那些書。甚至在百度,谷歌里搜索如何學(xué)習(xí)編程。

    這篇文章,我會(huì)從我自己學(xué)習(xí)編程的角度去描述,如何學(xué)習(xí),可能不是最好的學(xué)習(xí)方法,但是我想對(duì)于一些朋友總會(huì)有幫助的,因?yàn)榉椒ㄊ窃醋阅銈€(gè)人。我在這里說(shuō)一下我的格言:別去想別人怎么做,首先應(yīng)該想自己怎么做。別去想別人怎么幫助你。首先想自己幫助自己。

    想想我自己學(xué)習(xí)編程也有好多年啦。初三開始小打小鬧的用C語(yǔ)言寫個(gè)無(wú)聊的printf()到用HTML寫幾個(gè)個(gè)人網(wǎng)站。雖然沒(méi)啥技術(shù)含量不過(guò)都是自己的勞動(dòng),那時(shí)候真的很激動(dòng),現(xiàn)在回想起來(lái),其實(shí)那時(shí)候很幼稚。不過(guò)也造就了我的興趣吧!好了閑話就少說(shuō)了,我們?nèi)胝}。

    在學(xué)習(xí)之前,請(qǐng)?jiān)试S自己先問(wèn)下自己:我為什么要做這樣的事。對(duì)于編程,我會(huì)先問(wèn)一下,你為什么要學(xué)習(xí)編程?你會(huì)怎么回答?

    A:興趣;

    B:讀書需要;

    C:傳聞是高薪職業(yè);

    D:容易就業(yè);

    E:被逼的;

    F:無(wú)聊學(xué)學(xué);

    這個(gè)你會(huì)怎么選擇;什么樣的目的,得到什么樣的結(jié)果。如果你選擇(A)我會(huì)開心,興趣就是動(dòng)力,就算沒(méi)有人教,你也會(huì)鼓足勇氣去學(xué)習(xí),就我個(gè)人來(lái)說(shuō),我是那種屁股坐不穩(wěn)的人,你叫我坐在那里什么都不做半個(gè)小時(shí),我會(huì)全身都不舒服的。但是一說(shuō)到計(jì)算機(jī),編程我可以一坐就是7,8個(gè)小時(shí)自己還沒(méi)感覺(jué)。興趣第一,很好,你以這個(gè)為目的我相信你一定能學(xué)好。相信你也有自己的一套學(xué)習(xí)方式。

    如果你選擇的是B:那么你也有一定的成功幾率,首先你要是一個(gè)會(huì)讀書的人,可以說(shuō)讀書就是你的興趣,那么你也可以學(xué)好。當(dāng)然如果只是隨潮流大家都讀所以我也要讀,那么你只能學(xué)不好了。[!--empirenews.page--]

    如果你選擇的是C:那么你還是早點(diǎn)放棄吧,那些擁有高薪的都是十分牛的人,其實(shí)的廣大程序員還是掙扎在生活的水平線上。混飯吃而已,所以如果你抱著高薪去學(xué)習(xí)編程,你一定肯痛苦。這類也是最能有成就的一類,編程是技術(shù)需要的是一份執(zhí)著,但是你的執(zhí)著只是金錢。技術(shù)現(xiàn)在并不等于金錢……

    如果你選擇的是D:我還是勸你早點(diǎn)放棄,現(xiàn)在的就業(yè)也不樂(lè)觀啊,失業(yè)大軍里計(jì)算機(jī)就占了很大的一部分比重,你隨時(shí)都可能是其中的一分子。

    如果你選擇的是E:很好,你也有可能學(xué)好,前提是逼你的人能一直強(qiáng)逼你下去,讓你進(jìn)步,一句非常經(jīng)典的話:“人都是被逼出來(lái)的……”。你出生的時(shí)候的確是被逼出來(lái)的,被你媽媽逼出來(lái),呵呵!

    如果你選擇的是F:也不錯(cuò),起碼你無(wú)聊的時(shí)候想到的居然是編程,證明編程還能給你帶來(lái)樂(lè)趣。

    既然你已經(jīng)知道為什么學(xué)習(xí)編程,那么我們要做的就是怎么去學(xué)習(xí)了?,F(xiàn)在的編程語(yǔ)言很多,上百個(gè)語(yǔ)言,但是無(wú)論什么語(yǔ)言,都會(huì)有共同性的。所以你要學(xué)習(xí)編程那么就要先學(xué)習(xí)編程的思想,這個(gè)編程的思想你也只能看一下而已。了解一下計(jì)算機(jī)如何去讀這些編程語(yǔ)言這個(gè)很重要。不了解過(guò)個(gè)你學(xué)習(xí)任何編程語(yǔ)言都很難做到靈活運(yùn)用。

    你明白了計(jì)算機(jī)是如何讀編程語(yǔ)言是的這個(gè)時(shí)候你就可以開始選擇你學(xué)習(xí)的語(yǔ)言了。至少這些編程語(yǔ)言都是我能看懂的,可以說(shuō)是自己學(xué)過(guò)的。也會(huì)解析一下學(xué)習(xí)這些語(yǔ)言的一些特點(diǎn)。

    A: c#.NET

    B: Java

    C: C/C++

    D: PHP

    E: JavaScript

    F: lua

    我只列出了五種,其實(shí)還有更多的語(yǔ)言,有興趣可以自己去找下這些語(yǔ)言的特色。其實(shí)我了出的這些都有一個(gè)特色。都是跟C語(yǔ)言有一定的相似的。

    A: C#這個(gè)語(yǔ)言是微軟推出的,目前大部分應(yīng)用都是應(yīng)用在WIN平臺(tái)上,雖然LINUX也能用,但支持還不是太好。編程風(fēng)格上我覺(jué)得是最優(yōu)美。至少看起來(lái)很舒適,強(qiáng)大的智能感知。編程的學(xué)習(xí)難度分級(jí)是:初學(xué)偏易,一般編程中等,高級(jí)編程難。梯度不算陡峭。雖然是面向?qū)ο?,但是現(xiàn)在大部分的人都很用到面向?qū)ο笾辽傥以趪?guó)內(nèi)反編譯很多的應(yīng)用系統(tǒng)的時(shí)候很多都沒(méi)有用到編程思想的,雖多就是把類用來(lái)實(shí)現(xiàn)腳本編程閉包功能而已。真正使用到面向?qū)ο蟮睦^承多態(tài)的并不多。當(dāng)然也有很多是使用了面向?qū)ο笏枷氲?,所以我覺(jué)得初學(xué)C#的時(shí)候完全可以放棄對(duì)象的繼承,多態(tài)這類比較復(fù)雜的東西。專心學(xué)習(xí)他的語(yǔ)法糖,還有封裝好的API,其實(shí)C#這個(gè)語(yǔ)言已經(jīng)有個(gè)很完善的API基本上的應(yīng)用都可以直接使用API來(lái)實(shí)現(xiàn),而且從算法構(gòu)造上也不算復(fù)雜。再加上IDE的智能感知,新手只需要了解各個(gè)命名空間的作用就可以了,智能感知會(huì)幫助我們完成API的調(diào)用(至少你要知道那些方法在那個(gè)空間,怎么用)。所以初學(xué)我把它定義在上手“易”?,F(xiàn)在的學(xué)習(xí)其實(shí)并非一定要從記事本開始。學(xué)會(huì)使用IDE學(xué)習(xí)其實(shí)也是一項(xiàng)技能。編程很重要的一點(diǎn)。就是你動(dòng)了多少手,你就收獲了多少,無(wú)論你看了多少別人的代碼,如果你不自己動(dòng)手去寫一下,你永遠(yuǎn)沒(méi)辦法感受到內(nèi)涵,之前我有部分同學(xué),他們跟我說(shuō),現(xiàn)在網(wǎng)上大把代碼,那里需要自己敲得那么辛苦干嘛上網(wǎng)COPY一下就什么都有了,傻瓜才自己手寫。好吧我承認(rèn)我傻瓜。但是自少我現(xiàn)在的水平我敢說(shuō),,你只需要給我2樣?xùn)|西我一樣能寫出你上網(wǎng)找的那些代碼。一樣是VS,另一樣是幫助文檔。說(shuō)起這個(gè)事又令我想起最近公司招聘的一些趣事。最近公司面試了接近80個(gè)人吧,因?yàn)槲覀児镜纳蠙C(jī)考試是不允許上網(wǎng)的。呵呵!你們可以想象一下,不能上網(wǎng)后只有30個(gè)能勉強(qiáng)敲的出代碼的。能做出題目的更是少得可憐。突然我就想,這些人到底有沒(méi)基礎(chǔ)的,一個(gè)簡(jiǎn)單的登錄功能和上傳文件功能不能上網(wǎng)就不會(huì)寫,我真是狂汗……一些號(hào)稱三年五年工作經(jīng)驗(yàn)的,居然還寫不出一個(gè)簡(jiǎn)單的交叉表查詢。(其實(shí)就10句代碼……)。所以啊過(guò)分依靠網(wǎng)絡(luò)怎么可能有自己的技術(shù)積累呢,這些人在我眼里三年五年也成不了構(gòu)架師……可能十年也去不到構(gòu)架師的水平。
B:JAVA 跟C#類似,傳聞微軟推出C#也是為了對(duì)抗JAVA而搞出來(lái)的。這兩種語(yǔ)言有很多相似的地方什么是命名的方式上都有很多相似的地方,JAVA也是從C語(yǔ)言里發(fā)展起來(lái)的。不過(guò)我覺(jué)得在學(xué)習(xí)曲線上,初學(xué)要比C#難,中國(guó)人普遍英語(yǔ)不太好。而且在IDE上微軟的VS要比JAVA的各類編輯器要優(yōu)勝,主要是在智能感知上,還有一些輔助上??赡芎芏郕AVA的鐵桿FANS會(huì)給我丟西瓜,丟雞蛋了。但我敢說(shuō),我說(shuō)的是事實(shí),JAVA位置一個(gè)環(huán)境都很辛苦,至少我學(xué)習(xí)的時(shí)候是這樣。免費(fèi)啊,JAVA很多東西都是免費(fèi)的,微軟要收費(fèi)的,收費(fèi)肯定好了……我會(huì)偷偷的笑……你丫就不用盜版?有了光榮的盜版。收費(fèi)問(wèn)題根本就不是問(wèn)題,再說(shuō)從學(xué)習(xí)的角度……盜版這些東西根本就無(wú)關(guān)痛癢的……反而更容易召集人氣……

    C: C語(yǔ)言可以說(shuō)是非常牛逼的語(yǔ)言,長(zhǎng)期位居第一。但是需要投入的精力也不少啊,智能感知一直進(jìn)步不大,可能是因?yàn)槿f(wàn)惡的宏定義呵呵(這個(gè)萬(wàn)惡可不是我說(shuō)的。)當(dāng)然學(xué)習(xí)C語(yǔ)言如果你不懂使用宏定義那么你肯定沒(méi)學(xué)過(guò)C語(yǔ)言,C語(yǔ)言的宏定義雖然一直在C語(yǔ)言的書本上很少描述但是實(shí)際應(yīng)用卻是不可缺少的,我看過(guò) IDSOFT的DOOM的源代碼里簡(jiǎn)直就是神一般。但是看起來(lái)也真是辛苦。題外話,其實(shí)上面很多語(yǔ)言都是根據(jù)C語(yǔ)言衍生出來(lái)的,什么很多特性都是參照了C 語(yǔ)言。用很玄幻的說(shuō)話。C語(yǔ)言是遠(yuǎn)古時(shí)代遺留的強(qiáng)大魔法。既然是遠(yuǎn)古學(xué)習(xí)曲線自然就陡峭得可以,我個(gè)人感覺(jué)我的C語(yǔ)言水平其實(shí)都只是菜鳥而已。C++一樣是菜鳥。C++和C其實(shí)我覺(jué)得是2個(gè)語(yǔ)言根本不能混為一談的,但是很多招聘之的都把C/C++歸為一類,所以我也把它歸為一類,很多人想問(wèn)學(xué)C++是不是要先學(xué)C.而且C++的分支多得嚇人。內(nèi)涵也豐富得嚇人……C語(yǔ)言個(gè)人技術(shù)化,我個(gè)人覺(jué)得C/C++起碼要4年才算出師,JAVA是2年,C#都是2 年。而且還需要一系列的計(jì)算機(jī)基礎(chǔ),算法基礎(chǔ)等一些東西。而JAVA和C#都把這些東西封裝了成標(biāo)準(zhǔn)的API了,我們只需要使用。但是C/C++這些東西都沒(méi)有一個(gè)確定的標(biāo)準(zhǔn)例如界面庫(kù),有人用QT有人用MFC.這些都是不一樣的所以選擇的路也多,學(xué)的東西自然也更多了。但從編程上,并非就是C++的就比用C#的牛。C++只是擁有深厚的歷史,有自己獨(dú)特的文明。是因?yàn)樗奈拿鞫!?/p>

    D:PHP 接觸不深,但是我覺(jué)得它是一個(gè)制作網(wǎng)頁(yè)的好語(yǔ)言,其他領(lǐng)域我并不怎么看好他,我覺(jué)得PHP在開發(fā)網(wǎng)頁(yè)上有很大的優(yōu)勢(shì),但是開發(fā)B/S級(jí)系統(tǒng)應(yīng)用就現(xiàn)得比較力不從心了。所以如果你定位自己作為一個(gè)網(wǎng)頁(yè)開發(fā)人員的話,你就應(yīng)該學(xué)習(xí)這種語(yǔ)言。如果是B/S級(jí)的應(yīng)用的話,就應(yīng)該使用C#或者JAVA,或者其他的語(yǔ)言。

    E:JavaScript,非常有名的腳本語(yǔ)言,如果你想從事B/S的開發(fā),網(wǎng)頁(yè)開發(fā),你就一定要學(xué)這個(gè),是一個(gè)必須掌握的技能。學(xué)習(xí)曲線相對(duì)比較平坦,而且內(nèi)容也不算多,但是應(yīng)用卻十分靈活的語(yǔ)言。強(qiáng)烈推薦初學(xué)者先學(xué)習(xí)這個(gè)語(yǔ)言,來(lái)尋找感覺(jué),因?yàn)檫@個(gè)語(yǔ)言完全不存在編程環(huán)境的問(wèn)題,你只需要有瀏覽器,記事本,兩樣任何系統(tǒng)都有的軟件就可以編寫它。所以我覺(jué)得首先學(xué)習(xí)它會(huì)對(duì)你理解編程思想有一定幫助。[!--empirenews.page--]

    F:LUA這個(gè)也是一個(gè)腳本語(yǔ)言,成就這個(gè)語(yǔ)言的名聲是來(lái)自一個(gè)叫“魔獸世界”的游戲,目前我了解LUA應(yīng)用的領(lǐng)域比較多都是作為一種嵌入語(yǔ)言,嵌入到C 或者C++中去使用,在國(guó)內(nèi)很多游戲公司都會(huì)有LUA程序員,部分會(huì)由C語(yǔ)言程序員去兼任。因?yàn)長(zhǎng)UA在語(yǔ)法上和C有很相似的地方,基本對(duì)舊的C語(yǔ)言程序員學(xué)習(xí)LUA是無(wú)難度的。當(dāng)然也有它的局限性,作為腳本語(yǔ)言它本身就存在不足,而且這個(gè)語(yǔ)言本身就是作為C語(yǔ)言的擴(kuò)展來(lái)用的所以,學(xué)習(xí)這個(gè)語(yǔ)言的話,建議先學(xué)習(xí)C語(yǔ)言?;蛘叱删透撸ɑ蛘叨眩。?/p>

    我個(gè)人是選擇C#作為長(zhǎng)期發(fā)展的語(yǔ)言的。我覺(jué)得這個(gè)語(yǔ)言比較適合我這種英語(yǔ)不算好,但是又喜歡編程的人。

    PS:真心想學(xué)編程的必須要學(xué)習(xí)一定的英語(yǔ)能力,因?yàn)楹芏嗑幊痰南冗M(jìn)思想都是英文的。所以英語(yǔ)好,對(duì)成為高手起很大作用的。

    知道為什么學(xué)習(xí)編程,又選擇了目標(biāo)語(yǔ)言,接下來(lái)就是基礎(chǔ)學(xué)習(xí)了。

    這個(gè)基礎(chǔ)學(xué)習(xí),我覺(jué)得首先要對(duì)一些語(yǔ)法糖熟悉,第二件事情就是要多編,多看,可能你買的書都附帶著實(shí)例代碼的,我覺(jué)得對(duì)于初學(xué)者,首先你把書上的程序都照著編一次,在這期間,你一定會(huì)遇到無(wú)數(shù)的錯(cuò)誤,但是這些錯(cuò)誤將會(huì)是重復(fù)出現(xiàn)的,這個(gè)時(shí)候你就學(xué)會(huì)了如何排錯(cuò),有人說(shuō)過(guò)編程不是一口氣寫出來(lái)的,是修改出來(lái)的。所以學(xué)習(xí)排錯(cuò)是編程的第一步,雖然隨書光盤有很多代碼,但是這些代碼都不屬于你的。沒(méi)有入你腦,唯一讓這些代碼屬于你的辦法就是多抄(打)幾次。當(dāng)你把一本編程的基礎(chǔ)書都看透了……至少別人問(wèn)你這本書的知識(shí)你能答得上口,那就是你度過(guò)了第一時(shí)期了。你可以進(jìn)入一搬階段了。

    一般的階段,這個(gè)階段我把它定義為是把這些語(yǔ)法組織成句子,組織成文章的時(shí)期。我想問(wèn)下,大家都上過(guò)語(yǔ)文課吧,我們來(lái)回想一下,我們學(xué)習(xí)語(yǔ)文的過(guò)程

    字=》詞=》句=》文章;

    而編程的學(xué)習(xí)則是這樣的;

    變量=》函數(shù)=》類=》架構(gòu)

    所以我們?cè)诔鯇W(xué)階段做的都是學(xué)那些字,那些詞(其實(shí)就是語(yǔ)法糖)然后我們就會(huì)學(xué)造句,造句的時(shí)候就會(huì)涉及到把什么詞語(yǔ)組合起來(lái)會(huì)得到優(yōu)美的句子,而合理的句子,加上合理的邏輯就會(huì)變成一篇優(yōu)美的文章。但是一篇優(yōu)美的文章并非那么簡(jiǎn)單的。也就是一個(gè)程序架構(gòu)的優(yōu)美一樣沒(méi)那么簡(jiǎn)單一樣,需要很多很多學(xué)識(shí)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉