Chinaunix

标题: 说谭老大的C教材是毒草的进来下,我要请教了 [打印本页]

作者: jetico    时间: 2007-09-10 08:51
标题: 说谭老大的C教材是毒草的进来下,我要请教了
我们有个课,采用的是这个教材,我想去旁听,希望大家把毒草的地方指出来,我听时好加以注意
作者: jetico    时间: 2007-09-10 08:56
我知道的是说变量定义太简单,可是我觉得初学很习惯这种,象初中代数
作者: zhn636    时间: 2007-09-10 08:57
哦,呵呵,好象没看出来有毒的地方啊,我们当时用的也是这本书啊
作者: mingyanguo    时间: 2007-09-10 08:58
既然去了就不要问了,毒草算不上。
作者: cugb_cat    时间: 2007-09-10 09:02
先有个错误认识也不错,以后慢慢改正
作者: jacksting    时间: 2007-09-10 09:35
谈不上毒草,但是肯定不是香花。适合你初次接触当教材使用,熟悉基本的语法。可以解决你C语言80%的问题。但是如果写代码,只是懂80%比较危险,剩下的那20%其实是精华
作者: zhn636    时间: 2007-09-10 09:45
剩下的那20%再哪里可以获得呢?能说几本书吗?
作者: newzy    时间: 2007-09-10 09:48
"毒草" 一词看出楼主太轻浮.
有幸拜读谭老师的书, 你应感到荣幸.

谭的话字字句都值得你读细细读几遍.
不仅在校期间, 毕业后 3 年内仍建议你再把他的书读两遍.

不要好高骛远, 识为他简单.
说句不好听的, 如试问下 printf 的用法你真的很熟吗? 格式串中
"%5s", "%5.2s", "%-5.2s", "%5.s", "%.5s", "%5.*s", "%*.*s",  
用法你都会用吗?

printf("%d", (char)255); 与 printf("%d", (int)255);
的结果一样吗, 为什么?

上面这些都能在他的书中几乎都能找到答案.

如果你上面的你都用不好, 其它标准函数
vprintf(), vsprintf(), vsnprintf, fprintf, vfnprintf(), ... 怎么相信你能用好?

毕业后好多年, 谭老的书我仍翻翻.
优其对类型转换一节的总结性描述, 使很多隐藏很深的 bug 被及时解除. 如: (-1 < sizeof(char)) 结果为真吗?

Good Luck!

[ 本帖最后由 newzy 于 2007-9-10 09:50 编辑 ]
作者: zhn636    时间: 2007-09-10 10:06
恩,我们一定要在细读
作者: zhn636    时间: 2007-09-10 10:07
printf("%d", (char)255); 与 printf("%d", (int)255);
的结果一样吗?我想知道在哪一节中可以找到这个问题的答案呢?谢谢了
作者: redspider    时间: 2007-09-10 10:09
原帖由 newzy 于 2007-9-10 09:48 发表
不要好高骛远, 识为他简单.
说句不好听的, 如试问下 printf 的用法你真的很熟吗? 格式串中
"%5s", "%5.2s", "%-5.2s", "%5.s", "%.5s", "%5.*s", "%*.*s",  
用法你都会用吗?

printf("%d", (char)255); 与 printf("%d", (int)255);
的结果一样吗, 为什么?
没学过C,我看 C++ 的时候直接把这些内容跳过了
作者: zhn636    时间: 2007-09-10 10:11
为什么要跳过呢?是不是不重要呢?
作者: ruoyisiyu    时间: 2007-09-10 10:16
原帖由 zhn636 于 2007-9-10 10:07 发表
printf("%d", (char)255); 与 printf("%d", (int)255);
的结果一样吗?我想知道在哪一节中可以找到这个问题的答案呢?谢谢了

前者-1,后者255
作者: redspider    时间: 2007-09-10 10:17
原帖由 zhn636 于 2007-9-10 10:11 发表
为什么要跳过呢?是不是不重要呢?

因为我是实用主义者,用不上就不学    用上了就掏出来看看
作者: redhat008    时间: 2007-09-10 10:31
原帖由 ruoyisiyu 于 2007-9-10 10:16 发表

前者-1,后者255

