『壹』 電腦編程初學者看什麼書
1、《代碼大全》史蒂夫·邁克康奈爾
「優秀的編程實踐的網路全書,《代碼大全》注重個人技術,其中所有東西加起來,就是我們本能所說的「編寫整潔的代碼」。這本書有 50 頁在談論代碼布局。」 —— Joel Spolsky
對於新手來說,這本書中的觀念有點高階了。到你准備閱讀此書時,你應該已經知道並實踐過書中 99% 的觀念。– esac
2、《程序員修煉之道》安德魯·亨特、大衛·托馬斯
對於那些已經學習過編程機制的程序員來說,這是一本卓越的書。或許他們還是在校生,但對要自己做什麼,還感覺不是很安全。就像草圖和架構之間的差別。
雖然你在學校課堂上學到的是畫圖,你也可以畫的很漂亮,但如果你覺得你不太知道從哪兒下手,如果某人要你獨自畫一個 P2P 的音樂交換網路圖,那這本書就適合你了。—— Joel
3、《計算機程序的構造和解釋》Harold Abelson、 Gerald Jay Sussman、Julie Sussman
《代碼大全》、《重構》和《設計模式》這些經典書會教給你高效的工作習慣和交易細節。其他像《人件集》、《計算機編程心理學》和《人月神話》這些書會深入軟體開發的心理層面。
其他書籍則處理演算法。這些書都有自己所屬的位置。
然而《計算機程序的構造和解釋》與這些不同。這是一本會啟發你的書,它會燃起你編寫出色程序的熱情;它還將教會你認識並欣賞美。
它會讓你有種敬畏,讓你難以抑制地渴望學習更多的東西。其他書或許會讓你成為一位更出色的程序員,但此書將一定會讓你成為一名程序員。
4、《C程序設計語言》Brian W. Kernighan / Dennis M. Ritchie
這本書簡潔易讀,會教給你三件事:C 編程語言;如何像程序員一樣思考;底層計算模型。
5、《演算法導論》 Thomas H.Cormen/Charles E.Leiserson/Ronald L.Rivest/Clifford Stein
在我看來,代碼只是一個工具,並非精髓。開發軟體的主要部分是創建新演算法或重新實現現有演算法。其他部分則像重新組裝樂高磚塊或創建「管理」層。
我依然夢想這樣的工作,我的大部分時間(>50%)是在寫演算法,其他「管理」細節則留給其他人…… —— Ran Biron
『貳』 計算機編程專業必讀的書有哪些 我是學計算機的
1.生活豐富多彩,會令你一生都難忘,但難忘有很多種,你可以學了很多東西而難忘,也會因為什麼都沒學到而難忘!
2.計算機專業是一個很枯燥的專業,但即來之、則安之,只要你努力學,也會發現其中的樂趣的。
3.記住:萬丈高樓平地起!基礎很重要,尤其是專業基礎課,只有打好基礎才能學得更深。
4.C語言是基礎,很重要,如果你不學好C語言,那麼什麼高級語言你都學不好。
5.C語言與C++語言是兩回事。就像大熊貓和小熊貓一樣,只是名字很像。
6.請先學習專業課《數據結構》、《計算機組成原理》,不要剛開始就拿著一本VC在看,你連面向對象都搞不清楚,看VC沒有任何用處。
7.對編程有一定的認識後,就可以學習C++了。(是C++而不是VC,這兩個也是兩碼事。C++是一門語言,而VC教程則是講解如何使用MFC類庫,學習VC應建立在充分了解C++的基礎之上。看VC的書,是學不了C++語言的。)
8.學習編程的秘訣是:編程,編程,再編程;
9.認真學習每一門專業課,那是你今後的飯碗。
10.在學校的實驗室就算你做錯一萬次程序都不會有人罵你,如果在公司你試試看!所以多去實驗室上機,現在錯得多了,畢業後就錯得少了。
11.從現在開始,在寫程序時就要養成良好的習慣。
12.不要漏掉書中任何一個練習題——請全部做完並記錄下解題思路。
13.你會買好多參考書,那麼請把書上的程序例子親手輸入到電腦上實踐,即使配套光碟中有源代碼。
14.Asp、Jsp、Php、VC、C#、.NET這些東西都會過時,不會過時的是數據結構和優秀的演算法!
15.記住:書到用時方恨少。不要讓這種事發生在你身上,在學校你有充足的時間和條件讀書,多讀書,如果有條件多讀原版書,你要知道,當一個翻譯者翻譯一本書時,他會不知不覺把他的理念寫進書中,那本書就會變得像雞肋!
16.我還是強調認真聽專業課,因為有些課像《數據結構》、《編譯原理》、《操作系統》等等,這種課老師講一分鍾能讓你明白的內容,你自己看要看好幾個月,有的甚至看了好幾年都看不明白。
17.抓住在學校里的各種實踐的機會,要為自己積累經驗,就業時經驗比什麼都有用。
18.多去圖書館,每個學校的圖書館都有很多好書等你去看!
19.編程不是技術活,而是體力活。
20.如果你決定了要當一個好的程序員,那麼請你放棄游戲和上網聊天,除非你是那種每天只要玩游戲就能寫出好程序的天才!
21.你要有足夠的韌性和毅力!有個高手出一一道題測試你的韌性和毅力:找個10000以內的素數表,把它們全都抄下來,然後再檢查三遍,如果能夠不間斷地完成這一工作,你就可以滿足這一條。
22.找到只屬於你自己的學習方法。不要盲目的追隨別人的方法,適合自己的才是最好的!
『叄』 計算機程序設計有哪些經典必讀書籍
1、Java
Java編程語言銷攜(第三版)---Java四大名著----JamesGosling(Java之父)
Java編程思想(第2版)----Java四大名毀搭著----BruceEckel
Java編程思想(第3版)----Java四大名著----------------BruceEckel
JAVA2核心技術卷I:基礎知識(原書第7版)---Java四大名著-----CayHorstmann
JAVA2核心技術卷II:高級特性(原書第7版)----Java四大名著-----CayHorstmann
EffectiveJava中文版------Java四大名著--------JoshuaBloch
精通Struts:基於MVC的JavaWeb設計與纖斗拿開發---孫衛琴
精通Hibernate:Java對象持久化技術詳解---孫衛琴
Tomcat與JavaWeb開發技術詳解------------孫衛琴
Java與模式------------------------------閻宏
2、C#
C#程序設計-------CharlesPetzold「windows編程泰山北斗」---C#語言「倚天屠龍雙劍」
C#Primer中文版--------StanleyB.Lippman---C#語言「倚天屠龍雙劍」
.NET框架程序設計(修訂版)--------JeffreyRichter「windows編程泰山北斗」---.NET平台四大天王
c#Windows程序設計----------CharlesPetzold「windows編程泰山北斗」------.NET平台四大天王
.NET程序設計技術內幕-------------JeffProsise---.NET平台四大天王
.NET本質論--第1卷:公共語言運行庫(中文版)--------ChrisSells---.NET平台四大天王
3、C++
C++程序設計語言(特別版)---c++八大金剛----BjarneStroustrup「C++之父」
C++Primer(第3版)中文版----c++八大金剛---StanleyB.Lippman
C++Primer(第4版)中文版----c++八大金剛---StanleyB.Lippman
C++標准程序庫—自修教程與參考手冊--c++八大金剛--NicolaiM.Josuttis
C++語言的設計和演化-----c++八大金剛----BjarneStroustrup「C++之父」
深度探索C++對象模型---c++八大金剛----StanleyB.Lippman
EssentialC++中文版---c++八大金剛---StanleyB.Lippman
EffectiveC++中文版2ndEdition-----c++八大金剛------ScottMeyers
MoreEffectiveC++中文版----c++八大金剛------ScottMeyers
C++編程思想(第2版)第1卷:標准C++導引--------BruceEckel
C++編程思想(第2版)第2卷:實用編程技術--------BruceEckel
C++程序設計--------------------------譚浩強
C++程序設計教程(第2版)--------------錢能
C++PrimerPlus(第五版)中文版---StephenPrata
廣博如四庫全書Thec++programminglanguage、c++Primer
深奧如山重水復Insidethec++objectmodel
程序庫大全Thec++standardlibray
工程經驗之積累Effectivec++、MoreEffectivec++、Exceptionalc++
C++八大金剛:
1、Essentitalc++---lippman---C++之父,旁枝暫略,主攻核心,輕薄短小,初學者
2、Thec++programminglanguage----C++之父,技術權威,用詞深峻,思想深遠,c++網路全書代表,聖經。
3、c++Primer----lippman---縱橫書市十數年,c++最佳教本,c++網路全書代表。
4、Insidethec++objectmodel-----lippman----揭示c++底層,非常好,非常難。
5、Effectivec++-----通過50個編程實例,展示專家經驗,行文有趣,深處淺出。
6、MoreEffectivec++----通過35個編程實例,展示專家經驗,行文有趣,深處淺出。
7、Thec++standardlibray---c++標准庫的網路全書。
8、設計模式:可復用面向對象軟體的基礎------good!
4、C語言
C程序設計語言(第2版·新版)---C語言「倚天屠龍雙劍」---BrianW.Kernighan「C語言之父」
CPrimerPlus中文版(第五版)--------C語言「倚天屠龍雙劍」---StephenPrata
C程序設計(第三版)---------------------------譚浩強
C語言大全(第四版)---------------------------HERBERTSCHILDT
C語言介面與實現:創建可重用軟體的技術-------------DAVIDR.HANSON
C語言參考手冊(原書第5版)--------------------------SamuelP.Harbison
C程序設計教程---------------------------------H.M.Deitel/P.J.Deitel
C陷阱與缺陷-----------------------------------AndrewKoenig
5、VB
VisualBasic.NET技術內幕-----VB編程三劍客-----------FrancescoBalena「vb首席大師」
Windows程序設計-VisualBasic.NET語言描述--VB編程三劍客-----CharlesPetzold「windows編程泰山北斗」---
.NET框架程序設計:VisualBasic.NET語言描述--VB編程三劍客--JeffreyRichter「windows編程泰山北斗」---,FrancescoBalena「vb首席大師」
VisualBasic6編程技術大全------------------------FrancescoBalena「vb首席大師」
VisualBasic.NET從入門到精通-------------------------Petroutsos,E.
高級VISUALBASIC編程-----------------------------------MATTHEWCURLAND
6、Delphi
InsideVCL(深入核心——VCL架構剖析)----------李維
Delphi7高效資料庫程序設計--------------李維
面向對象開發實踐之路(Delphi版)----------李維
7、VC
Windows程序設計(第5版)-----CharlesPetzold「windows編程泰山北斗」---
Windows核心編程----------JeffreyRichter「windows編程泰山北斗」---
Windows高級編程指南---------JeffreyRichter「windows編程泰山北斗」---
深入淺出MFC(第二版)-----「MFC四大天王」-------侯捷
MFCWindows程序設計(第2版)---MFC四大天王」---------JeffProsise
VisualC++技術內幕(第4版)--MFC四大天王」--------DavidKruglinski
深入解析MFC-------------MFC四大天王」-----------GeorgeShepherd
VisualC++.NET技術內幕(第6版)-MFC四大天王」------------DavidKruglinski
8、VF
VisualFoxpro程序設計參考手冊-------------------張洪舉
專家門診——VisualFoxPro開發答疑160問-------------------張洪舉
VisualFoxPro6.0/9.0解決方案與範例大全-------------------張洪舉
VisualFoxPro軟體開發模式與應用案例-------------------張洪舉
9、黑客
應用密碼學(協議演算法與C源程序-----------BruceSchneier
網路信息安全的真相-----------BruceSchneier
黑客大曝光:網路安全機密與解決方案(第5版)--------STUARTMCCLURE
軟體加密技術內幕------------看雪學院
加密與解密——軟體保護技術與完全解決方案------------看雪學院
加密與解密(第二版)--------段鋼
10、匯編
Intel微處理器結構、編程與介面(第六版)---------BarryB.Brey
80*86、奔騰機匯編語言程序設計---------BarryB.Brey
Windows環境下32位匯編語言程序設計(第2版)-----------羅雲彬
IBM-PC匯編語言程序設計(第2版)本書是國內優秀教材--------沈美明溫冬嬋
IBMPC匯編語言程序設計(第五版)這本書籍是國外優秀教材-------PETERABEL著,沈美明溫冬蟬譯
11、驅動開發
WindowsWDM設備驅動程序開發指南------------------------------------ChrisCant
Windows2000/XPWDM設備驅動程序開發(第2版)--------------------------武安河
WINDOWS2000/XPWDM設備驅動程序開發--------------------------------武安河
12、網路
計算機網路第四版中文版----網路編程三劍客--------------AndrewS.Tanenbaum
TCP/IP詳解3卷本--------------------RichardStevens----網路編程三劍客
UNIX網路編程2卷本--------------------RichardStevens----網路編程三劍客
用TCP/IP進行網際互聯-----------DouglasE.Comer
高級TCP/IP編程-------------------JonC.Snader
C++網路編程-----------------------DouglasSchmidt
UNIX環境高級編程(第2版)--------------------RichardStevens
13、演算法
計算機程序設計藝術-------Donald.E.Knuth----------演算法「倚天屠龍」雙劍
演算法導論-----------------ThomasH.Cormen--------演算法「倚天屠龍」雙劍
離散數學及其應用----------KennethH.Rosen
具體數學—計算機科學基礎--------Donald.E.Knuth
14、圖形編程
Windows圖形編程----------------FENGYUAN--圖形編程界的CharlesPetzold之書
15、數據結構
數據結構C++語言描述》58.00(DataStructuresC++)WilliamFord,WilliamTopp劉衛東沈官林
數據結構演算法與應用-C++語言描述》49.00SartejSahni汪詩林孫曉東等機械工業出版社
16、軟體工程
設計模式--可復用面向對象軟體的基礎
重構—改善既有代碼的設計
17、操作系統
深入理解計算機系統(修訂版)-------RANDALE.BRYANT
18、Unix
UNIX網路編程卷I套接字聯網API(英文版第三版
UNIX編程藝術
UNIX環境高級編程(英文影印第2版-----UNIX編程「聖經
UNIX環境高級編程(英文影印版)(第2版)
99-UNIX環境高級編程(第2版)
UNIX環境高級編程(第2版)---UNIX編程「聖經
UNIX網路編程第1卷:套介面API(第3版)
UNIX網路編程卷2:進程間通信(第2版)(英文影印版)
UNIX網路編程(第二版)第2卷:進程間通信
UNIX編程環境
UNIX網路編程卷I套接字聯網API(英文版第三版
UNIX系統編程
UNIX環境高級編程
UNIX環境高級編程(英文影印版
88-linux內核分析及編程
UNIX網路編程卷I套接字聯網API(英文版第三版)
UNIX網路編程第1卷:套介面API(第3版)
UNIX網路編程(第二版)第2卷:進程間通信
UNIX網路編程卷2:進程間通信(第2版)(英文影印版)
UNIX網路編程(第2版)第1卷:套介面API和X/Open傳輸介面API
UNIX網路編程(卷1):連網的APLS:套接字與XTI(第二版)(英文影印版)
UNIX環境高級編程
UNIX環境高級編程(英文版)
UNIX環境高級編程(第2版)
Unix技術手冊
19、Linux
Linux內核設計與實現
Linux內核完全注釋
LINUX內核分析及編程
GNU/Linux編程指南(第二版)
Linux設備驅動程序(第三版)
嵌入式設計及Linux驅動開發指南——基於ARM9處理器
Linux設備驅動程序第三版(英文影印版)
Linux內核設計與實現(第2版)
Linux內核設計與實現(英文影印版)(第2版)
linux技術手冊
20、游戲編程
Windows游戲編程大師技巧(第二版
游戲之旅--我的編程感悟
OpenGL超級寶典:第三版
OpenGL編程指南(第四版)
Java游戲高級編程
J2ME手機游戲編程入門
游戲之旅——我的編程感悟
游戲開發中的人工智慧(英文影印版)
3D游戲:卷2動畫與高級實時渲染技術
面向對象的游戲開發
Java游戲高級編程
3D游戲編程大師技巧
游戲編程精粹
面向對象的游戲開發
3D游戲卷1:實時渲染與軟體技術
3D游戲:卷2動畫與高級實時渲染技
J2ME手機游戲編程入門
Direct3D游戲編程入門教程(第二版
21、移動開發
WindowsMobile手機應用開發
SYMBIANOSC++手機應用開發
68-WindowsMobile手機應用開發--傅曦齊宇徐駿
48-SYMBIANOSC++手機應用開發(第2卷)------------------RICHARDHARRISON著,周良忠王伯欣譯
68-SYMBIANOSC++手機應用開發---------------RICHARDHARRISON著,周良忠譯
WindowsCE.net內核定製及應用程序開發---------周毓林寧楊陸貴強付林林
嵌入式系統WindowsCE開發技巧與實例--傅曦
PalmOS編程實踐---絕版
22、單片機
單片機輕松入門----------------------------------周堅(平凡老師)
單片機典型模塊設計實例導航-----------------------求是科技
例說8051----------------------------------------張義和陳敵北
KEILCX51V7.0單片機高級語言編程與ΜVISION2應用實踐-----徐愛鈞
單片機應用程序設計技術(修訂版)--------------------周航慈
8051單片機實踐與應用-------------------------------吳金戎
MCS-51系列單片機實用介面技術---------------------李華
23、串並口通訊
VisualC++/TurboC串口通信編程實踐------------------龔建偉
VISUALBASIC與RS-232串列通信控制(最新版)----------范逸之
24、電子
無線電識圖與電路故障分析輕松入門(第二版)-------------------胡斌
無線電元器件檢測與修理技術輕松入門(第二版)-------------------胡斌
圖表細說電子技術識圖-------------------胡斌
圖表細說電子元器件-------------------胡斌
圖表細說元器件及實用電路-------------------胡
『肆』 如何閱讀《深入理解計算機系統》這本書
結構、操作系統、體系結構、編譯原理、計算機網路你全修過 我想大概可以分為4個階段,水平從低到高 從安裝使用=>linux常用命令=>linux系統編程=>內核開發閱讀內核源碼 其中學習linux常用命令時就要學會自己編譯內核,優化系統,調整參數 安裝和常用命令書太多了,找本稍微詳細點的就ok,其間需要學會正則表達式 系統編程推薦《高級unix環境編程》,黑話叫APUE 還有《unix網路編程》 這時候大概還需要看資料理解elf文件格式,連接器和載入器,cmu的一本教材中文名為《深入理解計算機系統》比較好 內核開發閱讀內核源碼階段,從寫驅動入手逐漸深入linux內核開發 參考書如下《linux device drivers》,黑話叫ldd 《linux kernel development》,黑話叫lkd 《understading the linux kernel》,黑話叫utlk 《linux源碼情景分析》 這四本書為搞內核的必讀書籍 最後,第三階段和第四階段最重動手,空言無益,光看書也不罩,不動手那些東西理解不了 學習linux/unix編程方法的建議 建議學習路徑: 首先先學學編輯器,vim, emacs什麼的都行。 然後學make file文件,只要知道一點就行,這樣就可以准備編程序了。 然後看看《C程序設計語言》K&R,這樣呢,基本上就可以進行一般的編程了,順便找本數據結構的書來看。 如果想學習UNIX/LINUX的編程,《APUE》絕對經典的教材,加深一下功底,學習《UNP》的第二卷。這樣基本上系統方面的就可以掌握了。 然後再看Douglus E. Comer的《用TCP/IP進行網際互連》第一卷,學習一下網路的知識,再看《UNP》的第一卷,不僅學習網路編程,而且對系統編程的一些常用的技型晌巧就很熟悉了,如果繼續網路編程,建議看《TCP/IP進行網際互連》的第三卷,裡面有很多關於應用協議telnet、ftp等協議的編程。 如果想寫設備驅動程序,首先您的系統編程的介面比如文件、IPC等必須要熟知了,再學習《LDD》2。 對於幾本經典教材的評價: 《The C Programing Language》K&R 經典的C語言程序設計教材,作者是C語言的發明者,教材內容深入淺出。雖然有點老,但是必備的一本手冊,現在有時候我還常翻翻。篇幅比較小,但是每看一遍,就有一遍的收獲。另外也可用譚浩強的《C語言程序設計》代替。 《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常經典的書(廢話,Stevens的書哪有不經典的!),雖然初學者就可以看,但是事實上它是《Unix Network Programing》的一本輔助資料。國內的翻譯的《UNIX環境高級編程》的水平不怎麼樣,現在有影印版,直接讀英文比讀中文來得容易。 《Unix Network Programing》W.Richard Stevens:第一卷講BSD Socket網路編程介面和另外一種網路編程介面的,不過現在一般都用BSD Socket,所以這本書只要看大約一半多就可以了。第二卷沒有設計到網路的東西,主衫敬要講進程間通訊和Posix線程。所以看了《APUE》以後,就可以看它了,基本上系統的東西就由《APUE》和《UNP》vol2概括了。看過《UNP》以後,您就會知道系統編程的絕大部分編程技巧,即使卷一是講網路編程的。國內是清華翻譯得《Unix網路編程》,翻譯者得功底也比較高,翻譯地比較好。所以建議還是看中文版。 《TCP/IP祥解》一共三卷,卷一講協議,卷二講實現,卷三講編程應用。我沒有怎麼看過。,但是據說也很經典的,因為我沒有時間看卷二,所以不便評價。 《用TCP/IP進行網際互連》Douglus.E.Comer 一共三卷,卷一講原理,卷二講實現,卷三講高級協議。感覺上這一套要比Stevens的那一套要好,就連Stevens也不得不承認它的第一卷非常經典。事實上,第一卷即使你沒有一點網路的知識,看完以後也會對網路的來龍去脈了如指掌。第一卷中還有很多習題也設計得經典和實用,因為作者本身就是一位教師,並且卷一是國外研究生的教材。習題並沒有答案,留給讀者思卜塌鋒考,因為問題得答案可以讓你成為一個中級的Hacker,這些問題的答案可以象Douglus索取,不過只有他只給教師卷二我沒有怎麼看,卷三可以作為參考手冊,其中地例子也很經典。如果您看過Qterm的源代碼,就會知道Qterm的telnet 實現部分大多數就是從這本書的源代碼過來的。對於網路原理的書,我推薦它,而不是Stevens的《TCP/IP祥解》。 《Operating System - Design and Implement》這個是講操作系統的書,用Minix做的例子。作者母語不是英文,所以英文看起來比較晦澀。國內翻譯的是《操作系統設計與實現》,我沒看過中文版,因為翻譯者是尤晉元,他翻譯的《APUE》已經讓我失望頭頂了。讀了這本書,對操作系統的底層怎麼工作的就會 有一個清晰的認識。 《Linux Device Driver》2e ,為數不多的關於Linux設備驅動程序的好書。不過內容有些雜亂,如果您沒有一些寫驅動的經驗,初次看會有些摸不著南北。國內翻譯的是《Linux設備驅動程序》第二版,第一版,第二版的譯者我都有很深的接觸,不過總體上來說,雖然第二版翻譯的有些不盡人意,但是相比第一版來說已經超出了一大截。要讀這一本書,至少應該先找一些《計算機原理》《計算機體系結構》的書來馬馬虎虎讀讀,至少應該對硬體和計算機的工作過程有一些了解。
『伍』 自學計算機編程應該看些什麼書
一:第一階段 C語言-------《C語言設計》 作者:譚浩強 大多數人都推薦譚浩強這本書,譚浩強的C語言程序設計,我覺得更適合當教科書,主要是篇幅沒有那麼大,書本的內容不是很全,由老師帶入門是最好的。 《C Primer Plus》第五版 作者:Stephen Prata 這本書比較厚,內容也比較基礎,擴展的也比較廣,自學容易上手,唯一的缺陷在於它是外國人編寫,而國內的翻譯往往讓人難以滿意,如果你有較好的英語水平,最好閱讀英文版的。 《C語言入門經典》第四版 作者:Ivor Horton 二:第二階段 這一階段看個人主攻的方向了,安卓一般就JAVA,PC游戲、軟體C++,也有推薦C#,這些都是主流語言,其他語言要看個人愛好與發展。 面向對象的語言,一般懂一門,之後要轉其他語言也很容易的,其實思想都差不多,主要的不同在於語法。C#容易上手,一個月入門,一年精通,而C++卻有點難,一年入門,二十年也未必敢說自己精通。如果有時間,可以了解一下匯編語言。 C++ Primer, 4rd Edition (入門類: C++ Primer, 4rd Edition Thinking in C++, 2nd Edition The C++ Standard Library: A Tutorial and Reference 進階類: The C++ Programming Language, Special Edition The Design and Evolution of C++ Inside C++ Object Model C++ Templates: The Complete Guide STL 源碼剖析 Generic Programming and the STL Modern C++ Design: Generic Programming and Design Patterns Applied 應用技巧類: Effective C++, 2nd Editon More Effective C++ Exceptional C++ More Exceptional C++ Effective STL Ruminations on C++) 三:第三階段 API/SDK------------- 《windows程序設計》(Jeff Prosise) 這書主要是開發Windows軟體要深入研讀的,畢竟是WindowsAPI。如果是主攻C++,那麼這本書你可以大概略讀一遍,不用過多的深入追究,QT才是C++主要深入思慮的關鍵。 四:第四階段 MFC----《VC++技術內幕》、《深入淺出MFC》及視頻教程孫鑫 VC++6.0 如果是C++,QT是要重點學習的對象。 五:第五階段 COM/DCOM/ATL/COM+---------《COM技術內幕》 未知階段: 《數據結構》,《演算法導論》這些基本是編程的核心了,編程的很大情況都依賴於演算法的實現,這個兩門基本要深入研究,這是決定編程能力的核心標准。 如果不弄底層的話,《操作系統原理》可以簡單地了解。
『陸』 如何閱讀和學習《計算機程序設計藝術(TAOCP)》
哦,上帝!《The Art of Computer Programming》引那位出名的王垠對TAOCP的評論: 本來早就想想寫一個對於Knuth的The Art of Computer Programming的看法。 沒想到一去Amazon就找到一個同類 關於Knuth的 TAOCP,我想,大部分人聲稱看了他的書,或者買了他的書,不過是作為一種炫耀的資本或者擺設。我對門的同學幾年前就買了一套三本,全新的精裝本,花了 200多塊錢。可是呢,他從來就沒看。我把它借過來,看了幾頁就放在那裡沒有看了。我哪有時間看他用那些一個位元組6位的機器語言實現簡單的鏈表!有一天一個師弟走進來,看到那套書在我書架上,顯示出一種敬畏感:「挖!師兄!你好牛啊!居然看這么高深的書!」 我一愣。嗯,不錯嘛,這套書放在書架上可以讓人對我刮目相看。這恐怕就是它對很多人的實際作用。還有人可以幫助神化這套書,同時也神化自己,比如他可以這么說:「誰要是看完了Don Knuth的 The Art of Computer Programming 我就僱用他!」 這樣可以顯得比一般看過書的人還要高一等。據說Bill Gates就是這么做的。我懷疑他自己看完過沒有。 我討厭這套書的一個原因就是Knuth故意用一個叫 MIX 的處理器的機器語言來寫這本書。雖然在新版的書里他設計了一種新的處理器 MMIX,但是換湯不換葯。他以為一部「永恆」的計算機編程書不應該使用高級語言,因為它們很容易過時。但是他錯了,機器語言恰恰是最容易過時的東西,看看現在有多少牌子的更新換代的處理器就知道。而世界上確實存在非常高級的語言從60年代到現在都沒有過時。我預言,MMIX會在不久的將來被淘汰。很好笑的是MMIX是在MIX上加了一個「M」,代表Millennium(千禧年)。關於它的專著也起名為 MMIXware---A RISC Computer for the Third Millennium。一千年甚至短短一百年,幾十年以後,計算機還是不是二進制的集成電路都說不清楚,況且這個處理器其實就是從別的處理器比如RISC II, Sparc之類的撿了一點東西,沒有什麼大的創新。他就把這個處理器的模擬程序印在紙上賣,曰:「一個優秀的程序要像一部好的小說一樣容易讀懂。一個優秀的程序員會在將來拿到普利策獎。」 用機器語言寫一點初級的計算機入門部分還可以,但是用來寫整整一部書未免容易讓讀者只見樹木不見森林了。看TAOCP最容易出現的一種現象就是,「哇!原來這個程序可以這么寫。」 但是你不知道為啥那麼寫。雖然可以知道一些底層的原因,但是最根本的原理,讀者始終不會明白。就像看清楚了一張圖片上的每一個像素,卻認不出圖片上其實是一個熟人。看清楚了棋盤上每一個棋子能走的地方,卻不能贏棋。Dijkstra 說計算科學不應該被叫做"computer science",就像外科手術不應該叫做"knife science"。可是這關Knuth什麼事呢,他的書名叫做 The Art of... 再說他的支票吧…… 很多人拿了Knuth的支票就作為一種可以炫耀的東西。以前我就看到一個Cambridge的教授主頁上掛著一個Knuth支票的照片。Knuth的支票真的可以作為炫耀的資本嗎?告訴你們,我找到的錯誤都是typo而已,沒想到他也給我支票。誰叫他打字不小心,Millennium都能打成 Millenium?嘿!我湊足了一頓飯錢的支票時就想去中國銀行兌現,准備換了錢大吃一頓。可是銀行的職員告訴我,他們必須把支票寄回美國才能拿到現金,辦理這件事的費用大大高於支票本身的價值!所以Knuth相當於給我一些空頭支票。Damn!早該想到的,他為什麼不往大家的信用卡上面轉賬,而使用支票這種過時的東西!他明顯覺得有他簽名的支票,肯定誰也不會拿去兌現,甚至裝裱在相框里作為紀念。hmmm... 算你狠~ 好了,啰里啰唆。還是看看這個別人寫的書評。White elephant,這確實道出了我對這套書的感覺。 (但是評價者有些觀點我不能苟同,比如「O(n)表示法足夠了」。) 希望以後對 paper 也有這種公開的 comments! Dan Friedman 的故事 (4)——C311當我剛從 Cornell 轉學到 IU 的時候,Dan Friedman 叫我去上他的研究生程序語言課 B521。我當時以自己在 Cornell 上過程序語言課程為由,想不去上他的課。Friedman 把我叫到他的辦公室,讓我在他旁邊坐下來,和藹的對我說:「王垠,我知道你在 Cornell 上過這種課。我也知道 Cornell 是比 IU 好很多的學校。可是每個老師的教學方法都是不一樣的,你應該來上我的課。我和我的朋友們在這里做教授,不是因為喜歡這個學校,而是因為我們的家人和朋友都在這里。」後來由於跟 Amr Sabry(我現在的導師)的課程 B522 時間重合,他特別安排我坐在本科生的 C311 的課堂上,卻拿研究生課程的學分。後來發現,這兩門課的內容基本沒有區別,只不過研究生的作業要多一些。 在第一堂課上,他說了一句讓我記憶至今的話:「《The Little Schemer》和《Essentials of Programming Languages》是這門課的參考教材,但是我上課從來不講我的書里的內容。」剛一開始,我就發現這門課跟我在 Cornell 學到的東西很不一樣。雖然有些概念,比如 closure,CPS,我在 Cornell 都學過,在他的課堂上,我卻看到這些概念完全不同的一面,以至於我覺得其實我之前完全不懂這些概念!這是因為在 Cornell 學到這些東西的時候只是用來應付作業,而在 Friedman 的課上,我利用它們來完成有實際意義的目標,所以才真正的體會到這些概念的內涵和價值。 一個例子就是課程進入到沒幾個星期的時候,我們開始寫解釋器來執行簡單的 Scheme 程序。然後我們把這個解釋器進行 CPS 變換,引入全局變數作為"寄存器" (register),把 CPS 產生的 continuation 轉換成數據結構(也就是堆棧)。最後我們得到的是一個抽象機 (abstract machine),而這在本質上相當於一個真實機器里的中央處理器(CPU)或者虛擬機(比如 JVM)。所以我們其實從無到有,「發明」了 CPU!從這里,我才真正的理解到寄存器,堆棧等的本質,以及我們為什麼需要它們。我才真正的明白了,馮諾依曼體系構架為什麼要設計成這個樣子。後來他讓我們去看一篇他的好朋友 Olivier Danvy 的論文,講述如何從各種不同的解釋器經過 CPS 變換得出不同種類的抽象機模型。這是我第一次感覺到程序語言的理論對於現實世界的巨大威力,也讓我理解到,機器並不是計算的本質。機器可以用任何可行的技術實現,比如集成電路,激光,量子,分子,基因…… 但是無論用什麼作為機器的材料,我們所要表達的語義,也就是計算的本質,卻是不變的。 而這些還不是我那屆 C311 全部的內容。後半學期,我們開始學習 miniKanren,一種他自己設計的用於教學的邏輯式語言 (logic programming language)。這個語言類似 Prolog,但是它把 Prolog 的很多缺點給去掉了,而且變得更加容易理解。教材是免費送給我們的《The Reasoned Schemer》。在書的最後,兩頁紙的篇幅,就是整個 miniKanren 語言的實現!我學得比較快,後來就開始搗鼓這個實現,把有些部分重新設計了一下,然後加入了一些我想要的功能。這樣的教學,給了我設計邏輯式語言的能力,而不只是停留於一個使用者。這是學習 Prolog 不可能做到的事情,因為 Prolog 實現的復雜性,會讓初學者無從下手,只能停留在使用者的階段。 我很幸運當初聽了他的話,去上了這門課,否則我就不會是今天的我。 誰是真正的程序語言專家Knuth 也曾有類似的說法:「要是看不懂 TAOCP,就別當程序員。」他總是被譽為「計算機科學的神」,在他的演講里大談文學,藝術,上帝和宗教,給人陡增神秘感。他總是說程序員應該學習機器語言,而不是高級語言,機器才是不變的真理。但是 Knuth 卻不是從科學的角度來看這個問題,而只是他個人的偏見。當他看到 Fortran, Lisp, ALGOL, Pascal, C, C++, Java 這些語言的發展彷彿沒有盡頭的時候,他並沒有理解其中不變的原理。在程序語言的設計上,他不是一個強者。他很有可能根本不理解 lambda calculus 和類型理論,否則他不會設計出像 TeX 那樣毫無章法的語言。TeX 排版的質量無可厚非,但是到了1978年還仍然採用程序語言專家們早已深惡痛絕的 dynamic scoping,再加上其它一些蹩腳的設計,說明他對程序語言理論缺乏理解。實際上 TeX 含有一個圖靈完備的擴展語言,是因為 Knuth 採納了 Guy Steele(Scheme 的發明者)的建議,然而 Knuth 卻沒有把它設計好。 Knuth 覺得機器是不變的真理,所以他堅持用機器語言來寫作 TAOCP。但是由於機器語言缺乏抽象,程序員沒法專注於真正的問題。使用機器語言來描述演算法,會把本來很簡單的問題都顯得高深難懂,彷彿這書永遠也看不完。有多少人真正的看過 TAOCP 呢?恐怕大部分人把這套書買回去,只是把它們擺在書架上做面子。只要有人說機器語言太難懂,這些人就會說你自己不夠聰明,不配做程序員。而其實呢,他們自己都沒看過。 機器不是計算的本質這個事實,很多人包括 Dijkstra,早就看到了。他說:「計算機科學是個錯誤的名字,因為它不是計算機的科學,這就像外科手術不是刀子的科學。」而這是幾乎每一個程序語言專家都明白的道理。在他們的眼裡,這不再是道聽途說或者個人觀點,而是可以用邏輯來證明的事實。真正明白計算本質的人,可以設計出全新的硬體來來滿足語義的需要,而不是受控於處理器的設計。他們甚至可以超越集成電路,而使用另外的技術來製造機器。這些都說明,計算其實是獨立於機器的。 有不好的想法不要緊,但是如果把不好的想法硬說成是好的,那就會阻礙歷史發展了。我並不否認 Knuth 和 Ritchie 對演算法,排版和操作系統的重要貢獻,但是由於他們以及他們崇拜者經常在有關語言的事情上誤導群眾,所以覺得有必要指出他們的一些局限性。Linus Torvalds, Guido van Rossum, Eric Raymond, Paul Graham 也經常發表對語言的評論,被很多人奉為聖旨,但其實他們言論裡面很少有真知灼見。 其實我要說的不過是,通常程序員們膜拜的偶像,大部分都不是真正的程序語言專家。希望你不要覺得這是危言聳聽,實際上這些是大部分世界級的計算機科學家們很多年前就知道的事情。
『柒』 電腦編程入門書籍,應該先看什麼
我轉載的,感覺對你有用!!! 都是我看過或正要看的書,晾晾書架,希望對後來者也有一點作用,當年我也是浪費時間看了一些沒有價值的書籍,頗為後悔,現將精華總結如下:
c語言篇:(雖有人說學C++不用先學c,但我頗不以為然,不知數據為何,又何來的封裝繼承多態)
1:c語言入門大學教程c語言譚浩強版足以。
2:windows c語言API編程基礎,推薦《windows程序設計(第5版)》 Charles Petzold著,通過學習可對界面編程一覽無遺,剩下的就是看怎樣用c++進行包裝,體會c++面向對象復用代碼的威力了。
3:《TCP/IP協議及網路編程技術》 羅軍舟等編著 清華大學出版社 國貨上品,是應用c語言在windows下進行網路編程的好教材.也是使用c++進行網路編程的知識准備。
C++基礎篇: 1:《C++Primer(3or4版)》入門第一部.
2:《深入淺出MFC》 侯捷著 國貨精品,本應歸入學習vc的范疇,但他實際是對widows API的c++框架介紹,用來做vc項目只能起輔助作用,對建立c++面向對象思想卻多有啟迪。
3: 《C++標准程序庫》 侯捷/孟岩譯 庫是語言的延伸,學習c++不可不看。
4: 《C++實踐之路》 周良忠譯 一個計算器例子貫穿全書,幾乎用到C++所有知識,真正的例子驅動教學法。
面向對象技術:
1: 《設計模式-可復用面向對象軟體的基礎》 美國四人幫的跨時代大作 230頁卻足以開啟一個時代,真正體現了面向對象技術的價值,是代碼復用的經典之作,不能不看。
2: 《UML Distilled》 UML建模很火歐,但對我來說看主要目的是看懂類關系草圖,這本小書足以。
c++進階篇
1: 《C++高級編程》 劉鑫等譯 有對c++知識的精要總結其中包括如何更好地實現重用、如何有效地測試和調試等C++專業人員常用的一些技術與方法,值得了解。
2: 《Effective C++》,《必知必會》,《c++編程規范》 三本小書卻足以檢測你對c++知識掌握的真正情況。
c++高階篇:(本人仍在閱讀中)
1: 《深入探索c++對象模型》 侯捷譯 對C++內存布局的深入介紹,是真正理解com/corba等組件技術的必備基礎。
2: 《C++ Templates中文版》 陳偉柱譯 模板聖經,現代c++發展的前沿泛型編程思想總結 (是看懂boost類庫的知識儲備)。
3:《C++設計新思維》 侯捷/於春景譯 泛型編程與設計模式的綜合應用,鍛煉思維的好書,(已經買了半年多了,等我有空時一定看'_')。
其他:
C++編程思想,C++語言之父的c++語言特別版 等書本人只在書店裡見過,沒有閱讀就不敢置評了。
(一)語言入門:
《C++ Primer》
最新版本:第三版(第四版國外已上架,國內一些網上書店也在預訂中)
適合有豐富C經驗,缺乏C++經驗的。不過我個人一直認為此書帶著過於強烈的C語言的痕跡,對於C++的學習未必是好事。
《The C++ Programming Language》/《C++程序設計語言》
最新版本:第三版特別版
簡稱TC++PL,有其他語言的豐富經驗的。(也有人簡稱之為「TCPL」,但需與另一本《The C Programmer Language》區分開來)
《Essential C++》
《Accelerated C++》
這兩本薄一些,都是不錯的選擇。《Accelerated C++》本人沒有讀過,從各方面的評價來看,完全值得推薦。
以上幾本書都有相應的中文版,而且翻譯的質量都不錯。上面的書未必都需要讀一遍,但無論如何,TC++PL是應該閱讀的。
(二)進階A:
這個路線側重於語言本身
《Effective C++》
最新版本:第二版(第三版國外已上架,國內一些網上書店也在預訂中)
簡稱EC。C++程序員必讀!很多時候,我們說C++聖經不是指TC++PL,而是這一本。《The Pragmatic Programmer》一書中寫到:「一旦你發現自己要參與C++項目的開發,趕快跑(不要走)到書店去購買Scott Mayer的《Effective C++》,可能還要《More Effective C++》」。
《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》/《C++ 編程規范》
個人認為此書應為C++程序員必備的案頭書。幾乎Effective系列和Exceptional系列都在這里得到了總結。最新的模版、異常的業界經驗都在這里的到了體現。可能的唯一缺陷就是對一個新手而言,關於「為什麼這么做」的問題,解釋的不夠。
我的看法是:如果你不理解其中的條款,記憶,並且照做;如果你理解其中的條款,我猜你一定會同意書中的觀點。我認為這本書中的內容至少在2009年以前都不會過時,人們將廣為傳誦它制定的101條戒律。
還不知道他的簡稱,也許「101」會成為一個候選者?
提到《Effective C++》,那麼另外三本書一一浮出水面:
《More Effective C++》
《Exceptional C++》
《More Exceptional C++》。
新書《Exceptional C++ Style》也是值得一看的好書。
上述幾本書,一本也不應該放過。
個人建議上述書籍按順序閱讀。並且,在將來反復閱讀這幾本書。
『捌』 自學編程需要哪些入門書籍
1、《實戰Java程序設計》
這是一本既注重實戰,同時也注重底層「內功」專訓練的書,非常適屬合初學者閱讀!
『玖』 如何閱讀和學習《計算機程序設計藝術》(TAOCP)
首先總的原則是:你如果用最難的廳彎瞎扮空方式學,你會收獲最多。
並且最難的方式就是:你讀它,如果遇到一個問題,一個定理,一個例子,沒搞懂,不要再繼續看,不要看答案,把書合起來,然後絞盡腦汁地想,用幾個小時幾天時間,把它搞定,然後再繼續看書,看答案。
方式訓練,你可以最快地在思維上跟TAOCP看齊並且必鬧孝須做題,例題,習題,題題過,這本書只適合有耐心有毅力能抽出幾個月閉關什麼都不做專門學習這本書的人。
《計算機程序設計藝術》系列被公認為計算機科學領域的權威之作,深入闡述了程序設計理論,對計算機領域的發展有著極為深遠的影響。
MMIX 是新一代的以 RISC 為基礎的計算機,比其前身 MIX 更加精簡。
本書由兩本小冊子合並而成,第一部分描述了 MMIX 的內存、寄存器、指令、載入與存儲等基礎概念,並介紹了關於 MMIX 的一些基本編程技術。
第二部分使用該語言重新實現了 TAOCP 前 3 卷中的所有演算法。
『拾』 自學電腦編程需要哪些書
我覺得自學,最重要的是把握住自己的心態。心態好了,才會學進去,要不然是不行的,心態不好,是學不進去的。
終於有一天,我厭倦了控制台的黑白屏幕,只有一個黑白的盒子,這不是我想要的生活。所以我找到了Windows編程(watercress)這本精彩的書,開始挖掘我的Windows平台。從Windows消息機制到創建窗口,添加控制項,處理事件,窗口繪圖,線程,多媒體,網路。也可在小程序中進行,如:記事本、蛇、俄羅斯方塊等。不知廉恥,我要粘貼代碼:songbaoming / Tetris·GitHub,丹尼爾小心!雖然每一步我都很努力,但最終我學會了,充滿了成就感,我離開了人生的頂峰,離我更近了!
先把它寫在這里,估計這些已經足夠你看一段時間了。如果你選擇道路,演算法的背面,數據結構,離散數學,資料庫,啊,編譯理論啊,計算機系統等等,直到你被大學相關的專業人員錄取,當然,是你的食物,慢慢消化它。