c语言学习

c语言学习,第1张

首先是纯C的教材

第一本:H.M.Deitel和P.J.Deitel的《C HOW TO PROGRAM》(C程序设计教程)。

作者是父子,从事语言教材的编写合计超过40年,本书被美国众多高校选用为教材,既可入门也可翻阅,甚好。本FAQ作者认为如果你只打算看一本的话,那就选他好了。

第二本:Brian W.Kernighan和Dennis M.Ritchie 的《The C Programming Language 》(C程序设计语言)。

此书简称K&R,由C语言的创建者撰写,是全球销售最多的C语言教材,其品质不容置疑。不过不适合入门,适于在入门之后巩固提高。实体书有原版和译本购买,电子版英文较多。

第三本:谭浩强的《C程序设计》。

优点在于,面向中国学生,语言易于理解,而且全书篇幅小,看过的人多,容易找到人请教。但是各方面的概念不深入,浅尝辄止,实际上还有些小错误,不是很严谨。因此适合第一次入门学习,例题做完基本就可以抛弃了。有实体书和电子版下载。同时配套有习题集和习题解答,适合自学。

第四本:王大刚先生的《C语言编程宝典》。

质量不错,与老谭的书一样非常适合中国学生,而且对于TC的图形编程讲解非常透彻。本人没有发现实体书,可能只发布在网络上,在VCgood论坛有转载:

http://www.vcgood.com/bbs/forum_posts.asp?TID=1560&PN=2

http://book.chinaz.com/C/C/index.html

第五本:无名作者的《C语言初学者入门讲座》

VCgood论坛转载,作者未知,质量同上一本。http://www.vcgood.com/bbs/forum_posts.asp?TID=1294&PN=4

第六本:Kenneth A.Reek 的《C和指针》

进阶读物,把指针一章演绎为一本书可见其技术精度。指针是C的灵魂,能领会本书中的理念,才能算是真正明白了C指针的奥妙,才算懂得了C。

第七本:Andrew Koenig 的 《C陷阱与缺陷》

进阶读物,在认真读完上面的入门书之前,暂勿阅读。本书畅销14年历久不衰,足证品质。

最后一本:ISO C89规范/C99规范

一切关于C语言的疑问,只有一件东西最权威,那就是ISO的规范。但这不是正式出版物,是类似法律文本的技术说明,而且只有英文版。新手阅读,提防吐血而亡。

然后是C++的教材

C++比C复杂的多,所以教材也就纷繁芜杂。既有综合性入门性的,也有专项深入的,阅读要循序渐进,以下分阶段介绍(以下文字有部分引用自他人评介)。

首先是毫无基础的时候,先要初步掌握语法并形成编程的概念

level 0:

H.M.Deitel和P.J.Deitel的《 C++ How to Program 》(C++大学教程)。

又是这对父子。有很多号称C++入门的书,但经我的观察,如果要选择能推荐给毫无编程概念的新手用的书,这本算是佼佼者了。此父子的《C程序设计教程》我已推荐了。

仍然是K&R,Brian W.Kernighan和Dennis M.Ritchie 的《The C Programming Language》(C程序设计语言)。

尽管C++之父亲口说,最好把C++看作一门新语言来学习,但我个人认为,一开始学习C至少有两大好处。相比C++,C还是非常简单的,易于掌握,避免你过早陷入C++的语法泥潭。同时,学C能让你对计算机的底层运行有所认识,建立良好的概念。

钱能的《C++程序设计教程》

国内C++教材中较好的一本,作者是教师,总结多年教学实践的经验写成的,比较适合国内学生。

PS:老谭也有一本C++教材,在此就不太推荐了,它完全是用C的思维来看C++。

当读者有一定c/c++基础

推荐的阅读顺序:

level 1

从Stanley B.lippman著 侯捷 译的《essential c++》开始,短小精悍,可以对c++能进一步了解其特性。Stanley B.Lippman的职业是提供关于C++和面向对象的训练、咨询、设计和指导。他也是Bjarne Stroustrup领导的Bell实验室Foundation项目的成员之一,负责C++程序设计环境中的对象模型部分。简单说,他是C++的创建者之一。

