1. 程式人生 > >學習C語言的教材、如何成為一名優秀的C程式設計師、激發程式設計師創意的6本書、國外程式設計師推薦:每個程式設計師都應讀的書

學習C語言的教材、如何成為一名優秀的C程式設計師、激發程式設計師創意的6本書、國外程式設計師推薦:每個程式設計師都應讀的書

學習C語言的教材

我的C語言是自學的,這些年看過不少教材。

下面,我對其中一些教材做個點評。

1. How to Think Like a Computer Scientist: C version

這是我讀過最易懂的C語言教材。

雖然它只講解最基本的語法,但是寫得特別好懂,深入淺出,讀起來不覺得累,而且它還允許免費下載。我認為,這是C語言的首選入門教材。

上面這兩本,都是著名的C語言初級教材,都是厚厚的大部頭。

我通讀過它們,感覺都寫得不錯,都值得推薦。但是因為這兩本書定位類似,內容重複,相比之下,我覺得可能更適合中國讀者的思維,更易讀一些。

3. C Programming Language (2nd Edition) (《》)

這是最著名的C語言書籍。

但是,它不是寫給初學者看的,更偏重C語言的程式設計技巧和演算法思維。我讀過兩遍,還是覺得很多地方沒讀懂。

4. 國產教材

通常來說,國產教材質量不高,不值得推薦。但是有兩本,我想特別提一下。

,康莉等著,機械工業出版社,2009。

這本是我在圖書館裡偶然撿起來的,翻了幾頁,發現是原創的,而且寫得比較認真,程式碼解釋詳盡,行文錯誤少,就把它讀完了。我認為,在國產教材中,這本書的質量很高,值得推薦。

這本書在國產書籍中罕見地採用了GFDL許可證,

http://learn.akae.cn有線上閱讀,可以免費下載。這一點值得高度肯定。

但是,正如前言所說,它的主要資料來源是兩本英語教材《How To Think Like A Computer Scientist: Learning with C++》和《Programming from the Ground Up》,以及一些教師的上課講義,然後拼在一起,做成一本書。所以,造成它的體系比較生硬,缺乏整體感,銜接得不好,很多地方沒有做到由潛入深、循序漸進。所以,我覺得這本書不適合初學者,可以當做手冊查資料。

5. Beginning Linux Programming / 《》

這是我現在正在閱讀的書。我看它在Amazon上排名Linux C程式設計的第一位,就選了它。

它主要講解如何用C語言呼叫Linux的系統API,偏重基本概念的解釋,我已經讀了兩章,感覺還不錯。

下面想聽聽大家的意見。

我現在的C語言,到了這樣一個水平:語法已經基本掌握了,可以獨立開發一些小程式。下一步,我想進一步提高C語言水平,主要用於Linux開發。

大家能不能推薦一些C語言的中級教材?

如何成為一名優秀的C程式設計師

問題的提出

每過一段時間我總會收到一些程式設計師發來的電子郵件,他們會問我是用什麼程式語言來編寫自己的遊戲的,以及我是如何學習這種程式語言的。因此,我認為在這篇博文裡列出一些有關C語言的最佳讀物應該能幫到不少人。如果你知道其它的優秀讀物,請給我發郵件或者直接在評論欄中告訴我吧。

問題的解答(你可以略過這部分)

我在之前的一篇博文中已經提到過了,目前為止,所有我所編寫的商業3D引擎95%都是C89(也稱作標準C,或ANSI C)。我之所以選擇C89而不是C99是因為有些編譯器仍然不能完美支援C99標準。而且從第一天起,我就強制規定遊戲需要能在iOS、Windows和Xbox 360平臺上都能編譯。根據我所選擇的編譯平臺,剩下5%的程式碼是Objective-C(iOS)或者C++(Windows,Mac OS X),這是為了將引擎繫結到原生的輸入/輸出裝置上。沒想到的是,選擇C還是C++這個主題在reddit曾上引發了很大的爭議。我選擇C的兩個真正原因是:

● 我寫引擎時對C++掌握的並不算好。平臺資源非常有限(iPhone 2G),而且我知道我得對我的工具(程式語言)相當熟悉才能使遊戲達到每秒60幀的速度。

● 因為我研讀過id Software(著名遊戲製作公司,Doom系列、Quake系列是其代表作,開創了FPS型別遊戲的先河)釋出過的原始碼,用純C完成一個商業遊戲是我的夢想。

這算是“好”的選擇嗎?我想,到最後唯一合理的問題是:“你的遊戲釋出了嗎?”以及“它跑的夠快嗎?”看看那令人難以置信的幀速吧(有人提到在玩Shmup時會有眩暈的感覺),我想我做了正確的選擇。

糟糕的C讀物(不要忽略這一段)

