关于学校C语言教材的选择

编者目前是一名普通本科生,学校的C语言教材是清华大学谭浩强老师的《C程序设计》。 很多人说这本书漏洞很多,学校为什么选择这本书呢?

2008年高年级的解释:

为什么我们这一代学编程的人没有像现在这样对谭的书有如此强烈的反感呢?

首先,可以肯定的是,在我们班学过编程,亲手写过数据库系统和网络服务-客户端数据包传输程序的同学一定都知道,它的书充满了Bug。

但我们并没有因此而生气。 一个很重要的原因是当时的编程环境实在是太差了,理论和实践的距离非常遥远(如果你同时看过其他国内的编程教材,你会发现谭老师的书已经很能够实际指导……)这迫使我们当时的阅读模式和现在有一个根本的区别,大致就是:

(1)书本上我们只了解算法的基本原理或者程序运行的内部机制;

(2)到计算机上执行程序,观察程序“真实”的运行机制和算法“真实”的实现

也就是说,由于我们没有把、也没有想过,把书本上的理论知识和代码当成真正的代码,所以谭老师的书虽然有缺陷,但对我们编程课的学习并没有产生太大的影响。 影响。

而且,因为谭浩强的书里很多地方都非常模糊。 比如解释内存和地址关系的地方,数值代码和指针部分,虽然看起来有关系,但是缺乏系统的阐述。

所以作为学习者,当我们学会了这个模糊的系统原理后,我们就会直接上电脑去练习。 例如,直接打印某个内存地址下每个字节(char)的十六进制代码,然后手动计算它与实际存储的整型浮点数之间的关系。 另外,内存地址的分配是从高到低还是从低到高也可以通过打印数组和变量的字节信息来观察。 换句话说,我们当时学习这本书的方式与现在有些不同。

为了弄清楚实际原理,我们实际研究了整个计算机程序作为一个系统的运行机制。 所以,当我们练习完成之后,我们就会充分明白谭老师的书中哪里有错误,哪里没有错误,哪些原则不准确,哪些是错误的。 当我们到达这里时,我们就真正完成了这本书。

当然,我要感谢谭提供这本书。 如果不是它漏洞百出,解释模糊,我在学习它的时候也不会花那么多功夫去研究它的每一个细节,比如:数组变量是否可以赋值为指针变量(不能) ,这种事情已经在编译器上得到了验证,虽然它的书上并没有明确说明两种类型的区别。 但反过来,也正是因为它的缺陷和当时糟糕的编程环境,迫使我们不得不通过大量的实践去了解这些问题的根本原理,并自己去探索问题的答案。 这与仅通过书本学到的知识有很大不同。

另外,关于Tan的main函数返回类型是void。 这也是非常误导人的,但是我们当时为什么不抱怨呢? 因为我们自然地接受这一点。 。 。 直到后来大三学习《Unix网络编程》的时候,我才知道unix系统(包括linux)本身就是通过各种整数返回值来判断一个程序是否正常退出的。

事实上,void main 和 int main 建议使用后者,因为它是一个很好的编程规范,它可以确保调用你的程序的外部程序可以获得你的程序的内部状态值。 这样,我们还可以设计不同的程序返回值来告诉外部程序内部错误的类型。

只有具有一定编程经验的人才会知道这个规范。 当然你可以教一个人从一开始就返回int,但在我看来,这可能不是一件好事(这就像在游戏一开始就告诉你秘籍,你可能会失去探索它的乐趣—— —)

当我们这一代本科生接触计算机编程时,大多数计算机系统已经提供了相当友好的环境。 这时候对编程书籍的要求就不再是纯粹的理论,然后依靠复杂的实践来完成学习。 相反,它是一种从书本代码直接到IDE执行的一步式学习模式。

结论:

任何时代的教材都是适合那个时代的,而国内的C语言教材中,谭老师的书仍然是最好的

对过去的精彩回顾

你的每一次点赞我都认真当做点赞

好了,今天的主题就讲到这里吧,不管如何,能帮到你我就很开心了,如果您觉得这篇文章写得不错,欢迎点赞和分享给身边的朋友。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注