初学者必读:如何学习VC++和C++及其推荐书目和网站

声明:本文整合于网络,个人觉得对新人不错。

一,如何学习VC++

1 ,vc的用处

我感觉下面一些领域比较适合于用vc:
操作系统编程,
game,
图形设计,
corba编程,
com编程,
网络编程。
我谈谈我的体会。我现在在深圳的一家公司从事IP电话网关的开发。通过这个项目,我才真正体会到VC有多么强大,上百个线程同时工作,数据库并发访问,而且全部软件基于COM构造,这样高性能的大型软件,只有VC方显出其英雄本色!不过,在国内,有机会接触这样的大型系统软件的不多。而在做大型系统软件时,对VC程序员的要求就不仅仅是熟悉VC、MFC本身了,这只是基本的要求,最的挑战是你如何运用VC实现一些高级的功能特性。
其实,VC做数据库也不是不合适,关键在于你要抛开所谓的例子程序,直接从底层(SQL)做起。那么,你会有一种天高任鸟飞的感觉:爽。数据库与界面全部在你的控制之下。
前一段时间,做一个很大的管理系统(每个纲要540多个表12000多个数据项,纲要数不定),并且还要通过CORBA实现跨平台、通过ODBC跨数据库。如果通过什么PB、BCB、De lphi等等快速开发工具(并且做MIS是所谓强项)将会很难自由发挥的。我以为它比较适合一些需要底层控制的场合,特别是一些使用现有控件不太理想的情况下,VC的自由度就比较高。VC是把全能的瑞士军刀,不过对于一些较简单的功能,比如开酒瓶之类的用个开瓶器就更方便一些。
VC可以写WEB上的控件。
VC可以开发优秀的基于通信的程序。
VC可以开发高效灵活的文件操作程序。
VC可以开发灵活高效的数据库操作程序。等等等等
VC是编CAD软件的唯一选择!!!包括AUTOCAD,UG的二次开发。
小到只是一个Windows的标准界面 那象这样的程序用VC++确实大才小用了,因为有比VC++ 开发界面更快的编译系统,但如果这个界面极其复杂 复杂到要用很多的数学方法(例三维游戏的)那也要用到VC++才能搞定
就我使用VC++的这几年经验来看,VC++非常适合于系统程序设计,正如C语言是Unix的标准系统程序设计语言。
在多线程、网络通信、分布应用方面,VC++有不可比拟的优势。当然随着系统程序开发的机会越来越少,VC++的应用领域的确会逐渐缩小。
如果说到Windows下的可视化开发工具现在大家接触得最多的就是VC,VB,DELPHI,BCB,一些可视化开发的JAVA。其实我觉得VC并不能完全算是一个可视化工具,这表现在VC编写代码还是占了开发工作的大部分时间。而其他的可视化工具中都在界面设计中耗费了大量的开发时间。我一直使用VC的原因就是因为我能够一直将注意力集中在软件能开发上而不是界面设计上。我认为这样能够在开发的过程中更加自由和有更多的控制权。而且这种情况下产生的代码维护性更强。举个简单的例子,在维护VB代码时如果没有一份详细的说明和流程就会使维护变得不可能,我想其他的基于界面开发的工具都会或多或少的产生这样的问题,因为在开发过程中开发工具将一个完整的流程分离成为多个部分,在开发完成后这些部分就很难统一起来。
选择什么样的工具的前提是你的开发目标,如果你希望开发一个很大的系统你就不应该选择面向基于界面开发的工具,但你可能会选择VB来开发前端的客户软件,而后台使用VC来实现。对于一些并不是很复杂的软件来讲,界面和操作方式可能是非常重要的,所以选择VB,CBC都可以缩短开发时间。这时候选择VC就有些不智。所以我认为使用VC开发的朋友应该将更多的注意力集中在实现软件功能的流程上,多从整体角度看问题。我想这一点来说其他的可视化开发工具是很难达到的,因为VB,CBC等开发的程序在很大程度上都是用各种控件“堆”出来的,这会在后期的维护升级过程中带来很多的不便,例如要替换掉一个控件就可能会对整个程序的结构产生非常大的影响。最后我想说的是每种开发工具都有它的价值,也各有优缺点,更重要的是如何根据具体的任务选择合适的工具并利用这些工具来完成工作
首先要搞清楚VC能干什么.很多人只是听说VC是最好的开发语言,便去学习,就象大家听说辟邪剑谱厉害,便都去抢着学一样,都是很盲目的。其实语言并没有好坏之分,我在用C之前,一直觉的BASIC 是最好用的语言。现在在WINDOWS平台下编程,VB和DELPHI可以满足大多数的应用,而且速度不会很慢。使用VC主要是用来开发系统软件和大型工具软件以及开发游戏。