我將以一些我認為不必太認真的讀物說起:網路教程,部落格以及大部分Google上得到的東西都算(沒錯,也包括我這篇)。通常我認為這些資料來源是不可信的,而且有潛在的危害。和這一行裡大部分人一樣,我曾是重度Google搜尋使用者。過了一段時間之後,我發現不準確的答案反而對生產力的提高有反效果。這讓我有了一種速度上的錯覺:答案找的越快,活幹的越慢。沒有什麼網站會比一本好書更有價值,沒有什麼好書比反彙編輸出更有價值。

優秀的C讀物

《C程式設計語言》,又稱 K&R C。這是你應該首先去看的有關C語言程式設計的經典著作。讀這本書會很輕鬆,它只有272頁,386幅插圖。由C語言之父Kernighan和Ritchie親自編寫的短小且有清晰解釋的程式碼示例遍佈全書各個角落。在剛開始的幾周裡,所有你需要了解的有關C語言的知識都在這裡。這本書讀起來很有趣,主題都比較短小,而且可以使你很快上手。你可能會跳過附錄A(有關C語言中比較晦澀的陰暗角落,比如型別提升、 型別轉換、型別退化以及其它一些無用的東西)以及有關C標準庫的附錄B。我認為剛開始學習C語言時,這些就足夠了。這本書使C顯得很嬌小、簡潔,因此強烈推薦學習這本書。

如果你繼續學習並堅持練習,很快你就會觸到一些詭異的情況,比如下面的例子:

1 2 3 4 5 6 7 8 9 10 11 12 unsigned int ui_one         = 1; signed int i_one            = 1; signed short s_minus_one    = -1; if (s_minus_one > ui_one) printf(“-1 > 1 \n”); if (s_minus_one < i_one) printf(“-1 < 1 \n”); #./run # # -1 > 1 # -1 < 1

在上面的程式碼示例中,由於整型提升的緣故,-1先被計算為大於1,然後又小於1。C語言裡有很多這種陰暗面,此時將產生不正確的結果。

這裡還有許多細節之處:

1 2 3 4 5 6 extern void foo(void); void (*f)(); f = &foo;     // 合法 f = foo;      // 同樣合法!(語法糖) f();          // 呼叫f

相關推薦

學習C語言教材如何成為優秀C程式設計師激發程式設計師創意6本書國外程式設計師推薦每個程式設計師讀的書

學習C語言的教材 我的C語言是自學的,這些年看過不少教材。 下面,我對其中一些教材做個點評。 1. How to Think Like a Computer Scientist: C version 這是我讀過最易懂的C語言教材。 雖然它只講

如何成為優秀C++程式設計師

C++這門語言從誕生到今天已經經歷了將近30個年頭。不可否認,它的學習難度都比其它 語言較高。而它的學習難度,主要來自於它的複雜性。現在C++的使用範圍比以前已經少了很多,java、C#、python等語言在很多方面已經可以代替 C++。但是也有很多地方是其他語言完全無法

如何安排自己大學階段的學習才能成為優秀的 Quant?

首先需要了解一下量化交易需要什麼知識儲備?主要是三類知識:數學,金融,計算機。其中,金融知識需要寬客瞭解各種金融資產的性質和交易規則,數學模型負責在這樣給定的規則系統下探尋獲取超額收益的機會,而計算機程式設計能力使得這樣的投資模型得以自動化實現。計算機知識國內研究的主流語言是

怎樣才幹成為優秀的軟件測試人員

popu 成功 優先 content 時間 下一步 溝通 變化 ont 近期在和一些公司的軟件project師和管理人員交流時,發現他們常常發出這種感慨:尋找一名優秀的測試人員這是太難了。那麽。具備哪些要素才成成就一名優秀的測試人員,以下是我覺得比較重

(轉)如何成為優秀的程序員?

浪費 靈感 雙向 健身 在線 數據結構 car 轉發 屬於 前幾天有人分享的一篇文章,看著不錯,轉發一下,也算是對自己的一些建議吧,在這裏感謝原作者的分享。 作為一個從業快10年的程序員,我想給新入行的程序員們一些建議。這些建議是我希望自己可以在畢業的時候就讀到的,也希望它

如何成為優秀的Web前端工程師?

功能 des 更新 高性能 yahoo 建議 策劃 兼容 推薦 何為:前端工程師? 前端工程師,也叫Web前端開發工程師。他是隨著web發展,細分出來的行業。Web前端開發技術主要包括三個要素:HTML、CSS和JavaScript!它要求前端開發工程師不僅要掌握基本的We

如何成為優秀的程序員?

uml data- 普通 targe 關註 時也 命名 mea 基本 1、理解技術債務 技術債務就像信用卡一樣,會有很高的利息率,時間越長,修復所花的代價就越大,程序員對這個要有深刻的認識。同時團隊應該培養一種保證設計質量的文化,應當鼓勵重構、同時也應當鼓勵其它

如何成為優秀的java程序員

學java 保持 安排 ava 進行 是你 調整 次數 新的   不想當將軍的士兵不是好士兵,同理每個java程序員都應該讓自己變得更加優秀,來增加自己的核心競爭力,一個不思進取的java程序員是容易被社會淘汰的。那麽如何成為一名優秀的java程序員呢?   如何成為一名優

