管窥C入门经典

学C,平日看上一两本入门书足矣(水货如我,就看过一本谭浩强),而书之好坏无所谓,怎么都能把你整入门了,而你一入门,便不太可能再去读一本更好的入门经典。于是自己发生了把主流、经典的C入门书籍都撸一遍的意念,比比看,到底哪(些)本最适合入门——专业蛋疼,请勿模仿——一来弥补自己失去的好书(学习机会),二来供准备学C的情侣参考(少走弯路)。

无论是您学什么,入门书就像启蒙先生一致主要,老师不佳,你对所学内容都会暴发排斥感情,启蒙好了,那门手艺甚至可能成为你的看家本领。C语言规模并不庞大,但所含知识点比较混乱,所有教材都如此些内容,就看编者以如何顺序、什么顺序、什么表明格局讲述。私以为一本好的入门书应持有以下五个特点:一是亲和易读,就如一个故事不断道来,你查看的是一个多彩的世界,而不是一本僵硬的字典;二是重量十足,看完它你就着实入门了,有些书大白话噼里啪啦扯了半天乍感觉挺好玩其实没啥内容,当您真的开首采纳时才察觉还得再看本其余。国内犬牙交错的C教程举不胜举,同名如“C程序设计”“C语言程序设计”“C语言程序设计教程”的都触目皆是,这个不闻名的就反对考虑了,要看就看经典。


→ 如若您是零基础

《明解C语言》(337页)推荐指数:★★★★★

《明解C语言》

乍一看还以为是本新书,但原版在1999年就发行了,引进得实际太晚。属于相比较庄重的课本,忠诚于专业术语,并未考虑更易懂的表明情势,并提到部分算法,适合专业地学C;内容协会很成功(把排序放在结构体部分的做法很神奇),安分守纪,知识点相比较浅,并不健全,相对偏僻及细枝末节的内容没有描述(也不要求拿来让初学者头大),并未冗余,应该静下心来一字一板地看,一丁点也拒绝错过。PS:把C历史背景放在附录不失为聪明的做法,毕竟比起发展史什么的,读者可能更关爱如何及时写个hello
world。

《21天学通C语言》(614页)推荐指数:★★★★★

《21天学通C语言》

槽点一:这书名也忒俗了吧,那类书一般不都是水货吗?

诠释:确实怀有这类书名总是要为人所诟病,但你相对不应当因而而失去此书。这是本来自外国的科目,原名还就是“Sams
Teach Yourself C in 21
Days”,然其质量是国内这个名字好像的书所难以比较的。

电子版,槽点二:614页,也忒厚了啊!完全是学霸级初学者专用啊。

诠释:C语言的21天课程其实只占了前431页,后边是C++、Java、C#等附加课程,不在这一次自虐活动限制以内,故我也从没看。

本书把C的每一局地都教授得更加仔细,附有例子、经验、注意点、指出等,还详细地介绍了种种你脑中或许会暴发的疑云或在实践中可能会碰着的标题。有些教材或多或少显性或隐性地需求读者可以触类旁通,而此书不但介绍了“一”,把“三”也逐一讲解了(比如各知识点的构成使用)。从不死循知识结构布局内容,而是遵守读者逐渐适应的求学进度循途守辙。为有限支持读者通晓精晓,提前选拔时大约介绍过的知识点会在后续章节重新详解。

不过跑上来给的例子并不简单,一股脑儿介绍不少事物,零基础者瞧着或者会有点头大。还存在部分不小心的地方,虽谈不上误导,但可能会挑起猜忌。除去那一个老毛病,我毕竟是被它惊艳到了,力荐之。PS:我看的这二〇一二年五月率先次印刷的本子有如拾草芥印刷错误,希望后续印版会有考订。

《C Primer Plus》(626页)推荐指数:★★★★★

《C Primer Plus》

