欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

電腦編程簡(jiǎn)單游戲視頻,零基礎(chǔ)該如何學(xué)習(xí)編程

電腦編程簡(jiǎn)單游戲視頻,在游戲開發(fā)中,你可能會(huì)遇到零基礎(chǔ)該如何學(xué)習(xí)編程類似的問題,可以參考如下:

電腦編程簡(jiǎn)單游戲視頻,零基礎(chǔ)該如何學(xué)習(xí)編程?

這幾年最火的行業(yè),應(yīng)該就是互聯(lián)網(wǎng)行業(yè)了,各種新的技術(shù)層出不窮。而隨著5G、云計(jì)算、大數(shù)據(jù)的發(fā)展,IT向全行業(yè)滲透的速度更是日益加快,行業(yè)內(nèi)員工的薪資水平也是水漲船高。于是開始有眾多的費(fèi)計(jì)算機(jī)相關(guān)專業(yè)的人士,想要通過學(xué)習(xí)編程,成功進(jìn)入這一行業(yè)。那么,今天小編就跟大家聊一聊,零基礎(chǔ)的小白該如何學(xué)習(xí)編程。

1.明確學(xué)習(xí)目標(biāo)

學(xué)編程是為了什么?找到一份相關(guān)的工作?還是為了在目前的崗位上提升自己的技能,讓自己漲點(diǎn)工資?……不同的目標(biāo),決定了你要學(xué)習(xí)的深度的不同,一定要明確。

2.制定學(xué)習(xí)計(jì)劃

(1)明確發(fā)展方向

IT行業(yè)的崗位還是挺多的,在學(xué)習(xí)之前,可以明確一下自己的發(fā)展方向,比如說成為一名Java工程師。選擇的時(shí)候根據(jù)自己的興趣而定,更容易堅(jiān)持下去。

(2)先學(xué)一種語言

雖然很多人說好的程序員不能只會(huì)一種語言,但是作為一個(gè)初學(xué)者來說,還是建議你從一中語言開始學(xué)起。北大青鳥中博軟件學(xué)院是采取的循序漸進(jìn),分階段學(xué)習(xí)的課程設(shè)計(jì),非常適合零基礎(chǔ)的朋友學(xué)習(xí)。大家可以先確定一種自己想學(xué)的專業(yè),然后深耕,最后再擴(kuò)展。

(3)時(shí)不時(shí)的“模仿”

零基礎(chǔ)學(xué)習(xí)編程語言是有技巧的,從模仿開始,尤其是零基礎(chǔ)學(xué)編程,建議不要只是看書,不然書看完了,學(xué)習(xí)編程的興趣完全喪失了。建議找一個(gè)小而簡(jiǎn)單的案例,操作演練,看到自己的成果,這樣會(huì)提升自信心,有些內(nèi)容一時(shí)的不理解,可以記下來,在后面多多聯(lián)系的時(shí)候就會(huì)迎刃而解。

(4)保持自己的興趣

零基礎(chǔ)學(xué)習(xí)編程,千萬不要喪失興趣,否則很容易半途而廢,最好可以讓自己“上癮”。“上癮”這個(gè)詞很多人覺得是貶義詞,但是如果對(duì)程序“上癮”會(huì)事半功倍,是可以發(fā)掘自己最大潛能的一項(xiàng)絕妙的策略,學(xué)起來會(huì)更輕松。

(5)找大神帶路

零基礎(chǔ)的小白學(xué)編程的話,建議是多找程序員朋友來帶帶你,或者可以到北大青鳥中博軟件學(xué)院的培訓(xùn)班來,跟著大牛講師系統(tǒng)學(xué)習(xí),他們會(huì)傳授給你很多的經(jīng)驗(yàn)和技巧,學(xué)起來會(huì)少走彎路。

(6)自學(xué)或者報(bào)班都可以

學(xué)習(xí)編程的話,不管是自學(xué)或者是報(bào)名參加培訓(xùn)班,都是各有優(yōu)缺點(diǎn),想必大家都已十分了解,就不再贅述。如果你想要快速的掌握技能,那么參加靠譜的培訓(xùn)機(jī)構(gòu)是一條捷徑,但是也要根據(jù)自己的情況酌情選擇,畢竟培訓(xùn)費(fèi)用是不可避免的。

以上就是小編關(guān)于零基礎(chǔ)學(xué)編程的分享了,希望對(duì)大家有幫助。如果你想要找一家靠譜的培訓(xùn)機(jī)構(gòu),比如北大青鳥中博軟件學(xué)院學(xué)習(xí)編程,可以私聊小編喲~

