c語言程序設計徐寶文
㈠ 我已看完c語言入門經典,之後我想看一些開發軟體的書,進階的,高級的,有什麼好書推薦一下
C語言經典著作導讀 2013-10-30 14:35:00
分類: linux
http://blog.csdn.net/21aspnet/article/details/6558619
本人不是賣書的,我也不會給出任何購書鏈接,只是給C語言學習者推薦一條學習的方向。如果你喜歡看電子書網上很多,如果你喜歡紙質那麼就買吧,經典的書值得收藏,是對版權的尊重!
基礎篇
1.《寫給大家看的C語言書(第2版)》
原書名: Absolute Beginner's Guide to C (2nd Edition)
原出版社: Sams
作者: (美)Greg Perry [作譯者介紹]
譯者:謝曉鋼劉艷娟
叢書名:圖靈程序設計叢書 C/C++系列
出版社:人民郵電出版社
ISBN:9787115216359
上架時間:2009-12-10
出版日期:2010 年1月
開本:16開
頁碼:308
說明:這本是入門最好的,最簡單,最好懂
2.《C語言程序設計:現代方法:第2版》
老版,其實改變不大
原書名: C Programming: A Modern Approach, 2nd Edition
原出版社: W. W.Norton & Company
作者: (美)K. N. King [作譯者介紹]
譯者:呂秀鋒黃倩
叢書名:圖靈程序設計叢書 C/C++系列
出版社:人民郵電出版社
ISBN:9787115219572
上架時間:2010-3-16
出版日期:2010 年4月
開本:16開
頁碼:600
說明:被譽為"近10年來最好的一部C語言著作"。
3.《C語言解析教程》和《C語言教程》
原書名: C by Dissection The Essentials of C Programming FourthEdition
原出版社:Addison-Wesley
作者:(美)Al Kelley Ira Pohl [作譯者介紹]
譯者:麻志毅
叢書名:計算機科學叢書
出版社:機械工業出版社
ISBN:7111093364
上架時間:2002-1-24
出版日期:2002 年1月
頁碼:436
原書名: A Book on C: Programming in C (4th Edition)
原出版社: Addison-Wesley
作者:(美)Al Kelley, Ira Pohl [作譯者介紹]
譯者:徐波
叢書名:計算機科學叢書
出版社:機械工業出版社
ISBN:7111202139
上架時間:2006-12-13
出版日期:2007 年1月
說明:2本書相似度很大。《C語言解析教程》基礎一點,而《C語言教程》相對難點,第二本先後2006年和2011年2次出版,內容是一樣的,現在只能買新版,要說區別就是2011版比2006版貴點。這本書寫的超級經典,值得一看。
4.《C語言大全第四版》
作者: 赫伯特?希爾特
譯者: 王子恢戴健鵬等
出版社: 電子工業出版社
出版年: 2001-9-1
頁數: 560
定價: 48.00
裝幀: 平裝(無盤)
ISBN: 9787505369153
說明:這本完全適合零基礎的,另外這本書買不到了,雖然計算機更新換代很快,但是C永遠不會淘汰,最起碼20年內還不會。
入門書籍比較老了 2001年的有電子版的 講的比較全 也很好懂 需要注意不要下載錯了!
———————————————————————————————————————
5.《C Primer Plus》
副標題: Primer Plus
作者: StephenPrata / 雲巔工作室
譯者: 雲巔工作室
出版社: 人民郵電出版社
出版年: 2005-2
頁數: 626
定價: 60.00元
裝幀: 平裝
ISBN: 9787115130228
說明:有基礎可以直接看這本經典的入門書。書很厚,近700頁,卻不沒有讓我覺得任何的煩瑣。
———————————————————————————————————————
提高篇
1.《C和指針》(一定要看,如果只買一本C的書那麼就是這本)
作者: Kenneth A.Reek
譯者: 徐波
出版社: 人民郵電出版社
出版年: 2008年4月
頁數: 448
定價: 65.00
裝幀: 平裝
ISBN: 9787115172013
說明:入門後提高的書,也可以當入門書,但是這本書其實有一定的深度,所以不推薦做第一本!
這本書最大的特點就是和指針結合在一起進行講解。這是最經典的一本我覺得。
———————————————————————————————————————
2.《C程序設計語言(第2版·新版)》
作者: 克尼漢
譯者: 徐寶文
出版社: 機械工業出版社
出版年: 2004-1
頁數: 258
定價: 30.00元
裝幀: 平裝
ISBN: 9787111128069
說明:同名的太多,一定不要買國內的!這本書作者是C語言之父。所以推薦這本書不需要太多的理由吧。
入門後提高的書,也可以當入門書。數很薄但精簡,內容詳實,值得一讀。
———————————————————————————————————————
3.《C語言核心技術》
作者: (美)Peter Prinz TonyCrawford
譯者: O'ReillyTaiwan公司
叢書名:堅果系列
出版社:機械工業出版社
ISBN:9787111220503
上架時間:2007-8-28
出版日期:2007 年8月
開本:16開
頁碼:589
IN A NUTSHELL 系列是程序員的案頭參考書. 本書由O『REILLY台灣公司翻譯,從根本上保證了翻譯的質量。
———————————————————————————————————————
4.《C 陷阱與缺陷》
作者: Andrew Koenig
譯者: 高巍
出版社: 人民郵電出版社
出版年: 2008-2
頁數: 172
定價: 30.00元
裝幀: 平裝
ISBN: 9787115171795
說明:提高的書。這本書雖然著於1989年,但其中的要點卻不過時,講的全是C語言的精華,已經第18次印刷了,多本書里提到這本書。書很薄。
———————————————————————————————————————
5.《C專家編程》
作者: Peter Van / Der Linden
譯者: 徐波
出版社: 人民郵電出版社
出版年: 2008-2
頁數: 291
定價: 45.00元
裝幀: 平裝
ISBN: 9787115171801
說明:提高版,和.《C和指針》.《C 陷阱與缺陷》是一個系列。
———————————————————————————————————————
6《你必須知道的495個C語言問題》
作者: Steve Summit
出版社: 人民郵電出版社
出版年: 2009-2
頁數: 260
定價: 45.00元
裝幀: 平裝
叢書: 圖靈程序設計叢書
ISBN: 9787115194329
說明:這本書講的都是技巧總結,都是經常遇到的一些容易混淆的問題。
———————————————————————————————————————
數據結構和演算法
1.《數據結構基礎(C語言版)第二版》
作者: (美)Ellis Horowitz
譯者:朱仲濤
叢書名:世界著名計算機教材精選
出版社:清華大學出版社
ISBN:9787302186960
上架時間:2009-3-27
出版日期:2009 年3月
開本:16開
頁碼:470
下面是第一版 2本書居然是2個出版社分別翻譯 買一本就夠了千萬不要買重
作者: Ellis Horowitz / Sartaj Sahni / Susan Anderson-Freed
譯者: 李建中 / 張岩 / 李治軍
出版社: 機械工業出版社
出版年: 2006-7
頁數: 376
定價: 48.00元
裝幀: 平裝
ISBN: 9787111187981
說明:層次清晰,代碼質量高。 有一定難度,需要有基礎。書非常經典,適合計算機專業的人進行深入的學習。
———————————————————————————————————————
2.《數據結構與演算法分析:C語言描述(原書第2版)》
副標題: C語言描述
作者: 維斯
譯者: 馮舜璽
出版社: 機械工業出版社
出版年: 2004-1
頁數: 391
定價: 35.00元
裝幀: 平裝
ISBN: 9787111127482
說明:學好基礎以後,還需要看看演算法數據結構的書。
裡面的分析數學公式恰到好處,沒有演算法導論的令人望而生畏,也沒有國內圖書的草草了事,既學習了數據結構又有剛剛好的演算法分析,很容易使人產生共鳴。
㈡ 浙江大學計算機系用的《數據結構》教材的作者是誰
如果你說的是考研的話,那麼計算機系要用的書是:
《Operating System Concepts》(Sixth Edition),Abraham Silberschatz等,高等教育出版社影印版;《計算機組成與設計》潘雪增、平玲娣,浙江大學出版社2004年1月版;《C語言程序設計》第2版(《The C Programming language》Second Edition 的中譯本),ISDN-7-111-07589-7,徐寶文等譯,機械工業出版社,2001年3月;《數據結構》第2版,嚴蔚敏編,清華大學出版社。
其中數據結構是《數據結構》第2版,嚴蔚敏編,清華大學出版社。
但是如果你說的教材的話,是原版的書,勸你到浙大來買原版的。而且不僅是浙大計算機系用這個教材,浙大的很多學院都要求用這個學習數據結構的。
《DATA STRUCTRUES AND ALGORITHM ANALYSIS IN C (second edition)》
Mark Allen Weiss,Addison Wesley Longman,Inc,1997
㈢ 《C程序設計語言第2版·新版》pdf下載在線閱讀全文,求百度網盤雲資源
《C程序設計語言(第2版·新版)》([美] Brian W. Kernighan)電子書網盤下載免費在線閱讀
鏈接: https://pan..com/s/1txJqYzmjYS-BSw43eLWrnQ
書名:C程序設計語言(第2版·新版)
作者:[美] Brian W. Kernighan
譯者:徐寶文
豆瓣評分:9.4
出版社:機械工業出版社
出版年份:2004-1
頁數:258
內容簡介:
在計算機發展的歷史上,沒有哪一種程序設計語言像C語言這樣應用廣泛。本書作者是C語言的設計者之一Dennis M. Ritchie和著名計算機科學家Brian W. Kernighan合著的一本介紹C語言的權威經典著作。我們現在見到的大量論述C語言程序設計的教材和專著均以此書為藍本。
原著第1版中介紹的C語言成為後來廣泛使用的C語言版本——標准C的基礎。人們熟知的「hello,World"程序就是由本書首次引入的,現在,這一程序已經成為眾多程序設計語言入門的第一課。原著第2版根據1987年制定的ANSIC標准做了適當的修訂.引入了最新的語言形式,並增加了新的示例,通過簡潔的描述、典型的示例,作者全面、系統、准確地講述了C語言的各個特性以及程序設計的基本方法。
對於計算機從業人員來說,本書是一本必讀的程序設計語言方面的參考書。
作者簡介:
Brian W. Kernighan,貝爾實驗室計算科學研究中心高級研究人員,著名的計算機科學家。參加了UNIX系統、C語言、AWK語言和許多其他系統的開發,同時出版了許多在計算機領域具有影響的著作,如《The Elements of Programming Style》《The Practice of Programming》《The UNIX Programming Environment》《The AWK Language》《Software Tools》等。
Dennis M. Ritchie,1967年加入貝爾實驗室。他和 Ken L. Thompson 兩人共同設計並實現的C語言改變了程序設計語言發展的軌跡,是程序設計語言發展過程中的一個重要里程碑。與此同時,他們還設計並實現了UNIX操作系統。正是由於這兩項巨大貢獻,Dennis M. Ritchie 於1983年獲得了計算機界的最高獎——圖靈獎。此外,他還獲得了ACM、IEEE、貝爾實驗室等授予的多種獎項.。
㈣ c語言入門的電子書
如果是沒接觸過C同學,建議先看一看譚浩強的《C程序設計》(第三版),清華大學出版社
然後再看看C語言的四書五經(下附),基本上把這些看完C就算是入門了,重要的是平時學習過程中要注意
結合實際,多多上機實踐才好
祝你學習有成。
哦,還是不要看TXT的了,會有部分亂碼的;pdf的雖然大一些,但一目瞭然,更有助於你的學習的
一、The C Programming Language
C程序設計語言(第2版·新版)
原出版社: Prentice Hall PTR
作者: [美]Brian W.Kernighan,Dennis M.Ritchie
譯者: 徐寶文 李志
書號: 7-111-12806-0
頁碼: 258
開本: 16開 版次:2-1
叢書名: 計算機科學叢書
出版社: 機械工業出版社
出版日期: 2004-1-1
定價: ¥30.00
二、Pointers on C
C和指針
原出版社: Pearson Ecation
作者: Kenneth A.Reek
譯者: 徐波
書號: 7-115-11456-0
頁碼: 450
開本: 16開 版次:1-1
叢書名: C和C++實務精選
出版社: 人民郵電出版社
出版日期: 2003-9-1
定價: ¥55.00
三、Expert C Programming
C專家編程
原出版社: PH PTR
作者: Perter Van Der LinDen
譯者: 徐波
書號: 7-115-10627-4
頁碼: 291
開本: 16開 版次:1-1
叢書名: C和C++實務精選
出版社: 人民郵電出版社
出版日期: 2002-12-1
定價: ¥40.00
四、C Traps and Pitfalls
C陷阱與缺陷
原出版社: Addison Wesley
作者: Andrew Koenig
譯者: 高巍
書號: 7-115-10623-1
頁碼: 172
開本: 16開 版次:1-1
叢書名: C和C++實務精選
出版社: 人民郵電出版社
出版日期: 2002-11-1
定價: ¥30.00
㈤ 《C程序設計語言第2版·新版》epub下載在線閱讀,求百度網盤雲資源
《C程序設計語言(第2版·新版)》([美] Brian W. Kernighan)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接: https://pan..com/s/1VcMvPqk3VW0er-VOqODP3A
書名:C程序設計語言(第2版·新版)
作者:[美] Brian W. Kernighan
譯者:徐寶文
豆瓣評分:9.4
出版社:機械工業出版社
出版年份:2004-1
頁數:258
內容簡介:在計算機發展的歷史上,沒有哪一種程序設計語言像C語言這樣應用廣泛。本書作者是C語言的設計者之一Dennis M. Ritchie和著名計算機科學家Brian W. Kernighan合著的一本介紹C語言的權威經典著作。我們現在見到的大量論述C語言程序設計的教材和專著均以此書為藍本。
原著第1版中介紹的C語言成為後來廣泛使用的C語言版本——標准C的基礎。人們熟知的「hello,World"程序就是由本書首次引入的,現在,這一程序已經成為眾多程序設計語言入門的第一課。原著第2版根據1987年制定的ANSIC標准做了適當的修訂.引入了最新的語言形式,並增加了新的示例,通過簡潔的描述、典型的示例,作者全面、系統、准確地講述了C語言的各個特性以及程序設計的基本方法。
對於計算機從業人員來說,本書是一本必讀的程序設計語言方面的參考書。
作者簡介:Brian W. Kernighan,貝爾實驗室計算科學研究中心高級研究人員,著名的計算機科學家。參加了UNIX系統、C語言、AWK語言和許多其他系統的開發,同時出版了許多在計算機領域具有影響的著作,如《The Elements of Programming Style》《The Practice of Programming》《The UNIX Programming Environment》《The AWK Language》《Software Tools》等。
Dennis M. Ritchie,1967年加入貝爾實驗室。他和 Ken L. Thompson 兩人共同設計並實現的C語言改變了程序設計語言發展的軌跡,是程序設計語言發展過程中的一個重要里程碑。與此同時,他們還設計並實現了UNIX操作系統。正是由於這兩項巨大貢獻,Dennis M. Ritchie 於1983年獲得了計算機界的最高獎——圖靈獎。此外,他還獲得了ACM、IEEE、貝爾實驗室等授予的多種獎項.。
㈥ 求這本K&R《C程序設計語言》書籍的出版社
㈦ C語言四書五經的書名,英文名,出版社
一、The C Programming Language
C程序設計語言(第2版·新版)
原出版社: Prentice Hall PTR
作者: [美]Brian W.Kernighan,Dennis M.Ritchie
譯者: 徐寶文 李志
書號: 7-111-12806-0
頁碼: 258
開本: 16開 版次:2-1
叢書名: 計算機科學叢書
出版社: 機械工業出版社
出版日期: 2004-1-1
定價: ¥30.00 二、Pointers on C
C和指針
原出版社: Pearson Ecation
作者: Kenneth A.Reek
譯者: 徐波
書號: 7-115-11456-0
頁碼: 450
開本: 16開 版次:1-1
叢書名: C和C++實務精選
出版社: 人民郵電出版社
出版日期: 2003-9-1
定價: ¥55.00
三、Expert C Programming
C專家編程
原出版社: PH PTR
作者: Perter Van Der LinDen
譯者: 徐波
書號: 7-115-10627-4
頁碼: 291
開本: 16開 版次:1-1
叢書名: C和C++實務精選
出版社: 人民郵電出版社
出版日期: 2002-12-1
定價: ¥40.00 四、C Traps and Pitfalls
C陷阱與缺陷
原出版社: Addison Wesley
作者: Andrew Koenig
譯者: 高巍
書號: 7-115-10623-1
頁碼: 172
開本: 16開 版次:1-1
叢書名: C和C++實務精選
出版社: 人民郵電出版社
出版日期: 2002-11-1
定價: ¥30.00
㈧ 如何成為一個Linux內核開發者
如何參與Linux內核開發
---------------------
這是一篇將如何參與Linux內核開發的相關問題一網打盡的終極秘笈。它將指導你
成為一名Linux內核開發者,並且學會如何同Linux內核開發社區合作。它盡可能不
包括任何關於內核編程的技術細節,但會給你指引一條獲得這些知識的正確途徑。
如果這篇文章中的任何內容不再適用,請給文末列出的文件維護者發送補丁。
入門
----
你想了解如何成為一名Linux內核開發者?或者老闆吩咐你「給這個設備寫個Linux
驅動程序」?這篇文章的目的就是教會你達成這些目標的全部訣竅,它將描述你需
要經過的流程以及給出如何同內核社區合作的一些提示。它還將試圖解釋內核社區
為何這樣運作。
Linux內核大部分是由C語言寫成的,一些體系結構相關的代碼用到了匯編語言。要
參與內核開發,你必須精通C語言。除非你想為某個架構開發底層代碼,否則你並
不需要了解(任何體系結構的)匯編語言。下面列舉的書籍雖然不能替代扎實的C
語言教育和多年的開發經驗,但如果需要的話,做為參考還是不錯的:
- "The C Programming Language" by Kernighan and Ritchie [Prentice Hall]
《C程序設計語言(第2版·新版)》(徐寶文 李志 譯)[機械工業出版社]
- "Practical C Programming" by Steve Oualline [O'Reilly]
《實用C語言編程(第三版)》(郭大海 譯)[中國電力出版社]
- "C: A Reference Manual" by Harbison and Steele [Prentice Hall]
《C語言參考手冊(原書第5版)》(邱仲潘 等譯)[機械工業出版社]
Linux內核使用GNU C和GNU工具鏈開發。雖然它遵循ISO C89標准,但也用到了一些
標准中沒有定義的擴展。內核是自給自足的C環境,不依賴於標准C庫的支持,所以
並不支持C標准中的部分定義。比如long long類型的大數除法和浮點運算就不允許
使用。有時候確實很難弄清楚內核對工具鏈的要求和它所使用的擴展,不幸的是目
前還沒有明確的參考資料可以解釋它們。請查閱gcc信息頁(使用「info gcc」命令
顯示)獲得一些這方面信息。
請記住你是在學習怎麼和已經存在的開發社區打交道。它由一群形形色色的人組成,
他們對代碼、風格和過程有著很高的標准。這些標準是在長期實踐中總結出來的,
適應於地理上分散的大型開發團隊。它們已經被很好得整理成檔,建議你在開發
之前盡可能多的學習這些標准,而不要期望別人來適應你或者你公司的行為方式。
法律問題
--------
Linux內核源代碼都是在GPL(通用公共許可證)的保護下發布的。要了解這種許可
的細節請查看源代碼主目錄下的COPYING文件。如果你對它還有更深入問題請聯系
律師,而不要在Linux內核郵件組上提問。因為郵件組里的人並不是律師,不要期
望他們的話有法律效力。
對於GPL的常見問題和解答,請訪問以下鏈接:
http://www.gnu.org/licenses/gpl-faq.html
文檔
----
Linux內核代碼中包含有大量的文檔。這些文檔對於學習如何與內核社區互動有著
不可估量的價值。當一個新的功能被加入內核,最好把解釋如何使用這個功能的文
檔也放進內核。當內核的改動導致面向用戶空間的介面發生變化時,最好將相關信
息或手冊頁(manpages)的補丁發到[email protected],以向手冊頁(manpages)
的維護者解釋這些變化。
以下是內核代碼中需要閱讀的文檔:
README
文件簡要介紹了Linux內核的背景,並且描述了如何配置和編譯內核。內核的
新用戶應該從這里開始。
Documentation/Changes
文件給出了用來編譯和使用內核所需要的最小軟體包列表。
Documentation/CodingStyle
描述Linux內核的代碼風格和理由。所有新代碼需要遵守這篇文檔中定義的規
范。大多數維護者只會接收符合規定的補丁,很多人也只會幫忙檢查符合風格
的代碼。
Documentation/SubmittingPatches
Documentation/SubmittingDrivers
這兩份文檔明確描述如何創建和發送補丁,其中包括(但不僅限於):
- 郵件內容
- 郵件格式
- 選擇收件人
遵守這些規定並不能保證提交成功(因為所有補丁需要通過嚴格的內容和風格
審查),但是忽視他們幾乎就意味著失敗。
其他關於如何正確地生成補丁的優秀文檔包括:
"The Perfect Patch"
http://userweb.kernel.org/~akpm/stuff/tpp.txt
"Linux kernel patch submission format"
http://linux.yyz.us/patch-format.html
Documentation/stable_api_nonsense.txt
論證內核為什麼特意不包括穩定的內核內部API,也就是說不包括像這樣的特
性:
- 子系統中間層(為了兼容性?)
- 在不同操作系統間易於移植的驅動程序
- 減緩(甚至阻止)內核代碼的快速變化
這篇文檔對於理解Linux的開發哲學至關重要。對於將開發平台從其他操作系
統轉移到Linux的人來說也很重要。
Documentation/SecurityBugs
如果你認為自己發現了Linux內核的安全性問題,請根據這篇文檔中的步驟來
提醒其他內核開發者並幫助解決這個問題。
Documentation/ManagementStyle
描述內核維護者的工作方法及其共有特點。這對於剛剛接觸內核開發(或者對
它感到好奇)的人來說很重要,因為它解釋了很多對於內核維護者獨特行為的
普遍誤解與迷惑。
Documentation/stable_kernel_rules.txt
解釋了穩定版內核發布的規則,以及如何將改動放入這些版本的步驟。
Documentation/kernel-docs.txt
有助於內核開發的外部文檔列表。如果你在內核自帶的文檔中沒有找到你想找
的內容,可以查看這些文檔。
Documentation/applying-patches.txt
關於補丁是什麼以及如何將它打在不同內核開發分支上的好介紹
內核還擁有大量從代碼自動生成的文檔。它包含內核內部API的全面介紹以及如何
妥善處理加鎖的規則。生成的文檔會放在 Documentation/DocBook/目錄下。在內
核源碼的主目錄中使用以下不同命令將會分別生成PDF、Postscript、HTML和手冊
頁等不同格式的文檔:
make pdfdocs
make psdocs
make htmldocs
make mandocs
如何成為內核開發者
------------------
如果你對Linux內核開發一無所知,你應該訪問「Linux內核新手」計劃:
http://kernelnewbies.org
它擁有一個可以問各種最基本的內核開發問題的郵件列表(在提問之前一定要記得
查找已往的郵件,確認是否有人已經回答過相同的問題)。它還擁有一個可以獲得
實時反饋的IRC聊天頻道,以及大量對於學習Linux內核開發相當有幫助的文檔。
網站簡要介紹了源代碼組織結構、子系統劃分以及目前正在進行的項目(包括內核
中的和單獨維護的)。它還提供了一些基本的幫助信息,比如如何編譯內核和打補
丁。
如果你想加入內核開發社區並協助完成一些任務,卻找不到從哪裡開始,可以訪問
「Linux內核房管員」計劃:
http://kernelnewbies.org/KernelJanitors
這是極佳的起點。它提供一個相對簡單的任務列表,列出內核代碼中需要被重新
整理或者改正的地方。通過和負責這個計劃的開發者們一同工作,你會學到將補丁
集成進內核的基本原理。如果還沒有決定下一步要做什麼的話,你還可能會得到方
向性的指點。
如果你已經有一些現成的代碼想要放到內核中,但是需要一些幫助來使它們擁有正
確的格式。請訪問「內核導師」計劃。這個計劃就是用來幫助你完成這個目標的。它
是一個郵件列表,地址如下:
http://selenic.com/mailman/listinfo/kernel-mentors
在真正動手修改內核代碼之前,理解要修改的代碼如何運作是必需的。要達到這個
目的,沒什麼辦法比直接讀代碼更有效了(大多數花招都會有相應的注釋),而且
一些特製的工具還可以提供幫助。例如,「Linux代碼交叉引用」項目就是一個值得
特別推薦的幫助工具,它將源代碼顯示在有編目和索引的網頁上。其中一個更新及
時的內核源碼庫,可以通過以下地址訪問:
http://sosdg.org/~coywolf/lxr/
開發流程
--------
目前Linux內核開發流程包括幾個「主內核分支」和很多子系統相關的內核分支。這
些分支包括:
- 2.6.x主內核源碼樹
- 2.6.x.y -stable內核源碼樹
- 2.6.x -git內核補丁集
- 2.6.x -mm內核補丁集
- 子系統相關的內核源碼樹和補丁集
2.6.x內核主源碼樹
-----------------
2.6.x內核是由Linus Torvalds(Linux的創造者)親自維護的。你可以在
kernel.org網站的pub/linux/kernel/v2.6/目錄下找到它。它的開發遵循以下步
驟:
- 每當一個新版本的內核被發布,為期兩周的集成窗口將被打開。在這段時間里
維護者可以向Linus提交大段的修改,通常這些修改已經被放到-mm內核中幾個
星期了。提交大量修改的首選方式是使用git工具(內核的代碼版本管理工具
,更多的信息可以在http://git.or.cz/獲取),不過使用普通補丁也是可以
的。
- 兩個星期以後-rc1版本內核發布。之後只有不包含可能影響整個內核穩定性的
新功能的補丁才可能被接受。請注意一個全新的驅動程序(或者文件系統)有
可能在-rc1後被接受是因為這樣的修改完全獨立,不會影響其他的代碼,所以
沒有造成內核退步的風險。在-rc1以後也可以用git向Linus提交補丁,不過所
有的補丁需要同時被發送到相應的公眾郵件列表以征詢意見。
- 當Linus認為當前的git源碼樹已經達到一個合理健全的狀態足以發布供人測試
時,一個新的-rc版本就會被發布。計劃是每周都發布新的-rc版本。
- 這個過程一直持續下去直到內核被認為達到足夠穩定的狀態,持續時間大概是
6個星期。
- 以下地址跟蹤了在每個-rc發布中發現的退步列表:
http://kernelnewbies.org/known_regressions
關於內核發布,值得一提的是Andrew Morton在linux-kernel郵件列表中如是說:
「沒有人知道新內核何時會被發布,因為發布是根據已知bug的情況來決定
的,而不是根據一個事先制定好的時間表。」
2.6.x.y -stable(穩定版)內核源碼樹
-----------------------------------
由4個數字組成的內核版本號說明此內核是-stable版本。它們包含基於2.6.x版本
內核的相對較小且至關重要的修補,這些修補針對安全性問題或者嚴重的內核退步。
這種版本的內核適用於那些期望獲得最新的穩定版內核並且不想參與測試開發版或
者實驗版的用戶。
如果沒有2.6.x.y版本內核存在,那麼最新的2.6.x版本內核就相當於是當前的穩定
版內核。
2.6.x.y版本由「穩定版」小組(郵件地址<[email protected]>)維護,一般隔周發
布新版本。
內核源碼中的Documentation/stable_kernel_rules.txt文件具體描述了可被穩定
版內核接受的修改類型以及發布的流程。
2.6.x -git補丁集
----------------
Linus的內核源碼樹的每日快照,這個源碼樹是由git工具管理的(由此得名)。這
些補丁通常每天更新以反映Linus的源碼樹的最新狀態。它們比-rc版本的內核源碼
樹更具試驗性質,因為這個補丁集是全自動生成的,沒有任何人來確認其是否真正
健全。
2.6.x -mm補丁集
---------------
這是由Andrew Morton維護的試驗性內核補丁集。Andrew將所有子系統的內核源碼
和補丁拼湊到一起,並且加入了大量從linux-kernel郵件列表中採集的補丁。這個
源碼樹是新功能和補丁的試煉場。當補丁在-mm補丁集里證明了其價值以後Andrew
或者相應子系統的維護者會將補丁發給Linus以便集成進主內核源碼樹。
在將所有新補丁發給Linus以集成到主內核源碼樹之前,我們非常鼓勵先把這些補
丁放在-mm版內核源碼樹中進行測試。
這些內核版本不適合在需要穩定運行的系統上運行,因為運行它們比運行任何其他
內核分支都更具有風險。
如果你想為內核開發進程提供幫助,請嘗試並使用這些內核版本,並在
linux-kernel郵件列表中提供反饋,告訴大家你遇到了問題還是一切正常。
通常-mm版補丁集不光包括這些額外的試驗性補丁,還包括發布時-git版主源碼樹
中的改動。
-mm版內核沒有固定的發布周期,但是通常在每兩個-rc版內核發布之間都會有若干
個-mm版內核發布(一般是1至3個)。
子系統相關內核源碼樹和補丁集
----------------------------
相當一部分內核子系統開發者會公開他們自己的開發源碼樹,以便其他人能了解內
核的不同領域正在發生的事情。如上所述,這些源碼樹會被集成到-mm版本內核中。
下面是目前可用的一些內核源碼樹的列表:
通過git管理的源碼樹:
- Kbuild開發源碼樹, Sam Ravnborg <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild.git
- ACPI開發源碼樹, Len Brown <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
- 塊設備開發源碼樹, Jens Axboe <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git
- DRM開發源碼樹, Dave Airlie <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git
- ia64開發源碼樹, Tony Luck <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git
- ieee1394開發源碼樹, Jody McIntyre <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/scjody/ieee1394.git
- infiniband開發源碼樹, Roland Dreier <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git
- libata開發源碼樹, Jeff Garzik <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git
- 網路驅動程序開發源碼樹, Jeff Garzik <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
- pcmcia開發源碼樹, Dominik Brodowski <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git
- SCSI開發源碼樹, James Bottomley <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
使用quilt管理的補丁集:
- USB, PCI, 驅動程序核心和I2C, Greg Kroah-Hartman <[email protected]>
kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
- x86-64, 部分i386, Andi Kleen <[email protected]>
ftp.firstfloor.org:/pub/ak/x86_64/quilt/
其他內核源碼樹可以在http://git.kernel.org的列表中和MAINTAINERS文件里
找到。
報告bug
-------
bugzilla.kernel.org是Linux內核開發者們用來跟蹤內核Bug的網站。我們鼓勵用
戶在這個工具中報告找到的所有bug。如何使用內核bugzilla的細節請訪問:
http://test.kernel.org/bugzilla/faq.html
內核源碼主目錄中的REPORTING-BUGS文件里有一個很好的模板。它指導用戶如何報
告可能的內核bug以及需要提供哪些信息來幫助內核開發者們找到問題的根源。
利用bug報告
-----------
練習內核開發技能的最好辦法就是修改其他人報告的bug。你不光可以幫助內核變
得更加穩定,還可以學會如何解決實際問題從而提高自己的技能,並且讓其他開發
者感受到你的存在。修改bug是贏得其他開發者贊譽的最好辦法,因為並不是很多
人都喜歡浪費時間去修改別人報告的bug。
要嘗試修改已知的bug,請訪問http://bugzilla.kernel.org網址。如果你想獲得
最新bug的通知,可以訂閱bugme-new郵件列表(只有新的bug報告會被寄到這里)
或者訂閱bugme-janitor郵件列表(所有bugzilla的變動都會被寄到這里)。
https://lists.linux-foundation.org/mailman/listinfo/bugme-new
https://lists.linux-foundation.org/mailman/listinfo/bugme-janitors
郵件列表
--------
正如上面的文檔所描述,大多數的骨幹內核開發者都加入了Linux Kernel郵件列
表。如何訂閱和退訂列表的細節可以在這里找到:
http://vger.kernel.org/vger-lists.html#linux-kernel
網上很多地方都有這個郵件列表的存檔(archive)。可以使用搜索引擎來找到這些
存檔。比如:
http://dir.gmane.org/gmane.linux.kernel
在發信之前,我們強烈建議你先在存檔中搜索你想要討論的問題。很多已經被詳細
討論過的問題只在郵件列表的存檔中可以找到。
大多數內核子系統也有自己獨立的郵件列表來協調各自的開發工作。從
MAINTAINERS文件中可以找到不同話題對應的郵件列表。
很多郵件列表架設在kernel.org伺服器上。這些列表的信息可以在這里找到:
http://vger.kernel.org/vger-lists.html
在使用這些郵件列表時,請記住保持良好的行為習慣。下面的鏈接提供了與這些列
表(或任何其它郵件列表)交流的一些簡單規則,雖然內容有點濫竽充數。
http://www.albion.com/netiquette/
當有很多人回復你的郵件時,郵件的抄送列表會變得很長。請不要將任何人從抄送
列表中刪除,除非你有足夠的理由這么做。也不要只回復到郵件列表。請習慣於同
一封郵件接收兩次(一封來自發送者一封來自郵件列表),而不要試圖通過添加一
些奇特的郵件頭來解決這個問題,人們不會喜歡的。
記住保留你所回復內容的上下文和源頭。在你回復郵件的頂部保留「某某某說到……」
這幾行。將你的評論加在被引用的段落之間而不要放在郵件的頂部。
如果你在郵件中附帶補丁,請確認它們是可以直接閱讀的純文本(如
Documentation/SubmittingPatches文檔中所述)。內核開發者們不希望遇到附件
或者被壓縮了的補丁。只有這樣才能保證他們可以直接評論你的每行代碼。請確保
你使用的郵件發送程序不會修改空格和製表符。一個防範性的測試方法是先將郵件
發送給自己,然後自己嘗試是否可以順利地打上收到的補丁。如果測試不成功,請
調整或者更換你的郵件發送程序直到它正確工作為止。
總而言之,請尊重其他的郵件列表訂閱者。
㈨ C語言四書五經是哪4本書
C程序設計之四書五經
自從Dennis M.Ritchie於1973年設計並實現C語言以來,計算機程序設計領域已經發生了巨大的變化。以C語言為根基的C++、Java和C#等面向對象語言相繼誕生,並在各自領域大獲成功。今天,C及其後裔幾乎統治了計算機程序設計世界。可以這么說,C語言的誕生是現代程序語言革命的起點,它改變了程序設計語言發展的軌跡,是程序設計語言發展史中的一個里程碑。
然而,C並不僅僅是其他語言的起點和基礎,否則它早已成為程序設計語言發展過程中又一個被遺棄者。和當初發明時一樣,C語言今天依然至關重要。它的表達力、效率、簡練、緊湊、對機器的最終控制以及跨平台的高度移植性,使其在系統編程、嵌入式編程等領域一直占據著統治地位,而C99標準的制訂則再一次使C語言煥發出新的活力。下文介紹C程序設計領域中的幾本好書,其中一些堪稱經典。
1. Brian W.Kernighan, Dennis M.Ritchie,《C程序設計語言》,機械工業出版社
這是迄今為止在所有程序設計語言書籍中最廣受尊敬的一部經典,是任何一名C程序員的必讀之作。因為出自C語言的設計者Dennis M.Ritchie和著名的計算機科學家Brian W.Kernighan之手,它被昵稱為「K&R C」。是它首先引入了「Hello World!」程序,這個程序幾乎成了後來任何一本入門性程序設計語言書籍中的第一個例子。
如同C語言本身簡潔緊湊而極具威力一樣,這本書輕薄短小而極富張力。通過簡潔的描述和典型的示例,它全面、系統、准確地講述了C語言的各個特性以及C程序設計的基本方法,內容涵蓋基本概念、類型和表達式、控制流、函數與程序結構、指針與數組、結構、輸入與輸出、UNIX系統介面以及標准庫等內容。
簡潔清晰是這本書最大的特色。這本小書可以教給你許多比它厚幾倍的「大部頭」的知識。我認為那些動輒洋洋灑灑拼湊出好幾百頁乃至上千頁的技術作者應該好好向K&R學一學。對於中、高級程序員而言,如果希望迅速獲得C語言的嚴肅知識而又不願意多花費哪怕一丁點時間,這本書就是首選。
順便說一句,這本書的索引製作非常出色,極具實用價值,這可能首先要歸功於正文部分的簡明扼要。此外,盡管它看上去很像一本教程,但其實更是一本寫給專業程序員的指南。如果你不具備任何其他語言程序設計背景或基本的C語言知識,這本書也許並不適合用作你的C語言啟蒙讀物。
2. Perter Van Der LinDen,《C專家編程》,人民郵電出版社
C語言是嚴肅的程序員語言,但這並不意味著C語言書籍必須板著面孔說教。在這本被C程序員昵稱為「魚書」(封面上有一條「醜陋的」腔棘魚)的著作中,作為SUN公司編譯器和操作系統核心開發組成員之一,Peter淋漓盡致地展示了其深厚的技術沉澱、豐富的項目經驗、高超的寫作技巧以及招牌式的幽默。在這部作品中,作者以流暢的文字、詼諧的筆法將逸聞典故、智慧和幽默自然地融入技術描述中,讀來宛若一本小說,極富趣味。
本書講述了C語言的歷史、語言特性、聲明、數組、指針、連接、運行時以及內存使用等知識,揭示了C語言中許多隱晦之處,尤其深入解析了聲明、數組和指針、內存使用等方面的細節。要想成為一名專家級C程序員,這些內容都是必須掌握的。和其他滿是抽象例子的C語言書籍不同,這本書充滿了大量的來自真實世界的C程序設計實例,它們對C程序員具有很高的參照價值。另外,每一章都以極富趣味的「輕松一下」收尾,而附錄A「程序員工作面試的秘密」則是任何語言的程序員在應聘工作前增強自信的好材料。
我懷疑真正的C專家可能用不著看這本書 — 從內容到組織方式到行文風格都決定了這是一本輕松愉快的「從菜鳥到高手」的進階讀本,所以,它理應擁有更廣泛的讀者群。初級程序員往往更需要熱情的鼓勵,在閱讀這本書的過程中,你定會深深地被作者對編程的激情所感染。
世間並無完美。我認為這本書的缺陷在於,和大多數平庸的C語言書籍一樣,它畫蛇添足地加入了一章關於C++的描述。在今天看來,這個描述既不全面也有失公允。不過,鑒於作者是在1994年從一名C程序員的角度去觀察C++,這一點也就不足為奇了。
3. Samuel P. Harbison, Guy L. Steele,《C語言參考手冊(第五版)》(影印版),人民郵電出版社
在C語言參考手冊類書籍里,Samuel P. Harbison 和Guy L. Steele合著的《C: A Reference Manual》是非常出色的一本。這本手冊的第五版新增了對C99標準的介紹,以便滿足新時期C語言學習的需要。全書共分為兩大部分,第一部分專注於C語言特性,第二部分則全面討論了C標准庫。本書涵蓋C99、C89、傳統的C、所有版本的C運行庫以及編寫與C++兼容的C代碼等一切知識。
這本手冊只是中等厚度,但它比「比它更厚」的其他參考手冊更清晰地描述了C語言的現在和過去的方方面面。整本手冊技術細節描述精確,組織條理清楚,內容完備詳盡而又簡明扼要。可以這么說,它在廣度、深度和精度方面都是出類拔萃的。對於中、高級C程序員而言,這本手冊值得常備案頭,它幾乎肯定要比K&R的著作使用頻率更高。
2004年2月1日補充:我手頭有這本書的中文版:《C語言參考手冊》(機械工業出版社出版)。它在很大程度上減輕了我的查閱負擔,不過偶爾也增加了理解上的困難。
4. David Hanson,《C語言介面與實現:創建可重用軟體的技術》,機械工業出版社
C語言能夠歷經三十多年而不衰,一個重要的原因在於它的適應能力。在這「復用」、「面向對象」、「組件」、「異常處理」等先進機制漫天飛舞的年代,C語言仍然能夠憑借它小而優雅的語言特性,在相當程度上滿足現代軟體體系架構提出的要求。只不過,想要達到這個程度,必須要在C的應用功力上達到最高層次。在嵌入式、系統軟體以及對性能要求極高的系統開發中,開發人員必須達到這樣的層次,熟練掌握C語言的高級特性,才能夠同時滿足效率和靈活性、復用性的要求。可惜,雖然C語言技術圖書汗牛充棟,但是關注這個峰頂之域的作品卻是屈指可數。David Hanson的《C Interfaces and Implementations》就是個中翹楚。
David Hanson是業內大名鼎鼎的自由編譯器lcc的合作者。在這個項目中,他負責提供高度可復用的基礎架構。在不斷的實踐中,他完全使用ANSI C形成了一整套可復用組件庫。這套組件庫架構清晰,性能優異,而且提供了很多高級的特性,比如類Win32 SEH的異常處理機制,可移植的線程庫,高性能的內存池,豐富的可復用數據結構組件。David Hanson把他在創作這些組件的過程中所積累的心得以及對其源碼的精緻剖析原原本本地寫在了這本書里。這樣的著作,當然堪稱C語言領域里的銘心絕品。難怪已故著名技術作家Richard Stevens對此書贊不絕口,他說:「這本書中的技術,對於大部分C程序員來說,已經遺忘得太久了。」對於希望能在C語言應用上達到最高層次的核心程序員而言,這本書是難得的必讀之作。
其他
除了以上四本書以外,我還樂意推薦Andrew Koenig的著作《C陷阱和缺陷》(人民郵電出版社)和Deitel父子合著的《C How to Program》兩本書。
Andrew Koenig是世界上屈指可數的C++專家,他的這本書可能是最薄的一本C語言經典。它簡明扼要地講述了C程序設計中的陷阱和缺陷,包括詞法陷阱、語法陷阱、語義陷阱、連接、庫函數、預處理器以及可移植性缺陷等,最後一章還給出了關於如何減少程序錯誤的建議以及前面各章問題的參考答案。盡管這個小冊子成書於C89標准制定之前,然而,即使到了C99早已頒布的今天,書中提到的大多數陷阱和缺陷一如十五年前那樣使我們警醒。
Deitel父子合著的《C How to Program》一直是非常好的C語言入門教程,我手頭的中譯本名為《C程序設計教程》(機械工業出版社出版,原書第二版)。除了對技術的正規描述(輔以許多簡明扼要的例子)外,每一章後面都帶有小結、術語、常見的程序設計錯誤、良好的程序設計習慣、性能忠告、可移植性忠告、軟體工程評述、自我測驗練習及答案等。整書內容清晰,組織良好,易於閱讀和理解。值得一提的是,有許多入門書讀完一遍即可扔掉,而這一本是個例外。
結語
以上這幾本書很大程度上局限於描述C語言及標准庫本身,如果希望學習更專業的、領域相關的C程序設計技術,你可以在選擇閱讀這幾本書的基礎上繼續查閱專門書籍。此外,在C語言書籍領域,水平不相上下的作品有很多,這幾本只是根據我自身的閱讀體驗而做出的推薦。
我並不是一名C程序員,我的大多數時間都花在C的後裔語言尤其是C++身上了。然而,正如你知道的那樣,C++並不全是類和模板,不全是面向對象和泛型編程,在較低的層面,C++的各個實現一如既往在很大程度上兼容C。C++和C的親密關系決定了每一本C語言經典都應該是C++程序員的讀物。
這世界變化得真是太快。各色新事物層出不窮,讓人眼花繚亂、目不暇接。人們也很容易被那些五光十色的花哨玩意兒所吸引,常常會忘記構築過去、現在和未來的堅實基礎。C語言就是這樣的基礎之一。今天,世界上有許多我們看不見的重要軟體是用C語言(以及C++等)編寫而成的,正是它們在默默地支撐著這個信息世界的運轉。
㈩ 求適合自學的C語言教材!
凡是和計算機有關的書,我不推薦國產。雖然我不崇洋迷外,但是學習這么重要的事情,沒必要在乎支不支持國產。我一直在用C prime plus這本,系統地看過3遍。你能體會出老外的這些作者能把代碼這么無聊的東西描繪得那麼風趣,不僅僅是在學習,更是在享受
而且這本書很基礎,由淺入深,很適合新手,因為我當年就是新手,靠的就是它,能打下很好的基礎