怎么说呢,看得出那样的小编才是的确懂C、爱C的人,对各样版本的C标准了如指掌。好比写小说,没有才华的人画虎不成反类犬才把工作讲了解,而一身才气的人稍微抖一抖,文字就散达成一篇佳作。第一章概览就把我赤裸裸地惊艳到了,同样介绍C的历史及背景,却不是任何书那样刻板的罗列,语言简明意赅,不需讲的果敢不讲,必要讲的醍醐灌顶,没有废话,一气呵成。恨自己那时学C看的不是这本。

跑上来一股脑介绍的事物很多,很细,初学者或许见了头大,但你若能耐下性子细细看懂,必会惊讶它讲得真棒。行文极其精巧、严厉,纵然初学者可能体会不到那或多或少;内容详细、细致,无愧于书的厚度,常用的不常用的,基础运用高级应用,大庭广众下的犄角旮旯里的通盘;全方位多层次实用技巧、注意事项,示例经典,一语中的,兼具入门书与工具书的气度。

一体化上云巅工作室译得还算不错,但您依然会碰着有些拗口的句子,不过终究瑕不掩瑜,书的一体化品质摆在那里,看引进第六版时能不可能译得更好些。

《啊哈C!思考快你一步》(191页)推荐指数:★★★★☆

《啊哈C!思考快你一步》

那是唯一一本实体书和电子版我都没能接触到的,或许是不够热门,网上找不到一体化的pdf,连出版前的草稿版《啊哈C语言》也仅公开了大体上。倘若有意中人能搞到总体的电子版,恳请予我共享一份。我那边看的便是唯有一半内容的先行版(以及规范版的几十页试读样章),还带着奇异的错别字和病句,但版面接近标准版,读起来也是相比舒畅(英文名:Jennifer)的。

不知晓啊哈磊(小编)那哥们儿是何方神圣,也仅是个有想法的普通人吧,书上是那样介绍的:“曾在中科院玩过单片机。马尔默大学历史上率先位以本科生身份进入MSRA的小伙伴,在机械学习组从事搜索引擎方面的钻研。公布国际会议杂文一篇(IEEE)。全国青少年消息学奥林匹克金牌教练。”我很欢娱那样年轻一代人写的书,用语随意,带着颜表情,博文style,没有套话,没有代沟,望着很亲密。本书称为是“小学生坐在马桶上都得以读懂的‘C语言编程’入门书”,你可能不信,硕士都喊着学C枯燥,小学生那一点基础和智商就甭提了,可本书还真够小学生看懂,我居然觉得多少地点还是可以写得更萌、更形象些。然则小学生能承受的程度到底是零星的,本书定位是如此的低,以至于只介绍了C最浅的这有些知识,更加多篇幅用来比喻、增添读者的编程兴趣,简直太相符零基础入门了!而啊哈磊自己按照gcc做的啊哈C编译器也格外适合初大家磨炼编程,似乎她协调说的,是简单得无法再精简的C语言编程软件,没有工程的定义、没有编译链接的步子、没有条件布署,各样从未,你一打开连代码框架都曾经写好了,是专为初学者制作的灵魂产品。

啊哈C v2.0唯一界面

《C程序设计》(第三版378页、第四版390页)推荐指数:★★☆☆☆

《C程序设计》

把“发行逾1100万册”的音信印在书面大主旨的做法实在太中二了,你就是本指定教材又不是畅销书,全国高校都用你不破千万才怪呢!并且,千万的销量同时也代表接受千万读者的查验,稍欠严苛即易被喷。网上有个500多页的word文档(百度“《C程序设计》错误”即可找到),简直太蛋疼了,他写得完别人也看不完啊!本书确实不够严格+印刷难题层出+许多地点还留存严重错误,但那份文档有点挑剔,其中许多说法令人为难苟同,500多页的框框水分太大。