如何從零開始學(xué)編程?

You can code. They cannot. That is pretty damn cool.– Learn Python The Hard Way

在你學(xué)習(xí)編程之前思考一下你的目標(biāo),當(dāng)你有最終目標(biāo)時(shí)道路會(huì)更加的清晰。那么,你想要寫什么?網(wǎng)站?游戲?iOS或者Android應(yīng)用?或是你是想自動(dòng)化完成一些乏味的任務(wù)讓你有更多的時(shí)間看窗外的風(fēng)景?也許你只是想更具有就業(yè)競(jìng)爭(zhēng)力找個(gè)好工作。所有的這些都是有價(jià)值的目標(biāo),這些目標(biāo)都是你編程學(xué)習(xí)推動(dòng)力的一部分,沒有推動(dòng)力的人,是無法在略顯枯燥的漫長(zhǎng)學(xué)習(xí)之旅中走遠(yuǎn)的。

不要浮躁

Bad programming is easy. Even Dummies can learn it in 21 days. Good programming requires thought, but everyone can do it and everyone can experience the extreme satisfaction that comes with it.

不管是在線下還是線上的書店,滿目都是《21天學(xué)通Java》這種速成書目,它們都承諾在很短一段時(shí)間內(nèi)就讓你能夠?qū)W會(huì)相關(guān)技術(shù)。Matthias Felleisen在他的著作 How to Design Programs, Second Edition 一書中明確指出了這種「速成」的趨勢(shì)并予以了以上的諷刺。

所謂的「捷徑」或者說「銀彈」是不存在的,智者說過,精通某個(gè)東西需要10年或10000個(gè)小時(shí),也就是漢語中的「十年磨一劍」,所以不用著急,功不唐捐。

培養(yǎng)興趣

Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.

– Linus Torvalds

沉醉于編程,編程更是為了興趣。興趣是推動(dòng)力的不竭源泉,保持這種充滿興趣的感覺,以便于你能將其投入到你的10年/10000小時(shí)的編程時(shí)間中。編程很有趣,那是探索的喜悅。那是創(chuàng)造的喜悅。看到自己親手完成的作品顯示在屏幕上很有趣。有人為你的代碼而驚嘆很有趣。有人在公共場(chǎng)合稱贊你的產(chǎn)品、鄰居使用你的產(chǎn)品、以及在媒體上討論你的產(chǎn)品很有趣。編程應(yīng)該十分有趣,若并非如此,就找出導(dǎo)致編程無趣的問題,然后解決之。

這幅圖取自 Douglas Hofstadter 的著作G?del, Escher, Bach。圖中的每一個(gè)字母都由其他更小的字母組成。在最高層級(jí),我們看的是"MU",M 這個(gè)字母由三個(gè)HOLISM(整全觀)構(gòu)成,U則是由一個(gè)REDUCTIONISM(還原論)構(gòu)成,前者的每一個(gè)字母都包含后者的后者整個(gè)詞,反之亦然。而在最低層級(jí),你會(huì)發(fā)現(xiàn)最小的字母又是由重復(fù)的"MU"組成的。

每一層次的抽象都蘊(yùn)含著信息,如果你只是幼稚地單一運(yùn)用整體論在最高層級(jí)觀察,或運(yùn)用還原論觀察最低層級(jí),你所得到的只有"MU"(在一些地區(qū)的方言中mu意味著什么都沒有)。問題來了,怎樣才能盡可能多的獲取每個(gè)層級(jí)的信息?或者換句話說,該怎樣學(xué)習(xí)復(fù)雜領(lǐng)域(諸如編程)包含的眾多知識(shí)?

教育與學(xué)習(xí)過程中普遍存在一個(gè)關(guān)鍵問題:初學(xué)者們的目標(biāo)經(jīng)常過于傾向整全觀而忽略了基礎(chǔ),舉個(gè)常見的例子,學(xué)生們非常想做一個(gè)機(jī)器人,卻對(duì)背后的

理解物理模型 → 理解電子工程基礎(chǔ) → 理解伺服系統(tǒng)與傳感器 → 讓機(jī)器人動(dòng)起來

這一過程完全提不起興趣。

在這里對(duì)于初學(xué)者有兩個(gè)大坑:

如果初學(xué)者們只與預(yù)先構(gòu)建好的「發(fā)動(dòng)機(jī)和組件」接觸(沒有理解和思考它們構(gòu)造的原理),這會(huì)嚴(yán)重限制他們?cè)趯順?gòu)建這些東西的能力,并且在診斷解決問題時(shí)無從下手。第二個(gè)坑沒有第一個(gè)那么明顯:幼稚的「整體論」方法有些時(shí)候會(huì)顯得很有效,這有一定的隱蔽性與誤導(dǎo)性,但是一兩年過后(也許沒那么長(zhǎng)),當(dāng)你在學(xué)習(xí)路上走遠(yuǎn)時(shí),再想回過頭來「補(bǔ)足基礎(chǔ)」會(huì)有巨大的心理障礙,你得拋棄之前自己狹隘的觀念,耐心地緩步前進(jìn),這比你初學(xué)時(shí)學(xué)習(xí)基礎(chǔ)知識(shí)困難得多。

但也不能矯枉過正,陷入還原論的大坑,初學(xué)時(shí)便一心試圖做宏大的理論,這樣不僅有一切流于理論的危險(xiǎn),枯燥和乏味還會(huì)讓你失去推動(dòng)力。這種情況經(jīng)常發(fā)生在計(jì)算機(jī)科班生身上。

為了更好理解,可以將學(xué)習(xí)編程類比為學(xué)習(xí)廚藝:你為了燒得一手好菜買了一些關(guān)于菜譜的書,如果你只是想為家人做菜,這會(huì)是一個(gè)不錯(cuò)的主意,你重復(fù)菜譜上的步驟也能做出不賴的菜肴,但是如果你有更大的野心,真的想在朋友面前露一手,做一些獨(dú)一無二的美味佳肴,甚至成為「大廚」,你必須理解這些菜譜背后大師的想法,理解其中的理論,而不僅僅是一味地實(shí)踐。但是如果你每天唯一的工作就是閱讀那些厚重的理論書籍,因?yàn)槿狈?shí)踐,你只會(huì)成為一個(gè)糟糕的廚子,甚至永遠(yuǎn)成為不了廚子,因?yàn)榭戳藥滋鞎竽憔鸵驗(yàn)榭菰锓艞壛藦N藝的學(xué)習(xí)。

總之,編程是連接理論與實(shí)踐的紐帶,是計(jì)算機(jī)科學(xué)與計(jì)算機(jī)應(yīng)用技術(shù)相交融的領(lǐng)域。正確的編程學(xué)習(xí)方法應(yīng)該是:通過自頂而下的探索與項(xiàng)目實(shí)踐,獲得編程直覺與推動(dòng)力;從自底向上的打基礎(chǔ)過程中,獲得最重要的通用方法并鞏固編程思想的理解。

作為初學(xué)者,應(yīng)以后者為主,前者為輔。

啟蒙

「學(xué)編程應(yīng)該學(xué)哪門語言?」這經(jīng)常是初學(xué)者問的第一個(gè)問題,但這是一個(gè)錯(cuò)誤的問題,你最先考慮的問題應(yīng)該是「哪些東西構(gòu)成了編程學(xué)習(xí)的基礎(chǔ)」?

編程知識(shí)的金字塔底部有三個(gè)關(guān)鍵的部分:

算法思想:例如怎樣找出一組數(shù)中最大的那個(gè)數(shù)?首先你得有一個(gè) maxSoFar 變量,之后對(duì)于每個(gè)數(shù)…語法:我怎樣用某種編程語言表達(dá)這些算法,讓計(jì)算機(jī)能夠理解。系統(tǒng)基礎(chǔ):為什么 while(1) 時(shí)線程永遠(yuǎn)無法結(jié)束?為什么 int *foo() { int x = 0; return &x; } 是不可行的?

啟蒙階段的初學(xué)者若選擇C語言作為第一門語言會(huì)很困難并且枯燥,這是因?yàn)樗麄儽黄纫瑫r(shí)學(xué)習(xí)這三個(gè)部分,在能做出東西前要花費(fèi)很多時(shí)間。

因此,為了盡量最小化「語法」與「系統(tǒng)基礎(chǔ)」這兩部分,建議使用 Python 作為學(xué)習(xí)的第一門語言,雖然Python對(duì)初學(xué)者很友好,但這并不意味著它只是一個(gè)「玩具」,在大型項(xiàng)目中你也能見到它強(qiáng)大而靈活的身影。熟悉Python后,學(xué)習(xí)C語言是便是一個(gè)不錯(cuò)的選擇了:學(xué)習(xí)C語言會(huì)幫助你以靠近底層的視角思考問題,并且在后期幫助你理解操作系統(tǒng)層級(jí)的一些原理,如果你只想成為一個(gè)普通(平庸)的開發(fā)者你可以不學(xué)習(xí)它。

