• <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

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

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

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

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

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

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

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


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

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

                好了,那么如何培養興趣呢?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            推薦一個博客:http://blog.csdn.net/fudan_abc/
            你們寫的文章讀起來都挺舒服。fudan_abc的行文多了幾分詼諧幽默。  回復  更多評論
              
            # re: 如何學習編程(一) 2009-04-04 05:13 | Sworddance
            又一次來師兄這里拜讀這篇文章。現在正困擾在學習GDI+當中~~~  回復  更多評論
              
            中文精品久久久久人妻| 久久综合久久久| 国产精品久久婷婷六月丁香| 久久婷婷五月综合成人D啪| 久久夜色精品国产噜噜亚洲a| 久久精品免费一区二区| 久久国产精品99精品国产| 国产成人无码精品久久久久免费| 伊人久久大香线蕉精品不卡| 乱亲女H秽乱长久久久| 久久天天躁狠狠躁夜夜av浪潮 | 亚洲国产成人久久精品影视| 久久无码人妻精品一区二区三区 | 无码任你躁久久久久久久| 亚洲精品国产字幕久久不卡| 91精品国产91久久久久久| 天天躁日日躁狠狠久久| 色综合久久88色综合天天 | 精品综合久久久久久97超人| 久久中文字幕人妻丝袜| 久久久久这里只有精品| 久久伊人精品青青草原高清| 中文精品久久久久人妻不卡| 亚洲七七久久精品中文国产| 久久精品国产精品亚洲艾草网美妙| 久久久久AV综合网成人| 亚洲狠狠婷婷综合久久蜜芽| 2021国产精品午夜久久| 午夜精品久久久内射近拍高清 | 久久99精品久久久大学生| 久久久久国产一区二区| 久久99精品免费一区二区| 久久久中文字幕| 99精品久久久久久久婷婷| 日本久久久久久中文字幕| 国产精品久久久久久福利漫画| 亚洲精品tv久久久久久久久| 伊人久久大香线蕉综合影院首页| 欧美精品九九99久久在观看| 久久中文字幕人妻熟av女| 久久国产色av免费看|