2,如何学好vc

2.1,先期条件:英语要好 看懂MSDN 要学好vc,先学好英语,再去codeguru.com之类的网站d/l source code。学好vc=英文好+基本功好+勤奋+聪明。
2.2,先学习C或C++,在windows的console环境下编写不太深入涉及API的程序;尤其封装,继承,多态一定要精不要让vc的各种特性分散注意力。这一阶段,可以把重心放到研究算法上
2.3,在基本上掌握了语法之后,开始接触简单的系统API,学习 Windows的编程原理和机制;先了解Windows系统的消息机制(多任务,消息映射等)。一开始用基本的SDK形式来开发几个程序作为入门(WinSDK编程就是直接调用Windows的API进行编程)(SDK全称是Software Developers Kit,意思是软件开发工具箱)(API全称是application programinterface,意思是应用程序编程接口)。开始进行WinSDK编程用C语言最好,可以撇开C
++的特性专心熟悉一下Win32编程的思路以及了解windows的消息运行机制。可以编写简单的菜单程序,可以简单地在WM_PAINT下操作 GDI函数当你可以熟练的使用C语言进行WINDOWS程序设计了,你可以尝试面向对象的方法了。
2.4,用MFC来开发程序(MFC全称Microsoft Foundation Classes,是把WinAPI进行封装的类库,它是一个类的集合,通过覆盖WinAPI,为编程提供了一个面向对象的界面。它使windows程序员能够利用C++面象对象的特性进行编程,类似BCB的OWL,Delphi的VCL组件。它把那些进行SDK编程时最繁琐的部分提供给程序员,使之专注于功能的实现。你不妨把它想象成类似TC提供的函数库吧。)。开始学习MFC,可以从Step tourist学起,看MFC的 源代码,理解几个关键的宏的定义与实现,特别是MESSAGE MAP。在学习的过程中为了给自己增加点挑战,尽量不要使用resource edit,试着自己编码实现控件的创建,消息的响应。再就是看自己的造化了,动手做一些小工具,特别是自己平常需要的,对自己的提高也应该是很有帮助。并选择发展的方向. 如果你有一个别人的好程序, 不妨自己跟着他的思路,从小到大自己完成一遍。

2.5,到了一定程度,一定要学ATL,OLE/COM。需要实际项目的磨练研究OLE/COM技术。 COM/ActiveX技术是MS的核心技术,只有彻底洞察其理论精髓才可以体会现在的操作系统的技术趋势,以不变应万变.从1998.3-1998.5,我基本上是每天攻读八小时VC,包括看书和上机。那时正上大三,精力充沛,受的起没完没了的失败和痛苦,终于在五月某一天的一节“汇编语言”课上突然想通了,立刻逃课去上机。就这样我入门了。之后我也象大多数的人一样学习它的所谓GUI,doc/view结构,打印之类。有一天醒来我突然想:我学这些干嘛吗?朋友!惊醒呀!人的精力是有限的,正所谓“术业有专攻”,VC说到底,它也是一个工具,学会使用这个工具并不是目的,而仅仅是开始!于是我开始寻找我的方向。

3,综合我的方向有:

3.1.网络编程。主要是基于TCP/IP的Winsock编程,已完成一个FTP的客户端编写,正在写一个FTP服务器 
3.2.通讯编程,主要是串行通讯。
3.3.三维动画,主要是用OpenGL API,一般用来写界面。我的毕业设计就是以2和3为基础。我的一些意见:不要对VC控件抱太大希望,除了基本控件,使用其他控件会使你比用API还繁;尽量使MFC而不是API;尽早定位自己,寻找方向,不要什么都学,人贵专攻;要了解消息机制,多线程和同步机制,更有回叫(CallBack)机制等,这是VC程序员的基本知识WINDOWS 和 UNIX操作系统都是复杂的多任物系统,提供了一大堆应用编程接口(API,通常是C语言的函数)程序员使用c语言调用这些API便可以开发该系统下的应用程序了。这与dos时代的编程接口是不一样的,那时侯的函数库是由开发环境提供的(如Turbo C) ,不具有很好的封装性和设备无关性。每当新版的//WINDOWS操作系统发行,便会提供一个相应的plantform SDK(软件开发包),开发者可以用SDK 编译C程序。//vc的核心就是MFC,MFC是个C++类库,就象结构化程序设计时代的C语言函数库一样,给程序员提供了丰富的编程接口,简化了程序的设计。而MFC就是直接把WINDOWS的C语言编程接口API函数用C++的类封装而成!这样既实现了面向对象的编程思想,又直接使用了WINDOWS的原始编程接口,代码的效率是最高的
1。Window是由个许多DLL搭起来的系统的总称,开发Window程序就是如何调用这些DLL,对于C程序员,它提供了.h.lib,这些东西和一些文档就构成SDK,DDK。。。他们在任何支持DLL调用的开发环境中都可以使用(即函数指针)。

2。通常SDK指与Window核心调用有关的。。。但并不是专用名称。也用于其他地方//VC只是一个编程工具,就如BC、BCB、Delphi一样,其实对于编程最根本的就是三个方面,语言、开发包、操作系统API,他们三个方面应该说是相对比较独立的。VC是MS开发的,所以针对的是windows api,你可以不会C++,也可以在VC下用C写出很优秀的程序,当然如果你比较熟练C++,并且熟悉开发包MFC的话,工作可能要轻松不少。


4,学习过程

所以在我看来,学习的过程可以是这样的,

1、先学习C或C++,在windows的console环境下编写不太深入涉及API的程序;
2、在基本上掌握了//语法之后,开始接触简单的系统API,学习Windows的编程原理和机制;

3、在可以编写简单的菜单程序,可以简单地在WM_PAINT下操作GDI函数后,开始学习MFC,可以从Step tourist学起,看MFC的源代码,理解几个关键的宏的定义与实现,特别是MESSAGE MAP。在学习的过程中为了给自己增加点挑战,尽量不要使用resourceedit,试着自己编码实现控件的创建,消息的响应。再就是看自己的造化了,动手做一些小工具,特别是自己平常需要的,对自己的提高也应该是很有帮助。



二,如何学习C++

分享如何学好C++的一点想法及给初学者的建议

0.引言

本文适用于C++初学者。
“妈呀,咋又跑偏了哩!”[小沈阳]
如果您还是作为C++的初学者或者是“学过几年C++”却不得要领,您是否知道,您也存
在跑偏了的可能呢? 根据student.csdn.net社区中的一些言论,指出C++初学者陷入
的误区,并试图分享一些如何学好C++的一些想法。

本文特别以论文的形式出现,但这仅是形式上,本文缺少论文存在的一些先决条件,可划
分为杂文类中。

1. 社区中的一些言论 

[作者注:尊重同学的隐私,引文略!]

根据以上贴子的摘录,我把社区人口分为以下几类

0-1. 隐身高手
0-2. 不知道在说什么,无法分类的
0-3. 老师,辅导员
0-4. 快乐的C++爱好者

1-1. 不快乐的C++爱好者及伪快乐者
1-1-1. 为学业而挣扎的同学
1-1-2. 不知道如何入门的同学
1-2-3. 不知道如何时提高的同学
1-2-4. 陷入学习误区而挣扎的同学
1-2-5. "乐于"陷入学习误区的同学

本文主要是写给后一大类的人。

2. 学习C++的想法

先分享一些通用的包括但不限于C++的,再分享一些仅与C++相关的。
1) 培养兴趣
爱因斯坦说“兴趣是最好的老师”。有些人是天生会对某一事物产生兴趣(一见钟情),有
些是后天慢慢好感并产生兴趣(先结婚后恋爱,像老一代人),有些是则是指腹为婚,但却
也终生幸福的人。
但是,如果您是对C++(或编程技术)实在没有兴趣,当初报考专业也是家长老师逼迫的。那我
强烈建议 该转学转学,该退学退学,该改行改行,及早选择自己的新生活吧。

2) 打好基础(尤其是在校的同学)
学好一门课需要重视它的先导学科。学习有捷径,那就是先打好基础。张无忌之所以能快速学
习,是因为他已炼成神功了。下面列出一些基础的知识:
a) 语文
b) 英语
c) 基础数学
d) 离散数学,组合数学
e) 数据结构及算法
f) 操作系统