下面給出了一個(gè)可供參考的啟蒙階段導(dǎo)引,完成后你會(huì)在頭腦中構(gòu)建起一個(gè)整體框架,幫助你進(jìn)行自頂向下的探索。

完成 Codecademy 的 Python 部分。這只是熱身部分,盡快完成它,因?yàn)槟阌肋h(yuǎn)只是在瀏覽器里,你不會(huì)學(xué)到如何搭建開發(fā)環(huán)境。在 Codecademy 這類的編程學(xué)習(xí)網(wǎng)站學(xué)到的那點(diǎn)兒東西,哪怕你只想做一個(gè)小的不能再小的項(xiàng)目,你都不知道該從哪兒開始。完成 MIT 6.00.1x(中文化)(如果你英語不過關(guān),完成麻省理工學(xué)院公開課:計(jì)算機(jī)科學(xué)及編程導(dǎo)論。MOOC 是學(xué)習(xí)編程的一個(gè)有效途徑。雖然該課程的教學(xué)語言為Python,但作為一門優(yōu)秀的導(dǎo)論課,它強(qiáng)調(diào)學(xué)習(xí)計(jì)算機(jī)科學(xué)領(lǐng)域里的重要概念和范式,而不僅僅是教你特定的語言。如果你不是科班生,這能讓你在自學(xué)時(shí)開闊眼界;課程內(nèi)容:計(jì)算概念,python編程語言,一些簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)與算法,測(cè)試與調(diào)試。支線任務(wù):完成Python核心編程完成 Harvard CS50 (如果你英語不過關(guān):完成哈佛大學(xué)公開課:計(jì)算機(jī)科學(xué) cs50 。同樣是導(dǎo)論課,但這門課與MIT的導(dǎo)論課互補(bǔ)。教學(xué)語言涉及 C, PHP, JavaScript + SQL, HTML + CSS,內(nèi)容的廣度與深度十分合理,還能夠了解到最新的一些科技成果,可以很好激發(fā)學(xué)習(xí)計(jì)算機(jī)的興趣。支線任務(wù):閱讀《編碼的奧秘》完成《C語言編程》[可選] 如果你的目標(biāo)是成為一名 Hacker:閱讀 Hacker's Delight

PS:如果教育對(duì)象還是一個(gè)孩子,以下的資源會(huì)很有幫助:

5-8歲: Turtle Academy8-12歲:Python for Kids12歲以上: MIT Scratch 或 KhanAcademy

入門

結(jié)束啟蒙階段后,初學(xué)者積累了一定的代碼量,對(duì)編程也有了一定的了解。這時(shí)你可能想去學(xué)一門具體的技術(shù),諸如Web開發(fā),Android開發(fā),iOS開發(fā)什么的,你可以去嘗試做一些盡可能簡(jiǎn)單的東西,給自己一些正反饋,補(bǔ)充自己的推動(dòng)力。但記住別深入,這些技術(shù)有無數(shù)的細(xì)節(jié),將來會(huì)有時(shí)間去學(xué)習(xí);同樣的,這時(shí)候也別過于深入特定的框架和語言,現(xiàn)在是學(xué)習(xí)計(jì)算機(jī)科學(xué)通用基礎(chǔ)知識(shí)的時(shí)候,不要試圖去抄近路直接學(xué)你現(xiàn)在想學(xué)的東西,這是注定會(huì)失敗的。

那么入門階段具體該做些什么呢?這時(shí)候你需要做的是反思自己曾經(jīng)寫過的程序,去思考程序?yàn)槭裁?Why)要這樣設(shè)計(jì)?,思考怎樣(How)寫出更好的程序?試圖去探尋理解編程的本質(zhì):利用計(jì)算機(jī)解決問題。

設(shè)想 :

X = 用于思考解決方案的時(shí)間,即「解決問題」 部分

Y = 用于實(shí)現(xiàn)代碼的時(shí)間,即「利用計(jì)算機(jī)」部分」

編程能力 = F(X, Y) (X>Y)