那你的回答不是很准确的..
char 类型是 实现相关的..可以是signed char ,也可以是unsigned char ..
如果是signed char 才是 -1..如果是unsigned char 才是 255
作者: koolcoy    时间: 2007-09-10 10:32
原帖由 newzy 于 2007-9-10 09:48 发表
"毒草" 一词看出楼主太轻浮.
有幸拜读谭老师的书, 你应感到荣幸.

谭的话字字句都值得你读细细读几遍.
不仅在校期间, 毕业后 3 年内仍建议你再把他的书读两遍.

不要好高骛远, 识为他简单.
说句不好听的 ...

这种东西压根就不应该从书中学, 应该在需要知道的时候直接man一下. C, C++的标准库函数那么多谁能够记下多少?
作者: mingyanguo    时间: 2007-09-10 11:36
原帖由 newzy 于 2007-9-10 09:48 发表
"毒草" 一词看出楼主太轻浮.
有幸拜读谭老师的书, 你应感到荣幸.

谭的话字字句都值得你读细细读几遍.
不仅在校期间, 毕业后 3 年内仍建议你再把他的书读两遍.

不要好高骛远, 识为他简单.
说句不好听的 ...

这就过了,我只浏览过这本书没发现什么特别,但在newsmth记得有牛人在这本书里面(习题?)找过N多的硬伤,包括最新版都没改掉,鉴于此,对于认真的学习者,并不推荐这本书。
作者: jetico    时间: 2007-09-10 11:47
原帖由 mingyanguo 于 2007-9-10 11:36 发表

这就过了,我只浏览过这本书没发现什么特别,但在newsmth记得有牛人在这本书里面(习题?)找过N多的硬伤,包括最新版都没改掉,鉴于此,对于认真的学习者,并不推荐这本书。

newsmth是个网站吗?能给个连接吗?
作者: jetico    时间: 2007-09-10 11:51
原帖由 newzy 于 2007-9-10 09:48 发表
"毒草" 一词看出楼主太轻浮.
有幸拜读谭老师的书, 你应感到荣幸.

谭的话字字句都值得你读细细读几遍.
不仅在校期间, 毕业后 3 年内仍建议你再把他的书读两遍.

不要好高骛远, 识为他简单.
说句不好听的 ...

老大,你误会了,我现在还分不清香花和毒草,只是想弄清大家批评这本书的地方,以便上课时注意
作者: zhn636    时间: 2007-09-10 11:53
原帖由 jetico 于 2007-9-10 11:47 发表

newsmth是个网站吗?能给个连接吗?

是水木清华http://www.newsmth.com
作者: musics    时间: 2007-09-10 11:59
原帖由 ruoyisiyu 于 2007-9-10 10:16 发表

前者-1,后者255

这个不一定的,与编译器实现有关,并没有规定char 就一定是signed 如果char是signed,那你的结果就是正确的(目前大多数C编译器都是当成signed),如果正巧你的编译器的char实现的是unsigned,那就还是255
作者: jetico    时间: 2007-09-10 12:15
原帖由 zhn636 于 2007-9-10 11:53 发表

是水木清华http://www.newsmth.com

我老土了.......................这么著名的地方都不知道...................谢谢了
作者: buxoman    时间: 2007-09-10 12:35
客观地说,老谭的书中内容确实应该更新了!人家标准C都订出来好多年了,他老人家的书上还用的最老的那种。
我觉得真正要学,只要找K& R的书认真地看,仔细地学,老老实实地上机,未必就有多难懂!我反正是不推荐初学者看老谭的书了!
作者: flw2    时间: 2007-09-10 12:41
都讨论一万遍了。你就看吧,你只要学过编程语言,10天还看不完吗

我个人觉得这书花3天浏览一下就够了,至于printf的格式,你用几遍就知道了,谁看一遍就记住了?
作者: 飞灰橙    时间: 2007-09-10 12:41
呵呵,反正我看過老譚的書,
搞的我学C后两年都没弄懂typedef,
也许是我天资不佳吧
作者: cugb_cat    时间: 2007-09-10 13:17
原帖由 飞灰橙 于 2007-9-10 12:41 发表
呵呵,反正我看過老譚的書,
搞的我学C后两年都没弄懂typedef,
也许是我天资不佳吧

