|
英文原文:To become a good C programmer
問題的提出
每過一段時間我總會收到一些程序員發來的電子郵件,他們會問我是用什么編程語言來編寫自己的游戲的,以及我是如何學習這種編程語言的。因此,我認為在這篇博文里列出一些有關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讀物
1. 《C程序設計語言》
如果你繼續學習并堅持練習,很快你就會觸到一些詭異的情況,比如下面的例子:
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
it知識庫:如何成為一名優秀的C程序員,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。