要想提高編程能力,就得優(yōu)化 X,Y 與函數(shù) F(X, Y),很少有書的內(nèi)容能同時(shí)著重集中在這三點(diǎn)上,但有一本書做到了——Structure and Interpretation of Computer Programs(SICP)《計(jì)算機(jī)程序的構(gòu)造和解釋》,它為你指明了這三個(gè)變量的方向。在閱讀SICP之前,你也許能通過調(diào)用幾個(gè)函數(shù)解決一個(gè)簡(jiǎn)單問題。但閱讀完SICP之后,你會(huì)學(xué)會(huì)如何將問題抽象并且分解,從而處理更復(fù)雜更龐大的問題,這是編程能力巨大的飛躍,這會(huì)在本質(zhì)上改變你思考問題以及用代碼解決問題的方式。此外,SICP的教學(xué)語言為 Scheme,可以讓你初步了解函數(shù)式編程。更重要的是,他的語法十分簡(jiǎn)單,你可以很快學(xué)會(huì)它,從而把更多的時(shí)間用于學(xué)習(xí)書中的編程思想以及復(fù)雜問題的解決之道上。

Peter Norvig 曾經(jīng)寫過一篇非常精彩的SICP書評(píng),其中有這樣一段:

To use an analogy, if SICP were about automobiles, it would be for the person who wants to know how cars work, how they are built, and how one might design fuel-efficient, safe, reliable vehicles for the 21st century. The people who hate SICP are the ones who just want to know how to drive their car on the highway, just like everyone else.

如果你是文中的前者,閱讀SICP將成為你銜接啟蒙與入門階段的關(guān)鍵點(diǎn)

雖然SICP是一本「入門書」,但對(duì)于初學(xué)者還是有一定的難度,以下是一些十分有用的輔助資源:

Udacity CS212 Design of Computer Program): 由上文提到的Google研究主管Peter Norvig 主講,教學(xué)語言為 Python,內(nèi)容有一定難度。How to Design Programs, Second Edition:HtDP的起點(diǎn)比SICP低,書中的內(nèi)容循循善誘,對(duì)初學(xué)者很友好,如果覺得完成SICP過于困難,可以考慮先讀一讀HtDP。UC Berkeley SICP授課視頻以及 SICP 的兩位作者給 Hewlett-Packard 公司員工培訓(xùn)時(shí)的錄像(中文化項(xiàng)目)Composing Programs:一個(gè)繼承了SICP思想但使用Python作為教學(xué)語言的編程導(dǎo)論(其中包含了一些小項(xiàng)目)SICP 解題集:對(duì)于書后的習(xí)題,作為初學(xué)者應(yīng)盡力并量力完成。

完成了這部分學(xué)習(xí)后,你會(huì)逐步建立起一個(gè)自己的程序設(shè)計(jì)模型,你的腦子里不再是一團(tuán)亂麻,你會(huì)意識(shí)到記住庫(kù)和語法并不會(huì)教你如何解決編程問題,接下來要學(xué)些什么,在你心里也會(huì)明朗了很多。這時(shí)候才是真正開始進(jìn)行項(xiàng)目實(shí)踐,補(bǔ)充推動(dòng)力的好時(shí)機(jī)。

關(guān)于項(xiàng)目實(shí)踐:對(duì)于入門階段的初學(xué)者,參與開源項(xiàng)目還為時(shí)過早,這時(shí)候應(yīng)該開始一些簡(jiǎn)單的項(xiàng)目,諸如搭建一個(gè)網(wǎng)站并維護(hù)它,或是編寫一個(gè)小游戲再不斷進(jìn)行擴(kuò)展,如果你自己的想法不明確,Mega Project List 中選取項(xiàng)目。總之,務(wù)必在這時(shí)拿下你項(xiàng)目實(shí)踐的第一滴血。

與此同時(shí),別忘了繼續(xù)打好根基。為了將來的厚積薄發(fā),在下面這幾個(gè)方面你還要繼續(xù)做足功課(注意:下面的內(nèi)容沒有絕對(duì)意義上的先后順序):

計(jì)算機(jī)系統(tǒng)基礎(chǔ)

有了之前程序設(shè)計(jì)的基礎(chǔ)后,想更加深入地把握計(jì)算機(jī)科學(xué)的脈絡(luò),不妨看看這本書:《深入理解計(jì)算機(jī)系統(tǒng)》 Computer Systems A Programmer's Perspective。這里點(diǎn)名批評(píng)這本書的中譯名,其實(shí)根本談不上什么深入啦,這本書只是 CMU的「計(jì)算機(jī)系統(tǒng)導(dǎo)論」的教材而已。CMU的計(jì)算機(jī)科學(xué)專業(yè)相對(duì)較偏軟件,該書就是從一個(gè)程序員的視角觀察計(jì)算機(jī)系統(tǒng),以「程序在計(jì)算機(jī)中如何執(zhí)行」為主線,全面闡述計(jì)算機(jī)系統(tǒng)內(nèi)部實(shí)現(xiàn)的諸多細(xì)節(jié)。