那本教材,初学者拿来学编程确实较易领会,但对C语言的把握会有一定偏差,慎读。而我们不妨暂且忽略其中的有些重大题材,重新审视之。作为国内教材中的典范,此书即使在情节社团上仍然中规中矩,但知识点讲解万分浅显,由于通俗,稍显(我是说稍显)啰嗦。做教材可以,不符合自学,因为您不能确定怎么样是协理的。毕竟作为一本国家级教材,该涵括的都得涵括,不仅要领人进门,还得有限辅助读者达到能考查的水准;摆脱不了应试教育的特点,为了巩固知识点,时不时会冒出(i++)+(i++)+(i++)和a+=a-=a*=a这样神奇的架子。若是你喜欢那种style,千万不要错过此书,没错,我当初就有点喜欢那种style,乃觉那书不错的因由之一——竟然让我搞懂了那般复杂混乱的实物(后来才察觉其实编程中根本没人这么做)!


→ 如已学过一丢丢

《C程序设计语言》(258页)推荐指数:★★★★★

《C程序设计语言》

昵称K&R(两位作者姓氏首字母),C语言之父的文章,就好比向别人牵线自己的男女,不可能再精辟,不可以再权威,被当成C语言圣经。在C还尚无统一标准的年代,78年K&R的第一版直接被广泛接受为C标准,其他号称是圣经的C语言书用词未免也太想当然了……

圣经就好比一件标准模板,国内外数不清的C教程都是参考K&R写的,一如大堆的浏览器都采纳了IE内核一样。B5的开本短短258页,除去供查阅的附录仅166页,再除去第8章“Unix系统接口”仅剩148页,这么少的篇幅将C语言讲得清楚,简直是场华丽的艺术!

此书写得不得了小心谨慎,必要之处还提及老版C的情事,可以说学C非看不可,但并不吻合零基础入门,正如其第1版序中所言:“本书并不是一本有关程序设计的入门性手册,它须求读者熟识基本的次序设计概念,如变量、赋值语句、循环和函数等。”从头至尾使用的均是书面化的术语,并波及到逆波兰(Poland)、二叉树、Unix等专业知识,还三日五头将C与Fortran、Pascal语言进行相比,你若不打听这一个望着一定高烧,由此K&R并不是入门的最佳选拔。

《C语言入门经典》(第4版571页、第5版584页)推荐指数:★★★☆☆

《C语言入门经典》

一看那霸气的书名就领悟它是部经典,当然那是译名,(第4版)原名为“Beginning
C: From Novice to
Professional”,表达多浓密,没错,form的是novice,首先你得是个novice,前言中泼辣暗示你最好之前接触过编程那玩意儿。情节是一整块一整块讲的,力争周详、深刻,没有轻重,讲完讲透甘休,须求时绝不客气地使用前面才细讲的技能,导致一下子有超越知识点显示在读者面前。多数章尾有个程序设计的事例,而那几个事例对于初学者的话也众所周知过于复杂。

最可怜的是,(第4版)我早就看得一定简单,但照旧发现了几处严重的谬误,不是笔误也不是印刷难题,为清除翻译出错的或是,特意比照了英文原版,(同时也免去了C标准版本的因素)确实有错(上边例举两处,尚未学C的对象请直接跳过)。其余,不少地点讲得不够清楚,我本怀着崇敬之情拜读,结果最终对其印象并不太好。

错误1(第5版修复)

P267关于realloc()函数:显著,第一个参数的值不应超越以前分配的字节数。否则,新分配的内存将与原先分配的内存区域大小同等。

原版P270:Obviously the value of the second argument should not exceed
the number of bytes that was previously allocated. If it is, you will
only get a memory area allocated that is equal to the size of the
previous memory area.

荒唐2(第5版未修复)

P462关于流:流是外部数据源或数量目标地的肤浅意味,所以键盘、显示屏上的命令行和文书都是流。……将数据写入流(即磁盘文件)有二种方法。

原版P468:A stream is an abstract representation of any external
source or destination for data, so the keyboard, the command line on
your display, and files on disk are all examples of streams….There
are two ways of writing data to a stream that is a disk file.

