⑴ 如何学好C++呢
我这里有些经验,希望对你有帮助:
1.把C++当成一门新的语言学习(和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);
43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
46.记录下在和别人交流时发现的自己忽视或不理解的知识点;
47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;
48.保存好你写过的所有的程序——那是你最好的积累之一;
49.请不要做浮躁的人;
50.请热爱C++!
⑵ 自学java怎么入门
自学java怎么算入门? 衡量标准是什么?
我从个人角度分为三个阶梯: 初学,入门,高手
第一: 初学 (理论知识阶段)
很多同学刚刚入门学习java,看书,或者看视频。这个阶段是积累理论知识的时候,相对比较容易,一个小知识点,信息量少,跟着老师的思路走就可以。
在这个阶段,很多同学学得很快,感觉编程好简单。
随着学习的深入,大多数同学会产生混乱。 为什么?所有的技术背后都有原理,前面都有应用场景,不同应用场景有不同使用方法。 信息量逐级增加。
信息量逐级增大后,会有什么问题?
学到后面忘记前面。
新技术不断出现,感觉永远学不完。 丧失兴趣或信心。
理论知识阶段,更重要的是理解原理和规律,知识点的细节记不住可后面查找。学习方法更重要的是交流讨论,理解和总结。 多问为什么是关键!
第二: 入门 (熟练度)
一个项目从0到1的过程才是最宝贵的,也是初学者提升最大的部分。但从书本或者视频中,很难学习这个过程。
技术的应用能力换句话说是 技术的分解排序能力, 当遇到一个需求,该如下实现?
基本的思路是把需求分解成原子操作。 原子操作代表开发当中的基本操作,也就是在知识点当中学到的,比如数据库操作,sql,框架的基本使用等等。
如果能把需求分解为原子操作序列,开发完成只是时间快慢的问题。往往刚刚开始学习编程的同学,不善于或者懒得去思考。毕竟看视频是被动的,分析问题是主动思考。学习只是看看视频,本质上是思考的懒惰。
所以需要找大量的练习和项目案例进行实践!!!
第三: 高手(业务和性能)
程序员是把理论知识组合应用起来解决用户的问题。(或者提高用户的效率)
第三个等级的知识更加多元化,不同行业涉及不同的领域知识,信息量也是增大。
业务解决用户的问题,可以赚钱。
性能用最小的资源,解决用户的问题,可以省钱。
所以在企业开发中,需要考虑更多和成本,时间,用户等相关的问题。
总结: 掌握理论知识后,需要大量的代码去实践,才算入门。
分享下我们的学习路线,供你参考一下!
希望能帮到你,望采纳!
⑶ java开发工程师必须要学的技术有哪些
JAVA的学习内容包括:
1、Java 程序设计基础,包括 J2sdk基础、Java面向对象基础、Java API使用、数据结构及算法基础、Java AWT图形界面程序开发;
2、J2SE平台Java程序设计,包括Swing图形程序设计, Socket网络应用程序设计,对象序列化,Java 常用数据结构,Applet,流和文件,多线程程序设计;
3、Java Web应用编程,包括 Java Oracle 编程,即JDBC;JavaWeb编程,包括JSP、Servlet,JavaBean;Java应用编程,包括Weblogic、Websphere、Tomcat;以及利用Jbuilder开发Java程序;
4、J2ME程序设计,包括J2EE程序、J2ME;Java高级程序设计(J2EE),包括J2EE体系结构和J2EE技术、EJB;Weblogic使用、 JBuilder开发;
5、软件企业规范和软件工程,包括UML系统建模型和设计(Rational Rose 200x)软件工程和业界开发规范;CVS版本控制、Java Code书写规范;
⑷ 程序员学习一般去哪些网站
学习网站大体分两类,一类国内网站,一类国外网站,国内的网站有w3c网,学习网页前端知识,python,php,java官网,mysql数据官网,当然也有综合类网站比如:菜鸟,最后就是论坛,官网都有友情链接过去。国外网站需要翻过去访问。下面是部分知识点
1.确保堆栈上至少有 n 个额外空位。如果不能把堆栈扩展到相应的尺寸,函数返回假。失败的原因包括将把栈扩展到比固定最大尺寸还大 (至少是几千个元素)或分配内存失败。 这个函数永远不会缩小堆栈;
void lua_close (lu a_State *L);
2.销毁指定 Lua 状态机中的所有对象 (如果有垃圾收集相关的元方法的话,会调用它们),并且释放状态机中使用的所有动态内存。 在一些平台上,你可以不必调用这个函数, 因为当宿主程序结束的时候,所有的资源就自然被释放掉了。 另一方面,长期运行的程序,比如一个后台程序或是一个网站服务器, 会创建出多个 Lua 状态机。那么就应该在不需要时赶紧关闭它们。
int lu a_compare (lua_State *L, int index1, int index2, int op);
比较两个 Lua 值。 当索引 index1 处的值通过 op 和索引 index2 处的值做比较后条件和丛满足,函数返回 1 。 这个函数遵循 Lua 对应的操作规则(即有可能触发元方法)。 反之,函数返回 0。 当任何一个索引无效时,函数也会返回 0 。
3.连接栈顶的 n 个值, 然后将这些值出栈,并把结果放在栈顶。如果 n 为 1 ,结果就是那个值放在栈上(即,函数什么都不做); 如果 n 为 0 ,结果是一个空串。 连接依照 Lua 中通常语义完成()。
void lu a_ (lua_State *L, int fromidx, int toidx);
从索引 fromidx 处复制一个值到一个有效索引 toidx 处,覆盖那里的原有值。 不会影响其它位置的值。
void l ua_createtable (lua_State *L, int narr, int nrec);
4.创建一张新的空表压栈。 参数 narr 建议了这张表作为序列使用时会指棚嫌有多少个元素;参数 nrec 建议了这张表可能拥有多少序列之外的元素。 Lua 会使用这些建议来预分配这张新表。 如果你知道这张表用途的更多信息,预分配可以提高性能。 否则,你可以使用函数
lua_mp
把函数导出成二进制代码块 。 函数接收栈顶的 Lu a 函数做参数, 然后生成它的二进制代码块。 若被导出的东西被再次加载, 加载的结果就相当于原来的函数。 当它在产生代码块的时候, lua_mp 通过调用函数 writer (r ) 来写入数据,后面的 data 参数会被传入 writer 。
5.如果唯手 strip 为真, 二进制代码块将不包含该函数的调试信息。
最后一次由 writer 的返回值将作为这个函数的返回值返回; 0 表示没有错误。
该函数不会把 Lua 函数弹出堆栈。
希望能帮到你,谢谢!
⑸ 学生从初级进阶为高级程序员需要经历什么
程序员从初级到高级要经历什么
01 初级程序员
初级程序员一般是刚刚入行不久,工作经验只有一年及以下的同学,对干技能要求,需要他们:
1.可以完成简单模块和项目的开发工作
2.熟悉HTML、JS、CSS等基础知识
3.能够使用一门MVVM框架进行简单的业务开发
02 中级程序员
中级程序员要拥有3年及以上的工作经验,具有能够独立负责一个子模块的能力,以及能够负责一个项目的具体任务。
具体的技能要求有:
1.熟练掌握工作中使用的术栈开发业务。
2.了解一个需求从开发到上线的整个生命周期,并对各个环节负责。
3.具备基本的逻辑分析、问题分解、归纳总结等能力。
4.了解基本的数据结构和算法,写代码较熟练。
03 高级程序员
行业不缺程序员,但缺少能够同时兼具资深经验和技能优秀的高级程序员,高级程序员不但具有丰富的项目经验,且技能扎实,并能够持续保持新知识新技术的输入,才能被称之高级程序员。
技能要求:
1.具备独当一面的能力,能够带领团队展开工作。
2.针对一个需求能够从开发到上线的整个生命周期中找到痛点与漏洞,并能运用技术的手段解决。
3.能对问题和需求做出分析和拆解,做出改进、实现方案。
4.有优秀的技术选型能力。
5.熟练掌握各种技术体系。
初级,高级如何实现升阶?
第一,练习代码,学习模仿。
俗话说熟能生巧,写代码也是一样。如果本职工作的强度不算大,建议可以私下接一些小项目练手,多尝试不同的业务。写代码可以参考大佬的编码风格,学习对方的思路。如果公司有代码规范,跟随着公司的代码规范走,如果没有,参考业界规范。
第二,熟悉工作流程
也不要光埋头写代码,学着多参与进项目,去熟悉一个需求提出-开发-联调-测试一上线的整个工作环节,理解开发逻辑尝试想象自己有一个项目,该如何开展工作。第三,基础知识不能落下
知识就像棉被,需要时不时拿出来翻新、加固。基础类:JS、CSS、HTML反复学习
了解一些广度知识:HTTP、正则表达式、Web安全、性能优化、设计模式,数据结构和算法
02 中级一高级
第一,业务全局思考能力成为高级程序员,就需要具有项目全局思考能力。首先,要明白业务和公司的目标,参与到需求的早期阶段中;而后要多思考,是否可以通过技术手段提升业务价值。
第二,学习优化工作流程初级程序要要熟悉从需求-开发-联调-测试-上线的每个工作环节,高级程序员则要多思考每个环节有没有可以优化提升的地方,比如上线过程能否自动化、能否小流量上线等。
⑹ 如何才能修炼成一名不可替代的程序员,避免裁员危机
(1)专业能力程序员作为专业性较高的人才,对其专业能力要求很高,这个问题下很多程序员大佬也纷纷表示:“代码是程序员的立身之本啊,所以一定要锤炼好代码基本功,扎扎实实的能力练出来了,你就是公司不可替代的人儿~”在技术说话的互联网公司,要保持一个不可替代的地位,实力是最基础的一环,需要不断地学习新技术,才能跟上技术发展的脚步,完成从一名普通程序员到精英程序员的蜕变。
(2)性格特质在外人看来,程序员就是整天和bug打交道的人,这样的人需要耐得住寂寞,但同时也要脑筋足够灵活,才能更好地应对各种bug,并且不断开发出新的产品。同时还要有责任心,对自己的代码负责,对自己的产品负责。
(3)发展需求除此以外,因为要不断地发展自身能力以提升自己的核心竞争力,所以要做一名“不可替代”的程序员还要有一定的竞争意识,与自己竞争,督促自己进步等。以上仅仅是比较概括性的特质,具体到不同公司的不同程序员岗位,还会有不同的层级要求,需要进行一定的调整。
如今市场不景气,企业用人大大收缩,再加上一批小企业的倒下,造成就业压力越来越大,但我认为这是接下来的常态。前几年的经济“泡沫式”过渡发展,互联网也跑的太快,造成大量的用工需求。一些其他行业的从业者培训下就能改行做程序员,造成这个行业的人五花八门,能力参差不齐。寒冬的到来,必将对市场人力的重新洗牌。互联网企业将会对程序员的要求越来越高,并促使IT从业者更加专业化。
⑺ C++的学习方法!~
学习C++重在理解其各种语言设施所代表的语义,以及C++所能表示的语义所代表的设计思想。首先从宏观上入手,你需要明白的是C++是程序设计语言的本质。在此我把C++最重要的性质写下来:C++是一门静态类型检查,基于C内存模式,支持四种基本程序设计范型的语言。注意,这里说明了三个本质特性,静态说明了语言的类型检查性质,基于C内存模式告诉我们在C++中所有与内存有关的操作都需要程序员自己来负责,这样就带来了很多设计程序时的需要注意的地方,而理解支持的四种基本范型却是理解各种语言设施的基础。然后记住C++的最大的一点设计哲学,也是其贯穿应用C++的一条本质,我引用《C++ PRIMER》中文版前言内的一句话表示--“C++的基础是各种设施,它们让用户能够通过定义新的数据类型来扩展语言本身,这些新类型可以与内置类型一样的使用方式(如何理解这句话是关键,我的理解是:用户定义类型可以在任何使用内置类型的时候做为其替代,再具体点说就是用户定义类型可以象内置类型那样可以被声明,其对象可以被初始化,可以相互复制,可以象内置类型对象那样和很多操作符一起使用,可以被作为参数传递给函数,可以作为函数的返回值,可以作为容器的操作对象,用户定义类型可以和内置类型一样作为模板的参数),掌握这些设施(哪些设施?就是让用户定义类型可以和内置类型一样方便使用的设施,包括什么?构造,拷贝,解构函数,操作副重载.....)的第一步就是理解基本语言(什么是基本语言?就是C++中better c部分)。
在此,我还想提出一点十分重要的概念:一门语言的最本质的东西就是其类型系统,任何语言都有自己的独特的类型系统,学习C++就是学习他的类型系统。所以首先需要彻底明白什么是数据类型这个概念。这样你的思路就清楚了,你有选择,从每一种C++支持的设计范型入手学习。
结构化设计-----也就是C++中的better c部分,你需要在C的基础上学会函数重载和引用这两个最重要的语言新特心性。
基于对象----你需要建立C++最强大的概念--类,也就是用户定义类型,这其实就是数据结构里面接触的抽象数据类型的概念,以及合理构造使用类的一系列语言措施。并始终记住,在C++进行设计时用类来表示我们需要表示的概念。类也是C++抽象机制里面最核心的概念。
面向对象----在这里你需要知道继承和多态这样的OO概念,以及句柄类这样常见的设计技术,这里你需要明白你开始进入了对接口编程的阶段。同时你要学会OO思想,C++的一些设施只是为了把OO思想在语言所支持的语义中充分的表示出来。但是在这里,同时你需要明白的C++能表示的语义是受到其当初语言设计原则限制的(什么原则?静态类型检查,不为不需要的东西付出代价,选择权在程序员手上语言本身不去强迫程序员的做出选择),也就是说C++所能表示的OO思想可以称为具有C++特色的OO思想了。这样的OO思想和JAVA所代表的纯OO哪个更好?没有定论,因为他们本身的设计理念就不一样。
泛型设计----这里你需要明白最重要的一点是C++的temlate机制无论其开始建立的初衷是什么,现在他所代表的真实含义是:编译时类型推导,也就是编译时多态,由此明白了泛型的核心---把各种类型当作一种抽象条件的具体化,C++有措施可以定义抽象条件吗?没有,所以这些条件只能定义在我们自己的心中,但我们可以把具体化的类型当作一种抽象条件实现在template机制中去,从而使tempalte成为比类型推导机制更进一步的东西,那就是抽象条件的推导。也就是说,我们不再把template接受的参数看成是类型,而是把template看成是一种接受抽象条件的机制,无论其类型如何,只要这种类型满足tempalte所接受的抽象条件就可以作为参数传递进去,这样就代表了一种泛型的思想-----类型不再是根本,抽象条件才是,类型不过是抽象条件的外衣和在C++中的实现方式而已。在结合基于对象和泛型设计这两种抽象设计模式的技术上诞生的工业产品就是---STL。
(二)书的诱惑
《C++程序设计语言》:如果你只买一本C++书,这本就是你的选择,作者Bjarne就是让你做出这样选择的全部理由,没有人能比他更了解什么样才是真正的使用C++编程了,有人说到这本书语言晦涩,或者对与初学者此书不适合,对此评论我颇不以为然,我看的是中文版,起码在我看来语言描叙非常到位,我喜欢这样的技术描叙风格。全书的核心就是告诉你如何去用正确的观念编写正确的C++的代码。强烈推荐。
《C++语言设计与演化》:这本书也是我同时拥有中英两版的两本书之一(另外一本是《设计模式》)。如果在得到上面的那本书之后你需要第二本,那么在我看来这就是你的选择,作者同样是Bjarne,他将在这本书中告诉你C++的起源与发展,语言原则与本质,各种特性加入的理由和考量,以及几乎一切关于C++有趣的故事。我阅读过中英两版,都是强烈推荐。
《C++标准程序库》:在AMAZON上面关于C++书籍评论最为火暴的一本。全书对于标准程序库的介绍可谓深入浅出,而且全书都是从实际运用出发,书中例子简单却非常说明问题,加上一些图表的陈列,使其概念十分清晰,而且从手册和学习两方面看都有其存在价值。强烈推荐。
《EFFECTIVE C++ 中文版》:无须多说,在任何C++书籍推荐目录中都可以找到这本书的身影,盛名之下必无虚士。主要强调的是运用C++的各种特性的时候所必须注意的地方,以及一些比较通用的设计手段。其短小精悍的语言自然非常适合快节奏的现代风格,个人就十分喜欢Meyer的写作方式。强烈推荐。
《MORE EFFECTIVE C++ 中文版》:做为上本书的姐妹篇,一样的写作风格,一样的写作目的。只是个人认为和其姐姐相比,存在差距,主要是信息量没有《EFFECTIVE C++ 中文版》那么大,主要说到了一些C++的设计惯用手法。推荐。
《C++ PRIMER 中文版》:同样是出自大师之手,作者LIPPMAN,作为早期C++编译器的实现者之一,对与C++的了解以及该如何论序都有自己的独到见解。做为C++的网络全书和《C++程序设计语言》有着一样的地位。但是前者更强调的是C++的语法和其语义,而后者则是以如何用C++进行合理设计做为描叙的中心。全书构思十分巧妙,书的一开始就直接进入C++的主题,前面五章都用类设计一个数据结构,让读者完全明白了各种用户定义类型所代表的抽象能力,然后直接进入第六章标准库中的容器类,这样的设计让读者十分清楚的建立容器和类这两个C++中十分重要的概念。这样的设计针对有一定基础的C++读者来说可以说是非常有效果的。但是对于初学者来说,这确实不是一本合适的书籍,因为一上来太多的名词会把刚刚接触C++的人吓着的。推荐。
《C++沉思录》:非常有特点的一本书,全书假设读者已经通晓C++语言,重点告诉读者C++的概念以及一些C++的设计手段,比如用C++到底为什么会比C或者其他过程语言更好?(书中给出的答案是,因为只有对象才有能力保持一定的状态,而算法没有这样的能力),如何进行抽象数据类型的程序设计,如何理解多态,如何通过代理隐藏继承,如何进行引用技数,为了效率如何进行缓时拷贝,以及模板技术是如何发展演进最后构成成STL库的。阅读感觉和《C++程序设计语言》一样,思想性非常强,读这样的书很累,脑子必须一直思考问题,思考作者里面提出的问题和他提出的解决方式。这本书最大的特点是非常直接的把C++语言的核心暴露出来-----三种抽象模型和极其语言设施本身对这三种抽象模型的支持。而《C++沉思录》给我的更深层思考是什么才是运用C++最合理的方式。推荐。
《C++ STL中文版》:很朴实,不花俏,但是价值很高。个人认为其主要价值体现在以下几个方面:1,对于STL的实现关键iterator一般都使用了两种方式描叙,一种比较老式的函数方法,一种是新的?traits技巧,这样读者可以非常清楚的知道技术的演进。2,提供了一个STL LITE版本,阅读这样的代码对自己的提高非常大。3,书中提供的测试模块对于读者来说也是非常有的一章,对于想扩展STL的,可以按照上面提供的方法测试自己的STL组件。缺点:装订比较粗糙,与大师之作的地位不相称。推荐
《C++ PRIMER PLUS 中文版》:一本思想性不是很强,技巧性不是很强的书,但是对于初学者来说非常合适的书。其中许多论序方式都和具体化,总体来说,这本书是我看过的C++书籍里面最合适初学者的。推荐。
《深度探索C++对象模型》:这也是一本比较特别的书,告诉你编译器是如何安排处理对象的内存空间的,以及一些OO特性是如何实现的。不认为这是一本C++必须读物,算是课后读物应该比较合适吧,因为有时间了解C++的OO实现还不如花点时间搞清楚OO理论的本质概念:type theory。推荐。
《C++设计新思维——泛型编程与设计模式之应用》:可谓C++中的奇书。这样的一本书,很难让人做出正确的评价与推荐指数(尤其是以我这个实用和人生本就应该享乐为人生观的人来说~:),因为全书所代表的思想前卫到了有点不切实际的地步,模式+泛型—多么高雅的组合。我个人的观点是,只有一部分人需要阅读此书,他们就是所谓的real c++ fans,暂且不提C++本身是否遇到了困难,就其书中所代表的设计思想,对于C++没有一点感情的程序员(感情就是以爱好为基础,而不是以攒钱为前提),我想对于这样的设计技术总会有晕的感觉,而一般程序员多半都不会喜欢这样的感觉~:)。推荐。
《对象揭秘:Java、Eiffel和C++》:从书名就可以看出这本书不仅仅和C++有关系。可以说全书就是对C++的一次批判吧(书也起源与作者的一篇批判C++的文章)。有时候听听另外一种声音对自己保持清醒的头脑是非常有帮助的,对待一个人,对待一本书以及对待一门程序设计语言都是如此。这本书好象不是很火,大概跟其宣传不是很到位,或者同能同时了解这三门语言并比较关心这些语言深层次的优略的读者比较少有关系吧,在我看来这本书包含了许多对象与类型方面的理论,最为出彩的就是作者抓住Bjarne的“在C++中一个类就是一个类型”这样的“错误”言论狠批的论证过程。看这本书另外一个好处是能教会大家该如何去合理的辩驳自己的对手~:)。推荐。
《大规模C++程序设计》:书在手上很久了,可一直没有仔细看,这也是评论之前必须说明的。总体看来书中涉及的很多东西都鲜见于其他读本。不管AMAZON上的评论是否是这本书比较过时,起码它介绍的许多对与我来说都是我所不知道不了解的,别人说过时是他的事情。而我,还是推荐。
《STL和泛型编程》:难得的一本关于泛型编程的理念书籍,同样也是作为手册和学习两用,但是其手册不是使用手册,而是概念手册,对于设计自己的STL组件,这本书有非常好的帮助,虽然网上有篇STL的文档,其中的70%内容和这本书雷同,但此书仍不失可读性。推荐。
《C++编程思想 第二版》:非常一般的书,是的这就是我对这本很多人奉为名着的评论,至于为什么是这样的评论,或者你不相信我说的是客观话,在你买了之后看完就知道了。一般。
《Essential C++中文版》:总感觉这本书定位不是很清楚,因为对于初学者来说其开始就涉及了太多的名词,初学者看这本书,几乎就不要指望能很好的入门。而对于进阶者来说,其内容并无新意,对于C++高手来说,这样的小读本,根本就没有阅读的必要,也许是LIPPMAN+JJHOU的盛名吧,但我觉得这次算是有虚士了~:)。一般。
《STL源码剖析》:侯SIR的大陆两本着作之一,但在我心中其质量好象并不如很多人说的那样好,就同类作品《C++ STL中文版》相比较内容略现单薄,并且三章之后很多东西都给人以堆砌的感觉,而且大部分精彩的材料都出自《STL和泛型编程》一书,给人感觉书中侯SIR自己的东西并不多,但第二章对于内存管理有很好的论叙表现,并且装订精良,尤其是那些图更是侯SIR的拿手好戏,但总体感觉有点华而不实。一般。
后面列出两本不推荐的,具体原因也就不再分析。
《高质量程序设计指南--C++/C语言》,《C++编码规范》
另外两本常见的C++书籍: