toyotazijing吧 关注:45贴子:3,317

zt:关于谭浩强的c语言

只看楼主收藏回复

1:书皮上面有那么多的牛人题词,估计也许是自己的水平太低。


1楼2011-06-18 10:00回复
    2:ANSI只给了两种方式:
    int main(void) {/*...*/}
    和 int main(int argc, char *argv[]){/*...*/}
    其它的形式都是不标准的,属未定义行为,老潭就好这个。


    2楼2011-06-18 10:00
    回复
      3:如果你有兴趣,不妨查查近二十年来老谭写过的书。老先生的主要作品是:Basic语言教程、C语言教程这两种书。他的书现在的版本与十年前的相比,多少也有点“与时俱进”,根据语法变化做了点修改。但是改不掉的是他那种糟糕的编码风格、好钻“未定义行为”在某种编译环境中的具体表现的牛角尖而且颇为自已能用很多篇幅讨论这样无聊的问题而沾沾自喜的性格,以及对程序设计中很多方面的错误理解和解说。
      有意思的是,这两种书他前后大概各出过七、八本——在不同的出版社、用不同的书名、列入不同名称的从书系列,而且它们面向的都是初学者这个读者群体。如果说一本书出版了六、七年后,在出新版本的时候他打算找另外一家出版社出,这倒无可厚非。问题在于,现在他是在两、三年时间内会在不同的出版社用不同的名称(有时干脆就是相同的)出几本内容基本相同的初级编程教材。说刻薄点,他的这种干法只能解释为:老先生自知来日无多,要赶紧把贬值速度如同老蒋逃离**前夕的国民政府法币的“谭浩强”这个无形资产尽可能多的套现,以为子孙多积攒点遗产。
      说句公道话:老谭虽然水平不高,但是在中国计算机教育的早期他的确作出了不少贡献。因为那时全国上下懂计算机的人很少、总体水平极低,所以以老谭之碌碌,仍能对大伙有所帮助。但是人贵有自知之明:你的时代已经过去了,你就应该知趣地退在一边看年轻人的表演。这方面王选先生就很值得学习。王先生自已说过:在 90年代初的时候他就深切地体会到自己对新技术的学习和掌握已经赶不上身边的年轻人了,所以他自觉退出科研一线,让有能力和活力的年轻学者挑大梁。反观谭先生,不但隔个一年半载的就要把他那泛黄的书稿拿出来掸掸灰、改几个字,然后找家出版社出版,而且,他老先生还成立了一个所谓“谭浩强工作室”,组织一伙写手写了一批同样的碌碌之作——其中某些书涉及的领域,相信谭先生自己恐怕知之甚少。以王选先生之学识和名望,尚知其力有不逮。老谭,你为什么不惭愧?!


      3楼2011-06-18 10:00
      回复
        4:建议老谭好好看看The C Programming Language,好好学学C语言。
        我最烦学生拿着他书里一个语句里面好多++的问题来问我。
        我不教C语言,只教C语言版数据结构,发现计算机专业没有一个C语言学得好的学生,对此很无奈。都是老潭的教材闹的,我发现凡是C标准上说的is undefined老潭讨论起来就特别来劲。


        4楼2011-06-18 10:01
        回复
          5:老谭后面的写的也是漏洞百出的。例子程序也是臭不可闻的,有些编译不过去(例如把不同的指针类型用等号赋值,用过C的人都知道不同类型的指针在赋值前需要进行转换,C标准里也规定了),有些执行不了(例如老谭改字符串常量的值),不知道他写完书有没有把书上的例子编程序试一下。还有老谭跟本就没写过或者阅读过20行以上的程序,书中的许多东西都是老谭想当然之作,有些地方想法很幼稚。所以请大家不要和这个没写过程序的人学编程了。


          5楼2011-06-18 10:01
          回复
            6:这位谭教授涉猎颇广,从C,BASIC到网页制作、Word应用可以说应有尽有,谭甚至主编过一本如何使用Windows 98的书,比如如何用画笔程序画画,也许7-11岁的孩子们会喜欢,对此我非常理解,因为这些书的发行量很大,可以赚很多钱,只是,在你决定买他的发行量达400万的《C程序设计》时,是否应该考虑一下,会不会有其它更好的选择


            6楼2011-06-18 10:01
            回复
              8:读了老谭的书,总觉得谭浩强是一个很少自己编写程序的老学究,四平八稳、中规中矩。他的书里面没有经验建议,也没有自己独到的见解,只有完全正确的规范。合适当工具书(但说起C语言工具书又有哪本书敢和K&R的《The C Programming Language 》争锋)。而国外的很多C语言书是由C语言创始者或拥有几十年经验的质深程序员编写的。这些书里更重要的是融入了作者多年的编程经验。使用了多年的C语言后,随手翻翻这些书,时常会对作者独到见解拍案叫绝、深受启发。但是看谭浩强的书,总是觉得乏味枯燥——典型的中国教材。
              举一两个简单的例子:
              1.运算符优先级问题
              谭浩强的书只是在附录中将ANSI C里有关运算符优先级的规范抄了一遍,区区两页。当然这样最稳妥,最不会出错。
              在《Pointers On C》中作者不仅详细解释了运算优先级,还分析了C语言规范中定义不清的地方,也就是告诉读者C语言中哪里存在陷阱。此外还对在各种编译器中的运算结果进行比较。可以看出作者颇费了些心思。
              而在另一本书——《实用C语言编程》/《Practical C rogramming》中作者建议道:你只需要记住乘除的优先级高于加减,其它地方一律加上括号。我经历过几次对着运算符优先级表帮别人查软件BUG以后,就把这句话作为编程原则发给每个新来的人。
              2.编程风格
              谭浩强的书从不涉及编程风格,可能是因为C语言规范中没有这方面的规定,也可能他自己就没意识到编程风格的重要性。
              而在很多入门级的编程书中常常都会单辟一章详细介绍编程风格,因为良好的编程习惯要从一开始培养。养成好习惯很难,坏习惯一学就会。
              我们对刚到公司的大学毕业生做的最多的培训就是编程风格培训。因为他们常常对缩进式风格、匈牙利命名法、注释的重要性等等都一无所知。但即使这样常常也达不到效果,因为这些学生早就在学校里养成了只要能实现功能,其他都无所谓的习惯。这应该算谁的责任?
              我不是说谭浩强的书不好,只是觉得国内大学里的这帮教授的实践经验太少。所以写出来的书同国外的经典书籍比起来整整差了一个档次。当然这些在刚刚接触C语言时是感觉不到的。但过了多年后才发觉以前走了不少的弯路,自己花了几年总结的经验教训,实际上在很多国外的优秀书籍里早就有了。
              


              8楼2011-06-18 10:02
              回复
                10:谭的书千篇一律,都是一个样,乱七八糟不知道说什么,他出的许多书的章节都是一样安排的,完全是骗钱。看看《c语言解析教程》(第四版)吧——你就会知道他和国外大师的差距了。


                9楼2011-06-18 10:02
                回复
                  11:我不得不承认,我当年学习c语言的时候就使用这本书,现在看起来,里面的代码确实很不符合软件开发的标准,尤其是代码的命名根本就不符合规范,经常用什么a,b,c啊之类的,但是这本书是最先带我入门的教材,处于对自己“老师”的尊重,决定给3分,书虽然写得不好,但毕竟曾经是自己的老师。不能太过于苛求,毕竟一个年纪这么大的人能够献身于中国的计算机教育事业确实值得尊敬的,想当年计算机不这么普及的时候,那个时候最流行的语言恐怕就是basic 了,可是当年谭老的Qbasic创下了2000万册记录,不得不说他也算那个时代的一个英雄,今天我们能够用这么好的高级语言来写代码的同时,不要忘记了哪些曾经用debug,为了不让磁带顺坏而天天在机房捉虫子的程序员,不要忘记我们是站在巨人的肩膀上.........


                  10楼2011-06-18 10:03
                  回复
                    12:1.代码不规范,书中有大量类似的如下代码:
                    //4页
                    main()
                    {int a,b,sum;
                    a=123;b=456;
                    sum=a+b;
                    printf(“sum is %d\n”,sum);
                    }//110页
                    main()
                    {float add();
                        float a,b,c;
                        scanf("%f,%f",&a,&b);
                        c=add(a,b);
                        printf("sum is %f",c);
                        }
                    float add(x,y)   //过时的声明。
                    float x,y;
                    {float z;
                        z=x+y;
                        return (z);
                        }
                    这样的代码规范吗??我认为应该这样:


                    11楼2011-06-18 10:03
                    回复
                      #include 〈stdio.h〉int main()
                      {
                      int a, b, c, sum;
                      a = 123;
                      b = 456;sum = a + b;
                      printf(“sum is %d\n”,sum);return 0;
                      }#include〈stdio.h〉float add(float, float);int main()
                      {
                      float add();
                           float a, b, c;     scanf("%f,%f", &a, &b);
                           c = add(a,b);
                           printf("sum is %f",c);return 0;


                      12楼2011-06-18 10:03
                      回复
                        }float add(float x, float y)
                        {
                        float z;
                             z=x+y;     return z;
                        }虽然我改后的代码不是很标准,但是绝对比原书的好。
                        把代码写得规范是很重要的!!!!!!!!!!!2.大量无用细节和讨论。
                        书中讨论了++运算符。如
                        k=(++i)+(++i)+(++i)
                        书中还说什么若i原值等于3,上式等于18,但是我在VC6.0上编译后运行是16!!!!!!!!!!!!其实像(i++)+(i++)+(i++),(++i)+(++i)+(++i)这些表达式的结果因编译器而异,具有不可移植性况且在软件开发中根本就不用哪些表达式,比如说在linux的内核源代码中也没有用到这类表达式。所以我认为:没有必要写上面的哪些表达式。把它们提出来,说明一下子哪类结果因编译器而异。在平时编程的时候不要用这类表达式。


                        13楼2011-06-18 10:04
                        回复
                          好了,不粘贴了
                          先谈谈自己的感觉吧…我看的是c++…由于我校是个低端小气的学校,这种神器,我们是米有统一定制过
                          记得刚开始上于头的课的时候,于头讲:“谭浩强的书别看啊,看了后悔……”当时还很不理解,因为听说有很多人都推荐这个,而且别人的拿的看了几眼,也没觉得有多差劲
                          后来照着上面的例子敲了几个,complex,有很多错误
                          今天看到了这篇文章,刨去几个刻意调侃的几条,仔细想想,那些技术上的错误果然是有的
                          恕不赘述,因为我也没看全,不好发表什么评论
                          现在看的是C++程序设计,一个美籍华人写的,还挺不错,还有侯捷翻译的一些资料《effective CPP》《more effective CPP》挺逗的吧
                          像什么《thinking in C++》太高端大气,一直在手机里睡大觉,什么时候我睡不着了,让它给我催眠还是相当不错的
                          罗大人推荐的《design pattern》树上睡觉君找过,美国原版的太费银子,啊,应该叫刀
                          中国的没几本像的
                          去图书馆找书,结果被别的专业的人叫学姐,还让帮忙找此神器,令人惊奇的是---居然全被借走了,啊。这让我想起了他们的c++考试:
                          下列语句的意思是:
                          !a!=b;
                          这是什么???
                          故意不让你看清楚啊,写程序有个重要的东西叫可读性啊,你这让人怎么读???出这类题的老师全都面壁去!什么玩意!!!括号不加你什么意思啊!
                          我表示软件的不会做他们的题啊,什么东西啊,写个程序还要试试在VC6.0上可不可以运行,oh no!!!


                          14楼2011-06-18 10:24
                          回复
                            强强很萌的,乃们不要黑他-0-


                            15楼2011-06-18 12:44
                            回复


                              16楼2011-06-18 17:55
                              回复