六月丁香五月婷婷,丁香五月婷婷网,欧美激情网站,日本护士xxxx,禁止18岁天天操夜夜操,18岁禁止1000免费,国产福利无码一区色费

學(xué)習(xí)啦>學(xué)習(xí)方法>通用學(xué)習(xí)方法>學(xué)習(xí)經(jīng)驗(yàn)>

如何系統(tǒng)有效的學(xué)習(xí)編程知識

時(shí)間: 欣怡1112 分享

  一開始接觸編程的學(xué)習(xí),猶豫不知道怎么學(xué)習(xí),容易使人喪失興趣,為此,以下是學(xué)習(xí)啦小編分享給大家的系統(tǒng)有效的學(xué)習(xí)編程知識的方法,希望可以幫到你!

  系統(tǒng)有效的學(xué)習(xí)編程知識的方法

  一、基礎(chǔ)篇(理論與硬件)

  這一部分關(guān)注的是計(jì)算機(jī)的基本理論與基本實(shí)現(xiàn)。包括硬件結(jié)構(gòu)理論,以及軟件與硬件的交互。以理論開篇,在機(jī)器語言部分深入,最終在操作系統(tǒng)部分達(dá)到高潮。

  1、計(jì)算機(jī)實(shí)現(xiàn)計(jì)算的原理。這包括門電路是如何實(shí)現(xiàn)計(jì)算的,時(shí)序電路是如何實(shí)現(xiàn)存儲的,馮諾依曼體系結(jié)構(gòu)是如何將二者結(jié)合實(shí)現(xiàn)了真正的現(xiàn)實(shí)世界的計(jì)算機(jī)的,以及它是如何反映圖靈機(jī)這一理論計(jì)算模型的。其間會學(xué)習(xí)布爾邏輯。

  2、如何控制計(jì)算機(jī)硬件。這部分使用的“工具”就是機(jī)器語言和匯編語言。我們需要理解機(jī)器語言的本質(zhì),以及它如何以“匯編語言”這種更容易理解的形式為程序員提供了控制硬件設(shè)備的機(jī)會。這部分可以學(xué)習(xí)到很多非常低級但是本質(zhì)的內(nèi)容。

  3、操作系統(tǒng)是如何工作的。如果你理解了上一部分的計(jì)算機(jī)硬件相關(guān)的問題,那么理解操作系統(tǒng)的工作原理將不會那么困難。另外你將明白操作系統(tǒng)作為硬件和上層軟件的中間層次,是如何大大簡化了人們對硬件的操作過程的。

  二、進(jìn)階篇(軟件系統(tǒng))

  1、編程語言。這包括結(jié)構(gòu)化編程語言以及面向?qū)ο缶幊陶Z言。因?yàn)橛泻芏噙x擇,其實(shí)以一門語言開始即可,如果你在前面正確的理解了硬件與機(jī)器語言,那么C語言入門真是太簡單了,如果你運(yùn)氣不好,覺得C很困難,那么即使是從Python、Javascript開始學(xué)習(xí)也沒問題。重點(diǎn)在于理解編程中和語法相關(guān)的基本概念,并了解一些簡單的算法知識。

  2、數(shù)據(jù)結(jié)構(gòu)與算法。說白了就是如何合理的組織數(shù)據(jù),通過其結(jié)構(gòu)特點(diǎn)來簡化編程或者提高計(jì)算的效率。這里的內(nèi)容是模式化的,所有人都需要學(xué)習(xí)無序結(jié)構(gòu)、有序線性結(jié)構(gòu)、樹結(jié)構(gòu)、圖結(jié)構(gòu)等。另外,排序算法、查找算法必須學(xué)好,特別是算法策略如遞推、遞歸、蠻力(窮舉)、分治、動態(tài)規(guī)劃等也必須有所實(shí)踐和了解。切記不必深陷其中,這里是個(gè)大坑,你不可能真的“精通”他們。

  3、編程語言是如何實(shí)現(xiàn)的。這里主要涉及編譯原理。當(dāng)你站在高級編程語言實(shí)現(xiàn)者的角度再來認(rèn)識編程語言本身的時(shí)候,許多問題豁然開朗。這會深刻的改變你的編程觀??上У氖羌词故呛芎玫膶W(xué)生在這里也會遇到很大的阻力。真正的問題不是這方面理論性有多強(qiáng),而是教材都很爛——包括國外教材(什么龍書虎書鯨書都根本不是為初學(xué)者準(zhǔn)備的),而且語焉不詳。這導(dǎo)致大部分人都感覺莫名其妙高深莫測。如果你不是有志攀登軟件設(shè)計(jì)的最高峰,可以繞行。否則從表達(dá)式運(yùn)算解析開始,逐步引入變量,類型,控制結(jié)構(gòu),函數(shù),再到對象,一步步構(gòu)建出解析器,然后結(jié)合前面學(xué)習(xí)的硬件接口知識,將其轉(zhuǎn)換為低級表示,最后你會發(fā)現(xiàn)沒有那么可怕。

  三、基礎(chǔ)領(lǐng)域篇(必備領(lǐng)域知識)

  1、互聯(lián)網(wǎng)絡(luò)是如何構(gòu)成的。這部分包括網(wǎng)絡(luò)的基本知識,主機(jī)間通信的原理,轉(zhuǎn)發(fā)設(shè)備的實(shí)現(xiàn),以及互聯(lián)網(wǎng)絡(luò)的構(gòu)成。這是網(wǎng)絡(luò)編程所需的基礎(chǔ)知識。除了理解低級協(xié)議,也要花一些時(shí)間了解應(yīng)用層的協(xié)議,特別是 SMTP、POP3、FTP、HTTP 等,重點(diǎn)是了解他們的基本原理,而不是每個(gè)細(xì)節(jié)。因?yàn)槊總€(gè)協(xié)議都有自己的標(biāo)準(zhǔn),光 HTTP 協(xié)議就夠你研究 6 個(gè)月以上了。這里注重的是原理。

  2、如何管理大量的數(shù)據(jù)并在其上建立信息系統(tǒng)。數(shù)據(jù)庫是一個(gè)很好的例子。包括數(shù)據(jù)庫系統(tǒng)的基本理論,實(shí)現(xiàn)原理,以及設(shè)計(jì)原則。同樣,這里不是真的在教你如何構(gòu)建一個(gè)數(shù)據(jù)庫系統(tǒng),而是在學(xué)習(xí)他的核心原則,重點(diǎn)是學(xué)會如何合理的設(shè)計(jì)表結(jié)構(gòu),以及實(shí)現(xiàn)效率良好的SQL查詢語句。

  四、擴(kuò)展領(lǐng)域篇(特定領(lǐng)域知識)

  1、基于特定平臺的軟件開發(fā)。如何在Windows平臺、Linux平臺、Mac OS平臺或者手機(jī)、平板、電視機(jī)、微波爐上完成開發(fā)?這需要學(xué)習(xí)特定的軟件平臺提供了哪些編程接口,如何編譯并部署,如何調(diào)試和測試等知識。這部分就是軟件工程師職業(yè)生涯中最耗費(fèi)時(shí)間的部分。

  2、有效的軟件研發(fā)是如何實(shí)現(xiàn)的。這包括軟件結(jié)構(gòu)的設(shè)計(jì)知識,軟件實(shí)施流程的管理知識,以及一些細(xì)微而繁雜的內(nèi)容。人們通常用軟件工程一詞來概括。但事實(shí)上軟件工程站的角度要更高一些,這里只是涵蓋軟件工程的一小部分。

  五、科技領(lǐng)域篇(研究性知識)

  如果你對人工智能、科學(xué)計(jì)算、圖像處理感興趣,這里還有大片的區(qū)域等待你探索。

  事實(shí)上,上面的描述有些嚇人。每一個(gè)領(lǐng)域都夠耗盡去很長的時(shí)間。不過好消息是大部分知識都只要求在理論上理解。真正的耗費(fèi)時(shí)間的部分還是在與編程、編程、編程。不是每個(gè)人都會用到數(shù)據(jù)庫系統(tǒng),也不是每個(gè)人都需要懂得匯編語言。但是這些背景知識會對你有幫助。讓你不再害怕,對自己更有自信。

  如果你希望自己成為一個(gè)很棒的開發(fā)人員,那么上述知識都是必須的。但是卻依然遠(yuǎn)遠(yuǎn)不夠。

  學(xué)無止境,計(jì)算機(jī)科學(xué)尤其如此。

  我說的實(shí)在太多了。思考和打字差不多耗費(fèi)了我一個(gè)小時(shí)。我不太確定這些對你是否有幫助。我希望有,至少有那么一些。但我有點(diǎn)害怕,似乎我的描述不是在幫助你克服困難,而是制造了更多看似難以逾越的高山。

  但我想說:走入編程,然后走出編程。編程是為解決問題服務(wù)的,我們應(yīng)當(dāng)多思考想要解決的問題是什么。這會在我們迷茫的編程生涯中起到指南針的作用。它會告訴我們需要學(xué)習(xí)什么,然后由我們自己來回答如何學(xué)習(xí)。

  我的一位朋友是做生物科技的,他需要在海量的DNA序列里快速的進(jìn)行基因片段的比較。為了完成這一任務(wù),他學(xué)習(xí)了 Python,并著重學(xué)習(xí)了數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的內(nèi)容。雖然最后他寫出來的程序外表看起來很簡單,但是卻速度飛快,為他的事業(yè)貢獻(xiàn)了無形的資產(chǎn)。

  這就是他的起點(diǎn)。但是他并不滿足。他繼續(xù)學(xué)習(xí)如何增強(qiáng)程序的穩(wěn)定性,如何編寫更好的界面等等?,F(xiàn)在他的軟件真的非常棒,一些關(guān)鍵的效率相關(guān)部分已經(jīng)替換為C++實(shí)現(xiàn),界面也做得很專業(yè)。

  天啊,真的無法相信,這就是一位生物領(lǐng)域的研究人員自己親力親為的成果。即使是用苛刻的眼光來看,現(xiàn)在他的軟件也相當(dāng)不錯(cuò)。

  我舉這個(gè)例子,想說明的核心在于,知識的學(xué)習(xí),要想高效,一個(gè)廣為大眾所接受的觀點(diǎn)就是應(yīng)當(dāng)圍繞一定的具體的目標(biāo)來進(jìn)行。如果我們知道我們想要解決的問題是什么,那么我們進(jìn)一步確定要學(xué)習(xí)哪些編程知識就會比較容易。相反,為了學(xué)而學(xué),泛泛而看,效果通常都是很差的。只能給你留下一些大致的印象,而無法成為你真正的可用的知識。

  學(xué)習(xí)編程知識的建議

  先有一個(gè)想法,像學(xué)鋼琴也有一開始想彈奏的曲子,提出一個(gè)想用生產(chǎn)出來的產(chǎn)品,或者買一本評價(jià)好的入門書,做出書中提出的“產(chǎn)品”為目標(biāo)

  將這個(gè)目標(biāo)細(xì)化,可以找專業(yè)人士幫忙,梳理出知識的“切入點(diǎn)”以及周圍的“關(guān)聯(lián)點(diǎn)”,然后開始計(jì)劃第一次迭代(做出第一樣?xùn)|西),可以是一段很短的程序或者一個(gè)作品,但必須有具體的產(chǎn)出

  每次產(chǎn)出后都重新調(diào)整計(jì)劃,重要的是自己或者專業(yè)人士要能具體地評估這次產(chǎn)出的價(jià)值。如果是跟著書就自然容易了,就是跟書上對一下就是了

  如果要具體給到一個(gè)切入點(diǎn),那么我的建議是兩個(gè)選擇:

  從C語言開始,然后學(xué)習(xí)算法,走科班路線

  從網(wǎng)頁制作開始,然后學(xué)習(xí)網(wǎng)站工程,走產(chǎn)品路線,這是產(chǎn)品中最好入門的了

  不必太擔(dān)心學(xué)錯(cuò),因?yàn)榈竭_(dá)工程級別,你學(xué)過的八成知識都不會被作為工具使用,而它們的只是實(shí)現(xiàn)了它們的歷史使命——成為你現(xiàn)有某個(gè)實(shí)用知識的中間點(diǎn)/橋梁、為你現(xiàn)在的學(xué)習(xí)效率做了一次鋪墊。

  實(shí)際一點(diǎn)地說,對于一個(gè)“畢業(yè)了”的程序員,學(xué)習(xí)一門新的編程語言,可能只需一周,而熟悉需要三周,熟練地用于開發(fā)是三個(gè)月,精通只需一年。這也是大概而已,嚴(yán)謹(jǐn)?shù)卣f,不同的語言所關(guān)聯(lián)的知識點(diǎn)的數(shù)量是不一樣的。這也不影響舉例,因?yàn)樵谶@之前,一個(gè)大學(xué)生在學(xué)習(xí)他們的第一門語言,通常是C/C++,用了一個(gè)學(xué)期,還可能掛科呢(那是態(tài)度問題或者是Dota的問題)。

  首先吧,別想速成。這要能速成,那么我們專業(yè)人士不就該喝西北風(fēng)去了?

  所以要真解決了學(xué)習(xí)范圍的問題后,你下一個(gè)問題應(yīng)該是“要實(shí)現(xiàn)**應(yīng)該具備那些知識”一類的了。等你在某個(gè)點(diǎn)扎根后,想的就是利用這個(gè)學(xué)習(xí)能力,去另一個(gè)自己更喜歡的領(lǐng)域,還是就此為據(jù)點(diǎn)擴(kuò)充范圍,亦或者深入這個(gè)領(lǐng)域(也是擴(kuò)充的一種吧,方向不同)。

  最后重申的一點(diǎn),就是軟件開發(fā)本身就是一個(gè)學(xué)習(xí)的過程,只是產(chǎn)出的代碼具備不同的價(jià)值而已。軟件的特殊性已經(jīng)導(dǎo)致了難以重復(fù)地寫出兩段相同的代碼,一般只會改寫重寫,或者重用原來的代碼(就是復(fù)制黏貼或者引用調(diào)用)。

  編程這個(gè)領(lǐng)域的知識是怎么樣的

  然后要延伸一下時(shí)代問題。

  從面向?qū)ο箝_始,互聯(lián)網(wǎng)時(shí)代興起,到現(xiàn)在的移動互聯(lián)網(wǎng)時(shí)代,編程絕大部分的目的是在于創(chuàng)造“軟件”,而創(chuàng)造軟件也由于世界上最聰明的人群高速集中涌入,以及時(shí)代的需求壓力,已經(jīng)形成了一整套工程學(xué),也就是“軟件工程”了。

  現(xiàn)在“編程”被集中在“軟件工程”的需求中,產(chǎn)生的一個(gè)結(jié)果就是“工程化”,而“工程化”就是整個(gè)生產(chǎn)體系開始逐步分化以及逐步專業(yè)化,從而出現(xiàn)了這個(gè)領(lǐng)域中的各種針對性專業(yè),比如“前端工程師”、“測試工程師”、“算法分析師”、“.NET軟件工程師”。

  在整個(gè)軟件的開發(fā)周期中,我們都需要跟不同的人在不同程度的合作。即使是個(gè)人開發(fā)者,都會用到開源的代碼、各種下載的人家做好的工具。

  這就是工程化后的結(jié)果,也就是“編程”被和其他不同的專業(yè),比如數(shù)學(xué)、醫(yī)學(xué)、建筑、人文等科學(xué)結(jié)合在一起然后具體地分化成了各個(gè)關(guān)聯(lián)的模塊。這些模塊有一個(gè)特點(diǎn),就是整體上“臨近相連”。

  這什么意思呢?

  舉例說明就是,但從(某個(gè))網(wǎng)站開發(fā)而言,就有客戶、老板、美工、前端工程師、服務(wù)端工程師、數(shù)據(jù)庫管理員、網(wǎng)絡(luò)推廣等等。這些角色兩兩間可能有工作上的直接關(guān)聯(lián),單指這個(gè)軟件項(xiàng)目的開發(fā)工作的話。

  無論哪個(gè)是因,哪個(gè)是果,現(xiàn)在的情況都是沒兩個(gè)角色間的知識必定關(guān)聯(lián)和有交集。在往廣度上看,整個(gè)軟件工程領(lǐng)域以及世界都如此,只是軟件工程領(lǐng)域如建筑領(lǐng)域一般,有比較大的定量的專業(yè)化,一切都是有根據(jù)有標(biāo)準(zhǔn)的。

  而至此,形成的一個(gè)結(jié)果就是,沒有人能掌握所有知識;所有知識都是有關(guān)聯(lián)的,追尋著關(guān)聯(lián)的路徑學(xué)習(xí)產(chǎn)生的效果普遍情況下是最大的。

  后面那條可以簡單地證明,假設(shè)兩樣知識八竿子打不著,那么你就要等很久它們才能連起來,發(fā)揮加成效用。雖然喬幫主說過,總有一天這些dots總會連起來的,但是嘛......靠譜點(diǎn)也不是不好。

猜你喜歡:

1.學(xué)習(xí)電腦知識

2.學(xué)編程需要哪些知識

3.初學(xué)者應(yīng)該如何開始學(xué)習(xí)編程

4.大學(xué)c語言學(xué)習(xí)心得感悟

5.c語言學(xué)習(xí)心得6篇

3734831