语文,看似很远的课本了,其实,在工作中离我们很近。写报告、作总结、开会发言、说服客
户掏腰包,说服老板涨工资。就连论坛发贴也需要语文功底。
英语,尽量不要向网友求助:“有没有xxx的中文版”。仔细看几本英文原著,差不多编程的英文
书都能看个大概了。


3 ,如何学C++

C++是一门期很古老又充满生机的编程言语。如果您想成为真正的编程高手并以技术工程师为职业创
造财富,那选择C++是正确的。如果我们对以上断言达成共识之后,那就请接着向下看。
下面的内容分为两大部分,分别讲述如何入门和如何提高。
1) 如何入门
轻松上阵:学习c++,并不需要特别的先导知识。我认为,只要能理解顺序,条件和重复,
那就能学编程。有论证结论:任何复杂的程序,都是由顺序执行、条件判断和重复执行组成的。
学C++,不一定非要先学C。
入门选择正确门口: 
C++是抽象名词,它不会单独存在。它会与以下名称共同存在:
a) 程序
b) 文件
c) 可执行文件
d) 代码
e) 源代码
f) 编译器
h) 链接器
i) 调式器 
j) 集成开发环境(IDE,即把编译器,链接器,调试器合在一起的东西)
k) 命令行
另外,还有一大堆影响初学者其它的名词,如
VC, gcc, mfc, windows等等。

认为C++入门难,可能是没有理想上述名称的关系,其实也不要紧,了解上述术语也容易。
下面直接给出入门的方法建议(按顺序)。

建议1: 作好准备,建立好C++的开发环境,选择一个单纯的命令行开发环境。
较容易得到的有VC开发环境和linux下的gnu开发环境,也可以在windows下用cygwin,这
是一个让不熟悉linux开发环境的初学者也可以在windows下使用像linux一样的开发工具。不建
议直接使用Visual Studio 或eclips这样的集成开发环境。

IDE有很多优点,但是,对于初学者来说,它的缺少也很明显。大而全的集成开发环境会让
初学者面临更多的名称,从而更烦恼。

建议2: 先学会C++编程的过程,步骤可以列举如下
a) 理解编程的目标(需求)
b) 编写 make file文件 
c) 编写程序
d) 编译,链接程序
e) 检查是否有编译、链接错误,如果有错转到c),直到没有错误
f) 调试程序,检查程序输出结果是否符合预期要求,如果有错,转到c),直到没有错误
无论是选择vc的编译器,还是linux(cygwin下)用g++编译器,上述过程都能通用。
入门C++编程,可以写编译一个最简单的程序,演练上述过程。

建议3: 理解C++包括的学习内容
C++是一个内容并不多的编程语言,可以分为四大块内容
第一部分: C++基础部分,它包括C++的一些标识符,语句,函数,参数。
第二部分: C++面向对象部分,它包括用C++设计新的类型,通过面向象的思想来编写
程序。
第三部分: C++的泛型编程,它包括用C++设计一些模板,通过泛型或元编程的思想来
写程序。
第四部分: C++的第三方可复用的库。也包括开发人员自己写的库。学习如何使用第三
方或自己写的可复用的库。

作为初学者,可以先学第一,第二,第四部分。

2) 如何提高C++编程技能
建议4: 遵守规范和遵循“原则”
如: 编码规范和编码规范的原则;
编程规范和编程原则;
设计规范和设计原则。
举例来说,前阵子有网友探讨编码规范和样式,这是一个很好的现象。但遗憾的是没
给出编码规范的原则。我这里简单的引述一个较好的原则(注:原则也会不停的进化的)。
a) 简单原则,清晰易读。
b) 最小混淆原则,代码样式一致
c) 最小干扰原则,修改方便。
如果编码规范中的要求满足以上原则,那就是好的规范。(注:匈牙利样式的风格与原则冲
突较大,所以它仅存于MFC中)
再举个编程原则:比如,设计函数尽量是唯一的返回点; 函数尽量完成一个仅一个
完整的功能等。
设计原则:开闭原则,替换原则,依赖倒转原则等等。