以Stanley B.Lippman,Josee LaJoie,Barbara E.Moo的《c++ primer》作字典和课外读物,因为太厚不可能一口气看完,当然你也可以用它作为主力教材。Lippman说过了,Josee LaJoie是C++标准委员会原负责人,Barbara E.Moo 是独立咨询顾问,参与了第一个使用C++编写的商业产品的开发,领导了公司中第一个C++编译器项目。

C++之父Bjarne Stroustrup的《the c++ programming language》,简称BS的TCPL,全面而深入的书,缺点也是太厚。

这个阶段 也可以延用前阶段Detiel父子的教材。

level 2 这个阶段就要养成好习惯

然后从Scott Meyers的《effective c++》开始转职,这是圣经,请遵守10诫,要经常看,没事就拿来翻翻

接着是 Herb Sutter的《exceptional c++》。此人是C++标准委员会的主席,主席说话,谁有异议。

顺下来就是Scott Meyers的《more effective c++》和Herb Sutter的《more exceptional c++》,请熟读并牢记各条款

level 3 这个阶段 把C++的类搞透

Stanley B.lippman的《insied the c++ object model》(深度探索C++对象模型)看过后如一缕清风扫去一直以来你对语言的疑惑,你终于能明白compiler到底都背着你做了些什么了,这本书要细细回味,比较难啃,最好反复看几遍,加深印象。

看完上一本之后,这本Bjarne Stroustrup的《The design and evolution of c++》(C++的设计与演化)会重演一次当年C++他爹在设计整个语言过程中的历程。

Stephen C. Dewhurst的《C++ Gotchas: Avoiding Common Problems in Coding and Design》(C++程序设计陷阱)会帮你在设计层面避免错误。

level 4 这个阶段深入STL吧

Nicolai M.Josuttis的《the c++ standard library》(C++标准程序库—自修教程与参考手册) 是stl的字典,什么都可以查得到。

Scott Meyers的《effective stl》,它和圣经一样是你日常行为的规范。发现没有,Scott Meyers先生一直在搞effective系列。

Matthew H. Austern的《generic programming and the stl》(泛型编程与STL)让你从OO(面向对象)向GP(泛型编程)转变。

光用不行,我们还有必要了解stl的工作原理,那么侯捷的 《stl源码剖析》会解决你所有的困惑。

level 5 彻底掌握模版泛型编程

对于c++无非是OO和GP,想进一步提升OO,Herb Sutter的《exeptional c++ style》是一本主席这么多年的经验之谈,是很长esp的。

一位stl高手是不能不去了解template的,《c++ template》是一本百科全书,足够你看完后对于GP游刃有余。

Andrei Alexandrescu的《modern c++ design》是太过聪明的人写给明眼人看的。

level 6

这个时候,对于C++语法本身,你应该是已经到了随心所欲的境界,你所要练习的大概就是大规模的C++程序的设计以及一些通用的高效库的使用,以及为什么要这样做的理由。

所以,《C++ 输入输出流及本地化》《C++ Network Programming》《大规模C++程序设计》是你需要的。

同时,C++教材中的异类:Barbara E.Moo和Andrew Koenig的《Ruminations On C++》(C++ 沉思录)是值得你一看的,他集中反映了C++的关键思想和编程技术,说明了C++是什么样的以及能够做些什么,不仅告诉你如何编程,还告诉你为什么要这样编程。本书曾出现在众多的C++专家推荐书目中。

和C一样,同样有最后一本书

ISO+IEC+14882-1998 C++规范。这可不是宝典圣经,这就是C++的法律,一切疑问以此为准到此打住。不过,有个脚注,某些具体情况取决于编译器实现。

接下来是Windows编程

至少在国内来说,Windows环境下的编程还是很有市场的。

第一本书:Charles Petzold 的 《Programming Windows》(Windows程序设计)。

如果说,在windows编程领域只能翻阅一本书的话,那就是他了。《Windows程序设计》由微软出版社在1988年首次出版,后来被认为是这方面最好的导论性读本。在1994年5月,Petzold作为仅有的七个人之一(并且是唯一的作家)被《Windows Magezine》和Microsoft公司授予Windows Pioneer奖,以表彰他对Microsoft Windows的成功做出的贡献。这本书经典到这个程度,以至对于Windows程序员来说,“从Chares 的(Window程序设计)一书中寻找答案。”几乎成了一句至理名言。