第5版的转移分外小,将第4版九成内容照搬,就最终伸张了一章“Advanced and
Speciallized
Topics”(高级专用大旨),介绍Unicode、线程等,讲得也不错驾驭仍旧不知所云。倒是在排版上富有提升,更适应阅读,假如你硬要来上一本,第5版会更好一些。

《嗨翻C语言》(588页)推荐指数:★★★★☆

《嗨翻C语言》

莫被那厚度吓怕,它的字很大,空白很大,图片很多……即便把一般的专业书比作word文档,那么《嗨翻C语言》就是ppt,种种字体,各样插图(尽管多数只意扩展情趣而与正规内容涉嫌不大),你会觉得赏心悦目,比如:

右下那壮汉居然在想(说?):“可自我欣赏这一张,上面有小猫咪呢!”诸如此类成千成万,随便翻看一页都能蒙受这么个无厘头的吐槽或疯话,恶搞无极端;知识点与剧情饱满的故事组成在同步,想忘都难;译者也幽默有趣,做了重重本土化的办事,比如“三位钻石王老五准备加入今日的‘非诚勿扰’”……总体感觉依然像一本幼儿园的启蒙画册。(Head
First体系都那么些无脑样我会乱说?)

在开讲知识点前先率领读者自己思考,猜猜那一个东西是干啥的,甚至不时让您站在编译器或者语言设计者的角度思考难点,那几个做法很特殊,让您从一先河就从很精神的范围去接触C;同时督促读者动脑,陶冶题有趣而简约,指示、答案及教学也要命成功。但是书里洋溢着强烈的老美风格,很high很心境,可以想象美利坚合作国学生读了本书极可能做出很实际很创意的东西,而中国的学童读着或者感觉反而有点杂乱。并且它起源不低,分外不低,明确地说,适合学过其余语言(如Python)的人用来学C,后半部分的高等应用越发关乎操作系统和网络的学问,尽管它也做了简短介绍,但本身深信不疑没接触过的仇人一下子依旧难以承受的。

《C语言点滴》(302页)推荐指数:★★★★★

《C语言点滴》

看得出小编真的是个有热情有想法的好老师,语言轻松诙谐有内涵,跑上来1.1节武装篇大话程序员屌丝着装就能闪瞎你眼。真正含义上的由表及里,一开始浅得连水都尚未,然后不知不觉就潜到了马里亚纳海沟。内容并不系统,比起任何的C语言书,它不是教材而是教辅,越多的是计算性的事物(使用技巧注意事项什么的)——小编统计了协调教学进程中普遍的难点与经验,参考了一部分经典之作,对其中内容开展了二次包装之后以更易驾驭的格局显示给读者——而与其说是查漏补缺的教辅,其实又更像是心得写得不错的多级博文,无论你对C领会程度怎么着,读一下稍稍会怀有收获

那就是说之于初大家,相比零基础或学过其他语言,你但是是学过一点C,哪怕唯有一丁点。有好多术语是在不表明的场馆下出现的,你手头最好还有一本主力教材。本书专打支持,但把重难题剖析得要命明亮,对初学者急忙、准确地操纵知识点很有援救。借使您有地点看不清楚,不必忧虑,它自然就是“点滴”,暂时漏掉几滴无伤大雅,日后再补不迟。

PS:全书没啥可吐槽的,唯独1.2节布局糟糕:从寻找引擎、e-mail、聊天工具、社交网站、论坛、博客、下载说起,哦不,是教起,准确地说是零基础教起,即便说得挺有趣,但其实并未须求,现在一经有点文化水准的,即便是小学生照旧幼儿园的幼儿也都会上网,而从未知识程度的,不识字的,也一向不会用电脑,更不容许来看C语言,换个角度,学C的读者还不会上网吗,那么些东西是写给哪个人看呢?

相关文章