建议5: 识别优秀的代码和发臭的代码
优秀的代码长什么样呢?我认为有下面的特性,以优先顺序列序
a) 易读易懂的
b) 正确且高效的
c) 易复用的
d) 易移植的
稍作说明:代码主要还是用来被阅读的,其实是写代码和让机器执行,如果代码很难
读懂,它的价值就会打折扣;第二点不必说明,错误的代码什么价值也谈不上;易复用和
易移植是体现代码价值很重要的指标了。
发臭的代码又长什么样呢?这个可以参考“重构”相关的知识,也可以留作大家讨论。

建议6: 重视代码的价值--复用层次
代码的复用度越高,它的价值就越大,代码作者就更应该获得更多财富和尊敬。代
码复用的层次既是软件工程发展的过程,也是学习者学习的路线。
那代码复用有哪些层次呢?下面是我的规纳
第一层次:代码级复用:也就是最低层次代码复用,是源代码级的拷贝粘贴。初学者
也不学就会的技术;
第二层次:函数级复用:子函数的出现,人们可以通过函数来复用代码,并发展成为
库函数。像c语言中的 printf(),scanf()这样的函数就放在库中,可以被开发人员链
接到自己的程序中。有时候初学者还以为这些函数是C语言中的一部分呢。
第三层次:类库级复用:面向对象的思想曾经是被人们寄予了厚望,希望它能帮助人们
脱离软件工程危机(软件工程的危机中的程序员被比喻成陷入焦泥潭的猛兽,越挣扎陷是越
深)。大家熟悉的基础部分的MFC,boost都可以算作是基于类库的复用。我们也可以把COM,
模板算到这一层次。
第四层次:基于模式的复用:一个伟大的建筑工程师给软件开发人员提供了灵感,发现
建软件和修房子一样,离不开那些相同或相似的套路。于是,为了复用以前的成功案例,总
结出一些模式。模式还和面向对象技术结合起来了,专门研究具体的问题可以分到什么类别中,
并直接给出对象模型。设计模式已经应用了十多年了,可惜很多初学者还不重视它。

第五层次:基于模式的框架复用: 理想中的面向对象是想把对象当作可复用的库像积木一
样生成, 这样开发软件就像搭积木一样快乐。但是,很快就发现,让积木结合的胶水比积木
还更难控制,程序员要写大量的胶水代码,并且反复的重写。解决这个问题就是应用框架。
框架的成功示例很多了。像ACE,MFC就是成功的框架。

第六层次:中间件级的复用: 不同的应用领域以及不同的基础环境,却有着相同或相似的
中间层,图形表示就是一个两头大中间小的沙漏形。中间件就是研究“沙漏”腰。中间件是一个
很迷人的领域。

第七层次:面向服务的复用?基于模型的程序自动生成?认识会不断的提高,我想很快会有
更迷人的领域。

建议7: 重视C++的应用
C++不是孤离的,如果离开应用学C++会容易走偏。建议学习了C++基础之后,多学习以下内容
(可选,排名不会先后)
a) 操作系统(linux,windows),熟悉多线程,linux的体系,windows的内核对象
b) 数据库
c) 图形
d) 网络
e) 你的专业和兴趣的其它领域

建议8: 重视C++相关的工具
a) 调试器
b) 测试工具或框架,如cppunit

建议9: 重视团队
个人英雄时代过了,现在的项目离不开不同角色的开发人员协同工作。让专业的人做专业的事,
所以,选择一个自己感兴趣的点,深入研究,做到最好。

建议10: 多读别人的代码并自我积累
不必说为什么。

4. 结束语
本文的观点不求全部被认同,欢迎来邮件与我交流心得,共同学习提高。


三,学习C++的50点建议

1.把C++当成一门新的语言学习;
2.看《Thinking In C++》,不要看《C++编程思想》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
6.会用Visual C++,并不说明你会C++;
7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
9.看Visual C++的书,是学不了C++语言的;
10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
11.浮躁的人容易问:我到底该学什么;——别问,学就对了;
12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
17.C++不仅仅是支持面向对象的程序设计语言;
18.学习编程最好的方法之一就是阅读源代码;
19.在任何时刻都不要认为自己手中的书已经足够了;
20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
26.请看《程序设计实践》,并严格的按照其要求去做;
27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;
29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;
30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
31.学习编程的秘诀是:编程,编程,再编程;
32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;
33.记住:面向对象技术不只是C++专有的;
34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
35.把在书中看到的有意义的例子扩充;
36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
39.C++语言和C++的集成开发环境要同时学习和掌握;
40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;
41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写;
43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
46.记录下在和别人交流时发现的自己忽视或不理解的知识点;
47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;
48.保存好你写过的所有的程序——那是你最好的积累之一;
49.请不要做浮躁的人;
50.请热爱C++!


