基礎的重要性(程式員之路)

來源:互聯網
上載者:User

標籤:可見   原因   陷阱與缺陷   lang   ++   基礎學習      代碼最佳化   體系   

學習編程有幾年了,感覺走了不少彎路,而不少的學弟學妹又在重蹈我當初的覆轍,不免有些痛心。最近在網
上也看了許多前輩們的經驗建議,再結合自己的學習經曆在這裡談談基礎的重要性,希望協助大家少走些彎
路。
什麼是基礎呢?就是要把我們大學所學的離散數學,演算法與資料結構,作業系統,電腦體繫結構,編譯原理
等課程學好,對電腦的體系,CPU本身,作業系統核心,系統平台,物件導向編程,程式的效能等要有深層次的掌握。
初學者可能體會不到這些基礎的重要性,學習jsp,donet,mfc,vb的朋友甚至會對這些嗤之以鼻,但是一開始沒學
好基礎就去學jsp或donet會產生很壞的影響,而且陷入其中不能自拔。
我上大二的時候還對編程沒什麼概念,就上了門C++也不知道能幹什麼,老師說MFC也不知道是什麼東西,
看別的同學在學asp.net就跟著學了,然後就瞭解到.net,j2ee,php是什麼了,就覺得軟體開發就是用這些了,而上
的那些專業課又與我們學的sqlserver啊,css啊,ajax啊,毫無關係,就感慨啊,還不如回家自學去就為一個文憑嗎?
還不如去培訓,浪費這麼多錢.於是天Apsara Infrastructure Management Framework本上沒去上什麼課,天天就在做網站,幾個學期就做了三個網站。感覺做
這些網站就是學到些技巧,沒什麼進步,這些技巧就好比別人的名字,告訴你你就知道了,網上也都可以搜到。那時
候就覺得把.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個星期就能學得非常熟練。

 

 

教的表面看來是馬步沖權實則都是內功心法,郭靖拜師洪七之後開始練習降龍十八掌憑藉的就是這深厚的內
功,吞食蝮蛇寶血又加上練習了周博通傳授的九陰真經和外加功夫雙手互博技之後,終於練就行走江湖的武
功,由此可見馬玉道長傳授給了郭靖的是最基礎的,也是最重要的觀念,編程也好比蓋高樓,根基沒打好早晚有
一天會挎掉的,而且蓋得越高,損失也越慘重。這些底層知識和課本不是沒有用也不是高深的不能學,而是我
們必須掌握的基礎。
這些是個人的愚見,說的不是很清楚,大家可以看看這些前輩們的經驗,相信看完後大家一定會有所體會
說了這麼多無非是想告誡大家要打好紮實的基礎,不要只顧追求時髦的技術,打好基礎再去學那些技術或是
參加些培訓,對自身的發展會更好的。
基礎這麼重要怎樣學好它呢?我覺得學好它們應該對照這些基礎課程所涉及的方面,多看一些經典書籍,像算
法導論,編程珠璣,代碼大全(具體介紹在本論壇每本書的版塊裡)等,這些經典書籍不僅能協助我們打好基礎,而且
對我們的程式人生也能產生莫大的影響,相信認真研究看完這些書籍後,我們的程式之路會十分順暢。然而這
些書籍並不好讀,有些甚至相當難讀,國內的大學用這些書當教材的也不多,這些書又偏向理論,自己讀起來難免會
有些枯燥無味。於是就想到建一個論壇,大家共同討論學習這些書籍,就會學的更踏實更牢固更有趣,這樣就能
為以後的學習打下紮實的基礎。
1.為電腦初學者或基礎不太紮實的朋友指明方向,要注重內功
2.為學習者推薦經典書籍,指明應看哪些書籍,怎樣練內功
3.為學習者提供一個交流的地方,更容易學好,不會那麼枯燥
4.對每本書分章分別討論,更專,會學的更踏實更牢固
5.討論的都是經典書籍,每一本都會讓我們受益匪淺,對每本書分別討論是很有意義的。

 

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設計模式
道法自然:物件導向實踐指南
物件導向分析與設計
敏捷式軟體開發 (Agile Software Development):原則、模式與實踐
設計模式:可複用物件導向軟體的基礎
測試驅動開發
重構—改善既有代碼的設計
代碼大全
程式設計實踐
程式員修鍊之道:從小工到專家
卓有成效的程式員
代碼之美
人月神話
電腦程式的構造和解釋
觀止-微軟建立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編程規範

 

 些書籍並不好讀,有些甚至相當難讀,國內的大學用這些書當教材的也不多,這些書又偏向理論,自己讀起來難免會
有些枯燥無味。於是就想到建一個論壇,大家共同討論學習這些書籍,就會學的更踏實更牢固更有趣,這樣就能
為以後的學習打下紮實的基礎。
1.為電腦初學者或基礎不太紮實的朋友指明方向,要注重內功
2.為學習者推薦經典書籍,指明應看哪些書籍,怎樣練內功
3.為學習者提供一個交流的地方,更容易學好,不會那麼枯燥
4.對每本書分章分別討論,更專,會學的更踏實更牢固
5.討論的都是經典書籍,每一本都會讓我們受益匪淺,對每本書分別討論是很有意義的。


bbs.theithome.com 

編程就好比練功,如果學習.net,mfc,vb等具體的語言和工具是外功(招式),對基礎的學習就是內功,只注重 招式而內功不紮實是不可能成為高手的。很多人會認為《射鵰英雄傳》中馬玉道長什麼都沒有教郭靖,馬道長

教的表面看來是馬步沖權實則都是內功心法,郭靖拜師洪七之後開始練習降龍十八掌憑藉的就是這深厚的內 功,吞食蝮蛇寶血又加上練習了周博通傳授的九陰真經和外加功夫雙手互博技之後,終於練就行走江湖的武 功,由此可見馬玉道長傳授給了郭靖的是最基礎的,也是最重要的觀念,編程也好比蓋高樓,根基沒打好早晚有 一天會挎掉的,而且蓋得越高,損失也越慘重。這些底層知識和課本不是沒有用也不是高深的不能學,而是我 們必須掌握的基礎。

  這些是個人的愚見,說的不是很清楚,大家可以看看這些前輩們的經驗,相信看完後大家一定會有所體會

的。為了方便大家閱讀,我把這些前輩們的建議的文章整理成了pdf,大家在下面下載吧!希望對大家有協助。pdf 地址:http://bbs.theithome.com/read-htm-tid-123.html

  說了這麼多無非是想告誡大家要打好紮實的基礎,不要只顧追求時髦的技術,打好基礎再去學那些技術或是參加些培訓,對自身的發展會更好的。

基礎這麼重要怎樣學好它呢?我覺得學好它們應該對照這些基礎課程所涉及的方面,多看一些經典書籍,像算 法導論,編程珠璣,代碼大全(具體介紹在本論壇每本書的版塊裡)等,這些經典書籍不僅能協助我們打好基礎,而且 對我們的程式人生也能產生莫大的影響,相信認真研究看完這些書籍後,我們的程式之路會十分順暢。然而這 些書籍並不好讀,有些甚至相當難讀,國內的大學用這些書當教材的也不多,這些書又偏向理論,自己讀起來難免會 有些枯燥無味。於是就想到建一個論壇,大家共同討論學習這些書籍,就會學的更踏實更牢固更有趣,這樣就能 為以後的學習打下紮實的基礎。 

 

基礎的重要性(程式員之路)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.