你可以在这个地方观看到他的外观,http://www.charlespetzold.com/pw5/,国内书店有售,电子版则需要仔细搜索。

第二本:Jeffrey Richter 的《ProgrammingApplicationsforMicrosoftWindows》(Windows核心编程)和《Advanced Windows》(Windows 高级编程指南)

和上面这本书难分伯仲。这么说吧,你读了之后就会后悔,后悔为什么没有早点读他。建议先看高级,再看核心。

个人认为除非windows发生革命性的变化,否则看完这三本书,足以应付通常的Windows编程。

上面三本书介绍的是直接使用WindowsAPI实现应用,总的来说那是一种很基础但很繁琐的方式。Windows下有很多的编程库可以使用,VC和BCB都自备了优良的库。

在VC来说,存在版本的差异,如果是6.0版本,那么你基本只有MFC这一种选择,但对于2002以后的版本,包括新推出的2008,MFC、ATL、.net都不错。

对于MFC。

要学会怎么用,可以看一下这几本:

微软出版社授权的中文版系列书 由David J.Kruglinski,Scot Wingo,George Shepherd写的《Programming Visual C++ 6.0 技术内幕(第5版)》,经典的“Visual C++技术内幕”的第5版。

清华大学出版社出版 杨永国 的《Visual C++ 6.0实用教程(第2版) 》,这本不是那么经典,同类多得很,但好处是便宜,而且能够买到,有些书已经买不到了。

如果想知道MFC的原理,侯俊杰先生的《深入浅出MFC 》(Dessecting MFC)就值得你仔细阅读。

对于VC2002--2008中的.net,单独讲授的似乎目前还没有像《Windows程序设计》那样经典的书出现,毕竟.net出现的时间也不长。但把.net MFC ATL等综合在一起讲的,倒还是有一些。

由H.M.Deitel,P.J.Deitel,J.P.Liperi和C.H.Yaeger共同编写的《Visual C++.NET:How To Program 》(Visual C++.NET大学教程)品质算是上乘。还记得Deitel这对父子作者么,在chinapub上可以看到父子俩合著的教材有47套之多,而且个个畅销,我觉得他们俨然就是美国的谭浩强,只是水平高出不少。

George Shepherd,David Kruglinski 的 《Visual C++ .NET技术内幕(第6版)》,就是上面那本书的.net升级。

IVOR HORTON的《VISUAL C++ 2005入门经典》也可一看。

BCB在版本6以前用的是著名的VCL库,BCBX另起炉灶,用的是wxWidgets库。由于对BC,作者自己涉猎不多,所以这两套库的教材,请大家自行查找。

就像C++和C的规范文件一样,Windows编程中,也有一件类似万宝全书的神物,那就是Microsoft自己推出的MSDN。

MSDN是Microsoft Software Developer Network的简称。这是微软的针对开发者的开发计划。你可以在http://msdn.microsoft.com看到有关软件开发的资料。在VisualStudio中包括MSDN Library的光盘,其中包括VisualStudio的帮助文件和许多与开发相关的技术文献。MSDN Library每个季度更新一次,可以向微软订阅更新光盘,不过价格不便宜。

MSDN就是微软的技术大全,所有微软的软件系统的开发的已公开资料,都在上面。如果在那里也无法找到答案,那你只能想办法咨询微软的内部工程师求得隐藏秘籍。不要妄想能够完全阅读它,3G容量的文档(大部分是文本,不是图片和视频),实在太过巨大了。

其实版本只不过是出版社为了赶时髦换个包装和目录而已,实际的知识内容都是一样的,我现在是结合视频学的,我现在正在看的是夏老师的,就是依据谭浩强的书讲解的,感觉还不错,比较适合像我这样0基础的。这个比较吸引我的地方就是讲的一听就能听懂。而且很多概念都有形象的比喻,例如把变量比如成盒子。把变量赋值比喻成往盒子里放东西等等很多这样的比喻。感觉特别容易理解。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11202131.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存