如果你看書覺得有些枯燥的話,可以跟一門 Coursera 上的 MOOC: The Hardware/Software Interface,這門課的內(nèi)容是 CSAPP 的一個(gè)子集,但是最經(jīng)典的實(shí)驗(yàn)部分都移植過來了。同時(shí),可以看看 The C Programming Language,回顧一下C語言的知識(shí)。

完成這本書后,你會(huì)具備堅(jiān)實(shí)的系統(tǒng)基礎(chǔ),也具有了學(xué)習(xí)操作系統(tǒng),編譯器,計(jì)算機(jī)網(wǎng)絡(luò)等內(nèi)容的先決條件。當(dāng)學(xué)習(xí)更高級(jí)的系統(tǒng)內(nèi)容時(shí),翻閱一下此書的相應(yīng)章節(jié),同時(shí)編程實(shí)現(xiàn)其中的例子,一定會(huì)對(duì)書本上的理論具有更加感性的認(rèn)識(shí),真正做到經(jīng)手的代碼,從上層設(shè)計(jì)到底層實(shí)現(xiàn)都了然于胸,并能在腦中回放數(shù)據(jù)在網(wǎng)絡(luò)->內(nèi)存->緩存->CPU的流向。

此外,也是時(shí)候去接觸 UNIX 哲學(xué)了: KISS - Keep it Simple, Stupid. 在實(shí)踐中,這意味著你要開始熟悉命令行界面,配置文件。并且在開發(fā)中逐漸脫離之前使用的IDE,學(xué)會(huì)使用Vim或Emacs(或者最好兩者都去嘗試)。

閱讀 《UNIX編程環(huán)境 》閱讀《UNIX編程藝術(shù) 》折騰你的 UN*X 系統(tǒng)

數(shù)據(jù)結(jié)構(gòu)與算法基礎(chǔ)

如今,很多人認(rèn)為編程(特別是做web開發(fā))的主要部分就是使用別人的代碼,能夠用清晰簡(jiǎn)明的方式表達(dá)自己的想法比掌握硬核的數(shù)學(xué)與算法技巧重要的多,數(shù)據(jù)結(jié)構(gòu)排序函數(shù)二分搜索這不都內(nèi)置了嗎?工作中永遠(yuǎn)用不到,學(xué)算法有啥用啊?這種扛著實(shí)用主義大旗的「碼農(nóng)」思想當(dāng)然不可取。沒有扎實(shí)的理論背景,遭遇瓶頸是遲早的事。

數(shù)據(jù)結(jié)構(gòu)和算法是配套的,入門階段你應(yīng)該掌握的主要內(nèi)容應(yīng)該是:這個(gè)問題用什么算法和數(shù)據(jù)結(jié)構(gòu)能更快解決。這就要求你對(duì)常見的數(shù)據(jù)結(jié)構(gòu)和算法了熟于心,你不一定要敲代碼,用紙手寫流程是更快的方式。對(duì)你不懂的數(shù)據(jù)結(jié)構(gòu)和算法,你要去搜它主要拿來干嘛的,使用場(chǎng)景是什么。

供你參考的學(xué)習(xí)資源:

《算法導(dǎo)論 》:有人說別把這本書當(dāng)入門書,這本書本來就不是入門書嘛,雖說書名是 Introduction to Algorithms,這只不過是因?yàn)樽髡卟幌氚堰@本書與其他書搞重名罷了。當(dāng)然,也不是沒辦法拿此書入門,讀第一遍的時(shí)候跳過習(xí)題和證明就行了嘛,如果還覺得心虛先看看這本《數(shù)據(jù)結(jié)構(gòu)與算法分析》Coursera Algorithms: Design and Analysis [Part 1] & [Part 2]: Stanford 開的算法課,不限定語言,兩個(gè)部分跟下來算法基礎(chǔ)基本就有了;英語沒過關(guān)的:麻省理工學(xué)院公開課:算法導(dǎo)論入門階段還要注意培養(yǎng)使用常規(guī)算法解決小規(guī)模問題的能力,結(jié)合前文的SICP部分可以讀讀這幾本書:《編程珠璣 》,《程序設(shè)計(jì)實(shí)踐 》

編程語言基礎(chǔ)

Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getting stuck in a rut. Additionally, learning many languages is far easier now, thanks to the wealth of freely available software on the Internet