是啊,我也是这样,学完老谭的书,只知道了一些非常基本的东西,typedef还是我看C专家编程才搞懂的
作者: mzli    时间: 2007-09-10 13:17
不要把自己的水平差怪罪到教材上,谭的这本教材虽谈不上什么精典,更不能说是垃圾。

入门足够了,再往后学,还不是看自己的努力。不可能一本书管你到老死吧。
作者: SunGod    时间: 2007-09-10 13:24
你们要切记,谭老的书是针对工农兵、广大人民群众的计算机入门书籍,不是给你们这些天之骄子评头论足的
作者: while(1)    时间: 2007-09-10 13:25
原帖由 mzli 于 2007-9-10 13:17 发表
不要把自己的水平差怪罪到教材上,谭的这本教材虽谈不上什么精典,更不能说是垃圾。

入门足够了,再往后学,还不是看自己的努力。不可能一本书管你到老死吧。


作者: ganqing1234    时间: 2007-09-10 14:10
关键是要有实践的机会,不然不可能有深刻的理解,时间长了就忘了。
偶就是
作者: jetico    时间: 2007-09-10 14:29
原帖由 cugb_cat 于 2007-9-10 13:17 发表

是啊,我也是这样,学完老谭的书,只知道了一些非常基本的东西,typedef还是我看C专家编程才搞懂的

可是我看那本经典的C程序设计才200多页,它能把什么都说明白了吗?
作者: cugb_cat    时间: 2007-09-10 14:30
原帖由 jetico 于 2007-9-10 14:29 发表

可是我看那本经典的C程序设计才200多页,它能把什么都说明白了吗?

就要看你现在的水平了,多看书益处多多
作者: 我learnc    时间: 2007-09-10 14:57
原帖由 cugb_cat 于 2007-9-10 14:30 发表

就要看你现在的水平了,多看书益处多多


多看好书益处多多,多看适合自己的好书益处更多。别人推荐的不一定就适合你看,像thinking in c++,虽然很多人捧,我一直都不愿意看。至于国内许多”叫兽,砖家“的书,看了会让你以后花非常多的时间来更正从上面学来的坏习惯。更多情况下,这些人出书就是为了挣钱,而完全不管书的质量。
作者: zhn636    时间: 2007-09-10 14:58
那我们怎么分辨适合自己的书呢?你觉得哪一本C语言书比较好呢?
作者: redfedora    时间: 2007-09-10 15:09
while{ money++}
————————————
着个有意思
作者: 我learnc    时间: 2007-09-10 15:21
原帖由 zhn636 于 2007-9-10 14:58 发表
那我们怎么分辨适合自己的书呢?你觉得哪一本C语言书比较好呢?


英语好,直接看英文版的,英文不好,扫描一下唐浩强的,了解概念后看英文的就不那么吃力了。适合自己的书有一个很显著的特点,那就是你看起来不别扭,不觉得非常难,也不觉得非常容易。有些人读书时不喜欢过细,他只看了下大概,用到的时候查书。有些人喜欢一次就把所有的东西全弄个清楚明白,所以他看书的时候就一个一个抠过去。
作者: zhn636    时间: 2007-09-10 15:23
原帖由 我learnc 于 2007-9-10 15:21 发表


英语好,直接看英文版的,英文不好,扫描一下唐浩强的,了解概念后看英文的就不那么吃力了。适合自己的书有一个很显著的特点,那就是你看起来不别扭,不觉得非常难,也不觉得非常容易。有些人读书时不喜欢过 ...

英文版的能帮忙推荐一本值得经常细看去翻的吗?谢谢了
作者: 我learnc    时间: 2007-09-10 15:27
这里的人应该都看 The C Programming Language ,呵呵。
作者: zhn636    时间: 2007-09-10 15:29
是不是很薄的那一本书呢?感觉书里讲的很笼统啊,不实用啊
作者: BN_sole    时间: 2007-09-10 15:43
Thinking in C++是天书....连中文版我都没看懂...(个人意见)

书挑本自己喜欢看的,有动力看才是王道
正如我说的Thinking in C++,看介绍描述得天花乱坠,一看俩章就吐白沫了,也许是自己能力不行,有时候这东西也看缘分,

primer C 5th是我的字典(个人喜好)

