轉載:http://www.cnblogs.com/bo083/archive/2012/03/25/2416627.html html
近來一直擔憂畢業須要寫論文的問題,基本都沒碰過編程的東西了。要寫論文才發現作研究真的很難,在此向奮鬥在科研一線的xdjm們致敬了!言歸正傳,論文剛有了一點思路就像放鬆一下,最近剛入了一個android手機就想試試android開發,因而花了將近半天時間搭好開發環境,寫了一個helloworld,就想找本書看看,下載了《android應用開發揭祕》,打包這本書的網友提到計算機基礎的重要性,推薦了http://bbs.theithome.com/read-htm-tid-123.html的帖子,可是網站已經上不去了,從別處搜來看了,以爲頗有道理,與你們共享一下。linux
我始終認爲,對一個初學者來講,IT界的技術風潮是不能夠追趕的,並且也沒有能力去追趕。 我時常看見本身的DDMM們把課本扔了,去賣些價格不菲的諸如C#, VB.Net 這樣的大部頭,這讓我感到很是痛心。而許多搞不清指針是咋回事的BBS站友眉飛色舞的討論C#裏面能夠不用指針等等則讓我以爲可笑。C#就象當年的ASP 同樣,「忽如一晚上春風來,千樹萬樹梨花開」,結果許多學校的信息學院成了「Web 學院」96,97級的很多大學生都去作Web 了。固然我沒有任何歧視某一行業的意識。我只是以爲若是他們把追趕這些時髦技術的時間多花一點在基礎的課程上應該是能夠走得更遠的.
幾個誤區
初學者對C#風潮的追趕其實也只是學習過程當中常常遇到的幾個誤區之一。我將用一些實際的例子來講明這些現象,你能夠循序漸進的看看本身是否是屬於其中的一種或者 幾種:
認爲計算機技術等於編程技術:
有些人即便沒有這個想法,在潛意識中也有這樣的衝動。讓我奇怪的是,許多信息學院的學生也有這樣的念頭。認爲計算機專業就是編程專業,與編程無關的,或者不太相 關的課程他通通都無論,極端的學生只要書上沒帶「編程」兩個字他就不看。
其 實編程只是計算機技術應用過程當中一種複雜性最低的勞動,這就是爲何IT業最底層的人是程序員(CODER)。計算機技術包括了多媒體,計算機網絡,人工 智能 ,模式識別,管理信息系統等等這些方面。編程工做只是在這些具體技術在理論研究或者工程實踐的過程當中表達算法的過程。編程的人不必定對計算機技術的瞭解就 必定很 高。而一個有趣的現象是,很多大師級的計算機技術研究者是不懂編程的。網上的炒做和現實中良好的工做待遇把編程這種勞動神祕化了。其實每個程序員內心都 明白, 本身這些東西,學的時候並不比其它專業難,因此天然也不會高檔到哪裏去。
咬文嚼字的孔已己做風:
我見過一本女生 的《計算機網絡原理》教材,這個女生像小學生同樣在書上劃滿了橫槓槓,筆記作得滿滿的,打印出來必定比教材還厚。我不明白的是,像計算機網絡原理 這樣的課程有必要作筆記?咱們的應試教育的確害了很多學生,在上《原理》這一類課程的時候許多學生像學《馬列原理》同樣逐字背誦記憶。這乃是我見過的最愚 蠢的行 爲。所謂《原理》,便是須要掌握它爲何這樣作,學習why,而不是how(怎樣作)。極端認真的學生背下以太網的網線最大長度,數據幀的長度,每一個字段 的意義 ,IP報頭的格式等等,可是忘了路由的原則,忘了TCP/IP協議設計的宗旨。總之許多人花了大量的時間把書背得倒背如流卻等於什麼也沒學。
在 學習編程的時候這些學生也是這樣,他們確切的記得C++語法的各個細節。看完了C++教程後看《Thinking in C++》(確實是好書),《Inside C++》,《C++ reference》,this C++, that C++……,而後是網上各類各樣的關於C++語法的奇聞逸事,而後發現本身又忘了C++的一些語法,最後回頭繼續惡補…。有個師弟就跟我說:「C++ 太難了,學了這裏忘了那裏,學了繼承忘了模板。」 個人回答道:「你不去學就容易了」。我並無教壞他,只是告訴他,死摳C++的語法就和孔已己炫耀茴香豆的茴字有幾種寫法同樣毫無心義。你根本不須要對的 C++ 語法太關心,動手編程就是了,有不記得的地方一查MSDN就立馬搞定。我有個結論就是,實際的開發過程當中對程序語法的瞭解是最微不足道的知識。這是爲何 我在爲 同窗用Basic(我之前從沒有學過它)寫一個小程序的時候,只花了半個小時看了看語法,而後再用半個小時完成了程序,而一個小時後我又徹底忘記了 Basic 的全部關鍵字。
不顧基礎,盲目追趕時髦技術:
終於點到題目上來了。大多數的人都但願本身的東西可以立刻跑起來,變成錢。這種 想法對一個已經進入職業領域的程序員或者項目經理來講是合理的,並且IT技術進步 是如此的快,不跟進就是失業。可是對於初學者來講(尤爲是時間充裕的大中專在校生),這種想法是另人費解的。一個並未進入到行業競爭中來的初學者最大的資 本即是 他有足夠的時間沉下心來學習基礎性的東西,學習why 而不是how。時髦的技術每每容易掌握,並且愈來愈容易掌握,這是商業利益的驅使,爲了最大化的下降軟件開發的成本。但在IT領域內的現實就是這樣,越容 易掌握的東西,學習的人越多 ,並且淘汰得越快。每一次新的技術出來,都有許多初學者跟進,這些初學者因爲缺少必要的基礎而使得本身在跟進的過程當中花費大量的時間,而等他學會了,這種 技術也 快淘汰了。基礎的課程,比方數據結構,操做系統原理等等雖然不能讓你立馬就實現一個linux(這是許多人嘲笑理論課程無用的緣由),但它們可以顯著的減 少你在 學習新技術時學習曲線的坡度。並且對於許多關鍵的技術(比方Win32 SDK 程序的設計,DDK的編程)來講甚至是不可或缺的。
一個活生生的例子
我和個人一個同窗,在大一時我還找不到開機按紐,他已經會寫些簡單的彙編程序了。我把大二的全部時間花在了彙編,計算機體系結構,數據結構, 操做系統原理等等這些課程的學習上,而他則開始學習HTML和VB,並追趕ASP的潮流。大三的時候我開始學習Windows 操做系統原理,學習SDK編程,時間是漫長的,這時我纔可以用VC開發出象模象樣的應用程序。我曾一度由於同窗的程序已經可以運行而本身還在學習如何建立 對話框而懊惱不已,但臨到畢業才發現本身的選擇是何等的正確。和我談判的公司開出的 薪水是他的兩倍還多。下面有一個不很恰當的比方:假設學習VB編程須要4個月,學習基礎課程和VC的程序設計須要1年。那麼若是你先學VB,再來學習後 者,時間不會減小,仍是1年,而反過來,若是先學習後者,再來學VB,也許你只須要1個 星期就能學得很是熟練。
幾個重要的基礎課程
若是你是學生,或者若是你有充足的時間。我建議你仔細的掌握下面的知識。個人建議是針對那些但願在IT技術上有所成就的初學者。同時我還列出了一些書目,這些書 應該都還能夠在書店買到。說實在的,我在讀其餘人的文章時最大的心願就是但願做者列出一個書單。
大學英語-不要以爲可笑。我極力推薦這門課程是由於沒有專業文檔的閱讀能力是不可想象的。中文的翻譯每每在猴年馬月纔會出來,而如今的許多出版社乾脆就直接 把E 文印刷上去。學習的方法是強迫本身看原版的教材,開始會看不懂,用多了天然熟練。吃得苦下得狠心絕對是任何行業都須要的品質。
計算機體系結構和彙編語言-關於體系結構的書遍地都是,並且也大同小異,卻是彙編有一本很是好的書《80x86彙編語言程序設計教程》(清華大學出版社,黑色封面,楊季文著)。你須要着重學習386後保護模式的程序設計。不然你在學習現代操做系統底層的一些東西的時候會以爲是在看天書。
計算機操做系統原理-咱們的開發老是在特定的操做系統上進行,若是不是,只有一種可能:你在本身實現一個操做系統。不管如何,操做系統原理是必讀的。這就象我 們 爲一個芯片製做外圍設備時,芯片基本的工做時序是必需瞭解的。這一類書也不少,我沒有發現哪一本書很是出衆。只是以爲在看完了這些書後若是有空就應該看看 《In side Windows 2000》(微軟出版社,我看的是E文版的,中文的書名想必是Windows 2000 技術內幕之類吧)。關於學習它的必要性,ZDNET上的另外一篇文章已經有過論述。
數據結構和算法-這門課程可以決定一我的程序設計水平的 高低,是一門核心課程。我首選的是清華版的(朱戰立,劉天時)。不少人喜歡買C++版的,但我以爲沒有必 要。C++的語法讓算法實現過程變得複雜多了,並且許多老師喜歡用模塊這一東西讓算法變得更復雜。卻是在學完了C版的書之後再來瀏覽一下C++的版的書是 最好的 。
軟件工程-這門課程是越到後來就愈加現它的重要,雖然剛開始看時就象看馬哲同樣不知所云。個人建議是看《實用軟件工程》(黃色,清華)。不要花太多的時間去記條 條框框,看不懂就跳過去。在每次本身完成了一個軟件設計任務(無論是練習仍是工做)之後再來回顧回顧,每次都會有收穫。
Windows 程序設計-《北京大學出版社,Petzold著》我建議任何企圖設計Windows 程序的人在學習VC之前仔細的學完它。並且前面的那本《Inside Windows 2000》也最好放到這本書的後面讀。在這本書中, 沒有C++,沒有GUI,沒有控件。有的就是如何用原始的C語言來完成Windows 程序設計。在學完了它之後,你纔會發現VC實際上是很容易學的。千萬不要在沒有看完這本書之前提早學習VC,你最好碰都不要碰。我知道的許多名校甚至都已經 用它做 爲教材進行授課。可見其重要。
上面的幾門課程我認爲是必學的重要課程(若是你想作Windows 程序員)。
對 於其它的課程有這樣簡單的選擇方法:若是你是計算機系的,請學好你全部的專業基礎課。若是不是,請參照計算機系的課程表。若是你發現本身看一本書時沒法看 下去了,請翻到書的最後,看看它的參考文獻,找到它們並學習它們,再回頭看這本書。若是一本書的書名中帶有「原理」兩個字,你必定不要去記憶它其中的細 節,你應該以一天至少50頁的速度掌握其要領。儘量多的在計算機上實踐一種理論或者算法。
你還能夠在CSDN上閱讀到許多書評。這些書評可以幫助你決定讀什麼樣的書。
日三省乎己
每 天讀的書太多,容易讓人迷失方向。必定要在天天晚上想一想本身學了些什麼,還有些什麼相關的東西須要掌握,本身對什麼最感興趣,在一本書上花的時間太長仍是 不夠等等。同時也應該多想一想將來最有可能出現的應用,這樣可以讓你不是追趕技術潮流而是引領技術潮流。同時,努力使用如今已經掌握的技術和理論去製做具備 必定新意的東西。堅持這樣作可以讓你真正成爲一個軟件「研發者」而不只僅是一個CODER。
把最多的時間花在學習上
這是 對初學者最後的忠告。把每一個星期玩CS或者CS的時間壓縮到最少,不玩它們是最好的。同時,若是你的ASP技術已經可以來錢,甚至有公司請你兼職的話,這 就證實你的天分可以保證你在努力的學習以後取得更好的收益,你應該去作更復雜的東西。眼光放長遠一些,這不管是對誰都是適用的。
相信你已經可以決定是否學習C#或者何時去學它了。android