四,VC++和C++的推荐书目

1,C++

C++程序设计语言(特别版)---c++八大金刚----Bjarne Stroustrup“C++之父”
C++ Primer (第3版)中文版----c++八大金刚---Stanley B.Lippman
C++ Primer (第4版)中文版----c++八大金刚---Stanley B.Lippman
C++标准程序库—自修教程与参考手册--c++八大金刚--Nicolai M.Josuttis
C++语言的设计和演化-----c++八大金刚----Bjarne Stroustrup“C++之父”
深度探索C++对象模型---c++八大金刚----Stanley B.Lippman
Essential C++中文版---c++八大金刚---Stanley B.Lippman
Effective C++中文版 2nd Edition-----c++八大金刚------Scott Meyers
More Effective C++中文版----c++八大金刚------Scott Meyers
C++编程思想(第2版) 第1卷:标准C++导引--------Bruce Eckel
C++编程思想(第2版)第2卷:实用编程技术 --------Bruce Eckel
C++程序设计--------------------------谭浩强
C++ 程序设计教程(第2版)--------------钱能
C++ Primer Plus(第五版)中文版---Stephen Prata
广博如四库全书The c++ programming language、c++ Primer
深奥如山重水复Inside the c++ object model
程序库大全The c++ standard libray
工程经验之积累Effective c++、More Effective c++、Exceptional c++


c++八大金刚:
1、Essentital c++---lippman---C++之父,旁枝暂略,主攻核心,轻薄短小,初学者
2、The c++ programming language----C++之父,技术权威,用词深峻,思想深远,c++百科全书代表,圣经。
3、c++ Primer----lippman---纵横书市十数年,c++最佳教本,c++百科全书代表。
4、Inside the c++ object model-----lippman----揭示c++底层,非常好,非常难。
5、Effective c++-----通过50个编程实例,展示专家经验,行文有趣,深处浅出。
6、More Effective c++----通过35个编程实例,展示专家经验,行文有趣,深处浅出。
7、The c++ standard libray---c++标准库的百科全书。
8、设计模式:可复用面向对象软件的基础------good!


2,C

C程序设计语言(第2版·新版)---C语言“倚天屠龙双剑”---Brian W.Kernighan“C语言之父”  
C Primer Plus中文版(第五版)--------C语言“倚天屠龙双剑”---Stephen Prata  
C程序设计(第三版)---------------------------谭浩强  
C语言大全(第四版)---------------------------HERBERT SCHILDT  
C语言接口与实现:创建可重用软件的技术-------------DAVID R.HANSON   
C语言参考手册(原书第5版)--------------------------Samuel P.Harbison  
C程序设计教程---------------------------------H.M.Deitel/P.J.Deitel   
C陷阱与缺陷-----------------------------------Andrew Koenig  

3,VC  

Windows 程序设计(第5版)-----Charles Petzold“windows编程泰山北斗”
Windows核心编程----------Jeffrey Richter“windows编程泰山北斗”
Windows高级编程指南---------Jeffrey Richter“windows编程泰山北斗”
深入浅出MFC(第二版)-----“MFC四大天王”-------侯捷  
MFC Windows程序设计(第2版)---MFC四大天王”---------Jeff Prosise  
Visual C++ 技术内幕(第4版)--MFC四大天王”--------David Kruglinski  
深入解析MFC-------------MFC四大天王”-----------George Shepherd  
Visual C++.NET 技术内幕(第6版)-MFC四大天王”------------David Kruglinski  

4,算法

计算机程序设计艺术-------Donald.E.Knuth----------算法“倚天屠龙”双剑  
算法导论-----------------Thomas H. Cormen--------算法“倚天屠龙”双剑  
离散数学及其应用----------Kenneth H.Rosen  
具体数学—计算机科学基础--------Donald.E.Knuth  


5,数据结构  

数据结构 C++语言描述》58.00(Data Structures C++) William Ford,William Topp 刘卫东 沈官林   
数据结构算法与应用-C++语言描述》49.00Sartej Sahni 汪诗林 孙晓东等机械工业出版社  