评论书籍的好坏或多或少都会带个人的感情色彩,不需要太较真
作者: zhn636    时间: 2007-09-10 15:45
C++编程思想确实很抽象,看的时候确实有种云里雾里的感觉啊
作者: system_gong    时间: 2007-09-10 16:27
晕。每次说到最后都跑题了。
作者: xstar.wxb    时间: 2007-09-10 17:17
毒不毒草的看读者,你带着囫囵吞枣的意思去读当然就是毒草了!如果你是带着学习的意思并有所准备的去读就是很好的教材了。

不过读的过程中还是有些地方要注意一下的。
首先读以前应该先了解一下C语言编程规范,这样你就会发现哪些写法是好的哪些是不好的。
其次是有关最新的C标准估计许要了解一点,(C99)。
谭的书出来好几年了,标准改了又改,几年前是不报错或正确的东西,现在可能是警告或错误的了。
最明显的例子是main函数。
C99标准里只允许两种声明
int main()

int main(ing argc, char *argv[] )

但谭的书里似乎都是
void main()

[ 本帖最后由 xstar.wxb 于 2007-9-10 17:18 编辑 ]
作者: xstar.wxb    时间: 2007-09-10 17:21
另外别带着一本书就走遍天下的思想去读,任何书都有侧重点,
谭的书能把你带入C的世界,并解决初学者的大部分问题,等你深入了,你会发现其实他还是有很多地方没仔细讲的,不过这个时候你应该知道如何去找书了!
作者: jetico    时间: 2007-09-10 17:45
原帖由 xstar.wxb 于 2007-9-10 17:17 发表
毒不毒草的看读者,你带着囫囵吞枣的意思去读当然就是毒草了!如果你是带着学习的意思并有所准备的去读就是很好的教材了。

不过读的过程中还是有些地方要注意一下的。
首先读以前应该先了解一下C语言编程规 ...

受用,谢谢。
作者: linginfanta    时间: 2007-09-10 17:46
入门教程能做到谭老师这本书这样已经很难能可贵了,那些说毒草的人可以自己写本书看看。
作者: bluster    时间: 2007-09-10 18:13
原帖由 linginfanta 于 2007-9-10 17:46 发表
入门教程能做到谭老师这本书这样已经很难能可贵了,那些说毒草的人可以自己写本书看看。

那些说鸡蛋不如鸵鸟蛋的人自己生个鸡蛋看看
作者: iLRainyday    时间: 2007-09-10 19:45
老谭的书我是不推荐初学者看,有些内容提的过早,或者没必要提,比如内部数据类型的转换(我说的是对于初学者,您要是功力深的话不在此列),另外二维数组以及指针一章,那是一绝,明白人也能给你搞糊涂,“指针”和“指针变量”还是两个不同定义的名词,彪悍!书中定义变量的方式给初学者养成坏的喜欢,全都是a,b,c...,超过20个变/常量的话,我不知道还有几个人能记住每个变量名代表的是什么东西

至于printf的格式,你用几遍就知道了,谁看一遍就记住了?


完全同意!
作者: iLRainyday    时间: 2007-09-10 19:47
入门教程能做到谭老师这本书这样已经很难能可贵了,那些说毒草的人可以自己写本书看看。

这么说影评人评论电影的时候非得自己去拍一部?你说鸡蛋不好吃的时候非得自己能生蛋?人家买了书,自然有评论的权力!
作者: pilgrim_kevin    时间: 2007-09-10 20:40
不推荐。
作者: Orpherus    时间: 2007-09-10 23:39
标题: 老谭书上最绝的地方是?
他把C语言归类为“函数式语言”

我觉得这个太赞  C语言竟然分类到函数式语言里去了
作者: Orpherus    时间: 2007-09-10 23:43
原帖由 bluster 于 2007-9-10 18:13 发表

那些说鸡蛋不如鸵鸟蛋的人自己生个鸡蛋看看


那些说frjj长的丑的男人  自己长个女人样看看
那些说桑塔纳不如宝马的人 自己造个桑塔纳看看
那些说小霸王学习机不如IBM Z900系列机的人  自己造个小霸王看看
作者: corrs    时间: 2007-09-11 00:41
K&R的书就一定好吗?我不觉得!


说谭老师的书是毒草的人,看问题以偏概全,说话不负责任。


谭老师的书缺点如下:


1——〉变量命名简单,不利于初学者养成好的习惯。


2——〉故意自己制造一些难题,比如写一个很变态的表达式,然后问你结果。


