• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-341  評論-2670  文章-0  trackbacks-0

                終于還是要寫這種文章了。期末考試將至,寫大程序沒時間,寫小程序沒動力,只要演變成寫文章了。之前的兩篇字符串處理寫完了仍然不過癮,打算繼續(xù)寫關(guān)于遞歸下降法和LALR的事。后來想想還是暫時寫寫關(guān)于如何學(xué)習(xí)編程的好,畢竟這個問題對大家來說更加有益。

                本篇將是一個系列,重點講述在外力很少的情況下如何自學(xué)編程,以及需要注意的一些地方。

                一般來說,一些所謂的『高手』或者老師會告訴人們算法是非常非常重要以至于會不會算法就是你會不會編程的唯一標準。不過事實上并非如此。掌握算法固然是好,只是大部分程序并不需要高深的算法,而且招人的時候僅僅要求會算法的公司也是很少的(而且很難進)。我并不是學(xué)院派的人,所以雖然我本人也推崇學(xué)習(xí)算法,但并不推崇一開始就學(xué)習(xí)算法。

                剛開始學(xué)編程的人總是不知道自己應(yīng)該從哪里入手。實際上這是一個相當重要的問題。在我看來,學(xué)好變成有若干條件:
                ·興趣
                ·數(shù)學(xué)/英語
                ·財力

                首先談一談興趣。那些為了生計而尋找捷徑學(xué)習(xí)編程的人并不在本篇的考慮范圍之內(nèi),這些人我通常是不管的。興趣是非常重要的一個條件,但是興趣也是可以培養(yǎng)的。對編程的濃厚興趣可以讓自己自發(fā)地尋找各種各樣的書籍、發(fā)現(xiàn)自己知識結(jié)構(gòu)上的弱點、跟同行有效地進行交流等等。那些沒有興趣的人遇到了一個問題只會上論壇或者QQ群上要代碼(而且多數(shù)脾氣暴躁)。

                數(shù)學(xué)和英語在一開始并沒有什么影響,但是在你學(xué)有所成之后,開始接觸復(fù)雜的內(nèi)容的時候,數(shù)學(xué)能力就開始起作用了。很多計算機論文都是使用數(shù)學(xué)語言寫的,對數(shù)學(xué)沒有熱情或者不夠敏感的人將會很難跨過這個門檻學(xué)習(xí)一些書本上沒有的東西。英語同樣也是重要的,因為并不是所有的文章或書籍都會翻譯成中文,或者及時翻譯成中文。

                財力并不是重點,不過至少在養(yǎng)活自己的同時要有閑散資金來不停地支付網(wǎng)絡(luò)費用、書籍、電腦、外圍設(shè)備等必須物品。


                至于知識結(jié)構(gòu)方面我個人的見解可能跟流行的觀點有所出入。目前人們總是把知識結(jié)構(gòu)比喻為一個金字塔,最下面是基礎(chǔ),上面一層一層更加深入而且更加專業(yè)的知識,最上是領(lǐng)域知識。老師們會說要學(xué)好基礎(chǔ),首先學(xué)好語言和算法,然后慢慢往上走。我自己并不這么認為。個人認為『從左到右』的學(xué)習(xí)方法是更加有效而且不會錯過什么東西的,只是不能速成。

                從左到右是什么意思呢?想象一個金字塔,最左邊仍然是最底層的【基礎(chǔ)】,再往左就涉及到更多的【基礎(chǔ)】以及更多的上層內(nèi)容了。這樣一步一步下去就會有【基礎(chǔ)】--【上層】--【基礎(chǔ)】--【上層】這樣的不斷循環(huán)。這么做的好處是成果快,能夠培養(yǎng)起興趣和成就感,而且基礎(chǔ)隨著應(yīng)用的需要慢慢積累,等到學(xué)有所成的時候,基礎(chǔ)也覆蓋完了,上層的東西也看得差不多了,就可以超越金字塔自己翱翔了。

                好了,那么如何培養(yǎng)興趣呢?

                人總是對有趣的東西比較感興趣的,而且這種東西如果不難入門的話,那么接受起來更加容易,跟容易培養(yǎng)成就感,也就更有興趣了。根據(jù)實際情況,個人推薦剛開始接觸的時候應(yīng)該學(xué)習(xí)C#,理由如下:

                ·C#的書籍非常多,語言內(nèi)核簡單易懂,類庫豐富
                ·C#制作界面簡單
                ·C#屏蔽了有關(guān)操作系統(tǒng)和底層的大部分事情,可以讓學(xué)習(xí)的人專注于自己感興趣的內(nèi)容

                如果不是特別著急的話,一開始就對著C/C++的數(shù)組啊指針啊什么亂七八糟的東西我覺得沒什么必要,反正將來自然就知道了。我在這里推薦C#的另一個重要原因是Microsoft Visual Studio .NET的C#編輯器有一個無敵美好的提示列表(按了一個“.”之后彈出來的),這對于初學(xué)者來說是相當好的一個工具。

                一開始學(xué)習(xí)C#的時候應(yīng)該首先掌握基本的少量語法,也就是說掌握條件語句、分支語句、函數(shù)聲明以及數(shù)組,外加少量庫的運用以及計算上的知識。然后開始學(xué)習(xí)制作界面,最后學(xué)GDI+。

                學(xué)習(xí)GDI+是有很多好處的。不過在學(xué)習(xí)之前應(yīng)該找本相關(guān)的書來看。GDI+有一些比較高級的功能如半透明效果和畫刷等等,容易組合出一些非常漂亮的圖形來。學(xué)會GDI+的基本操作之后,就可以慢慢接觸一些圖形濾鏡、分形、三維的內(nèi)容了。使用平面工具繪制簡單的三維圖形是一件非常有意思的事情,而且非常鍛煉數(shù)學(xué)能力,所得到的效果也是『令人震撼』的。

                隨后應(yīng)該學(xué)習(xí)字符串處理。典型的字符串處理有分析INI文件、對一個四則運算式子進行操作等等的內(nèi)容。雖然C#處理器字符串出來比C++稍微蹩腳一點,不過在這個時候忽略這個問題是相當有用的,至少不用陷入無窮的指針漩渦里面去。

                等圖形和字符串都少有涉獵之后,就可以開始開發(fā)有趣的程序了。譬如用C#些動畫、開發(fā)畫函數(shù)圖的工具、自己設(shè)計一種高度簡化的HTML然后進行渲染制作自己的幫助程序、或者開發(fā)簡單的圖像處理軟件之類。稍微聰明一點的人,如果每天都有機會寫很多代碼的話,大概半年到一年就可以走到這里了。

                為什么我會選擇圖形和字符串兩種東西呢?為了培養(yǎng)興趣,首先要有成就感。圖形跟字符串都是跟操作系統(tǒng)本身沒關(guān)系的東西,而且操作起來也沒什么注意事項,因此入門比較簡單。如果漸漸深入的話會激發(fā)起學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)、算法、甚至是數(shù)學(xué)英語的熱情。如果可以使用這條主線貫穿整個編程的初級階段的話,得到的將會是扎實的基礎(chǔ)以及靈活的頭腦。

                好了,今天就先說到這里。下次再寫續(xù)篇。在此解答一下大家有可能提出來的疑問。

                ·數(shù)據(jù)庫和網(wǎng)絡(luò)都很熱門,要不要學(xué)呢?
                --這兩門技術(shù)掌握了也是很好的一件事情,而且作為入門的話也未嘗不可。只是如果一開始就往數(shù)據(jù)庫和網(wǎng)絡(luò)的路走的話,將來可能會錯過一些學(xué)習(xí)操作系統(tǒng)底層以及復(fù)雜的算法的機會,因為這兩種東西不會讓你有學(xué)習(xí)大部分有深度的知識的動力。

                ·算法為什么不一開始學(xué)習(xí)呢?
                --學(xué)會了算法,但是沒有有趣問題給你解決的話,那學(xué)來干什么?而且學(xué)習(xí)算法的最終目的是讓自己擁有設(shè)計算法的能力,很多人都忽略了這一點。

                ·學(xué)會了GDI+和字符串之后能不能找工作呢?
                --不能。做人切勿急躁,學(xué)編程沒有個三五年還是不要把自己看得太厲害的好。

                ·接下來應(yīng)該學(xué)習(xí)什么樣的東西呢?
                --請等待下一篇文章。
            posted on 2008-06-06 18:29 陳梓瀚(vczh) 閱讀(14449) 評論(33)  編輯 收藏 引用 所屬分類: 啟示

            評論:
            # re: 如何學(xué)習(xí)編程(一) 2008-06-06 18:58 | haskell
            我以為學(xué)編程最好的方法是一切用程序?qū)崿F(xiàn)。
            比如學(xué)數(shù)學(xué)做個計算器。
            學(xué)物理做個碰撞檢測。
            日常操作太麻煩,寫個批處理。
            文件排版太難看,寫個程序格式化一下。
            凡是理論上能寫的都自己寫,絕不用其他工具。
              回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-06 19:07 | ll
            全文就一句有用處的話:“學(xué)編程沒有個三五年還是不要把自己看得太厲害的好”。我改一下,沒有實際的寫個3,5年系統(tǒng)還是不要把自己看得太厲害的好,當然寫個3,5年,會更惶恐,不敢說自己厲害。  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-06 19:55 | sfsd
            盡是瞎扯的  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-06 20:05 | 陳梓瀚(vczh)
            不同意見者麻煩給出理由,不要像樓上那樣扔下一句話就走。  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一)[未登錄] 2008-06-06 20:30 | ngaut
            謝謝你寫的文章,一定會給大家?guī)硪恍椭覍﹃P(guān)于遞歸下降法和LALR的事比較感興趣,關(guān)于c#作為初學(xué)語言,個人覺得不是很合適,還是c比較好,自己無意中就學(xué)會了一些數(shù)據(jù)結(jié)構(gòu),呵呵  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-06 20:33 | Don
            我感覺,興趣真是沒有那么大作用.
            關(guān)鍵在興趣要持久.大多數(shù)人都是振顫幾下就不行了.
            初學(xué)CG的時候,那里面用到的數(shù)學(xué)能把人的興趣一下擼到底.  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-06 20:43 | fengmin
            呵呵,不錯哈  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-06 21:04 | Tyeah
            編了近十年,感覺沒必要編程,發(fā)散自己的思維,拓寬自己的眼界,分析身邊的事物,然后提取數(shù)學(xué)模型,至于怎么編,OEM好了~  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-06 21:11 | Tyeah
            數(shù)據(jù)結(jié)構(gòu)還是要了解的,一個好的數(shù)據(jù)結(jié)構(gòu)是一個好算法的基礎(chǔ),要知道微軟的這些操作系統(tǒng)的核心是win32 api,.net framework只不過是他的封裝而已,為的是降低企業(yè)級開發(fā)的成本,效率自然大打折扣,試想為了屏蔽平臺差異性,要做多少與程序無關(guān)的工作,效率自然會受到影響。
            LINQ的效率要比SQL的效率低3%-5%,就這么一個簡單的字符串分析轉(zhuǎn)換都會有那么大的影響,所以,建議在學(xué)習(xí)編程之前考慮一下自己要做研發(fā)還是開發(fā)~
            是否有魄力嘗試顛覆經(jīng)典~  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-06 21:11 | 陳梓瀚(vczh)
            去年教過一個學(xué)生,就是從C++開始的,真是不堪回首啊……雖然后來想盡辦法把那個人教上了正道,不過雙方花的精力都非常多。還是先用C#練好了思維,然后轉(zhuǎn)過去,這樣輕松一點,而且也不會少了什么,還能開闊一下眼界。  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-06 21:14 | 陳梓瀚(vczh)
            研發(fā)的人少,路子當然不同。不過什么都不會的情況下,這種決定也是很難做出來的。所以還是權(quán)當自己開發(fā)算了。

            不過我自己的確是從CG開始的,剛開始的時候用不了多少數(shù)學(xué)的,2D無非就是寫個矩陣轉(zhuǎn)轉(zhuǎn)罷了。可以當技術(shù)看待。  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-06 21:15 | 陳梓瀚(vczh)
            至于評論一樓的haskell先生說的話,大部分還是贊同的。寫程序需要鍛煉,而且在鍛煉的同時可以解決問題的話那相當?shù)暮谩K栽煸燔囕喴矡o妨,只要不陷進去就行了。  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-06 21:38 | Tyeah
            @陳梓瀚(vczh)
            程序是人,但人不是程序,他只不過是將我們所生活的這個無限維的非線性的空間線性表示了,但誰都知道,只能近似~  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-06 21:39 | 陳梓瀚(vczh)
            這似乎跟主題無關(guān)……  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-06 21:55 | Gohan
            完全贊同你的觀點,不過學(xué)習(xí)編程可能還需要不斷的想和練,這方面我特懶。
            以后會一直向你學(xué)習(xí)了~  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-07 02:57 | 空明流轉(zhuǎn)
            剛剛無聊,用C#做了一個2D的骨骼動畫的例子。。。  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-08 08:17 | abc
            實用,好文章!  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-08 18:09 | kaja
            呵呵,向你學(xué)習(xí)。。。  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-09 00:56 | 星雨茫茫
            頂一下哦 呵呵 我是從C++開始的 搞了好長時間只知道源程序 也不知道怎么搞界面之類的 弄的自己迷迷糊糊的 還以為學(xué)編程就是源程序的呢   回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-09 03:40 | 陳梓瀚(vczh)
            所以這樣會很郁悶滴  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-09 05:18 | Kven
            我同意你的說法,因為我也不是學(xué)院派的人。
            我真的沒有認真學(xué)過C#,起初我就因為貪玩買下了一本C++的書,
            就開始我的編程生涯了。我有一些經(jīng)歷,我現(xiàn)在開始有野心想學(xué)多點語言,
            可是目前我雖然明白完C++的東西,可是我還沒編程到一個我滿意的程式。
            我想知就是為什么我到現(xiàn)在還對編程那么有興趣的原因吧!
            對了,外加一題:不要因為會一點點而驕傲。  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-09 09:29 | 陳梓瀚(vczh)
            驕傲沒關(guān)系,自滿就不行了。事實上是這樣。

            光C++還是能做出很多漂亮的東西的。只是開發(fā)應(yīng)用程序的時候會很煩。一直做庫也不是辦法,做久也會煩的。如何不煩呢,只好交替做了。

            對著字符串對久了,還是想再做做圖形。畢竟是老本行啊,看完了圖形學(xué)的幾本書之后由于某個契機就跑去做編譯器和虛擬機了,心里還是有點不爽。找個機會把那些東西都實踐一次。  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-09 20:31 | jx
            不錯啊,差不多跟你想的一樣。不過用java入門也一樣,嘿嘿。

            還有,學(xué)東西貪心真的很麻煩啊,什么都想做,時間又不夠。都是興趣惹的禍。

            btw,我說你干嗎把博客遷到這來,這樣的地方只會時常無緣無故惹來一堆唾沫,原來的地方多清靜。  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-09 22:41 | 愛好編程
            我覺得整個系列文章的每一部分加一個小主題比較好
            比如 本文 如何學(xué)習(xí)編程(一):自學(xué)編程  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-10 03:38 | 陳梓瀚(vczh)
            根據(jù)計劃這個系列都是說的自學(xué),因為下一篇要從這個基礎(chǔ)上繼續(xù)往下講。  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-10 04:42 | Kven
            我期待著!  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-10 22:55 | 陳梓瀚(vczh)
            @jx
            我不畏懼泡沫,我也不畏懼反對的聲音。
            反對的聲音是歡迎的,泡沫則是渣,無視之。  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-12 01:10 | 求.
            樓主全是在扯淡,別人聽了你的話會上當不淺,還是等樓主畢業(yè)后再說這些事吧  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-12 02:19 | 陳梓瀚(vczh)
            還是一樣,我希望聽到有反對的聲音,但是這個聲音是要有理由的。舉個例子吧,你可以說“不好”,但我想聽到“為什么不好”,我不想只看到“不好”。  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-16 18:04 | RichardHe
            你去了網(wǎng)龍嗎???  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-06-16 18:31 | 陳梓瀚(vczh)
            沒有  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2008-08-01 23:17 | sinodragon21
            為人不識陳梓瀚,不識程序員也枉然。
            呵呵。不錯,后生可畏。
            大多數(shù)大學(xué)生都中規(guī)中距的接受完大學(xué)教育,這是一種變相的偷懶。被動的課堂教育之外缺乏積極主動的探索。像Mr.陳這么獨辟蹊徑、大學(xué)期間便能有所作為的大學(xué)生真是如數(shù)家珍。

            推薦一個博客:http://blog.csdn.net/fudan_abc/
            你們寫的文章讀起來都挺舒服。fudan_abc的行文多了幾分詼諧幽默。  回復(fù)  更多評論
              
            # re: 如何學(xué)習(xí)編程(一) 2009-04-04 05:13 | Sworddance
            又一次來師兄這里拜讀這篇文章。現(xiàn)在正困擾在學(xué)習(xí)GDI+當中~~~  回復(fù)  更多評論
              
            久久国产色AV免费看| 久久99这里只有精品国产| 亚洲精品国产美女久久久 | 99久久精品国内| 成人免费网站久久久| 国产精品欧美久久久久无广告 | 亚洲精品NV久久久久久久久久 | 少妇被又大又粗又爽毛片久久黑人| 久久九色综合九色99伊人| 久久婷婷五月综合色奶水99啪| 久久综合亚洲欧美成人| 国产伊人久久| 国内精品久久久久影院日本| 91精品无码久久久久久五月天| 精品国产乱码久久久久久人妻| 国产成人久久精品二区三区| 一级女性全黄久久生活片免费| 97精品伊人久久大香线蕉app| 欧美粉嫩小泬久久久久久久 | 一级女性全黄久久生活片免费 | 久久精品国产亚洲精品| 欧美午夜精品久久久久免费视| 久久精品国产亚洲精品| 国产成人综合久久综合 | 久久精品国产只有精品2020| 亚洲国产精品无码久久久久久曰| 狠狠色丁香久久综合婷婷| 久久精品国产免费观看| 亚洲精品成人久久久| 久久精品这里只有精99品| 久久电影网一区| 国产精品久久久久9999高清| 97香蕉久久夜色精品国产| 精品欧美一区二区三区久久久| 国产99久久精品一区二区| AV无码久久久久不卡网站下载| 亚洲精品乱码久久久久久蜜桃不卡| 亚洲国产日韩欧美久久| 久久有码中文字幕| 久久久精品无码专区不卡| 久久国产成人精品国产成人亚洲|