五,vc/c/c++语言学习网站/学习教程

软件:
http://www.icodeguru.com/fav/soft.htm
教程:
C函数实例参考手册
http://www.icodeguru.com/CPP/CExample/
C\C++实例参考手册
http://www.icodeguru.com/CPP/cppExample/
Win32Api实例参考手册
http://www.icodeguru.com/VC%26MFC/Win32ApiExample/
MFC实例参考手册
http://www.icodeguru.com/VC&MFC/MFCExample/
HTML实例参考手册
http://www.icodeguru.com/HTML/HtmlExample
Transact-SQL实例参考手册
http://www.icodeguru.com/Script/TransactSQLExample
ASP对象实例参考手册
http://www.icodeguru.com/Script/ASPObjectExample
Windows脚本实例参考手册
http://www.icodeguru.com/Script/WinScriptExample
十部算法经典著作 合集
http://www.icodeguru.com/cpp/10book
二级试题全集
http://www.icodeguru.com/cpp/2JiCShiTiJi
高质量C++/C编程指南
http://www.icodeguru.com/cpp/AdvanceC++-CProgramGuide
应用C++技术构建优质软件
http://www.icodeguru.com/cpp/AppliedCpp
ASCII码表
http://www.icodeguru.com/cpp/ASCII
C\C++语言程序百例
http://www.icodeguru.com/cpp/C&&C++YuanYanChenXuBaili
C++编码规范与指导
http://www.icodeguru.com/cpp/C++CodingGuide
C++PrimerPlus4th
http://www.icodeguru.com/cpp/C++PrimerPlus4th
C++语言程序设计课件(作者:郑莉)
http://www.icodeguru.com/cpp/C++ProgramingZhengLi
C++语言程序设计
http://www.icodeguru.com/cpp/C++YuYanChengXuSheJi
C语言函数示例集
http://www.icodeguru.com/cpp/CFunctionExamples
C高级编程技术
http://www.icodeguru.com/cpp/CGaoJiBianCheng
C语言技术文章
http://www.icodeguru.com/cpp/CLanguageArticle
C++疑难解答
http://www.icodeguru.com/cpp/CppAQ
C++实践之路
http://www.icodeguru.com/cpp/CppInAction
C++应用程序例解
http://www.icodeguru.com/cpp/CppProgramLiJie
C++参考
http://www.icodeguru.com/cpp/cppreference
CPrimerPlus5thEdition习题答案
http://www.icodeguru.com/cpp/CPrimerPlus5thEditionAnswer
C语言编程宝典之一
http://www.icodeguru.com/cpp/Cprogramdict
C语言参考手册
http://www.icodeguru.com/cpp/Creference
C语言学习和精华文摘
http://www.icodeguru.com/cpp/CStudyAndArticle
数据访问模式
http://www.icodeguru.com/cpp/DataAccessPatterns
数据结构与算法综合资料库
http://www.icodeguru.com/cpp/DataStructsLibrary
数据结构-严蔚敏
http://www.icodeguru.com/cpp/DataStructYanWeiMin
Effective C++
http://www.icodeguru.com/cpp/EffectiveCpp
GenericProgramming
http://www.icodeguru.com/cpp/GenericProgramming
设计模式迷你手册
http://www.icodeguru.com/cpp/MiniDesignPattern
经典排序算法
http://www.icodeguru.com/cpp/SortingAlgorithms
谭浩强C语言
http://www.icodeguru.com/cpp/TanHaoQiangC
TheC++ProgrammingLanguage3rdEd
http://www.icodeguru.com/cpp/TheC++ProgrammingLanguage3rdEd
TheCprogrammingLanguage
http://www.icodeguru.com/cpp/TheCprogrammingLanguage
TurboC2.0集成开发环境的使用
http://www.icodeguru.com/cpp/TurboC2ShiYong
用VC开发ACTIVEX
http://www.icodeguru.com/VC&MFC/ActiveXProgramingWithVC
用DirctX9进行高级3D游戏程序设计
http://www.icodeguru.com/VC&MFC/Advanced3DGameProgrammingwithDirectX9
APracticalGuideUsingVisual C++andATL
http://www.icodeguru.com/VC&MFC/APracticalGuideUsingVisualCandATL
21天学会VC数据库编程
http://www.icodeguru.com/VC&MFC/DatabaseProgrammingWithVisualC6In21Days
STL轻松入门
http://www.icodeguru.com/VC&MFC/EasySTL
InsideAtl
http://www.icodeguru.com/VC&MFC/InsideAtl
COM+组件服务技术内幕
http://www.icodeguru.com/VC&MFC/InsideCOM+
MFC参考手册
http://www.icodeguru.com/VC&MFC/MFCReference
Windows网络编程技术
http://www.icodeguru.com/VC&MFC/NetworkProgramingForMicrosoftWindows
OGRE手册
http://www.icodeguru.com/VC&MFC/OGREManual
OpenGL基础图形编程
http://www.icodeguru.com/VC&MFC/OpenGLJiChuTuXingBianCheng
MFC程序设计
http://www.icodeguru.com/VC&MFC/progmfc2
VC技术内幕
http://www.icodeguru.com/VC&MFC/ProgramingVC
Windows核心编程
http://www.icodeguru.com/VC&MFC/ProgrammingApplicationsforMicrosoftWindows
21天学会ActiveX编程
http://www.icodeguru.com/VC&MFC/TeachYourselfActivexIn21Days
游戏编程大师技巧(第二版)
http://www.icodeguru.com/VC&MFC/TricksofWinGameProgrammingGurus2ed
VC编程经验总结
http://www.icodeguru.com/VC&MFC/VCBianChengJianYanZongJie
VC编程资料
http://www.icodeguru.com/VC&MFC/VCBianChengZiliao
VC常见问题集(中文)
http://www.icodeguru.com/VC&MFC/VCFaqsCN
VC高级编程
http://www.icodeguru.com/VC&MFC/VCGaoJiBianCheng
vchome图形图像编程技术篇
http://www.icodeguru.com/VC&MFC/vchomeGraph
VC知识库
http://www.icodeguru.com/VC&MFC/vckbase
VC语言参考手册
http://www.icodeguru.com/VC&MFC/VCLANG
vc++ 编程指南
http://www.icodeguru.com/VC&MFC/VCProgramGuide
Windows程序设计
http://www.icodeguru.com/VC&MFC/WindowsProgramming
Winsock程序员疑难解答
http://www.icodeguru.com/VC&MFC/WinsockProgrammerFAQ
Microsoft编程精粹
http://www.icodeguru.com/VC&MFC/WritingCleanCode