3——〉写出来的程序不规范,与其这样不如用伪码,反正只是为了借代码讲明白一些基础问题。
作者: langue    时间: 2007-09-11 02:02
呵呵,不少观点都很精彩,继续啊!
作者: tom_xx_hu@yahoo    时间: 2007-09-11 04:53
原帖由 xstar.wxb 于 2007-9-10 17:17 发表
首先读以前应该先了解一下C语言编程规范,这样你就会发现哪些写法是好的哪些是不好的。
其次是有关最新的C标准估计许要了解一点,(C99)。

这个我觉得就勉为其难了。我就是来学C的,你叫我先去了解C语言编程规范?还要了解最新的C标准?这两样东西都比谭老的教科书书更简明易懂一些?
作者: 思一克    时间: 2007-09-11 08:39
那本书是用BASIC,FORTRAN一类写法写的。而不是从C是做UNIX和OS密切的语言角度考虑问题的。

做教材看教师了,教师水平好写,负责写,可能就不会选它。
作者: crykun    时间: 2007-09-11 09:06
楼上某个位置有人说printf有N种用法,说得没错,但我想到了当年的孔乙已“茴”香豆的“茴”字的四种写法。

细细读读,想不起来的时候,翻翻。

谭老先生的C书,是本好书。

[ 本帖最后由 crykun 于 2007-9-11 09:09 编辑 ]
作者: jerry017cn    时间: 2007-09-11 09:35
谭浩强的书就是垃圾!!!!!!!!!~~
先说几点,以便楼主参考:
1,编程格式不规范,容易给新手养成极差的编程习惯!
2,讨论的所谓知识点,有很多并不是C本身的,而是编译器相关的。不同的编译器有不同的解释。都被他当成C语言了。
3,很多地方非要在无关紧要的地方浪费口舌,比如一个格式化输出,这种东西用的时候man就好了。而很多对于C编程比较重要的东西反倒说的不够详细。或者说根本就是说的不对。
建议:
学习C的话可以看看《C Primer Plus》或者《K&R》,找一本C语言参考手册作为参考书。
谭浩强的C是鸡肋。对于有头脑的人算不上毒草,但是看现在整个中国教育的现状,称其为毒草也不为过。

[ 本帖最后由 jerry017cn 于 2007-9-11 09:44 编辑 ]
作者: bulletming    时间: 2007-09-11 10:05
原帖由 思一克 于 2007-9-11 08:39 发表
那本书是用BASIC,FORTRAN一类写法写的。而不是从C是做UNIX和OS密切的语言角度考虑问题的。

做教材看教师了,教师水平好写,负责写,可能就不会选它。


思一克的话极有道理(而不是从C是做UNIX和OS密切的语言角度考虑问题的),我们学语言写程序,最终却要到系统里来运行的。不了解os运行机制,写出来的程序是不够好的。

谭老师写的书可以说国内写的最好的。最最好的。可是当把他的书放在世界范围内,我们就不能对他有更高要求了。我们不能指望一个老师或者教授,比发明c的一些人把c的机制,原理,运行环境等说的很清楚。

我们作为一个学生难道不应该得到一本正确的书看么,谭老师的书是不是毒草,这个不是关键的。

关键的是太多的大学会将这本书作为教材,由此可见当年大学那些个老师的水平及眼界。

希望楼主 或者 后来人,还是站的更高,看的更远吧。

此贴建议加精,以便所有刚刚开始之人,可有正确选择。师夷长技以超夷!!!!!
作者: cugb_cat    时间: 2007-09-11 10:11
我觉得应该在大学里,尤其是计算机专业推广使用K&R C
作者: jacksting    时间: 2007-09-11 10:27
C专家编程,C缺陷与陷阱,等等,都是不错的书。
如果LZ非要找一本好点的从入门到进阶的书,我推荐《C和指针》,翻译者是徐波。
我觉得如果国内所有用谭书的高校改用了这本书,国内C开发群体的水平至少比现在提高两档。
跟封底的书评引语作者一样,我觉得是我见过的最好的一本C语言书,使我当时在开始做项目的短时间内熟悉了C。
作者: ztguang    时间: 2007-09-11 10:36
标题: 回复 #16 koolcoy 的帖子
赞同
我们不要再用应试模式的思维来学习了,我们要获得的是一种解决问题的能力,而不是死记硬背的能力
作者: flw    时间: 2007-09-11 10:37
原帖由 iLRainyday 于 2007-9-10 19:45 发表
“指针”和“指针变量”还是两个不同定义的名词,彪悍!

