四书五经c
C语言之四书五经
作者:乾坤一笑
C语言教学早就进入了我国各大高校的教程,但是大家对它的认识以及重视程度还很是不够。很多人认为C语言无非是一种教学语言,是一种工 是那种语言更有“钱途”,学习那种语言毕业后能够轻松找到高薪的工作——当年我也是这么想。那么,在这里我要给这些朋友吃一剂定心丸了——C语言大有应用市场,国内知名的四家电信制造企业巨龙、大唐、中兴、华为(简称“巨大中华”,如果你对此四大家耳生,我劝你应该google一下学习学习了)无不热招C开发人才;各大外资、世界500强信息产业亦是如此(去51job.com上查查就明白了)。只要你精通C语言,即使你不了解C++等其他语言,找到高薪工作也是轻松得很。
为什么我如此推崇C语言,而对C++语言尚未提半字?一方面受本篇题目的限制(偶不能跑题呀),另一方面,我认为C语言比C++好学得多,学习成本也很低。为什么这么说?下文中所列举的4部C语言经典巨著,平均每本定价不到40元,如果你依次把它们学透了,那就够了,不需要再买C语言书了(事实上也没什么其它书好买了)。下一步就是从实践中学真知了——一方面从工程项目中锻炼,另一方面从分析老外源码(比如linux源码、GNU源码等)中提高,功夫下到,收获自然来。而C++语言,拿我自己来说,买书投入的资金已经超过千元了,也认真学习了1~2年(时断时续)了,终究对标准C++语法彻底理解的部分占不到40%。引用vckbase论坛一大牛“七猫”兄的话说:“我不打算再往C++书上投钱了”,那简直是无底洞。从另一方面说,这几本C语言经典巨著,对于学习C++的PO、OB设计也是很有帮助的(PO、OB应该算是C++的基本功了,PO指的是Procedure Oriented, OB指的是Object Based);国外的顶尖C++高手,往往也是C语言高手。
好,罗嗦了这么,下面就介绍C语言的几本经典之作。另外BTW一句:很多朋友一定会问:为什么我们学校不用这些书做教材?这个问题就很难回答了,我觉得你应该致电国家教育部、或你们学校教导处询问,人家自然会给你个说法。:)不过有一个原因大家都能理解,(冒死说句大不敬的话),教这些书估计你的任课老师未必罩得住,也说不准。:) 因为这些都是国际上Hacker级的巨著呀。(看我多大方,把我的所知毫无保留的都传授给你了:p)
依据我给出的顺序,你应该很容易自学这些书(均有中文译本,此处给出的都是中文版的信息,在各大电子科技书店都应该买得到):
一、The C Programming Language
C程序设计语言(第2版·新版)
原出版社: Prentice Hall PTR
作者: [美]Brian W.Kernighan,Dennis M.Ritchie
译者: 徐宝文 李志
书号: 7-111-12806-0
页码: 258
开本: 16开 版次:2-1
丛书名: 计算机科学丛书
出版社: 机械工业出版社
出版日期: 2004-1-1
定价: ¥30.00
二、Pointers on C
C和指针
原出版社: Pearson Education
作者: Kenneth A.Reek
译者: 徐波
书号: 7-115-11456-0
页码: 450
开本: 16开 版次:1-1
丛书名: C和C++实务精选
出版社: 人民邮电出版社
出版日期: 2003-9-1
定价: ¥55.00
三、Expert C Programming
C专家编程
原出版社: PH PTR
作者: Perter Van Der LinDen
译者: 徐波
书号: 7-115-10627-4
页码: 291
开本: 16开 版次:1-1
丛书名: C和C++实务精选
出版社: 人民邮电出版社
出版日期: 2002-12-1
定价: ¥40.00
四、C Traps and Pitfalls
C陷阱与缺陷
原出版社: Addison Wesley
作者: Andrew Koenig
译者: 高巍
书号: 7-115-10623-1
页码: 172
开本: 16开 版次:1-1
丛书名: C和C++实务精选
出版社: 人民邮电出版社
出版日期: 2002-11-1
定价: ¥30.00
C语言学习方法
乾坤一笑
原文见于乾坤一笑的blog一笑聊斋
谈谈偶的学习方法,抛砖引玉!:)
学习不论讲不讲方法,最终都能学会。但是别人1个月学会了,而你却100年才学会,这不就晚了么?:)所以说,学习还是要讲究方法的。学习方法正确,事半功倍;学习方法不正确,事倍而功半。
什么才是学习C语言的捷径?我的答案是看书。书中所写,是前人数十年经验所写,看十本书,就相当于汲取了前人数十年的功力,那么你的内功也会迅速上升1甲子。:)书当然要看好书,只有好书才营养丰富。假如你花了1天时间看了一本破书,而该书介绍的知识虽然对于你来说是全新的知识,但是由于书中组织不当、或者深度不够,使你获取的营养很少,还不如自己研究一天来的快,这种书就不值当看了。学习C语言要看那些好书?我认为首先要把基础书给看扎实了,比如拙著《C语言之四书五经》中介绍的4本。(虽然这些书很多已经绝版了,但我相信电子版也是很有益处。况且,如果你真的想看,我相信你一定有办法搞的到。)这些书你会在很短的时间内看完(比如一两个月),这取决于你的基础和悟性。之后要看那些书呢?我不妨再列几本。
Bjarne Stroustrup的《C++程序设计语言》(The C++ Programming Language)都要仔细;
Bjarne Stroustrup的《C++语言的设计与演化》(The Design and Evolution of C++)
David R.Hanson 的《C语言接口与实现 创建可重用软件的技术》(C Interfaces and Implaementations Techniques for Creating Reusable Software)这两本书讲述了如何用C来实现异常处理、实现类型的封装
和扩展等一些大的项目中经常用到的高级技术。其他的书,操作系统的要看,编译原理的要看,算法的要看,模式的也要看。读书破万卷,coding如有神。总而言之,就如《传》中云:“生而知之者,上也;学而知之者,次也;困而学之又其次也。”我们不能总是因困而学之,而要做到兵马未动,粮草先行。
看书是学习的导向,书中能一一介绍清楚概念,但书却不能把应用的细节一一介绍给你,因为应用总是招数繁复,变化多端。因此我们要想熟悉招数,懂得书中所讲怎么使用,还要多读源码。Linus给别人解答问题的时候,常说Read the fucking source code;候捷也在其文中提到“源码之前,了无秘密。”这就是大师的箴言呀。源码就像是动画、就像是幻灯片,把书中的招式一一演练给你看。可以说高手的经验大都是源自代码。源码和书一样,也是要看好的,不要看差的。在此,我推荐看Linux kernel source code 和 Linux tcp/ip source code。这两套代码都是开源的,垂手可得。此外,还可以配合着Andrew S.Tanenbaum的《操作系统的设计与实现》(Operating Systems:Design and Implementation)、毛德操 胡希明的《Linux 内核 源代码情景分析》、Jonathan Corbet,Alessandro Rubini,Greg Kroah-Hartman合著的《Linux 设备驱动程序》(Linux Device Driver,3e)、W.Richard Stevens《TCP/IP详解(3部)》 (TCP/IP Illustracted )、W.Richard Stevens《UNIX环境高级编程》(Advanced Programming in the UNIX Environment,新版增加了Linux kernel的内容)等书来看,方便的很。
当然程序不是看出来的,是写出来的。我高中的时候每天坚持写6个小时程序,《数据结构》和排列组合、图论方面的习题反复做了N遍。到现在虽然已经时隔五六年,很多内容早已淡忘掉,但却培养了我很强的编码能力和调试能力,直到现在还对我的工作有很大的帮助。
学习忌贪多、忌浮躁、忌急功近利、忌目中无人。把学习计划放的长一些,培养一个好的学习方法,一步一步慢慢走,终能成为高手。
-------------
写于2005年8月1日 转载请标明出处和原文链接
编者注:本文中书籍链接一律按《C语言之四书五经》例,引用于China-pub,但部分书籍也已缺货,大家可以看看其他书店或到图书馆或找朋友借阅。