browser icon
You are using an insecure version of your web browser. Please update your browser!
Using an outdated browser makes your computer unsafe. For a safer, faster, more enjoyable user experience, please update your browser today or try a newer browser.

C程回眸

Posted by on 2004 年 04 月 11 日

你可以任意转载本文,但请在转载后的文章中注明作者和原始链接。
媒体约稿请联系 titilima_AT_163.com(把“_AT_”换成“@”)。

回头望望自己学习C语言已有一年半了,在此我将这一年半以来的体会和心得写下来,希望能给在C语言之中摸索的朋友们一点帮助。本文分上、中、下三篇:上篇为想“学会”的朋友准备,已入门而想更进一步的朋友可以参考中篇,最后的下篇留给诸位一笑——权当我之聒噪。

上篇

首先请你欢呼三分钟,因为如果你照着我的经验去做,那么你完全可以就此告别考前突击背程序的痛苦生活;然后请你再郁闷三分钟,因为你不得不从今天开始就面对这一门不好学的语言。

现在我来说一说我对程序设计语言的理解。程序设计语言是一种帮助人类解决问题的工具,但前提是人必须完全从计算机的角度去考虑问题——原因很简单:计算机是个只有蛮力的傻瓜,你让它去打狗它肯定不会顺便去把鸡撵了。

至于C语言的特点我也不加详述,因为我知道诸位的大多数对这些完全没有兴趣。以我初学的经验看,学入门后再去体会这些特点才是一个正确的顺序。

那么,该介绍学习C语言的教程了。这里我极力向你推荐的是清华谭浩强老师那本著名的《C程序设计》,性价比极高的一本书。也许你曾经在网上或者某些程序员嘴里听到过一些对这本书的价值发生质疑的说法,但是我还是坚持我的意见,你一定要学这本书。我并不回避,这本书在中国的代码界的确存在着很大的争议。然而,作为一本入门书籍,它是你最佳的选择。从易懂程度来讲,《C程序设计》十分符合国人的思维接受习惯;从内容上来讲,它花了很大的篇幅教给你如何从计算机的角度去考虑问题——从这两点来讲我极力把它推荐给初学者。

几乎每一个程序员都会告诉你:只看书是学不会编程的。所以,在拥有了教程之后,你唯一要做的事情就是练习练习再练习。在最初的阶段,你可以把书上的程序输入计算机运行,不过在输入的过程中请注意一点:因为你不是职业打字员,所以你要在打字的同时进行思考,这样才能够让程序运作的流程在你的脑中打下烙印。

在你输入了数十个程序,初步弄懂了C语言语法特征和程序流程之后,不知道你现在是否有一种用编程来解决实际问题的冲动,如果你回答“是”,那么祝贺你,你绝对是一块学编程的好料,因为你能在其中获得快乐。程序员痴迷于编程的原因并不仅仅是因为这项工作的薪水,更多的是编程之后的满足感和成就感。

好了,现在我该向你推荐另外一本书了——虽然我极为不乐意(原因将在下篇解释)——就是一本C语言考试的题典,这本书就是用来检验你这么长时间以来学习成果的最权威用品了。这里我要指出的一点是,由于这种书是纯为考试所编,所以在遇到了百思不得其解的古怪答案的时候,请你背答案。

到了这里,不知道你现在的心情是踌躇满志还是仍有怀疑,——不过不管怎样,上路吧,相信你自己。

中篇

我曾经在上篇中让上篇的读者先欢呼三分钟在郁闷三分钟,不过到了中篇我只能说:你很不幸,因为你在本篇无权选择欢呼。

学到这里,相信你也已经体会到了C语言区别于其它高级语言的一个最大特点就是它能够对底层进行操作——也就是它的指针。如果要征服C语言,那么征服指针是你必须翻过的一座大山。噢,先不要计划退缩,其实指针并没有那么可怕,只要你付出足够的时间和耐心。

首先请你做的事情就是抛弃你手头上的TC而改用VC,因为作为调试器来讲,VC能够让你更直观地看到所有变量的情况。当你一步一步移动指令光标的时候,这些详细的汇报材料能够使那些不正常的值改变尽收于你的眼底。通过这样的调试器,加上一些对于内存的操作(比如自己实现一些字符串函数之类),相信你完全能够在几个月中掌握堆和栈的秘密。而且,这个时候可以友情客串地学一学汇编语言,这样你更能理解C代码中一些不为你所知的秘密。

好了,祝贺你坚持到现在。那么松口气儿,回头看看学会的东西吧,可能会有些成就感了吧?OK,试试看抱着轻松的心态把以前的《C程序设计》重新看一遍,会有什么感受呢——我想,大概你读着读着就会发出会心的微笑了,你是快乐的。

一张一弛,一松一紧。下面我严肃地告诉你,你有些东西需要重头再来了。

第一,你需要有一个良好的编码风格,因为在很多情况下你需要在若干时间以后重新修改你的代码。这就要求你在写代码的时候有一个整齐的版式,明了的注释也是必须的。

第二,良好的编程修养。资源的申请与释放、条件的配对情况、恰当的算法选择……这些东西都需要你做得井井有条。这一方面你可以参考林锐的《高质量C/C++编程指南》,虽然这本书在网上的争议也很大——不过相信我,这本书是本好书。

经过了一年左右的修炼,现在的你应该举手投足都有了样子。祝贺你,因为你现在可以充分享受编程的快乐了。

下篇

这里是我的一些闲话,然而我则奢望它能够起到超过闲话的作用。

  1. 中国的计算机等级考试。等级考试可能是最为中国程序员所不齿的东西了,因为它考的东西完全和程序的精神背道而驰。频繁地考一些繁琐、古怪、冷僻的编码风格,散发着一股中国科举孔乙己的腐臭味道。
  2. 某些C程序员有些倾向于偏执狂——效率是他们第一位的选择,正因为如此他们中很多人会鄙视带有运行库的VB、大个头EXE的Delphi。我则希望你平等看待这些编程语言,因为一则我们只看重结果,二则大家最后生成的二进制代码是一样的。
  3. 程序 = 数据结构 + 算法,你会发现这个著名的等式中并没有程序设计语言。也就是说,如果你将编程思想谙熟于心,那么别的语言也可以很快上手。
  4. 回眸看看你最初的“Hello, World”,一定感慨颇多吧?我说过了,本文就是我回眸初学C语言而得到的感受,应该和你现在的感受一样。

订阅本站

6 Comments

  • At 2005.12.10 23:07, zxg said:

    看来我也要学VC了

    • At 2005.12.10 23:08, zxg said:

      谭老的那本书却是非常好
      但是不知道为什么我们是最后一届用的了
      从我们下一届开始就用学校自己编的了
      可能和银子的问题有关吧

      • At 2006.12.30 17:46, 非常感谢 said:

        我是初学者1825074

        • At 2007.09.28 12:09, 桃李莫言 said:

          这样吗,我们用的是赵山林的C程序设计,不知这个怎样?

          • At 2007.09.28 15:02, 李马 said:

            To 桃李莫言:
            这本书没看过,不便评价。不过我认为最重要的是上机编码实践,祝你进步。

            • At 2008.04.30 17:13, zkkpkk said:

              饿,最不齿的登记考试我考过2了,考的是冷门的C++,现在正在备考更冷门三级PC,有些题目确实不齿,不过我认为无论是2级C++还是3级PC技术,比起令人发指的网络技术来不齿程度还差几个等级。

              (Required)
              (Required, will not be published)