如何成为一名优秀的C程序员

  英文原文: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程序设计语言》

  《C程序设计语言》("C Programming Language",又称 K&R)。这是你应该首先去看的有关C语言编程的经典著作。读这本书会很轻松,它只有 272 页,386幅插图。由C语言之父 Kernighan 和 Ritchie 亲自编写的短小且有清晰解释的代码示例遍布全书各个角落。在刚开始的几周里,所有你需要了解的有关C语言的知识都在这里。这本书读起来很有趣,主题都比较短小,而且可以使你很快上手。你可能会跳过附录A(有关C语言中比较晦涩的阴暗角落,比如类型提升、 类型转换、型别退化以及其它一些无用的东西)以及有关C标准库的附录B。我认为刚开始学习C语言时,这些就足够了。这本书使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程序员,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。