c语言判断一个点在长方体内部_C语言教材——谭浩强C语言程序设计

点击上方“蓝字”关注我们

关于学校C语言教材选择

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

一位08级学长的阐述:

为何我们那一代学习程序的人对谭的书没有如今这么强烈的反感呢?

首先,绝对可以肯定的是,我们那届学程序设计,并亲手写出过数据库系统和网络服务——客户端数据包传输程序作业的学生一定知道,它的书里面到处都是BUG。

但是我们并没有因此产生反感。一个很重要的原因是,当时的编程环境实在糟糕,而理论联系实际的距离又十分之远(如果你看过同时期国内其它编程教材,你会发现谭的书已经算是很有实践指导能力的了。。。)这迫使我们当时的读书模式和现在有本质区别,大体上就是:

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

(2)去计算机上实现程序,观察程序的“实际”运作机制以及算法的“真正”实现

换句话说,由于我们没有把,也从未想过,要把书本上的理论知识和代码当作真正的代码对待,所以谭的书虽然有缺陷,但是对我们的程序课学习没有造成太大的影响。

而且,由于谭浩强的书很多地方都写得非常模糊。例如解释内存和地址关系的地方,数值编码以及指针部分,虽然看上去有联系,但是却缺乏系统化的阐述。

所以作为学习者,当时我们学习这种模糊的系统原理时都会直接去计算机上实践。例如直接打印一段内存地址下各个字节(char)的十六进制码,然后手算它和实际存储整数浮点数的关系。此外,内存地址的分配是由高到低还是由低到高,也可以通过打印数组,变量的字节信息来观察。换句话说,我们当时学习这本书的方式又和现在有点区别。

为了弄清楚实际原理,我们其实把整个计算机程序的运作机制当作一个系统来研究了。因此当我们实践完成后,谭的这本书上,哪里有错误,哪里没有,哪些原理说的不准确,哪些有错误,就完全了解了。到了这里,我们才是真正把那本书看完。

当然要感谢谭的这本书,要不是它写的到处漏洞百出,且阐述含糊不清,我在学习它的时候也不会花这么大功夫去研究它的每一处细节,诸如:数组变量能不能当作指针变量赋值(不能),这种东西都是经过实际在编译器上验证的,虽然它的书也没说清楚这两种类型的区别。但是反过来,也正是因为它的这些缺陷,和当时编程环境的糟糕,才迫使我们通过大量实践了解了这些问题的根本原理,自己探索到了问题的答案。这又和只通过书本了解的知识有着天壤之别。

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

实际上,void main和int main之所以推荐后者,是因为它是一种良好的编程规范,它保证了某个调用你编写程序的外部程序可以获取你程序的内部状态值。而通过这种方法,我们也可以设计不同的程序返回值来告诉外部程序内部错误的类型。

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

而我们现在这一代本科生接触计算机编程时,大部分计算机系统已经提供了相当友好的环境。这时候,对于编程书籍的要求不再是单纯的理论,然后依靠复杂的实践完成学习。而是从书本代码直接到IDE执行这样一步到位的学习模式。

结语:

任何时代的课本都恰好契合它那个年代,而在国内C语言教材,谭的书仍是佼佼者

63997ae2c582d78b0d80b1929990aadc.gif▼往期精彩回顾▼C语言程序程序设计——数组重要!C语言学习课程资源放送C语言程序灵魂——算法 6a0c9074475f14a79d9fcd01bc42e30d.png你点的每个赞,我都认真当成了喜欢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值