呵呵,关于这点,我倒是想确认一下:
莫非你认为指针和指针变量是一样的?
作者: ztguang    时间: 2007-09-11 10:38
原帖由 koolcoy 于 2007-9-10 10:32 发表

这种东西压根就不应该从书中学, 应该在需要知道的时候直接man一下. C, C++的标准库函数那么多谁能够记下多少?


赞同
我们不要再用应试模式的思维来学习了,我们要获得的是一种解决问题的能力,而不是死记硬背的能力
作者: 思一克    时间: 2007-09-11 10:42
我download了那个书:

13.6.1        文件结束检测函数feof函数
调用格式:
feof(文件指针);
功能:判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。

这里是在误导人了。

feof根本不是“判断文件(位置指针)是否处于文件结束位置,如文件结束,则返回值为1,否则为0”



  1. #include <stdio.h>
  2. main()
  3. {
  4. int l;
  5. FILE *fp = fopen("1111", "r");
  6.   if(!fp) return;

  7.   l = fseek(fp, 0, SEEK_END);
  8.   printf("fseek %lu ftell %lu\n", l, ftell(fp));
  9.   printf("feof %d\n", feof(fp));  //看feof()为0,还是1
  10.   fclose(fp);
  11. }
复制代码


原来有帖子详细说这个。但是一些人不看man fseek, man feof, 如果被误导了,很难不犯错误。

[ 本帖最后由 思一克 于 2007-9-11 10:43 编辑 ]
作者: jetico    时间: 2007-09-11 10:43
原帖由 flw 于 2007-9-11 10:37 发表

呵呵,关于这点,我倒是想确认一下:
莫非你认为指针和指针变量是一样的?

这个问题可以展开.........................我还真模糊.................
作者: flw    时间: 2007-09-11 10:49
尽信书则无书,谭浩强也是人,他那本书在当时来说,的确是好书。
因为我们现在讲的那些好书当时根本买不到——至于为什么买不到,我也不清楚。
作者: cugb_cat    时间: 2007-09-11 10:53
现在谭浩强的《C程序设计》已经是第三版了
作者: Godbach    时间: 2007-09-11 11:00
《C和指针》确实不错。尤其第六章,指针部分。在指针的用法中,每一种用法还都配有图例,去讲解这种用法是什么意思。
想看不懂都难啊!
作者: 思一克    时间: 2007-09-11 11:01
他还有BASIC程序设计,FORTRAN程序设计。你看C的例子许多是从BASIC上搬来的。
比如,求素数,计算级数,打印图形,计算X2+BX+C =0 根之类的。
作者: newliner    时间: 2007-09-11 11:11
虽然不是每本书读了就有用,但是这本书 对于 初学C 的朋友肯定有帮助。
作者: 飞灰橙    时间: 2007-09-11 11:15
我觉得谭的问题在于,太多的地方把想当然的经验,
当作正统的知识写在书里,没有经过完备的思考和论证。

还看到他的书里有类似这样的例子,
也许老大在某个编译器上验证通过了,就写进去了
char *p = "hello, world";
p[0] = 'c';
作者: flw    时间: 2007-09-11 11:20
原帖由 飞灰橙 于 2007-9-11 11:15 发表
我觉得谭的问题在于,太多的地方把想当然的经验,
当作正统的知识写在书里,没有经过完备的思考和论证。

还看到他的书里有类似这样的例子,
也许老大在某个编译器上验证通过了,就写进去了
char *p = "he ...

dos 下就是这样子的。
这本书就是以 TC 做例子的。
在那个年代,指针越界访问是一个 skill,而不是 bug。

char *ptr = 0x4f0; /* DOS 通讯区 或写作 char *ptr = MK_PTR( 0x0040, 0x00f0 ); */
ptr[0] = ...;

char *vga = 0xa0000;

vga[ y * 320 + x ] = ...;

这样子的例子太多了。