- The Pragmatic Programmer

此外還要知道,學(xué)習(xí)第n門編程語言的難度是第(n-1)門的一半,所以盡量去嘗試不同的編程語言與編程范式,若你跟尋了前文的指引,你已經(jīng)接觸了:「干凈」的腳本語言 Python, 傳統(tǒng)的命令式語言 C, 以及浪漫的函數(shù)式語言 Scheme/Racket 三個(gè)好朋友。但僅僅是接觸遠(yuǎn)遠(yuǎn)不夠,你還需要不斷繼續(xù)加深與他們的友誼,并嘗試結(jié)交新朋友,美而雅的 Ruby 小姑娘,Hindley-Milner 語言家族的掌中寶 Haskell 都是不錯(cuò)的選擇。但有這么一位你躲不開的,必須得認(rèn)識(shí)的大伙伴 — C++,你得做好與他深交的準(zhǔn)備:

入門:C++ Primer[可選] 進(jìn)階:高效使用:Effective C++深入了解:《深度探索C++對(duì)象模型》;C++Templates研究反思:The Design and Evolution of C++ ;對(duì)于C++這個(gè) Necessary Evil ,看這本書可以讓你選擇是成為守夜人還是守日人。

現(xiàn)實(shí)是殘酷的,在軟件工程領(lǐng)域仍舊充斥著一些狂熱者,他們只掌握著一種編程語言,也只想掌握一種語言,他們認(rèn)為自己掌握的這門語言是最好的,其他異端都是傻X。這種人也不是無藥可救,有一種很簡(jiǎn)單的治療方法:讓他們寫一個(gè)編譯器。要想真正理解編程語言,你必須親自實(shí)現(xiàn)一個(gè)。現(xiàn)在是入門階段,不要求你去上一門編譯器課程,但要求你能至少實(shí)現(xiàn)一個(gè)簡(jiǎn)單的解釋器。

供你參考的學(xué)習(xí)資源:

《程序設(shè)計(jì)語言-實(shí)踐之路》:CMU編程語言原理的教材,程序語言入門書,現(xiàn)在就可以看,會(huì)極大擴(kuò)展你的眼界,拉開你與普通人的差距。Coursera 編程語言MOOC:課堂上你能接觸到極端FP(函數(shù)式)的SML,中性偏FP的Racket,以及極端OOP(面向?qū)ο螅┑腞uby,并學(xué)會(huì)問題的FP分解 vs OOP分解、ML的模式匹配、Lisp宏、不變性與可變性、解釋器的實(shí)現(xiàn)原理等,讓你在將來學(xué)習(xí)新語言時(shí)更加輕松并寫出更好的程序。Udacity CS262 Programming Language:熱熱身,教你寫一個(gè)簡(jiǎn)單的瀏覽器——其實(shí)就是一個(gè)javascript和html的解釋器,完成后的成品還是很有趣的;接下來,試著完成一個(gè)之前在SICP部分提到過的項(xiàng)目:用Python寫一個(gè) Scheme Interpreter

其他

編程入門階段比較容易忽視的幾點(diǎn):

學(xué)好英語:英語是你獲取高質(zhì)量學(xué)習(xí)資源的主要工具,但在入門階段,所看的那些翻譯書信息損耗也沒那么嚴(yán)重,以你自己情況權(quán)衡吧。此外英語的重要性更體現(xiàn)在溝通交流上,Linus Torvalds一個(gè)芬蘭人,一口流利的英語一直是他招募開發(fā)者為L(zhǎng)inux干活的的法寶,這是你的榜樣。學(xué)會(huì)提問:學(xué)習(xí)中肯定會(huì)遇到問題,首先應(yīng)該學(xué)會(huì)搜索引擎的「高級(jí)搜索」,當(dāng)單靠檢索無法解決問題時(shí),去Stack Overflow 或知乎 提問,提問前讀讀這篇文章:What have you tried?不要做一匹獨(dú)狼:嘗試搭建一個(gè)像這樣簡(jiǎn)單的個(gè)人網(wǎng)站,不要只是一個(gè)孤零零的About頁面,去學(xué)習(xí) Markdown 與 LaTeX,試著在Blog上記錄自己的想法,并訂閱自己喜歡的編程類博客。推薦幾個(gè)供你參考:Joel on Software,Peter Norvig, Coding Horror

小結(jié)

