对于大多数理工科的大学生在学校学的C语言是必修课,但很多都不甚明白为啥要学C语言。就像一个微电子专业,以后从事半导体,或者数模电,学习C语言是什么鬼?但其实他以后工作的行业(从事研发的话),大多数都是用到C语言的,所以学会C语言对你今后的发展有很大帮助。学习C语言最重要的是看那几本书,在学着敲代码,这是个问题。
很多学生想来会把大学的C语言教材读个几遍,有的甚至考过了国二,但是你真的学会了C语言了吗?不尽然,C高级方面你接触到不多,你只是在函数,循环这些中徘徊,偶尔还会用到指针。总结出来就是你们看的书太少,今天我总结几本上嵌学员要求要看的C语言书籍,对C语言学习帮助很大。
1. 《C程序设计语言》 - 比较短小,跟《C++程序设计语言》的洋洋千页,娓娓道来的风格比较而言,应该说也是C的简洁凝练的体现吧。此书适合有一定实践经验的人作为一个全面熟悉和巩固语言的工具书,不是很适合初学者用来了解和学习。当然了,本书有一定的历史意义,可以买一本纯收藏,亦或安慰一下自己,对K&R稍表敬仰之寸心。总得来说,K&R网上评价一直非常高,这一点我个人持保留意见。
2. 《C和指针》 - 不要被书名骗了,此书看似专说指针,实则是C语言较完整的语言和运行环境的描述。虽然有一些复制粘贴充篇幅的嫌疑(后面的字符串,数据结构,IO,标准库什么的显得有点大杂烩,好吧我真的不是黑,不过真的有必要把F1一下就能看到的文档都弄进来吗?),不过对一些编译器的实现细节有一些探讨还是值得一读的。对了,有的练习题还不错。总得来说,值得买来略扫一遍。
3. 《C专家编程》 - 好吧,这个书里面有不少八卦和无厘头,适合宅男们消磨时间用。举个栗子吧,卡耐基梅隆大学的计算机系经常搞活动,有一次搞了个编程竞赛,实现功能巴拉巴拉巴拉,要求就一条——尽可能的快。我会随便说第一名消耗的时间是负数吗?是的,你没看错!这厮写的程序消耗了负数的时间!!想知道真相吗?去找一本来翻翻吧,呵呵。再来一个吧,大家知道MIT人工智能研究室的宅男们整天都在研究什么吗?这些热情的家伙们用LISP去控制自己楼上的电梯升降(据说这货还能自检自己是不是真身,免得被黑客利用了让自己人卡在电梯里出不来)。他们还专门设计了个网络协议(运行在七十年代的互联网上),用来查询楼道里的可乐机里有没有货,够不够凉(就为了少跑点路)。我勒个去,宅到这个地步,家里人知道吗?这下大家知道为啥人工智能多年来都没啥进展了吧。唉,控制不住啊,一说起八卦就停不下来。你是不是已经看到了谢耳朵同学的影子了?是的,我看这个书就有看《生活大爆炸》的感觉,可以买来乐一下。
4. 《C陷阱与缺陷》 这本书是典型的挑刺党了,不过在我看来,(可能是成书比较古老的缘故),它挑的刺普遍不够硬,没啥杀伤力,基本上都属于初级(勉强中级)错误。实打实写过几年C语言的同学应该明白我的意思,想看那些真正的缺陷和陷阱还是得在实际项目里找啊(我是说的那种一枪把自己的脚轰碎了的那种)。这书没啥好看的,谁要的话我五毛卖给他。
有人问,你巴拉巴拉说这么半天,难道就没有本正常点的书,能够囊括以下所有特征的吗?
1. 完整翔实,细腻丰满
2. 不复制粘贴有凑字数嫌疑
3. 不是专业搞怪和无厘头
4. 不是专业挑刺党
好吧我说的当然不是谭浩强。如果是几年前我只能双手一摊——我也不知道。不过有一次偶然间翻阅到这一本书,就产生了这种感觉——如果我是一开始读这个书入门的就好了,呵呵。
C语言程序设计现代方法
C Programming: A Modern Approach, 2nd Edition: K. N. King: 9780393979503: Amazon.com: Books
《C语言程序设计现代方法》最主要的一个目的就是通过一种“现代方法”来介绍C语言,实现客观评价C语言、强调标准化C语言、强调软件工程、不再强调“手工优化”、强调与c++语言的兼容性的目标。《C语言程序设计现代方法》分为C语言的基础特性。C语言的高级特性、C语言标准库和参考资料4个部分。每章都有“问与答”小节,给出一系列与本章内容相关的问题及其答案,此外还包含适量的习题。
此书基本符合并超越了俺前面总结的四条,俺随便说几条吧:
1. 完整覆盖C99超越了K&R。(够新)
2. 内容丰满不亚于《C++程序设计语言》(够厚)
3. 习题质量平均水准比较高。(比上面诸位高出不少)
4. 提供PPT讲义和在线教师资源(就是说你看不懂可以直接问教授,啧啧啧)
5. 探讨现代编译器的实现,揭穿了各种古老的C语言神话和信条(适合程序员的纯干货)
这五条基本超越上面所有的前辈了。(用"横扫"这个词可能有点大不敬不过管他呢)
另一本很短小的书,看没人提到我也说一下吧
Writing Solid Code ─ Microsoft Techniques for Developing Bug-free C Programs
很久以前的,可以随便看看反正也不长,半个小时到一个小时就能看完。
这些书看完你的C语言理论知识基本差不多,你所需要的就是实战经验,要不你去网上down几个开源的项目,自己慢慢的学;要不你就报个培训班,缩短自己自学的时间。其实自学最大的困难就是自己是否坚持下来,学生在学习期间会遇到种种问题,往往会打击自己自主学习的积极性,从而选择放弃。个人建议,如果没有多大的毅力,或者一往无前的决心,就去报个培训班吧。