[ 本帖最后由 flw 于 2007-9-11 11:24 编辑 ]
作者: xibaluma    时间: 2007-09-11 11:21
原帖由 飞灰橙 于 2007-9-11 11:15 发表
我觉得谭的问题在于,太多的地方把想当然的经验,
当作正统的知识写在书里,没有经过完备的思考和论证。

还看到他的书里有类似这样的例子,
也许老大在某个编译器上验证通过了,就写进去了
char *p = "he ...



呵呵 受过教训 TC可以通过..
作者: cugb_cat    时间: 2007-09-11 11:23
原帖由 flw 于 2007-9-11 11:20 发表

dos 下就是这样子的。
这本书就是以 TC 做例子的。
在那个年代,指针越界访问是一个 skill,而不是 bug。

char *ptr = 0x4f0;
ptr[0] = ...;

这样子的例子太多了。

病毒?
作者: flw    时间: 2007-09-11 11:25
原帖由 cugb_cat 于 2007-9-11 11:23 发表

病毒?

不是病毒,而是操作系统提供给开发人员的接口。
作者: flw    时间: 2007-09-11 11:26
其实我还是挺喜欢 DOS 的,觉得在它下面开发很自由。
那感觉就好像现在写 kernel module 一样。
应用层的枷锁太多,最后就变成了对各种 library API 的了解程度了。
作者: cugb_cat    时间: 2007-09-11 11:26
原帖由 flw 于 2007-9-11 11:25 发表

不是病毒,而是操作系统提供给开发人员的接口。

是不是那种实模式下的操作?直接操作某个内存地址?
作者: flw    时间: 2007-09-11 11:27
原帖由 cugb_cat 于 2007-9-11 11:26 发表

是不是那种实模式下的操作?直接操作某个内存地址?

对。
DOS 缺省就是在实模式下工作的。
作者: flw    时间: 2007-09-11 11:29
DOS 下想要格式化非标准的磁盘,
就得修改操作系统的磁盘参数表。
想要获取键盘灯的状态,也是读用户通讯区。
还有很多……
作者: cugb_cat    时间: 2007-09-11 11:29
原帖由 flw 于 2007-9-11 11:27 发表

对。
DOS 缺省就是在实模式下工作的。

只在学masm的时候鼓捣过,呵呵,确实很有意思
作者: flw    时间: 2007-09-11 11:32
原帖由 cugb_cat 于 2007-9-11 11:29 发表

只在学masm的时候鼓捣过,呵呵,确实很有意思

直接操作键盘,直接操作软盘、磁盘,直接操作显卡、显存,很有意思的。
那个时代大家对 C 语言的认识也就这些,如果做应用系统的话,Foxbase/Foxpro、Cobal、Pascal 等才是王道。
作者: cugb_cat    时间: 2007-09-11 11:34
原帖由 flw 于 2007-9-11 11:32 发表

直接操作键盘,直接操作软盘、磁盘,直接操作显卡、显存,很有意思的。
那个时代大家对 C 语言的认识也就这些,如果做应用系统的话,Foxbase/Foxpro、Cobal、Pascal 等才是王道。

学masm的时候,用masm写过操作显存的程序,做过一个很简单的动画,我隔壁一个哥们竟然用这个做了个泡泡堂游戏
作者: 飞灰橙    时间: 2007-09-11 11:40
原帖由 flw 于 2007-9-11 11:32 发表

直接操作键盘,直接操作软盘、磁盘,直接操作显卡、显存,很有意思的。
那个时代大家对 C 语言的认识也就这些,如果做应用系统的话,Foxbase/Foxpro、Cobal、Pascal 等才是王道。


现在我们直接操作SD卡,摄像头,audio codec, 串口IO, 原来不过是DOS年代的翻版罢了
作者: flw    时间: 2007-09-11 11:41
原帖由 飞灰橙 于 2007-9-11 11:40 发表

现在我们直接操作SD卡,摄像头,audio codec, 串口IO, 原来不过是DOS年代的翻版罢了

老大,你就别挖苦我了。
你是为了工作折腾,那比我为了学习折腾深度要大多了。
作者: flw    时间: 2007-09-11 11:43
原帖由 cugb_cat 于 2007-9-11 11:34 发表

学masm的时候,用masm写过操作显存的程序,做过一个很简单的动画,我隔壁一个哥们竟然用这个做了个泡泡堂游戏

