學習編程有幾年了,感受走了很多彎路,而很多的學弟學妹又在重蹈我當初的覆轍,難免有些痛心。最近在網
上也看了許多前輩們的經驗建議,再結合本身的學習經歷在這裏談談基礎的重要性,但願幫助你們少走些彎
路。
什麼是基礎呢?就是要把咱們大學所學的離散數學,算法與數據結構,操做系統,計算機體系結構,編譯原理
等課程學好,對計算機的體系,CPU自己,操做系統內核,系統平臺,面向對象編程,程序的性能等要有深層次的掌握。
初學者可能體會不到這些基礎的重要性,學習jsp,donet,mfc,vb的朋友甚至會對這些嗤之以鼻,可是一開始沒學
好基礎就去學jsp或donet會產生很壞的影響,並且陷入其中不能自拔。
我上大二的時候還對編程沒什麼概念,就上了門C++也不知道能幹什麼,老師說MFC也不知道是什麼東西,
看別的同窗在學asp.net就跟着學了,而後就瞭解到.net,j2ee,php是什麼了,就以爲軟件開發就是用這些了,而上
的那些專業課又與咱們學的sqlserver啊,css啊,ajax啊,毫無關係,就感慨啊,還不如回家自學去就爲一個文憑嗎?
還不如去培訓,浪費這麼多錢.因而每天基本上沒去上什麼課,每天就在作網站,幾個學期就作了三個網站。感受作
這些網站就是學到些技巧,沒什麼進步,這些技巧就比如別人的名字,告訴你你就知道了,網上也均可以搜到。那時
候就以爲把.net學好就好了,搞j2ee的比較難,搞api編程就別想了,操做系統更是可望不可即了。後來隨着學習
的深刻和看了網上許多前輩們的建議纔對這些基礎的重要性有所體會。
雖然.net或java的開發並不直接用到彙編,操做系統這些,可是不掌握這些基礎是有很大問題的,由於你只知
其然不知其全部然,在mfc和.net裏面控件一拖什麼都作好了,很方便,可是出了問題可能就解決不了,有些在
網上搜都搜不到。這就是基礎沒打好,不知道它的原理就不知道出錯的緣由。在學.net的時候常會討論那些控件
該不應用別人說盡可能別用也不知道爲何?不讓用是由於你在高層開發,你不知道它的原理出錯了你可能解決不
了,但實際上是應該用的,否則人家開發它幹嗎,但要在瞭解它的原理後去用就會很方便。
要編寫出優秀的代碼一樣要紮實的基礎,若是數據結構和算法學的很差,怎麼對程序的性能進行優化,怎樣
從類庫中選擇合適的數據結構。若是不瞭解操做系統,怎樣能瞭解這些開發工具的原理,它們都是基於操做系統
的。不瞭解彙編,編譯原理,怎麼知道程序運行時要多長時間要多少內存,就不能編出高效的代碼。
若是沒有學好基礎一開始就去學.net,java這些越日後就會以爲越吃力,它們涉及的技術太多了,並且不但
在更新,對於三層啊,mvc,orm這些架構,你只會用也不明白爲何用,就感受內心虛,感受沒學好。而你把
面向對象,軟件工程,設計模式這些基礎學好了再去看這些就能夠一不變應萬變。
你們不要被新名詞、新技術所迷惑.NET、XML等等技術當然誘人,但是若是本身的基礎不紮實,就像是在
雲裏霧裏行走同樣,只能看到眼前,不能看到更遠的地方。這些新鮮的技術掩蓋了許多底層的原理,要想真正
的學習技術仍是走下雲端,紮紮實實的把基礎知識學好,有了這些基礎,要掌握那些新技術也就很容易了。
開始編程應該先學C/C++,系統api編程,由於它們更接近底層,學習他們更能搞清楚原理。學好了c/C++
編程和基礎,再去學習mfc,.net這些就會比較輕鬆,並且很踏實。假設學習VB編程須要4個月,學習基礎課程和
VC的程序設計須要1年。那麼若是你先學VB,再來學習後者,時間不會減小,仍是1年,而反過來,若是先學習
後者,再來學VB,也許你只須要1個星期就能學得很是熟練。 php
教的表面看來是馬步衝權實則都是內功心法,郭靖拜師洪七以後開始練習降龍十八掌憑藉的就是這深厚的內
功,吞食蝮蛇寶血又加上練習了周博通傳授的九陰真經和外加功夫雙手互博技以後,終於練就行走江湖的武
功,因而可知馬玉道長傳授給了郭靖的是最基礎的,也是最重要的觀念,編程也比如蓋高樓,根基沒打好遲早有
一天會挎掉的,並且蓋得越高,損失也越慘重。這些底層知識和課本不是沒有用也不是高深的不能學,而是我
們必須掌握的基礎。
這些是我的的愚見,說的不是很清楚,你們能夠看看這些前輩們的經驗,相信看完後你們必定會有所體會
說了這麼多無非是想告誡你們要打好紮實的基礎,不要只顧追求時髦的技術,打好基礎再去學那些技術或是
參加些培訓,對自身的發展會更好的。
基礎這麼重要怎樣學好它呢?我以爲學好它們應該對照這些基礎課程所涉及的方面,多看一些經典書籍,像算
法導論,編程珠璣,代碼大全(具體介紹在本論壇每本書的版塊裏)等,這些經典書籍不只能幫助咱們打好基礎,並且
對咱們的程序人生也能產生莫大的影響,相信認真研究看完這些書籍後,咱們的程序之路會十分順暢。然而這
些書籍並很差讀,有些甚至至關難讀,國內的大學用這些書當教材的也很少,這些書又偏向理論,本身讀起來不免會
有些枯燥無味。因而就想到建一個論壇,你們共同討論學習這些書籍,就會學的更踏實更牢固更有趣,這樣就能
爲之後的學習打下紮實的基礎。
1.爲計算機初學者或基礎不太紮實的朋友指明方向,要注重內功
2.爲學習者推薦經典書籍,指明應看哪些書籍,怎樣練內功
3.爲學習者提供一個交流的地方,更容易學好,不會那麼枯燥
4.對每本書分章分別討論,更專,會學的更踏實更牢固
5.討論的都是經典書籍,每一本都會讓咱們受益不淺,對每本書分別討論是頗有意義的。css
1.計算機科學概論
計算機科學概論
2.計算機數學基礎
高等數學
線性代數
機率論與數理統計
離散數學及其應用
離散數學教程(北大版)
什麼是數學
具體數學:計算機科學基礎
3.C語言
譚浩強C程序設計
C primer plus
The C programming language
C和指針
C專家教程
C陷阱與缺陷
c語言解惑
C標準庫
你必須知道的495個C語言問題
4.算法與數據結構
數據結構(清華版)
數據結構與算法分析—C語言描述
編程珠璣
編程珠璣II
算法導論
計算機程序設計藝術卷1
計算機程序設計藝術卷2
計算機程序設計藝術卷3
5.電子技術基礎
模擬電子技術(童詩白版)
數字邏輯與數字集成電路(清華版)
6.彙編語言
彙編語言(王爽版)
80X86彙編語言程序設計教程
Intel彙編語言程序設計
IBM PC彙編語言程序設計(國外版)
高級彙編語言程序設計
保護方式下的80386及其編程
黑客反彙編揭祕
Windows環境下32位彙編語言程序設計
7.計算機硬件原理
計算機組成-結構化方法
微機原理與接口技術(陳光軍版)
計算機體系結構(張晨曦版)
計算機組成與設計硬件/軟件接口
Intel微處理器結構、編程與接口
計算機體系結構(量化研究方法)
編程卓越之道卷1
編程卓越之道卷2
深刻理解計算機系統
編碼的奧祕
8.數據庫系統原理
數據庫系統概念
數據庫系統導論
數據庫系統實現
計算機經典書籍彙總,下載地址:http://bbs.theithome.com/read-htm-tid-308.html
9.編譯原理
編譯原理(清華第2版)
編譯原理及實踐
編譯原理:原則,技術和工具
現代編譯原理-C語言描述
高級編譯器設計與實現
10.操做系統原理
操做系統概念
現代操做系統
連接器和加載器
程序員的自我修養:連接、裝載與庫
本身動手寫操做系統
操做系統設計與實現
11.計算機網絡
計算機網絡(Computer Networks)
TCP-IP詳解卷1
TCP-IP詳解卷2
TCP-IP詳解卷3
用TCP/IP進行網際互聯(第一卷)
用TCP/IP進行網際互聯第二卷
用TCP/IP 進行網際互聯第三卷
12.軟件工程和麪向對象程序設計
C++編程思想卷1
java編程思想
軟件工程(Software.Engineering)
軟件工程:實踐者的研究方法
深刻淺出面向對象分析與設計
head first設計模式
道法天然:面向對象實踐指南
面向對象分析與設計
敏捷軟件開發:原則、模式與實踐
設計模式:可複用面向對象軟件的基礎
測試驅動開發
重構—改善既有代碼的設計
代碼大全
程序設計實踐
程序員修煉之道:從小工到專家
卓有成效的程序員
代碼之美
人月神話
計算機程序的構造和解釋
觀止-微軟建立NT和將來的奪命狂奔
代碼優化:有效使用內存[美]克里斯·卡巴斯基
編程高手箴言(梁肇新)
遊戲之旅-個人編程感悟(雲風)
13.windows編程基礎
Windows操做系統原理
Inside Windows 2000
深刻解析Windows操做系統
天書夜讀:從彙編語言到Windows內核編程
windows程序設計
WINDOWS核心編程
14.linux/unix編程基礎
鳥哥的Linux私房菜:基礎學習篇
鳥哥的Linux私房菜:服務器架設篇
linux程序設計
UNIX環境高級編程
Unix網絡編程卷1
UNIX網絡編程卷2
UNIX編程藝術
UNIX Shell範例精解
15.Linux/unix內核源代碼和驅動程序
Linux內核設計與實現
LINUX內核源代碼情景分析
深刻理解LINUX內核
Linux內核徹底註釋
Linux設備驅動程序
16.C++語言
C++編程思想2
Essential C++
C++ primer
C++程序設計語言
C++語言的設計和演化
Accelerated C++
Effective C++
More Effective C++
Exceptional C++
More Exceptional C++
C++設計新思惟
深度探索C++對象模型
C++沉思錄
C++ Templates: The Complete Guide
C++ FAQs
17.標準庫STL使用
C++標準程序庫
Effective STL
泛型編程與STL
18.STL源代碼
STL源碼剖析
19.java語言
java編程思想
Java編程規範
html
些書籍並很差讀,有些甚至至關難讀,國內的大學用這些書當教材的也很少,這些書又偏向理論,本身讀起來不免會
有些枯燥無味。因而就想到建一個論壇,你們共同討論學習這些書籍,就會學的更踏實更牢固更有趣,這樣就能
爲之後的學習打下紮實的基礎。
1.爲計算機初學者或基礎不太紮實的朋友指明方向,要注重內功
2.爲學習者推薦經典書籍,指明應看哪些書籍,怎樣練內功
3.爲學習者提供一個交流的地方,更容易學好,不會那麼枯燥
4.對每本書分章分別討論,更專,會學的更踏實更牢固
5.討論的都是經典書籍,每一本都會讓咱們受益不淺,對每本書分別討論是頗有意義的。
java
bbs.theithome.com linux
編程就比如練功,若是學習.net,mfc,vb等具體的語言和工具是外功(招式),對基礎的學習就是內功,只注重 招式而內功不紮實是不可能成爲高手的。不少人會認爲《射鵰英雄傳》中馬玉道長什麼都沒有教郭靖,馬道長程序員
教的表面看來是馬步衝權實則都是內功心法,郭靖拜師洪七以後開始練習降龍十八掌憑藉的就是這深厚的內 功,吞食蝮蛇寶血又加上練習了周博通傳授的九陰真經和外加功夫雙手互博技以後,終於練就行走江湖的武 功,因而可知馬玉道長傳授給了郭靖的是最基礎的,也是最重要的觀念,編程也比如蓋高樓,根基沒打好遲早有 一天會挎掉的,並且蓋得越高,損失也越慘重。這些底層知識和課本不是沒有用也不是高深的不能學,而是我 們必須掌握的基礎。ajax
這些是我的的愚見,說的不是很清楚,你們能夠看看這些前輩們的經驗,相信看完後你們必定會有所體會
的。爲了方便你們閱讀,我把這些前輩們的建議的文章整理成了pdf,你們在下面下載吧!但願對你們有幫助。pdf 地址:http://bbs.theithome.com/read-htm-tid-123.html算法
說了這麼多無非是想告誡你們要打好紮實的基礎,不要只顧追求時髦的技術,打好基礎再去學那些技術或是 參加些培訓,對自身的發展會更好的。
基礎這麼重要怎樣學好它呢?我以爲學好它們應該對照這些基礎課程所涉及的方面,多看一些經典書籍,像算 法導論,編程珠璣,代碼大全(具體介紹在本論壇每本書的版塊裏)等,這些經典書籍不只能幫助咱們打好基礎,並且 對咱們的程序人生也能產生莫大的影響,相信認真研究看完這些書籍後,咱們的程序之路會十分順暢。然而這 些書籍並很差讀,有些甚至至關難讀,國內的大學用這些書當教材的也很少,這些書又偏向理論,本身讀起來不免會 有些枯燥無味。因而就想到建一個論壇,你們共同討論學習這些書籍,就會學的更踏實更牢固更有趣,這樣就能 爲之後的學習打下紮實的基礎。 sql