本人从事C/C++软件开发有十来年了,在这方面比较有经验。C/C++在当前是很受欢迎的主流软件开发语言,特别是在开发高性能服务器方面很有优势。很多著名的开源代码都是C++开发的,很多公司的后台核心业务服务器都是C++实现的,所以选择C/C++学习方向前景还是不错的。很有搞头的。在这里给你推荐一些C++方面的经典学习书籍,供你参考。IDE开发环境选择在正式介绍书籍之前,我们先来说说C++语言的IDE编译开发环境。建议新手特别是在校学生,使用微软的VisualStudio作为C++的开发环境,无论是编写代码还是代码的编译都是可视化的,使用起来很方便,功能也非常强大。
当然,大部分IT公司的后台服务器代码都是运行在Linux系统上的,可以使用SourceInsight等编写编辑工具编写代码,然后将代码拿到Linux系统上使用GDB进行编译。一是GDB命令行编译新手使用起来会不太方便,二是编写用于GDB编译的makefile文件也会显得很吃力。所以建议新手们在学习时使用微软可视化的VisualStudio开发环境,至于其他的开发环境等工作了再学也不迟。至于VisualStudio的版本,建议使用比较经典的VS版本。当前高版本的VS和VS医院,用起来可能会不太流畅。而且这两个高版本安装时需要用户自己选择安装哪些组件,新手在不了解的情况下很难搞清楚要安装哪些组件,可能编译运行代码才知道哪些组件没有安装。
1、C++/VC++书籍(1)C++Primer中文版(第五版),本书是最经典最基础的C++学习用书,其内容是C++大师StanleyB.Lippman丰富的实践经验和C++标准委员会原负责人JoséeLajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。本版对前一版进行大量的改进,既显著改善了可读性,又充分体现了C++语言的最新进展和当前的业界最佳实践。书中不但新增大量教学辅助内容,用于强调重要的知识点,提醒常见的错误,推荐优秀的编程实践,给出使用提示,还包含大量来自实战的示例和习题。本书对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++初学者的最佳指南;对于中高级程序员,本书也是不可或缺的参考书。
(2)VC++深入详解(孙鑫著),本书从实际应用入手,由浅入深、循序渐进地讲述Windows程序内部运行机制、MFC框架、文本、菜单、对话框、文件操作、网络编程、进程间通信、ActiveX控件、动态链接库、HOOK编程等多个主题。(3)深入浅出MFC(侯捷著),分为四大篇。第一篇提出学习MFC程序设计之前的必要基础,包括Widnows程序的基本观念以及C++的高阶议题。第二篇介绍VisualC++整合环境开发工具,此篇足以帮助掌握VisualC++整合环境。第三篇介绍applicationframework的观念,以及MFC骨干程序。第四篇以微软公司附于VisualC++光碟片上的一个范例程序Scribble为主轴,一步一步加上新的功能;并在其间深入介绍RuntimeTypeInformation(RTTI)、DynamicCreation、Persistence(Serialization)、MessageMapping、CommandRouting等核心技术。
这些技术正是其他专著最缺乏的部分。2、C++进阶书籍(1)EffectiveC++:改善程序与设计的55个具体做法(第3版)(ScottMeyers著,侯捷翻译),有人说C++程序员可以分为两类,读过EffectiveC++的和没读过的。世界项级C++大师scottMeyers成名之作的确当得起这样的评价。当您读过这本书之后,就获得了迅速提升自己C++功力的一个契机。(2)MoreEffectiveC++:35个改善编程与设计的有效方法(ScottMeyers著,侯捷翻译),本书是梅耶尔大师Effective三部曲之一。继EffectiveC++之后,推出的“续集”相当于进阶版本。只有深入了解C++编译器如何解释代码,才有可能用C++语言写出健壮的软件。
C++的难学,不仅在其广博的语法,语法背后的语义,语义背后的深层思维,深层思维背后的对象模型。3、汇编与软件调试书籍(1)汇编语言(王爽著,清华大学出版社),比肩国外名著口口相传的好书,汇编语言学习者的必备宝典。采用了全新的结构对课程的内容进行组织,对知识进行最小化分割,为读者构造了循序渐进的学习线索;在深入本质的层面上对汇编语言进行讲解;对关键环节进行深入的剖析。(2)IDAPro权威指南(ChrisEagle著,石华耀等译)IDAPro(交互式反汇编器专业版)是应用最广泛的静态反汇编工具,在IT领域有着举足轻重的地位,但其文档资料一直都不够完善,在IDAPro创建者Ilfak的协助下问世的这本书,完美地终结了这一缺憾。
Chris的理论被业界公认为是权威且令人信服的,而他的模拟器也是公开发布的IDA插件中最棒的一款。(3)软件调试(张银奎著)本书是对软件调试技术在过去50年中所取得成就的全面展示,也是对作者本人在软件设计和系统开发第一线奋战10多年的经验总结。本书理论与实践紧密结合,选取了大量具有代表性和普遍意义的技术细节进行讨论,是学习软件调试技术的宝贵资料,适合每一位希望深刻理解软件和自由驾驭软件的人阅读,特别是从事软件开发、测试、支持的技术人员和有关的研究人员。(4)格蠹汇编:软件调试案例集锦(张银奎著),本书重在实践,通过一个个有代表性的真实问题“现身说法”,在软件大背景下介绍调试,通过调试技术解剖软件。
本书适合广大程序员、软件测试工程师、软件架构师以及相关专业的高年级学生阅读,也可供信息安全领域的工程师或者研究者参考。4、windows编程书籍(1)STL源码剖析(侯捷著),这本书所呈现的源码,使读者看到vector的实现、list的实现、heap的实现、deque的实现、RedBlacktree的实现、hashtable的实现、set/map的实现;看到各种算法(排序、查找、排列组合、数据移动与复制技术)的实现;甚至还能够看到底层的memorypool和高阶抽象的traits机制的实现。(2)Win32多线程程序设计(JimBeveridge/RobertWiener著,侯捷译),全书共分三篇。
第一篇包括线程的启动和结束、核心对象、激发和未激发状态的意义、同步机制及其用途;第二篇介绍Cruntime函数库和MFC对线程的支持、如何在USER和GDI的限制之下施行对线程等内容;第三篇谈论如何组织一个程序,使它有效支持多线程。(3)Windows核心编程(JeffreyRichter/ChristopheNasarre著),本书作为Windows开发人员的必备参考,本书是为打算理解Windows的C和C++程序员精心设计的。第5版全面覆盖WindowsXP,WindowsVista和WindowsServer中的个新增函数和Windows特性。书中还讲解了Windows系统如何使用这些特性,我们开发的应用程序又如何充分使用这些特性,如何自行创建新的特性。
.5、网络及TCPIP协议(1)计算机网络(AndrewSTanenbaum著,潘爱明译),全书按照网络协议模型,自下而上系统地介绍了计算机网络的基本原理,并给出了大量实例。在讲述各网络层的同时,还融合进了近年来迅速发展起来的各种网络技术,如Internet、SONET、ADSL、CDMA、WLAN和蓝牙等。另外,针对当前计算机网络的发展现状以及计算机安全的重要性,本书用了一整章的篇幅对计算机安全进行了深入讨论。(2)TCP/IP详解卷1:协议(WRichardStevens著,范建华译),这是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。
本系列丛书一共有3本书,比较有深度,难度比较大,初学者可以只