惭愧,我只写过流动红旗俄罗斯方块,用 PC 喇叭唱过女儿情、我是一个兵。
作者: cugb_cat    时间: 2007-09-11 11:48
原帖由 flw 于 2007-9-11 11:43 发表

惭愧,我只写过流动红旗俄罗斯方块,用 PC 喇叭唱过女儿情、我是一个兵。

该我说惭愧了
作者: 飞灰橙    时间: 2007-09-11 11:49
原帖由 flw 于 2007-9-11 11:41 发表

老大,你就别挖苦我了。
你是为了工作折腾,那比我为了学习折腾深度要大多了。


岂敢。。岂敢。。
只是觉得老的知识还是很重要,很多新的东西都是那些老家伙们修修补补一路改出来的。
所以, 对于老家伙们, 还是怀有几分敬意...
作者: jetico    时间: 2007-09-11 12:01
原帖由 flw 于 2007-9-11 11:32 发表

直接操作键盘,直接操作软盘、磁盘,直接操作显卡、显存,很有意思的。
那个时代大家对 C 语言的认识也就这些,如果做应用系统的话,Foxbase/Foxpro、Cobal、Pascal 等才是王道。

我家里有好多这类书,还是新的,老爸买的,他根本就没学,估计
我家还有本windows3。0下编程的,winmain前要申明个pascal的。是windows api编程的

[ 本帖最后由 jetico 于 2007-9-11 12:07 编辑 ]
作者: jetico    时间: 2007-09-11 12:05
对了,我家里有本实用C语言与UNIX用法词典,还有什么UNIX通讯之类的书,都是那个时期的,不知道现在学linux的话还能不能用?许多UNIX方面的书的
作者: cugb_cat    时间: 2007-09-11 12:06
原帖由 jetico 于 2007-9-11 12:05 发表
对了,我家里有本实用C语言与UNIX用法词典,还有什么UNIX通讯之类的书,都是那个时期的,不知道现在学linux的话还能不能用?许多UNIX方面的书的

哈哈  IT世家呀
作者: jetico    时间: 2007-09-11 12:35
原帖由 cugb_cat 于 2007-9-11 12:06 发表

哈哈  IT世家呀

其实我老爸不是搞这个的,他喜欢瞎折腾,有些书好象是他们行里的,还盖了章呢

C和UNIX都是向下兼容的吧?

[ 本帖最后由 jetico 于 2007-9-11 12:39 编辑 ]
作者: zuochengli    时间: 2007-09-11 12:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: cst05001    时间: 2007-09-11 12:40
谭的书写了几十年了
那时候标准都没出来
虽然他不是故意的
但是确实很多都是不合理的
谭的很多代码在gcc下编译不过

1,感谢谭对教育界的贡献
2,谭的书很老了……
作者: flw    时间: 2007-09-11 12:49
原帖由 jetico 于 2007-9-11 12:35 发表

有些书好象是他们行里的,还盖了章呢

这个就不宜宣扬了吧?
作者: xautofzx    时间: 2007-09-11 13:31
算不上毒草,但是有很明显的缺点,不适合做入门书籍,容易养成不良习惯。但是适合中国人的学习习惯,当成工具书也是可以的。
作者: 飞灰橙    时间: 2007-09-11 14:32
原帖由 iLRainyday 于 2007-9-11 14:11 发表


那我就说说,老大们多指教吧~

谭认为指针(pointer)就是“地址”(address),指针变量(pointer variable)就是存储地址的变量。pointer=address?!

pointer=a variable in which a address is stored
...


汗,我一直都这么认为的。难道也是中过毒的?
楼上的给解释解释..
作者: lemosa    时间: 2007-09-11 14:39
一本书要辩证的看。大家诟病的是老谭知知道死扣语法,不知道如何将语言运用于项目当中,不见得就是说一本书都是毒药。再说可以抠掉毒,吃它的肉嘛!
作者: flw    时间: 2007-09-11 14:40
你把你的帖子改了好几遍,现在不知道定稿了没有?
如果定稿了,那我可要提问了。
原帖由 iLRainyday 于 2007-9-11 14:11 发表

pointer=a variable in which a address is stored

这句的出处在哪儿?
作者: flw    时间: 2007-09-11 14:42
还有【谭认为指针(pointer)就是“地址”(address),指针变量(pointer variable)就是存储地址的变量。】的出处。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2