以上的內(nèi)容你不應(yīng)該感到懼怕,編程的入門不是幾個(gè)星期就能完成的小項(xiàng)目。期間你還會(huì)遇到無數(shù)的困難,當(dāng)你碰壁時(shí)試著嘗試「費(fèi)曼」技巧:將難點(diǎn)分而化之,切成小知識(shí)塊,再逐個(gè)對(duì)付,之后通過向別人清楚地解說來檢驗(yàn)自己是否真的理解。當(dāng)然,依舊會(huì)有你解決不了的問題,這時(shí)候不要強(qiáng)迫自己——很多時(shí)候當(dāng)你之后回過頭來再看這個(gè)問題時(shí),一切豁然開朗。

此外不要局限與上文提到的那些材料,還有一些值得在入門階段以及將來的提升階段反復(fù)閱讀的書籍。The Pragmatic Programmer 就是這樣一本程序員入門書,終極書。有人稱這本書為代碼小全:從DRY 到 KISS,從做人到做程序員,這本書教給了你一切,你所需的只是遵循書上的指導(dǎo)。

后記

如果你能設(shè)法完成以上的所有任務(wù),恭喜你,你已經(jīng)真正實(shí)現(xiàn)了編程入門。這意味著你在之后更深入的學(xué)習(xí)中,不會(huì)畏懼那些學(xué)習(xí)新語言的任務(wù),不會(huì)畏懼那些「復(fù)雜」的API,更不會(huì)畏懼學(xué)習(xí)具體的技術(shù),甚至感覺很容易。當(dāng)然,為了掌握這些東西你依舊需要大量的練習(xí),腰還是會(huì)疼,走路還是會(huì)費(fèi)勁,一口氣也上不了5樓。但我能保證你會(huì)在思想上有巨大的轉(zhuǎn)變,獲得極大的自信,看老師同學(xué)和 csdn 的眼光會(huì)變得非常微妙,雖然只是完成了編程入門,但已經(jīng)成為了程序員精神世界的高富帥。不,我說錯(cuò)了,即使是高富帥也不會(huì)有強(qiáng)力精神力,他也會(huì)懷疑自己,覺得自己沒錢就什么都不是了。但總之,你遵循指南好好看書,那就會(huì)體驗(yàn)「會(huì)當(dāng)凌絕頂」的感覺。

計(jì)算機(jī)編程這個(gè)專業(yè)怎么樣?

“世界上有10種人,懂二進(jìn)制的,和不懂的。”計(jì)算機(jī)編程是一門能夠非常有效鍛煉思維方式的學(xué)科。我把它理解為學(xué)習(xí)過程當(dāng)中的“磨刀”。所以我非常看好計(jì)算機(jī)編程這門學(xué)科。前提是將它作為一門副科。

我曾經(jīng)和計(jì)算機(jī)系的領(lǐng)導(dǎo)聊天時(shí)說起,最近幾年計(jì)算機(jī)專業(yè),尤其是編程,無論是兒童教育,還是培訓(xùn)班培訓(xùn)。都出現(xiàn)了較大的問題。什么什么內(nèi),什么什么鳥,什么什么CH,問題多多。但依然火爆。可見我們國(guó)人對(duì)編程的關(guān)注度是多么的高。

關(guān)注度再高,我認(rèn)為也無法掩蓋編程的兩個(gè)核心“算法”和“新技術(shù)”。算法這個(gè)東西真的很吃天賦,天賦不行,就是不行,雖然我現(xiàn)在從事教育行業(yè),但我依然時(shí)常關(guān)注計(jì)算機(jī)領(lǐng)域,經(jīng)常看的就是各種程序員抄襲的段子。天賦不行,總不能抄別人的抄一輩子吧。或者說你有“某一某”的運(yùn)氣,靠著名為二次開發(fā)實(shí)為改變量名的行為都能做大?其次,編程也是一個(gè)需要新技術(shù)的行業(yè),新技術(shù)推陳出現(xiàn),你必須隨時(shí)更新自己的技能庫(kù)。用最新的知識(shí)武裝自己。我都已經(jīng)不碰編程十多年了,這兩天還想去學(xué)學(xué)python呢。

作為一個(gè)專業(yè),如果需要很高的天賦以及很強(qiáng)的自學(xué)能力才能夠做好,那么我認(rèn)為這個(gè)專業(yè)是很不值得投入進(jìn)去的。哪怕它再有趣,再高薪。

以上就是關(guān)于電腦編程簡(jiǎn)單游戲視頻和零基礎(chǔ)該如何學(xué)習(xí)編程的相關(guān)問題解答,希望對(duì)你有所幫助。