九個步驟成為優秀的程式化交易者

想擠身於一流程式化交易者的行列,不妨從古今中外市場大鱷們的成功九大因素上來總結,一個初學者想要成功,必然是要闖過這九大難關的。 一、基本分析 基本分析主要就是在大學裡學的那些相關知識;當然,也要針對具體的品種進行學習,不能光靠那些知識。比如,做麥子的人,國內外麥子市場的基本知識是需要了

如何成為優秀的Python程式設計師

最近,opensource 對社群的作者們進行了一項調查:分享你最推薦的Python書籍,經過統計,有18本書被列入了榜單(本文包含15本),該榜單並沒有把這些書籍分為初高階,因為無論是初級程式設計師還是高階程式設計師,基礎知識都非常重要。 1、《Python程式設計快速上手》  

成為優秀的軟體測師工程師

時間:2018-09-22        不管是在怎樣的境遇下進入軟體測試這個行業,從投入這個行業開始,你必須對這個職業充滿敬畏,要不斷的充實自己。        成為一名真正意義上的軟體測試工程師,我的測師齡才剛滿5個月,不管我當初是抱著怎樣的心態進入這個行業,我現在只

如何成為優秀”的商業分析師

本文轉自知乎 作者:空白白白白 ————————————————————————————————————————————————————— 開頭,我真誠的希望你能耐心看完這篇文,以下是我從一個BI工程師做到資料專家的關鍵點。對身處資料分析工作的你或多或少有點幫助:) 通過資料分析助力

如何成為優秀的架構師?

【CSDN編者按】眾所周知,架構師的角色,更偏向於策劃、而非指揮,塑造、而非支配,其存在的意義,在於引導大家討論、而非自己主宰一切。 但是,具體應該如何執行呢?本文作者整理了 30 個公認的架構原則,來幫助大家解決此問題。也許有的原則,你從未聽說,但你看完就能快速學會。

成為優秀程式設計師的七大要素

1、迷戀技術,保持對程式碼的熱情 興趣是最好的老師,如果不是最初對程式設計充滿興趣,應該很少有人會選擇程式設計師這個行業,但同時程式設計師是一個有點乏味枯燥的工作。如果你不迷戀技術,對程式碼充滿熱情,那你只能做一個平淡的程式設計師。 2、在實踐中成長,磨礪技術 程式設計師是一個在實踐中成

如何成為優秀的全棧工程師

寫在最前 我的前一篇文章《給職場新人的10點職涯建議》發表後,得到了很多簡友,特別是年輕程式設計師朋友們的喜愛,這令我頗感意外,但又很受鼓舞。同時,我也收到了一些簡信,大多來自那些畢業不久,剛步入工作崗位的職場新人。詢問的內容也大多是如何選擇職業方向,如何成為一名優秀的

如何成為優秀的專案經理。

這篇文章的來源是我弟弟今年剛剛大學畢業,在一家公司做專案經理。前段時間跑來問我,怎麼做好專案管理,保證專案的順利進行。 今天,把這些整理成文章,供大家參考。 一、個人因素:需要擁有很好的交流能力、理解能力、號召能力,來保證很好的瞭解需求、並且合理的進行判斷。專案

成為優秀程式設計師 要知道哪些必備技能

  想成為一名優秀程式設計師,要知道哪些必備技能?在這個世界上,有數百萬的人熱衷於軟體開發,他們有很多名字,如:軟體工程師(Software  Engineer),程式設計師(Programmer),編碼人(Coder),開發人員(Developer)。經過一段時間後,這些人

成為優秀程式設計師所需要知道的15件事

1. 懂得分享。儘可能使用開源,並且當你有能力的時候,要對其有所貢獻。聚全社會之智慧,勝過某些“大”公司之短視。   2. 公平競爭。嘗試其他技術、框架、方法和觀點。不要總以為只有你的選擇才是可行的。別的選擇也有可能比你的要強得多。要以開放的心態,來檢驗其他人的選擇。  

如何成為優秀程式設計師

參考: 來自:I code it 作者: 邱俊濤 連結地址:icodeit.org/2017/07/tips-for-newbies/ 簡單歸納一下,總共有7條: 1、保持健康 2、程式設計之外的愛好 3、持續學習 4、正確應對犯錯 5、不要囿於角色 6、展示你

阿里感悟 – 如何成為優秀的新人

成為一名優秀的新人,我認為要做到三點:良好的心態,積極的思考和高效的學習。 良好的心態 良好的心態包括兩部分學習和做事。 學習的心態。空杯子才可以裝下更多的東西。所以無論多牛的新人都要謙虛,作為新人應該帶著兩種眼光,欣賞的眼光和自己的眼光。剛來團隊的時候,要帶著欣賞的眼光,欣賞團隊裡每個同事