background image

那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,
然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才
会真正的事半功倍。

二、Unix/Linux 还是 Windows,这是个很大的问题

  不同的编程环境会造就出不同思维的程序员。Windows 的程序员大多依赖集成
开发环境,比如 Visual Studio,而 Unix 程序员更加钟爱 Makefile 与控制台。显而
易见,集成开发环境更容易上手,在 Windows 上学习 C 语言,只需要会按几个基本
的 Visutal C++工具栏按钮就可以开始写 Hello, World!了,而在 Unix 下,你需要
一些控制台操作的基本知识。有人也许认为 Unix 的环境更简洁,但习惯的力量是很
大的,大家都很熟悉 Windows 的基本操作,而为了学习 C 语言去专门装一个 Unix
系统,似乎有点不划算。

  对于一个只懂得 Windows 基本操作、连 DOS 是什么都不知道的新手而言,尽
快做一些有趣而有意义的事情才是最重要的。用 C 语言写一个小程序远比学习
ls、cat 等命令有趣,况且我们要专注于 C 语言本身,就不得不暂时忽略一些东西,
比如编译链接的过程、Makefile 的写法等等等等。

  所以我建议初学者应该以 Visual C++ 6.0(不是 VisualC++ .NET)或者 Dev 
C++作为主要的学习环境,而且千万不要在 IDE 的使用技巧上过多纠缠,因为今后
你一定要转向 Unix 环境的。Visual C++ 6.0 使用很方便,调试也很直观,但其默
认的编译器对 C 标准的支持并不好,而 Dev C++使用 gcc 编译器,对 C99 的标准
都支持良好。使用顺带提一下,很多大学的 C 语言课程还在使用 Turbo C 2.0 作为
实验环境,这是相当不可取的,原因其一是 TC 2.0 对 C 标准几乎没有支持,其二是
TC 2.0 编译得到的程序是 16 位的,这对今后理解 32 位的程序会造成极大的困扰
(当然,用 djgpp 之类的东西可以使 TC 2.0 编译出 32 位程序,不过那过于复杂了)。

  等你学完一本 C 语言的教材,你一定要转向 Unix 平台继续学习,几乎所有的 C
语言高级教程都是基于 Unix 平台的(比如《C 专家编程》)。转变的过程是痛苦的,
你需要面对的是各种纷繁复杂的命令,完全不同于 Windows 平台的思考方式,但是
这种痛苦是值得的。Unix 与 C 是共生的,Unix 的思考方式和习惯更加符合 C 语言的
思考方式和习惯。在 Unix 下,你可以找到无数优秀的源代码供你尽情阅读,你可以
方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格(说到代码风格,
我会专门写一篇文章详细叙述)。

  归结起来就是一句话:初学 C 语言,建议使用 Windows 系统和集成开发环境,