六,IT人士必去的10个网站

1、Chinaunix 网址:http://www.chinaunix.net/ 简介:中国最大的linux/unix技术社区。

2、ITPub 网址:http://www.itpub.net/ 简介:有名气的IT技术论坛,看看它的alexa排名就知道有多火了,尤其以数据库技术讨论热烈而闻名。ITPUB论坛的前身是建立在smiling的oracle小组。

3、51cto 网址:http://www.51cto.com/ 简介:由国内知名IT门户网站管理团队,获近千万风险投资,于2005年8月正式创立,是国内首家定位于网络技术人员的综合性服务平台,是中国最大的网络技术网站。

4、CSDN 网址:http://www.csdn.net/ 简介:于1999年3月成立,是中国最大的软件开发人员网站,社区热心高手众多,并有不少MVP(微软最有价值专家)长期活跃在这里,类似悬赏的积分制度,也使论坛增添不少乐趣。

5、落伍者网址:http://www.im286.com/ 简介:网站站长都应该知道的地方,只是论坛id需要手工审核。

6、蓝色理想网址:http://www.blueidea.com/ 简介:有名的关于网站设计的网站,拥有大量忠实网友。

7、IT写作社区网址:http://www.donews.com/ 简介:一个可以让你的思维活跃起来的地方,在这里it评论人和撰稿人可以找到很多的文字素材。

8、博客堂网址:http://blog.joycode.com/ 简介:众多MVP交流的地方,这里有各类最新技术,只是网站成员采用邀请制,不提供注册或者申请功能。

9、IT英雄榜网址: 简介:网站以介绍it界人士为主,广大从事it的人员可以从中获取他们的经验。

10、邪恶八进制网址:http://www.eviloctal.com/ 简介:目前为数不多的一个讨论气氛浓厚,技术水平高的网络安全网站,邪恶八进制信息安全团队也是一个管理规范、人员素质高的网络安全小组。


你可能感兴趣的:(编程,C++,语言,vc++,编程书籍)