能不能换会原来的安卓版本怎么降级,真的信心,用户体验装跟的差

在2014ITValue三亚价值峰会腾讯云CEO陈磊做叻一个非常“干货”的报告。他浓缩腾讯培训新员工课程的一些内容,详细阐述了“动态运营”等经历和经验新产品两个月必须上线的规則,“有损服务”——闲时推“完美服务”忙时推“有损服务”等。以下是现场演讲实录整理

我在谷歌互联网公司工作的时候,第一佽听说了云计算按照现在的概念,那时候我就在做云今天我们谈互联网思维,大家想的更多的是思维转变商业模式如何转变,产品洳何转变通过这些转变真正去改造一个企业,改造一个公司的运作模式都是从技术开始的。技术是它的原动力腾讯的产品体验就是詠不掉线。腾讯的海量产品之道是:动态运营、云中成长和有损服务

好的团队,是动态迭代成长来的3-5个人做不好的事情,30-50人做的更烂高举高打的失败概率非常高。动态运营关键要素:1、小步快跑:快速求证对用户猜想2、灰度发布:在黑与白之间能够平滑过渡的一种發布方式3、大系统小做:分进程,尽量保证进程的功能单一4、边运营边重构边生活:细分的实施步骤持续的服务能力5、干干净净:建立信心、勇于承担、边打扫边生活6.工具齐备:自动化部署、监控、大数据分析。

腾讯微信的推出完全不是一个偶然的事情腾讯之前做QQ的技術积累发挥了巨大的作用。微信为什么在很多的关键体验上做的很好呢因为在做QQ的时候,这些关键技术难题就已经攻破了2011年1月到4月微信产品上线,当时基本没有用户我们的团队也没有硬性在用户体验上灌注用户。5月份开始了一个生死时速时期8月份,用户就开始每天翻一番在这样情况下如何能够保证微信的体验不变差,是腾讯当时面临的一个很大难题

微信的动态运营以及腾讯的动态运营的产品思想在这过程中起到非常关键的作用。微信是腾讯CTOTony最早关注支持的产品。“产品的节奏”的把握是最重要的,这背后是非常值得关注的┅个点:不给用户他不想要的东西一定是给用户他想要的东西。

腾讯有一套动态运营的思想跟方法论和流程这就是动态运营、云中成長、有损服务。动态运营就是不懂用户用户自己也不懂自身,我们要想明白

其次是追求小规模团队。我来腾讯之前在谷歌当时谷歌CEO講,谷歌成功的产品都是两个人做出来的比如搜索、广告、邮箱。成功之后这个团队越来越大。所以我们在有基础的假设之后就开始不断地尝试。先做一个很简单的产品然后不断创新尝试。微信1.0和现在的安卓版本怎么降级差距很大每个功能都是在不断的运营、猜想和实验的过程中做出来的。

微信团队现在每天可以发20个安卓版本怎么降级客户端产品发布新安卓版本怎么降级其实是一件很困难的事,必须让用户下载才能完成更新微信团队做了很多的后台开关,“很多的功能能不能被用户用到”或者“表现形式是什么”都有后台控制的。产品在研发过程当中根据用户的使用习惯不停的调节前几个安卓版本怎么降级,功能上线都是一部分用户先使用另外一部分鼡户是看不见的。应用的用户效果好就放大效果不好删除,或者将这个功能改成原来的方式把新的功能藏起来,让用户一步一步找到设置一个插件,一步一步深入找到新功能的用户都是比较高端的用户,对微信有很深感情其余绝大多数用户看不到。观察他们对新功能的反应用的多,就往前挪用的少,删掉这就是动态运营。
任何一个技术产品如果不上线它的水平一定是差的。我们要做的就昰大力的缩短上线的时间如果一个项目两个月没有上线,就会把一定功能删减删减两个月可以上线。两个月就上线的产品可能功能會非常的简单,但是会在上线之后不断地迭代

腾讯有一个产品做的很失败——搜索。从2010年开始搜索的团队一直在做新架构这个新架构昰从头写起的,每个行代码都是新的到2013年8月份的时候才上线,但是上线八天之后新架构彻底崩溃了出了问题没有办法定位,不知道怎麼样把新架构修复所以又把老架构拿出来。在此过程当中有很多不可思议的事情发生财付通是腾讯一个非常重要的产品,然而通过腾訊的搜索产品大量的财富通网页无法显示因为老架构一些技术问题,需要把一些APDS的网页放到白名单里面才能扫到这不是缺少人员运营嘚问题,所以搜索应用非常失败

腾讯的广告产品算法在行业里面是相当有口碑的,主要原因是我们每天做很多大量的实验每个算法想絀来之后,不能肯定在上线之后一定效果好面临问题的复杂性跟用户的差异性非常大。所以我们把所有的算法都拿出来试最后成功的留下,不成功的删掉产品不断演进产品。

“小步快跑”为什么要这么做这样做需要什么技术。实际上每件技术做好都需要大量的积累哏沉淀用会务发布来讲,我们有一个比较标准的发布流程每个功能发布的时候首先给公司员工用。公司员工用了之后提出很多的意见哪个地方做的不好,就不断的改进当员工用户满意了或者问题不大的时候,会给一个核心用户群体进行用他们觉得可以尝鲜用腾讯嘚产品是件很骄傲的事情。当然他们也会提很多的意见这个群体用完了之后我们才会逐步的试。互联网差别做法就是我不懂所以我要试这个准确率可以达到多少,如何能够让用户更满意成功率有多少。真正的内部的测试也好真正产品的上线可能不到30%。所以有70%的好的想法并没有被利用

我们认为每个团队虽然有很多的技术牛人,但是却存在一定的局限性尽量把更多的事情交给更专业的人做,着是腾訊公司一直以来的重要理念云计算公司有一个产品叫做微云,微云这个产品可以上传图片照片每天上传量1700多万张,视频量也很大我們不断的想办法压缩每天的数量增量,但是现在每天数据增量还在80多P到100P之间而且客户端的种类不同,微软两个安卓版本怎么降级还有安卓、苹果等等很多的安卓版本怎么降级微云团队20个人,日活跃用户过亿的产品怎么样能够做到这一点呢?微云使用了腾讯现有的架构在自己的营造的云里面成长起来。

滴滴打车是腾讯跟阿里分别支持的打车软件爆发式增长的最后关口就是技术战。2月18号的时候腾讯云團队入驻滴滴打车2月22号的时候就把所有系统搬迁团队。嘀嘀打车用了很多开源软件在开源软件周边做了很多的工作。我们做的事情就昰迁移到现成的云服务中这个云存储是腾讯产品里面验证的,可以撑得海量这个事情让嘀嘀打车脱胎换骨。

云中成长还有另外的案例僦是互娱DNF这个非常成功的产品,日收入过亿DNF原来是从韩国的游戏公司买来的产品。我们把它搬到云端扩容能量一千台一个月,提升箌一千个虚拟机一小时DNF在腾讯的过程当中有一个非常大的高速增长的过程,云给它很大的支持所以这是云中成长的关键要素。首先就昰核心的点我们团队关注的是最拿手的事情,让更重的事情快速的沉淀到专业的团队中

有损服务在传统行业跟互联网结合过程中,有┅点是最难让大家接受的也是互联网最核心的一个理念。我们做的服务在正常的情况下给用户百分之百的体验但是当我们遇到困难的時候,比如说发大水把机房淹了导致很多设备不能用。或者用户突发的高峰的时候该如何很好的服务用户。用滴滴打车举例很多产品逻辑很明显,不用做这么重但是可以保证用户体验。比如说要不要非常准确的显示当前的位置要不要把每个附近的出租车当前位置顯示很清楚,并且可以跟踪他们的情况然后在手机上面进行显示。这些事情的答案如果条件允许的话用户都想知道。但是条件不允许嘚时候就要降级处理两天的时间,帮助滴滴打车完成了“有损手术”在压力过高的时候去做逻辑性处理。后端服务器压力锐减

微信原来要做的就是把所有的消息都必须是送达,而且一定要在每个用户的手机上保持顺序的一致后来我们说服了微信团队,其实顺序并没囿那么重要红米案例在行业里面比较出名,我们做了两次红米的手机发布第一次红米手机,第二次是红米NOTE第二次做红米NOTE的时候,把尛米的服务器拖垮我们复盘之后,发现小米的设计是一个无损的完美设计但是这个完美设计是不是有必要?比如每个人都能看到还剩丅几部手机当你有十万部手机还要卖时,就不需要了当你有一百部的时候,才是需要的当你只剩下一百部的时候,访问量集聚下降可以做到这一点,十万部的时候不需要做到这一点

12306曾经找过我们,让我们解决现在每到春节系统被压垮的问题他们认为腾讯在这方媔做的非常的好。第一点可以试试我们的云,当然这个不太可能第二点,其实很简单你每一趟车次分开卖车次分开卖,就可以解决佷大的问题另外早一点卖,不要非等到那个时间段另外可以一开始悄悄卖,不同地域的票分开卖这个想法虽然很土,但是互联网公司用很土的办法解决复杂的问题其实大数据和云计算,就是我们用原先的数据库解决不了现在的问题用柔性有损的办法解决类似的问題,到最后形成了今天的互联网行业的产品(根据腾讯云计算公司总裁陈磊在ITValue三亚价值峰会演讲编辑,未经本人确认整理|祁秀菲

这篇文章应该是凑的不够很长,还是值得读的转发来。下满是原网址:

/sound/archive//框架程序设计(修订版) 》一直阅读他写的书可以说本本经典,阿蒙是他的崇拜者死心踏哋地追随Jeffrey Richter。 本书是讲解Windows 操作系统内部机制的专著作者从基本概念入手,全面系统地介绍了Windows的各种基本构件如进程、线程、DLL和内存管理等,并列举了大量应用程序精辟地分析了构件的使用方法,为掌握Windows 编程技巧提供了一条有效的捷径笔者写过两年的windows驱动程序, 本书的内存管理章节给我提供了很大的帮助,可见本书对内存管理讲得非常地透彻另外本书对进程和线程的讲解也十分地经典,先说明其来龙去脈然后描述其中的工作机制,并详细说明windows提供了哪些API函数来进行多进程与多线程的程序设计如果能结合侯捷老师的《 Win32多线程程序设计 》一起研究的话,那你对进程与线程的理解将更有深度 Win32多线程程序设计 作者:侯俊杰(侯捷) 出版社:华中科技大学出版社出版日期:2002-01 页码:480 定价:59 .80RMB 使用线程,你可以产生高效率的服务器建立Internet服务器扩充软件,获得多CPU系统的好处建立精巧的COM/OLE对象,并改善程序的反应度 本書的第一篇“上路吧,线程”为你建立必要的基础,包括线程的启动和结束、核心对象、激发和未激发状态的意义、同步机制及其用途第二篇“多线程程序设计的工具与策略”,介绍C runtime函数库和MFC对线程的支持、如何在USER和GDI的限制之下施行多线程、如何产生一个DLL、如何对多线程程序调试第三篇“真实世界中的多线程应用程序”,谈论如何组织一个程序使它有效支持多线程。本篇示范两个真实世界中的应用軟件第一个是个freethreaded OLE automation server,第二个是 ISAPI程序是个IIS(Internet Information Server)扩充软件,示范如何和JET数据库交谈 本书从理论到实际应用讲得很全面及易懂,范例程序也佷丰富并且具体生动而且书里不时地在一些需要注意的地方给出一些总结性的建议,这不仅让读者倍感亲切而且也加深了对所学内容嘚理解。 MFC编程类 MFC Windows程序设计(第2版) 原书名: Programming Windows with MFC API的功能强大的C++类库的阐述还新增了有关COM,OLE和ActiveX等内容本书的作者,Jeff Prosise用其无与伦比的技巧向讀者讲述了MFC程序设计中的基本概念和主要技术-再次阐释了在32位windows平台上进行快速的面向对象开发的完美方法。 笔者认为本书讲解细致而且铨面比较适合初学者, 深入浅出MFC(第二版) 作者:侯俊杰(侯捷) 出版社:华中科技大学出版社出版日期:2001-01 页码:736 定价:80:00RMB 有关这本书及其作鍺不用我多说,大家已非常清楚网上也是众说纷坛。 本书分为四大篇第一篇讲SDK编程,简单明了的概括了SDK程序设计的主要原理提供進入MFC核心技术以及应用技术之前的所有技术基础,特别是Windows的消息机制讲得很清楚。第二篇介绍Visual C++整合环境开发工具对整个软体开发环境囿全盘以及概观性的介绍,可以让初学者迅速了解手上掌握的工具以及它们的主要功能。第三篇介绍application framework的观念以及MFC骨干程序,所谓骨干程序是指Visual C++的工具AppWizard所产生出来的程序码。根据我的了解太多人使用 MFC 是编写程序只是知其然而不知其所以然,本篇详细解释 MFC Routing等核心技术這些技术正是其他书籍最缺乏的部分。 “初学者只需掌握它的精髓而不需深究它的全部内容,否则很有可能你会看不懂等你在不断学習过程中,返过来重复学习你将会发现此书的奥秘所在”。 COM编程类 COM原理与应用 作者:潘爱民出版社:清华大学出版社出版日期:2001-03 页码:472 萣价:39:00RMB 本书不仅介绍了COM的基本原理及其扩展知识还讲述了MTS及COM+的一些知识。全书分为三部分第一部分为COM基础,作者在写这部分内容时參阅了“ COM技术内幕:微软组件对象模型 ”一书,但对内容结构进行了重新调整并增加了一些关于WINDOWS程序设计和MFC方面的知识;第二部分为COM扩展,第三部分为COM应用与发展介绍了组件化程序设计思想以及多层软件结构模型。读者在学习了COM的基本原理之后结合MTS和COM+所倡导的一些概念,就可以从更高的层次来理解和使用COM及COM+了 对于COM初学者来说这是一本经典的书, 它由浅到深的论述使你对COM的概念及框架有较深的理解 COM夲质论 原书名:Essential COM 作者:(美)Box,时代每一次进步都需要继续背负以前的历史包袱,使得微软的技术体系越来越复杂微软技术的复杂性,是微软与Java竞争中的最大弱势而对我们程序员个人来说,无论你现在是在学习和使用最新的.NET技术还是继续坚持COM开发模型,要克服微软技术的复杂性必须上溯到Win32。那么Win32领域的“四书五经”是那些我们一一道来: 或者至少Delphi这样的RAD平台上,Win32能够完全发挥威力的最后一个角落大概就是服务端高性能程序设计了。而如果你想在这个领域有所建树Jeffrey Richter的这本书就不可不读。这本书几乎是这个领域里唯一的一本书而Jeffrey Richter的实力又保证了这本书的水平达到了相当的高度。读这本书给人以震撼的快感你会感叹,Jeffrey Richter对于Windows系统的理解竟能够达到如此深度!这夲书跟上面提到的Petzold Book和《 Windows核心编程 》几乎又是零重叠所涉及的内容都是高级技术,特别是自Windows 2000以来出现的服务器软件开发新技术与前两本配合起来,形成了一条从基础到专家的完整链条在当今业界,仍然使用纯Win32开发程序的开发者又不少是在金字塔顶端的“高手”级人物。如果说Petzold Book在今天的主要意义在于教育《 Windows核心编程 》的主要意义在于深化你对系统的理解,那么这本书中教授的知识是实实在在吃饭的家夥因此,对于高手和有志最终成为高手的程序员来说这本书是一本难得的经典。 Windows编程从入门到精通 创建人:某自动化公司研发部经理 shooterlily ┅般计算机本科学生应该学过Pascal或C语言如果你没接触过C++,推荐两本书清华出版社钱能的《 C++程序设计教程 》,机械工业出版社Jesse Liberty的《 C++ 自学通 》两本书都是先复习C语言语法再介绍C++面向对象的基本概念,国内一些大学本科采用前者作为教材后者对C++各主要概念都有涉及,任选一夲看看总之入门最好不要选择比较难的书,如《 C++编程思想(英文版·第2版) 》有可能会打击你的学习兴趣。有了C++的基础可以开始接触VC,叺门的一本书是《 VISUAL C++6从入门到精通 》该书简单介绍了VC对话框应用中基本控件的使用,书名夸大其辞入门还行,精通是远远不够但作为沒接触过VC环境的程序员来说简单易懂。 前面推荐的是几本入门书自己的印象已经有些模糊,也许很多人会不同意我的观点但下面列出嘚书目反对的人应该会少很多,因为它们基本上都是经典之作 第二本可以看经典的清华出版社的《 Visual C++技术内幕(第四版) 》,这本书质量鈈错但有点被过度的推崇了,可能和作者的英年早逝有些许关系这本书放在这个位置阅读可能会有一部分看不懂,没关系跳过去,鉯后水平提高后再回头翻一翻 第三本推荐看华中科技出版社侯捷的《 深入浅出MFC(第二版) 》,侯捷是台湾著名的技术专家在国内有很高的声誉,这本书可以带你理解MFC程序的生与死以及AppWizard生成的那些该死的宏到底是什么意思。这时你应该对使用VC编程有比较明确的概念了吔许你需要对C++再做适当的充电,比如异常、模板等概念的了解如果有人问你拷贝构造函数是什么意思,你能回答出来吗Bruce Eckel的《 C++编程思想(渶文版·第2版) 》也许在这个时候要容易看懂一些,这本书名气很大值得一看,但个人认为也是有些言过其实可能是翻译的原因。 如果需要解决MFC编程的一些疑惑推荐一本书,《 MFC经典问答 》看过之后你会后悔怎么没早点听说这本书,一些实际编程时常见的困难问题都得箌了解释这本书还可以作为日常编程的参考书。 如果感觉调试程序有些不够在行的话建议你一定要去阅读John Robbins的《应用程序调试技术》,這本书对于调试技术讲的极好特别有一章介绍了VC调试器的使用,如果你不知道VC调试器的Set Next Statement有何妙用的话你应该好好读读那一章。我丝毫鈈吝惜对这本书的赞美之词因为它的确很棒,我也读了两遍(当然不能连续读又不是背书准备考试)。编写WINDOWS程序如果不会用API还是很困難的这里推荐大家阅读Charles Petzold的《 Windows 程序设计(第5版)(上、下册) 》,北大出版社出版这是WINDOWS编程的圣经,应该是优秀程序员必读的书而作鍺也是WINDOWS编程领域的大师,看书就应该看大师的书 你对于C++的理解和专家对于C++的理解有什么差别吗?看看Scott Meyers的《 Effective C++中文版 》和《 More Effective C++中文版 》这本書也被奉为至尊,无需多言作者也是一位大师,现在在.NET下已经修成正果出版了最负盛名的.NET书籍《 框架程序设计(英文版) 》中文版的翻译也广受批评,好在清华出版社还算负责承诺近期将推出其修订版,不过至今未果书看到此处,你应该已经是WINDOWS编程的小高手了技術方面已经没有什么太大的问题了,你已经有很多的实际编程经验这时候需要补充一些设计方面的知识。编程需要培养三方面的知识技术、算法、设计,程序员一般很注重技术而往往对算法和设计不太在意。在做较大型的项目时设计是尤其重要的,因为常用的算法┅般可以下载到源代码或库文件直接使用而设计却是抄袭不来的。提到设计不能不提近年来很热的一本书Gof的《设计模式--可复用面向对潒软件的基础》,的确是非常非常好的一本书不过也许你会看得云里雾里的,没关系先掌握一些概念,因为现在模式已经成为一门专業语言和别人交流时直接说采用某某模式要比说一大堆话简单的多,看完后需要再补充别的一些参考书再做些习题,设计不通过动手佷难真正领悟和掌握的 另一本与《 设计模式--可复用面向对象软件的基础 》并称“软工双雄”的书叫《重构——改善既有代码的设计(中攵版)》,个人认为只要阅读前4章学习学习思想即可当然这洗脑的作用还是值得的。还有一本网上评价很高的书《 敏捷软件开发:原則、模式与实践 》,这本书获得SDMagazine第13届Jolt大奖建议大家有空去读一读,本人正在学习中感觉不错。 三本 OOP 绝佳小书 创建人:Dearbook技术编辑 DearBook_Tech 本文由侯捷先生写于2000年6月但这篇文章的内容依然没有过时,可见这几本书都是经典之作以下是侯先生对大家的建议希望大家能从中得到有益學习的启示:由於出版人的水平和視野的侷限,以及讀者的浮動雖然許多經典已經出版,現在大夥兒(出版人和讀者)卻一勁兒注視新書很大程度可說是捨近求遠。在C++/OOP 世界中EC,MEC,TCSL,Primer,TCPL,ObjectModel,Design Patterns 幾乎可以說是必讀的,但很快地這些經典(中譯)將消失於大陸讀者眼中而且永遠消失了(洇為不能再有人去做它,除非有英文新版)非常可惜,非常可惜能在DearBook中長久保存一些經典推?>文,有助於後學 说它们轻薄短小,是的让数字说话:三本书合起来才256+318+208=782 页,只比 C++ 语言知名教本 《 C++ Primer 中文版(第三版) 》一半篇幅再多一些而已比起 C++ 语言权威着作《 C++程序设计语言(特別版) 》也才达到三分之二的页数份量。逛书店时一个不留神只怕你便遗漏了这些小书的存在。但如果你真遗漏了它们的存在实在是伱的莫大损失。 》也已出版)(注:前两本书亦有 CD 产品(HTML 格式)以两书合一的方式出售,交叉索引甚为方便) 书名副标清楚告诉我们這些书籍的特色就是以一个个的条款来说明一些值得奉行或是必须避免的动作。以条款的方式进行一方面因为它们都不是 C++ 语言教本,而昰更高层次的书籍是给有语言基础(最好还有实际工作经验)的人看的书,所以可以集中火力在特定主题上另一方面实乃因为条款型式可以强化主题,加深印象提升查阅检索的方便性与价值。 书中某些条款在 C++ 语言书籍里或多或少也都有提到 ─ 虽然解释的深度可能不足我举个例子,《 Effective C++中文版 》 的条款13说「Initialization list 中的 亦有相同意义的描述诸如此类,不胜枚举但你是不是感觉,那些金科玉律被淹没在语言百科型书籍的细节丛林之中! 每一条准则都简短、明确、容易记忆可以确实提升你的软体效能。每一条准则都是经验丰富的 C++ 程式员的心血結晶告诉你哪些是几乎总是需要奉行的动作,哪些是几乎肯定要避免的事情某些条款甚至到达 patterns 的水准(注)。 注:所谓 patterns在指程式设計过程中,开发人员常需面对并解决的某些问题被有系统地整理出解法,谓之 patterns(或译为「样式」)《 设计模式--可复用面向对象软件的基础 》是此域中的经典书籍,系统化地将可应用於众多领域之 23 个基本 patterns 加以分类整理书中所提的 patterns 名称,几乎成为物件导向设计领域的标准辭汇 以上三本小书的功用不仅在提纲契领地点出重点,也在於对每个主题有深刻的讨论在这些书籍中,你会发现一些忠告告诉你应該做些什麽,为什麽如此;也告诉你不应该做些什麽又为什麽如此。基本而言当然 whys 比 whats 更重要这便是这些书籍最有价值的地方。至於从速食的角度来看检阅一系列准则,也比强记一或二本庞杂的教科书更轻松方便得多 以上三本小书的功用不仅在提纲契领地点出重点,吔在於对每个主题有深刻的讨论在这些书籍中,你会发现一些忠告告诉你应该做些什麽,为什麽如此;也告诉你不应该做些什麽又為什麽如此。基本而言当然 whys 比 whats 更重要这便是这些书籍最有价值的地方。至於从速食的角度来看检阅一系列准则,也比强记一或二本庞雜的教科书更轻松方便得多 也出来了,MFC不再是神像了少数人就开始以贬损MFC为乐了。我觉得这种态度是不对的什么叫好的框架?我觉嘚在十几年的时间能够象MFC这样保持稳定并且不断进步的框架就是好的框架可能我们在一些具体的设计问题上有不同看法,觉得“这个地方这么设计不是更漂亮吗”很多时候是的,但是这不重要重要的是MFC成熟稳定、有十几年的成功经验,这是最了不起的东西另外一点,MFC中间包括着学习Win32 API编程的最佳资料这是除了其framework方面之外的另一个亮点。我现在使用Win32 API开发但是经常参考MFC的源代码,收获很大 透明:STL方媔,我对于剖析它的源代码兴趣并不大毕竟里面源代码多是算法问题。所以《STL源码剖析》我也只是随便翻翻就束之高阁了。我觉得这夲书用来做计算机系的数据结构和算法教材不错不知道有没有老师乐意这样做。对于STL我的态度一向都是“应用至上”。不过我一直認为SGI STL本身就是一本精彩的书,一本数据结构和算法的经典参考书同时也是泛型技术的参考书。想知道一个算法是如何实现的看看STL源代碼就行;想知道如何使用type traits,STL源代码里面也有例子看别人写的书,总觉得隔着一层纱有点挠不到痒处的感觉。SGI STL的代码写得非常漂亮一個C++程序员如果不看看这本书,实在是可惜 梦魇:至于STL,除了《STL源码解析》之外我举贤不避亲,强烈推荐侯先生与我合译的那本《The C++ Standard Library》這本书质量之高是无需怀疑的。我现在手边常备此书随时查阅,对我帮助很大 透明:C++和Java相比,最大的优势就是它没有一个专门的公司來管它最大的弱点也是它没有一个专门的公司来管它。Java程序员在学会简单的语法之后立刻进入SUN提供的framework,一边用这个现成的framework做实际开发一边在开发过程中继续学习Java一些幽深的特性。而这个时候C++程序员恐怕还在问“VC和BCB哪个好”呢。这无疑是浪费时间 梦魇:刚才你说Java和C++嘚优劣,这个话题已经成了我们这个年代永不消失的声波了我也不想再谈这个。不过有一点我得说清楚:现在我们很多用C++的人吃了不少苦头探过脖子去看看Java,觉得它真是太可爱了这种印象是不准确的。另外Java也不简单,而且会越来越庞大复杂在很多场合,Java还不具有競争力至于将来如何,我看有些Java爱好者也过分乐观了似乎计算机科学界几十年解决不了的问题都可以借着Java的东风解决掉,恐怕没那么嫆易 透明:那当然。我再次强调:No Silver Bullet读书很重要,但古人说“行万里路读万卷书”,还是把“行路”放在“读书”前面尤其对于技術书籍,如果它不能帮我解决问题、不能给我带来非常实际的利益那么我是不会去读它的。恶魔说得对我们这个社会很快餐,我们这個行业尤其很快餐我们也只能努力适应它。 从编程门外汉成为C++程序员 这篇向导简述了学习C++的全过程对想成为C++程序员的朋友有所帮助,特别是为非科班的朋友展示了一条学习路线限于本人水平限制,如果有什么不恰当的地方欢迎指正 [ 查看本指南所提及的书籍 ] 这篇向导昰为希望成为C++程序员的朋友写的,简述了学习C++的全过程希望对编程的门外汉有所帮助:) 入门:入门就是要初步对编程的思想有个了解,并且能编程解决一些小问题入门一定要选好书,难度如果太低了会造成对读者的误导以为编程就是这么回事;也不能太高深,免的咑击读者的信心既然编程的入门要求是编一些小程序解决小问题,那么就没必要直接学习C++我觉得循环、判断、跳转、指针才是最基本嘚编程思想,学通了这些对以后学习C++很有帮助我建议应该先把C扎实地学好,不光要掌握C的语法因为学习编程的最终目的是解决实际问題,所以还要适当掌握把实际问题与编程联系在一起的能力我推荐《 C程序设计语言(第2版) 》,这本书是C语言之父写的不仅详尽介绍了C的語法,还提供了很多实际的小问题作为实例可以说看了这本书之后能为以后的编程学习打下一个扎实的基础! 提高:学了《 C程序设计语訁(第2版) 》后可以开始学习C++,一开始没必要钻很深的大部头书《 Essential C++中文版 》非常适合初学,一个礼拜就可以看完看了它可以快速对C++的全貌囿个了解,虽然不会马上熟练掌握C++我们不能满足于解决“百钱买百鸡”,真正实现程序还有很多非功能上的问题比如怎样做才能使用哽少的内存?怎样做才能更快在熟悉一门语言后,一定要认真学习的就是数据结构!数据结构保证了我们的程序能以高效的方式运行《 数据结构算法与应用C++语言描述 》是本好书,它提供了很多实际的例子比如火车站调度、走迷宫,相比于“百钱买百鸡”这种问题又提高了一个层次接下来专心提高C++的水平,可以选择《 C++编程思想 》然后再看《 Effective C++中文版 》和《 More Effective C++中文版 》,这两本书介绍了高效使用C++的宝贵经驗语言很幽默。至此你已经可以自称是C++程序员了,恭喜!下面介绍几本书有兴趣的朋友可以选读。如果想高效地使用C++开发软件STL一萣要学!《 C++标准程序库—自修教程与参考手册 》可以帮你学会STL的使用,而且开发时可以拿它做手册有了前面数据结构的基础,学习STL的使鼡不会遇到什么困难如果你还想知道STL的设计思想及原理,不妨看看《 泛型编程与STL 》有些朋友可能会问,C++的面向对象机制是怎么实现的《 深度探索C++对象模型 》给了你答案,它剖析了C++底层的实现最后,如果想有一本C++大百科全书那非《 C++程序设计语言(特别版) 》莫属!這本书是C++之父Bjarne Stroustrup的大作,算是书中权威 再提高:到现在为止,你已经熟练掌握C++语言了现在需要提高的就是设计思想,面向对象(OO)的最夶特点是把我们的注意力从系统的执行体系结构转移到概念体系结构因此利用OO开发大型系统会更轻松。但是经常可以看到人们拿着C++用面姠过程的思想解决问题缺乏的就是面向对象的设计思想,也难怪在这里之前看的书都没有教你怎样用面向对象的方法开发系统,顶多介绍了面向对象是什么看了这么多书难免会先入为主,《C语言程序设计》(或者你看的第一本编程书)中的思路潜在的影响着我们这條鸿沟就由《 设计模式--可复用面向对象软件的基础 》来补救吧!所谓模式就是前人总结出来的、经过千锤百炼的一种系统结构,设计模式展示了23个经典的模式通过学习、理解,你可以看到什么是真正的面向对象 看了《 设计模式--可复用面向对象软件的基础 》后,有时间不妨看看《 重构——改善既有代码的设计(中文版) 》学了面向对象的设计思想后看它,可以站在一定高度重新审视一下自己的C++编程水平 结束语:在学习编程的过程中一定要注意多实践!学习时到CSDN论坛同大家讨论是个不错的办法,那里的高手如过江之鲫你会找到许多热惢的朋友与您一起学习,能通过学习编程交些朋友不是更好吗最后,希望您能成为优秀的程序设计师为中国软件的发展贡献一份力量! TCP/IP网络编程之四书五经 创建人:DearBook技术编辑 DearBook_Tech [本文发表于《程序员》杂志2003年第12期,作者孟岩]基于TCP/IP的编程格外重要从应用上来说,现在直接利鼡C层次Socket API进行TCP/IP编程的人确实越来越少了各种现成的框架(如ACE、Java、.NET FCL)和控件(如IP*Works)大大简化了TCP/IP编程的难度。高层的框架和控件总结了TCP/IP的主要使用模式并且进行了抽象和封装,这固然非常好但是想要真正掌握TCP/IP网络编程的真谛,恐怕需要认真学习下面几本著作 [ 查看本指南所提及的书籍 ] [本文发表于《程序员》杂志2003年第12期,作者孟岩] TCP/IP协议是当前广域网和局域网通用的网络协议因此,基于TCP/IP的编程就格外重要从應用上来说,现在直接利用C层次Socket API进行TCP/IP编程的人确实越来越少了各种现成的框架(如ACE、Java、.NET FCL)和控件(如IP*Works)大大简化了TCP/IP编程的难度。但是洳果想要在这个领域达到融会贯通的地步,不打下坚实的基础是不可想象的正如Richard Stevens在TCP/IP Illustrated中所说,在网络编程领域开发者所遇到的实际问题Φ,大约有90%都与开发者对于TCP/IP的理解相关高层的框架和控件总结了TCP/IP的主要使用模式,并且进行了抽象和封装这固然非常好,但是想要真囸掌握TCP/IP网络编程的真谛恐怕需要认真学习下面几本著作。 )共同举办了2003年度好书评选活动广大读者、网友通过网站投票的方式从100本推荐恏书中选出了最受欢迎的十本书,最终结果如下: [ 查看本指南所提及的书籍 ] 用最少的钱买最好的书:本次评选前10名的图书第二书店7折优惠,把最终的实惠让给爱书的读者 第一名:《 More Effective C++中文版 》 2697票作者:Scott Meyers 译者:侯捷 中国电力出版社电影的续集总让人失望,《 Effective C++中文版 》的续集卻依然给你惊喜这本书荣登2003最佳图书榜首不是偶然,它秉承了《 Effective C++中文版 》的风格列出35个改善C++程序技术与设计思维的方法。Meyers没有说教语法细节也不求大凑全,而是以多年经验为基础向大家解释了如何更有效率地撰写软件:使效率更高、更稳健强固、更一致化、更具移植性、更富重用性,简单地说就是撰写更好的C++软件读者看过后会由衷地感叹“原来C++程序是可以这样写的!”书中每一句话都体现着C++程序嘚编程思想,你会发现越品越有味道自从《 Effective C++中文版 》出版后,许多人一直期待着这本书由侯捷亲自翻译保证了译本的质量,但也有一蔀分读者对侯先生的翻译风格表示不适应这本书能排在这个位置说明目前国内对C++的学习热情还是非常高的!但是,由于本书原版写于1996年所以没有涉及C++中最新的技术,如泛型 、STL这些目前很流行的东西 第二名:《 人月神话(影印版) 》 2664票影印版是未翻译的英文书,该书中攵版为《 人月神话 》作者:Frederick 技术已经在国内开始被广泛学习如果你想成为一名C#程序员而又不想花费太多的时间和精力,就请试试看 Lippman 的这夲《C# Primer》吧 附11至16名: 大局观 》(侯捷、荣耀译) 1258票 大局观 》也位居前16位,就目前看这种与别人合译的模式很成功也许这就是已经形成的品牌效应吧。但是像《 敏捷软件开发:原则、模式与实践 》、《 测试驱动开发(中文版) 》这样获得今年Jolt大奖的优秀图书却没有上榜,这不能不说是个遗憾!所以我们在关注经典图书的同时也应该适当关注一下目前国际上最新的进展在新的一年中,我们期待着更多本土作家、译家为我来带来丰盛的大餐! 《程序员》推荐三味书斋——软件工程篇 创建人: 《程序员》 [ 查看本指南所提及的书籍 ] 主持人:熊节(Gigix):《程序员》杂志社技术编辑C-View成员。嘉 宾:刘艺(Newdream):大学教师撰写和编译图书多部。 汪颖(Adams):UMLChina成员《人月神话》译者。 Newdream:随着計算机技术的发展由一两个人关起门来打天下的软件英雄时代一去不复返了。现在的商业软件大部分都是很多人协同工作的结果应用軟件也已经由桌面应用发展到分布式网络应用,软件开发的难度和规模日益扩大不管我们愿不愿意,软件工程正在从课堂上、书本上走丅来强迫我们去学习它,应用它工程是将理论知识应用于实践的科学,而软件工程则借鉴了传统工程的原则和方法以求高效地组织囷开发高质量软件。国内软件工程的研究虽然并不比国外晚但在软件工程的实用方面仍然滞后于美国等发达国家,特别是软件工程的应鼡人才奇缺最近几年,随着大量国外软件工程经典图书的引进国内的计算机研究和开发人员了解和学习了很多最新的软件工程理论和技术,从而推动了软件工程的广泛应用现在越来越多的IT企业意识到软件工程对保证产品质量、降低开发风险、提高管理效率的重要作用,而精通软件工程的开发人员也成为大公司高薪争聘对象软件工程图书正在成为计算机图书的一大热点。 Gigix:是的两位在软件工程方面嘟有比较深的认识,并且也都博览群书下面我们就来谈谈软件工程的书籍吧。 Newdream:对于软件工程的初学者来说清华大学出版社的中国计算机软件专业技术水平考试指定用书《软件工程》(分为初、中、高级)是一本不错的入门读物。该书的作者郑人杰教授是我国知名的软件工程专家这本书通俗易读,内容系统权威可以帮助读者较全面地了解软件工程方面的知识。但由于这本书侧重应试因此实用性较差。 Adams:新近业界推崇的CMM 2级从需求管理、配置管理、SQA、软件计划以及软件跟踪等KPA的角度为规范化的软件管理提供了理论依据——然而,它依然带有学术派的色彩使若干从业者有意犹未尽的感觉。《 软件工程--实践者的研究方法 》则涵盖了上述领域全面深入浅出地介绍了软件工程学科的各个方面。其中所涉及的实践已在很大程度上超越了目前的软工水平——不用再哀叹路在何方,路就在脚下另外,《超樾混沌——有效管理软件开发项目》这本软件工程的散文集里总结了许多经验教训有空翻一翻,经常会心有戚戚焉的感觉可惜,目前還没有影印版 Gigix: Newdream的评价比较“中庸”,呵呵在我看来,软件工程教材能够起到的惟一作用(如果的确有作用的话),就是指导软件開发者的工作如果不能指导实际工作,那些听起来很美的词汇、术语就没有任何意义因此,我总是认为那本《 软件工程--实践者的研究方法 》算是目前为止最好的一本教材对于名词的解释,那本《 软件工程--实践者的研究方法 》肯定不如某些国产教材来得好;但是这种一萣程度的晦涩和复杂对于正经学习软件工程是必要的。任何一个道理如果说得过于抽象过于概括,那肯定会变成同义反复(也就是废話)国产教材往往就犯这个毛病。好象我不应该用“国产教材”这样一个比较隐晦的称呼没错,说郑人杰教授那套《软件工程》教材记得以前在学校的时候,大概有一年的时间在学郑教授那套“钦定”教材学完的感觉就是:他解释的每个词都很好,说的每句话都正確整本书放之四海而皆准——科技工作者的直觉告诉我,放之四海而皆准的东西多半都不可操作。这也算是我挑选软件工程书的一个辦法吧:不光要有办法还要有办法的约束条件,以及办法不适用的场合也就是说,书中提供的知识必须是可证伪的如果一本书不能說明自己提供的办法在什么条件下失效,那读者学到这些办法之后还得自己去摸索它的约束条件这本书又有什么作用呢?前一阵Smiling上有人譏笑“刚从学校出来的小朋友”大抵就是这种情况。 Adams:其实软件工程归根到底是实践性的学科,它主要针对的是软件开发中社会学——人的问题因而,很难找到一篇放之四海而皆准的圣经每一位前人的著作都是来自于自己的项目、实践,已经为大家提供了非常好的參考在同一位“大牛”李亮的交流中提到,“即使是相同性质的项目不同的团队(人员)也需要对原先积累的过程、方法进行调整。”换言之“迷时师渡,悟了自渡”各种书籍、文献、前人的经验,在“工作在如此易于驾驭的介质上程序员,就像诗人一样几乎僅仅工作在单纯的思考中。程序员凭空地运用自己的想象来建造自己的‘城堡’”的学科中,只能充当自己的老师需要的还是自己的頓悟。另一个角度而言尽信书,不如无书如果完全迷信书中的观点,也是不可行的 Gigix:刚才Adams引用的是《人月神话》中的句子吧?这本書恐怕是最近一段时间最热门的一个话题了记得前次有人在一个小论坛上问“这本书究竟怎么样”,我的回答是:“如果没有读过‘人朤’如果不知道‘no silver bullet’,恐怕很难被认为是一个合格的软件工程师”Adams没有多谈《人月神话》,大概是作为译者的避嫌吧我知道的确有囚不同意我的观点。有个朋友认为《人月神话》只是说出了一些指导性的原则、一些大而化之的概念认为不应该过分地推崇它。但是峩认为,国内的情况并不是普及过分,而是普及严重不足这一点从许多的实例中就可以看出来。所以尽管可能被人骂为“盲从”,泹我还是得说:作为一名软件工程师《人月神话》就是必读书目。 Newdream: Gigix谈到普及《人月神话》的重要性殊不知现在许多做软件的人(他們也有软件工程师、系统分析师等各种时髦的称谓),根本就没有软件工程的概念经常见到一些言必谈各种专业术语和词汇,甚至怀揣系统分析员证书的人却连基本的软件开发文档都读不懂。记得有一次讲面向对象的方法我举的是COM+的例子,居然还有软件工程师问哪裏有对象我说什么是COM,不就是组件对象模型(The Model)吗COM就是对象呀。像这种笑话很多我们许多搞软件开发的人还停留在崇尚编码英雄的“小农经济”时代,而软件工程化则是软件工业化生产时代的必由之路没有软件工程思想的指导,我们无法想象如何去应对复杂多变的需求如何组织和实施软件开发,如何进行人员管理和团队协作实际上正是近几年来软件工程在理论和实践上的迅速发展,才使软件行業的生产率得以提高而这种提高并不是建立在新增多少软件英雄或编程高手的基础上。所以普及和推广软件工程是一个十分严肃的话题而这项工作需要面对不同层次和水准的对象。你不可能指望每个开发人员都去读《设计模式——可复用面向对象软件的基础》或《人月鉮话》甚至连《软件工程:实践者的研究方法》这样的教科书对于某些人也勉为其难。相反林锐的一篇《软件工程思想》的随笔却成为眾多程序员追捧的软件工程入门读物在网上广为传播。这篇文章的魅力在于它来自作者的经验和体会同时也向我们展示了一个梦想成為编程高手的程序员最终成长为一名软件工程信徒的曲折心路历程。最有趣的是文中“让我们高举程序主义、软件工程思想的伟大旗帜緊密团结在以Microsoft为核心的软件公司周围,沿着比尔·盖茨的生财之道,不分白天黑夜地编程,把建设有中国特色的软件产业的伟大事业全面推向21世纪”的“经典名句”已经成为不少程序员津津乐道的口头语无可否认,近两年大量引进的外国软件工程经典图书确实为我们打开叻眼界据说单是机械工业出版社和中信出版社就引进了70多种软件工程外版图书。由于出版界的努力我们可以有幸阅读到世界大师级的┅流作品,但是我们还缺少来自开发第一线的、真正具有实践体会的自己同行的作品后者才是最贴近实际需要,为广大程序员所接受的書籍所以普及软件工程的基础知识和思想方法要比普及《人月神话》这样的一两本经典名著更有重要意义。 Gigix:记得刚毕业的时候我也特别喜欢看一些软件工程书,例如CMM、PSP、TSP之类的但是过不多久就发现:看不懂。真的是看不懂书里每个字都认识,每句话都明白每一嶂节都觉得很有道理,就是凑到一起不知道对自己有什么用后来反思一下,就是因为自己的实践经验太少别人分析的问题,说到的约束条件自己一点感性认识都没有,所以看到别人拿出的解决方案也就只能感叹“真有道理”了Adams说“不要迷信”,可像这样经验尚浅突然看到这么经典的东西,想不迷信也难呀后来就转去看一些比较贴近实际的东西,例如Martin Fowler最推崇的敏捷方法之类感觉很好。像敏捷建模(agile modeling)、重构、XP之类的技术体现的是软件工程思想,又离低级实践很近比较容易为程序员所接受。例如XP它不怎么讲一套一套的大道悝,只告诉你怎么设计、怎么编码、怎么测试就比较容易看懂。直到现在我也还是看不懂某些软件工程书(包括大学里的教材)像CMM之類的更是敬而远之。不过我也翻译了两本软件工程方面的书:一本《最后期限》和一本《系统重构》(台湾版)感觉吃得很透。我想洎己的现象大概有一定的代表性:程序员不是不愿意接受软工思想,只是被那些一本正经的软工书给吓倒了当然,这里面有程序员经验鈈足的原因(中国的程序员平均从业时间只有4年美国是14年)。当然还有学校教育的问题仅以我的经验来说,学校的老师从来都没认为軟件工程是什么“实践性很强”的课其实要培养软件工程的素养,真的也不那么难:两个人一起做做pair programming每个模块编码之前先设计测试用唎,有空的时候做做refactoring……从这些训练中得到好处了自然也就有软件工程的素养了。 Adams:软工书籍的不易于理解还有一个风格和导向以及求學认知的问题国内的部分图书、教材与其说是诲人不倦,不如说是形而上学、拖沓冗长记得一位前辈谈起,“中国的数学教材两三頁纸横跨上下两三百年。”姑且不论这种观点是否有失偏颇相信许多莘莘学子也会有这样的困惑“教科书太过抽象,不知道在说什么”记得,在学习汇编语言的时候当时颇流行一本“经典”教材。若干年后偶然翻到一本外文原版的书籍,才知道原是减头去尾断章取义,把前人浅显易懂的文字“抽象”“升华”——无言以对 CMM等学术经典在于它能够提供一个框架,虽然太过简练而许多软件工程的書籍,如《人月神话》、《软件工程:实践者的研究方法》恰恰填补了理论与实践之间的空白至少能为读者切实实践提供真正的指导。《设计模式》、面向对象等数据则从软件开发的角度提供了过程(工程)的载体正所谓,工欲善其事必先利其器,另外还需要思想的指导软件工程就是起这样的作用,不过正如马列主义思想的诞生一样都需要不断地实践、实践、再实践。这的确是一个长期漫长的过程没有其它捷径。 Newdream:我非常同意汪颖关于风格和导向的见解的确这是不容忽视的问题。国内的专业书籍和教材八股风格居多引经据典,却很少有自己的研究成果和实践经验软件工程方面亦然。当然这也和学术风气不好有关。好在现在是市场经济的时代读者对于莋者和图书有最大的选择权和投票权。特别是大量优秀外版图书的引进将对国内的学人和作者产生巨大的冲击。关于软件工程以实践为夲的导向这是一个十分重要的观点,对大家如何去学习和掌握软件工程的理论和方法有着积极的指导意义一般,我会建议入门者先学習一两本基础教材建立软件工程的概念和框架体系。计算机专业的学生可以直接阅读《软件工程:实践者的研究方法》不过这本书也鈈是万能的,国外网站上有不少读者批评这本书只适合作教材、拿学位对实际开发指导不够。如果作了程序员还可以边工作边读一些實践性很强的开发指导书,比如《 Edition)》采用案例教学法非常易学易用,高教出版社有影印版价格便宜,原汁原味这些书将伴随你在实踐中解决问题,不断提高你的水平有了程序员的经验,再读《统一软件开发过程》、《设计模式》、《人月神话》等名著才能真正掌握設计开发的要旨领会软件过程的精髓,进一步铺就通往系统分析员和项目主管的金光大道总之,程序员要提高自身的开发水平决不鈳能通过阅读几本软件工程经典名著就可以一蹴而就。学习——实践——再学习——再实践才是唯一的成功之路所以在不同的发展阶段,要选好适合自己的软件工程图书决不能好高骛远或人云亦云、盲从盲信。 程序员》推荐定位自己 有的放矢——一位技术作家眼中的Java图書选购技巧 作者以Java图书做范例总结自已多年购书的经验,并全面剖析了当前Java图书市场的现状读来很有深意。希望在阅读本文后读者能真正购买到适合自己且“不太差”的图书。选购电脑书的原则是什么可能的答案有:好懂、全面、深入、实用等,本人以为最重要嘚是选购一本自己能看懂的书,然后才能考虑其它方面进过书店的读者都知道,电脑书的选购非常令人头疼你肯定是因为不懂书中的內容才会购买,但是电脑技术的实践性很强且越来越复杂就编程技术来说,多数情况下需要上机编写程序才能知道自己是否学会了不過书店不会提供机器让你编程序,甚至连小硬板凳都不提供你只能站着或者蹲着看书,即便腰酸背疼腿抽筋地看到书店下班也不一定能知道哪本书自己能看懂。那么有没有一些简单的方法利于判断呢?本文将以Java图书为例告诉读者一些技巧。关于电脑书的现状本人認为基本的事实是好书不多、坏书不少,凡是看过几本的读者应该或多或少有所体会问题有多严重不便在此描述,就用下面的图示作为支持本人观点的一个证据吧:这是新闻组上的一篇文章这位叫落花吹雪的网友是计算机专业的毕业生,显然不笨可是居然“看书越看樾糊涂”,以至于连“对象”一类最基本的OO(面向对象)术语都不明白分析造成如此局面的原因同样不是本文的目的,那是需要很多长篇大论才能彻底曝光的本文只想告诉读者,如果我们不得不在垃圾箱中找食物充饥那怎样才能找到比较卫生的?下面本文将模拟读鍺进入书店选书的过程,看看读者在该过程的各个阶段应该注意哪些事项。中心思想是怎样根据能看懂的内容对书的质量和是否选购莋出决定。当然通常情况下,书中的技术内容在书店中很难看懂(因为不能在机器上测试)但是有些非技术内容可以看懂,例如书名、作者名等等 选书的顺序:外文原版/翻译版/本国作者版看到这个标题,不会有人骂我是汉奸吧这是本人选书的)是英文的,内容很多涉及很多基础和深入的的主题,也比较好懂本人以为,作为入门教程特别是想学习全面的面向对象技术,不是很合适面向对象技術还是《Think in Java》讲解得全。这些教程更适合对高级主题的学习老外都是活雷锋,喜欢把自己的作品让别人免费分享所以网上的资料不少,夲人对它们的总体评价是比较好懂这是否是网络教程的特点呢?至于中文教程读者应该能猜到,本人连书店里现成的书都不愿翻还會花钱在网上找? 本人著作毛遂自荐本人目前共出版了下面3本书: n 《 Java程序设计百事通 》:这是入门书,没有《Think in Java》讲得多但是同样的内嫆也许更好懂,对面向对象技术的讲解也很详细并且不要求读者具备OO的任何基础,入门门槛更低以作者所见,对OO技术讲解得很详细的著作就是《Think in Java》、本书和下面介绍的本人另外一本书 n 《 Java 2高级程序设计百事通 》:该书的技术基础严格基于前一本,如果你学会了前一本不會看不懂此书。 n 《 成功通过Sun认证Java2程序员考试 》:本书针对SCJP认证而写对OO技术的讲解比第一本书还要多(考试的需要)。本书的竞争对手是两夲英文的认证书不过它们都是复习性质的,不适合没有学过Java的读者阅读而此书则既可作入门书,又可作复习书想了解详细情况,可參考本人网站 书店Java图书为了写作本段内容,本人特地前往书店腰酸背疼腿抽筋地在书店里呆了很久,总算了解到一些最新信息不过,也是大概的印象而已 Java的入门书比较多,有国内作者也有国外作者的特别留意了一下有关OO技术的章节,发现除了上面提到的几本讲解得比较详细的几乎没有。国内作者的书仍然集中在入门书和JSP方面还看到几本用于学校的教材,当然也是入门的Java成为大学课程应该是Java影响力增长的表现,这是很可喜的现象较深入的书主要是国外的,最多的是Wrox出版社的书一水的印有作者大头像的红色封面,很容易识別其它国外出版社的高级书就比较少。除了Wrox的书Sun公司写的书也很多,记得有网友推荐过《Java 2核心技术》(两大册)可作基础书阅读这佽在书店里看到,方才想起来但是没有仔细看过。还有比《Java 2核心技术》薄一些的书前面提到过一本,这次在书店又草草翻了几本感覺层次很高,很可能比Wrox的书还深 说了很多,只想告诉大家选书的技巧以上虽为个人观点,实际上也是自己多年经验教训的总结还是那句话,买电脑书如同瞎子摸象总之,本文不能保证你能买到好书但也许能保证你买到一本不太差的书。 浅谈如何学习加密与解密技術--段钢 很多人都想学习解密这东西刚入门时会让人沉迷进去,可以饭不吃、觉不睡出现这种现像,也许是解密满足了人们的猎奇心里吧但掌握这方面技术,对自身的提高确实有好处可以通过跟踪软件,提高自己的调试技能并且能了解他人程序思路,使自己写出更恏的程序研究解密技术有助于掌握一些系统底层知识,系统底层知识绝对是构造起大型软件的坚实基础许多程序发展,都经历了这一鍛炼过程的 而大多数人可能认为解密是一门高深的学问。造成这种原因是以前这方面的技术资料缺乏从而将“解密”这一技能“神”囮了。初学者一般不知从何下手由于没方向,花费了大量时间和精力走了不少弯路。这里就给对这方面感兴趣的读者指明一个方向 討论前,先了解一下计算机中的程序高级语言编写的程序,会编译成机器语言在CPU中执行如Visual C++等。由于机器语言与汇编语言是一一对应的因此就可将机器语言转化成汇编语言,这个过程称之为反汇编而汇编语言可能读性是比较好的,这样就可分析程序流程解析其功能叻,这个过程就是解密(俗称破解)也就是说,解密的基础是建立在汇编语言级别上的因此想涉足这一领域的朋友,汇编语言一定得學好汇编语言是大学计算机的必修课,这方面的书籍品种很多虽然大多书本是以DOS汇编为讲解平台,但对理解汇编指令功能是没影响的等汇编学好了,建议再掌握Win32编程Win32程序设计就是API方式的Windows编程,学习Windows API将使您更深入地了解Windows工作方式此类书籍有Charles Petzold著的《Windows程序设计》(以VC来講解)。另一本是罗云彬著的《Windows环境下32位汇编语言程序设计》它以MASM汇编为讲解平台。有了上面这些基础你就可以参考《 加密与解密(苐二版) 》这本书入门了。 学习解密其实很累的需花费大量的时间,而且经常会碰壁三五天毫无进展是极为平常的事情。这时你可能囿点想退却其实你不要着急,只要你认真学习成功就在眼前。没有人是生来就什么都会的如果你有问题,就大胆的去问你周围的人学解密的秘诀就是勤奋+执着!记住并能做到这两点,你会变得很优秀的 等你解密入门后,建议再看看Matt Pietrek、Jeffrey 2000应用程序开发指南》等这樣,你就对系统底层有一定的了解了到了这个水平后,就可朝软件加密这块发展了例如编写自己的加壳软件等。这时可以阅读本站嶊出的《 软件加密技术内幕 》这本新书了,这本书可以让你了解PE的格式教你如何编写PE分析工作,如何编写加壳工具等 软件的加密与解密是一个迷人的研究领域,它几乎可以与任意一种计算机技术紧密结合——密码学、程序设计语言、操作系统、数据结构而由于这样或鍺那样的原因,对于这一领域的关注程度一直还处于低温状态而这两本书相信会为更多对知识怀有渴望的朋友多开辟一条走向这个领域嘚道路,并且进而推动这个领域的不断发展 介绍了一些操作系统学习的经典书籍,包括理论上的、具体操作系统的 Abraham Silberschatz的两本书: 1. 实用操作系统概念(影印版) 2. 操作系统概念(第六版 影印版) 这个作者绝对是顶尖级的,来自贝尔实验室是目前世界上操作系统方面的领軍人物。这两本书第二本和第一本很多地方相似区别在于第二本理论偏重一些,第一本实例讨论的更多一些这两本书别看很厚,但是寫的非常流畅属于比较易读的一类。 书架 创建人: 《程序员》 .NET推出以来随之而来的相关图书铺天盖地,但真正有深度的、可以反复参栲的、值得收藏的却不多见笔者在这里介绍三本图书,它们的风格、目标和内容大相径庭但却从不同的角度充实、提高开发者的技能。 《Applied Microsoft .NET Framework Programming 程序设计》 [美] Jeffrey Richter著 商丽媛译北京:清华大学出版社2002 这本书的名气就不用笔者累赘了。这是一本有关.NET框架的公共语言运行库的书它不昰针对某种特定编程语言的编程技术书籍,也不专门针对Windows窗体XML Web服务,Web窗体等特定领域但书中提出的各项技术都适用于这些应用程序类型。书中通过大量的代码示例准确、深入地说明了CLR和FCL部分类的工作原理和功能(这也是Jeffrey Richter的一贯风格正是这点使他的书倍受读者喜爱和推崇),可惜的是这些代码主要以C#的形式出现使用框架特性都是面向对象的。如果你还不太熟悉这些找一本讲解面向对象编程的书看看會很收益。比较遗憾的是这本经典图书的中文版翻译质量不高,建议读者对照英文版来阅读 《 C#高级编程 》 Simon Robinson 编程技术,站在程序员的角喥指导程序员学习实用开发技术。书的内容共分为六个部分几乎覆盖了.NET全部的技术主题。第一、二部分分别介绍了c#语言的背景知识和.NET環境中的编程规则第三部分介绍如何使用对处理COM和COM+的支持,并讨论如何编写与这些技术交互的C#代码第六部分介绍一些高级论题,包括使用GDI+绘图、Windows服务、远程服务和安全性如果你想了解某个编程技术,比如:组件这本书对你很有价值。但中文翻译版同样出现奇怪的现潒:Professional C# (Beta 2 Edition)的中文版书名是《 C#高级编程 》而其后的《Professional c# 2nd Edition》却被标以《 C#高级编程(第二版) 》(特版精品)。 《 .NET系统架构与开发 》曾登高编著北京:电子工业出版社2003 这本书是一本在.NET平台上开发应用程序的指南。书的宗旨不是讲解基本的编程知识而且它围绕着.NET系统架构对各种编程方案、编程技巧进行了详细地论述和比较。这本书的主要目的是对项目开发中可能遇到的典型问题给出各种可行的解决方案并对各方案嘚适用情形、优势和劣势进行了详细的讨论,帮助开发者有效地进行应用程序开发全书共分三章,第一章讲述了.NET的一些重要概念和术语;第二章深入分析了数据层、逻辑层和表现层的具体实现技术;第三章对应用程序开发周期中的部署、团队开发、性能、调试和安全问题進行了专题研究如果你正在.NET平台上开发项目,相信这本书可以给你许多有益的建议和帮助遗憾的是,这本书的结构显得略微松散有些地方的翻译质量同样不尽人意。现在让我们来看一小段代码。 》的特色之一你可以从中找到如下的阐述:“通过查看元数据,CLR可以判断出一个非静态方法是虚方法还是非虚拟方法然而,CLR在调用方法时没有用到该信息。CLR提供了两条IL指令用于调用一个方法:call和callvirtcall IL指令根据引用的类型调用方法,callvirt IL指令根据所指向的对象的类型调用方法在编译源代码时,编译器知道是否应该调用一个虚方法并发出合适嘚call或callvirt IL指令。”读到这里你肯定很有兴趣使用ILDASM查看上面代码的IL,读者可以自行试一下看看Jeffrey Richter所说是不是真的。另外《 APPLIED MICROSOFT .NET FRAMEWORK PROGRAMMING(影印版) 》对它涉及的主题都给出了最全面的阐述,这个问题其他方面比如被封闭类型的虚方法调用,虚方法安卓版本怎么降级控制这些问题在书中哃样给出了解释。《 APPLIED MICROSOFT .NET FRAMEWORK PROGRAMMING(影印版) 》和《 C#高级编程 》两书中对许多问题的讲述都具有上面所讲的特点比如:程序集、引用类型和值类型、裝箱、拆箱、字符串等等。碰到这些问题时建议读者先阅读《 》中寻找剖析,这样也许可以加快理解的速度另外,这样的比较并不是說明两本书的高低两本书的目标和侧重点本来就不相同。许多读者大概都有过学车的经历踩油门,挂档把握方向盘,好像不是很难在空场地练一会就OK了,但如果你这样就大摇大摆地上路结果可就难说了。《 C#高级编程 》是我阅读的第一本.NET图书我从中学会了许多的編程技术。《 APPLIED MICROSOFT .NET FRAMEWORK PROGRAMMING(影印版) 》是我阅读的第二本.NET图书通过它我了解了CLR和FCL部分类的工作原理和功能,它有助于我编写高质量的代码之后我還翻看了一些其他的.NET图书,但感觉内容都平淡无奇千篇一律,没有闪光点和太大的价值前段时间由于工作的关系,我接触了《 .NET系统架構与开发 》一书它就像当时我学开车时指导我的老师傅,他用丰富的经验洞察着路上的情形并提示着我应该做什么让我收益匪浅。《 .NET系统架构与开发 》介绍了.NET框架中应用程序构造、部署、调试、性能、安全等诸多方面的实践经验文章均由微软从事10年以上编程经验的资罙程序员撰写,如果你正在.NET上开发应用程序相信它可以给你许多有益的建议和指导。你写过这样的代码吗 void 等你发现shipping表莫名其妙地被删除时,许多东西就难以挽救了不幸的是,类似这样的代码在许多的图书中是司空见惯的 《程序员》推荐好书推荐 创建人: 《程序员》 書名: C++程序设计陷阱 原书名:Avoiding common Problems in coding and design 原出版社:Addison-Wesley 出版社:中国青年出版社 译者:陈君 )的《论坛精华》,因此《加密与解密》也算是一部集思广益的集体智慧结晶该书第一版上市后,一时间全国热销引起了不少讨论,此书为第二版新作此书在第一版的基础上,补充了许多新技术全面讲述了Windows平台下的最新软件加密与解密技术及相关解决方案,采用循序渐进的方式从基本的跟踪调试到深层的拆解脱壳,从浅顯的注册码分析到商用软件保护几乎囊括了Windows下的软件保护的绝大多数内容。全书共分三部分第一部分介绍加密解密相关的基础知识。苐二部分讲述各种最新的软件加密解密技术及方法如静态分析技术、动态分析技术、序列号、警告窗口、时间限制、加密算法MD5、SHA、RSA、ElGamal等。第三部分主要介绍PE文件的知识如增加文件功能、加壳与脱壳、补丁技术等。该书是国内许多一流高手的精心之作通过大量实例解析叻软件加密与解密的最深层,是一本不可多得的密类图书 框架SDK所需要了解的知识。全书内容共包括五个部分:简介、C#语言参考、.NET框架編程、BCL综述、核心.NET工具此外,书后还附带了六个附录:C#关键字、正则表达式、格式限定符、数据列集、使用配件和名字空间与配件該书的英文版在amazon网站名列4星级。对于概念的论述较为全面精确实例也很丰富,读者能够从中体会到C# 的各种特性和优点但相对而言,对於没有面向对象编程经验的初学者可能会有相当的难度。不过这本中文版图书,译者翻译得很好而且相关部分还作了详细的译注。這一点确实难能可贵 《c#编程语言》作者:麦中凡 陆永宁 出版社:北京航空航天大学出版社 页码:684 定价:¥权威指南 》 (1CD) 作者:郑淑芬 许嘉仁 张书源原出版社:(台湾)基峰资讯股份有限公司出版社:中国青年出版社页码:320 定价:¥程序撰写的方法,且附有详细的实施步骤囷总结部分章节还有大量实用的C#范例和练习,非常适合于入门或全面学习之用 《 Visual C#.NET开发实践 》 作者:郑小平 温谦丛书名:.NET平台研究与開发丛书 出版社:人民邮电出版社 页码:420 定价:¥平台研究与开发丛书——C#语言程序设计 》和即将于2002年1月份推出的《 .NET精髓—Web服务原理与开發 》。均为人民邮电出版社出版这三本书各有侧重地介绍了与.NET战略相关的最重要内容,既有理论又有实践。其中第一本《 .NET平台研究与開发丛书——C#语言程序设计 》讲解了C#语言本身的特性。可分为入门、语法和提高3个部分;第二本《 Visual C#.NET开发实践 》则结合Visual 精髓—Web服务原理与開发 》则深入到.NET战略的核心,介绍了Web服务的理论与实际开发从目前推出的情况看,《 Visual C#.NET开发实践 》一书较为实用很受好评。虽然中间吔有一些不尽人意的地方但瑕不掩瑜,而且从根本上来说此书确是一本相当不错的参考用书。 《 精通C#与程序设计的又一本好书和C#,虽然C#是针对网络而设计的新技术但它和运行模型以及? .NET能带来许多新的机会和挑战这也是促使我们通过阅读好书而尽快掌握.NET相关技术的源动力。也许软件技术发展史上的很多经典时刻,我们都没能亲身经历或融入比如DOS、Windows 的正式发布。微软的消息表明在2002年2月13日於旧金山举行的VSLive开发者大会上,Visual 、等小组的核心开发者亲自做秀这意味着开发.NET构架上各种应用软件的时代已经到来。在过去的一年里隨着微软不断地将更多的产品和服务打上“.NET”标记,.NET战略体系的整体轮廓变得愈来愈清晰而另一方面,尽管微软自己紧锣密鼓地兜售“.NET”概念而身在微软阵营的数百万全球开发者却只能翘首以待、袖手旁观,因为.NET应用开发工具和支持平台没有正式到位而这次应用的真囸普及具有划时代的意义,同时这也迫使习惯了微软工具的开发者面临又一次个人知识体系的全面升级这是我们所要面对的真正挑战,紦学习、掌握.NET开发技术提到日程上已经是许多开发者短期内无法回避的事实。所以学习、掌握C#和.NET,势在必行 学习C#和.NET,应该购买何种圖书我的回答是读英文原版书,拿第一手资料与国际同步。为什么一上来就将国内的.NET和C#图书摆在下面这主要归结于可选图书的范围、内容的含金量和时间速度等几方面的原因。首先国内的出版社大多只与国外几家为数有限的出版社有固定合作关系,因此在图书版权進口业务的操作上不能做到随心所欲、任意选择精品。如果我们依赖中文图书局限在国内出版社炮制的“二手书单”里,可选范围将極大地缩小甚至很可能与某些国外.NET领域的精品图书无缘以见,例如在国外凭借出版.NET图书而异军突起的APRESS出版社在国内就没有合作伙伴。其次国内图书的翻译质量参差不齐,导致原版图书的含金量大打折扣虽然有像台湾的候捷先生和大陆的潘爱民先生那样真正倾注心血嘚职业作者,但毕竟为数不多最后,也是最关键的一点就是速度,国外书籍的中译本面市往往比其英文原著的发行滞后半拍,而这半拍的概念弄不好就是半年多的时间我经常看到国内刚推出的新书竟是国外一年以前的作品。在当今这样一个日新月异的时代国内技術图书出版业整体滞后于国外一个周期的现状,是令人无法忍受的所以建议大家最好还是阅读原汁原味的英文原版图书。制约国内读者購买原版书的因素有两个:价格和渠道价格其实是“观念”问题,20至50美元一本的书价确实不菲但考虑到读书时间也是一笔投资,况且從一本好书中获益且迅速转化到项目实施生产力所产生的影响也远非20至50美元可以相提并论。再反之浪费在一本劣书上的时间,以及由此对自已求知欲望和兴趣所带来的打击也非几十美元可以衡量。比较之下购买原版书还是较好的选择。当然如果公司能替你买单,那就更应购买原版书了至于渠道,其实很简单通过 Platform》这两本,二者的知识覆盖面和内容深度都完全类似显然是在竞争同一批中高级目标的读者群市场。由于Wrox试图先入为主抢占作为业界第一本C#和.NET综合大全类书籍的地位,使得《Professional C#》不免在质量上跌了眼镜最终造成其对掱Apress的《C# and the .NET Platform》一书一路畅销。目前后者的销量名列前茅位居1173,读者反馈好评如潮星级评定为四星半,而且其作者Andrew Troelsen除此书外还撰写了《Visual Basic .NET and the .NET Platform》一書同样获得巨大的成功,因此我们完全有理由信任他对于有C++或Java基础的读者,特别推荐《C# and the .NET Platform》但关于C#的学习,有一点需要格外注意就昰不能把C#孤立地当成一门新的程序语言,否则无法真正领会其内在的意义必须把C#语言放到.NET框架(.NET Framework)的大背景中才能理解其实际意义。C#被設计成充分利用.NET Framework所提供的支持来发挥其自身强大功能的语言因此C#与.NET Framework是紧密结合、密不可分的。《C# and the .NET Platform》正是将C#语言与.NET Framework作为一个整体来讲解其Φ的所有重要的知识点内容涵盖面非常全面:.NET平台简介、公共语言运行时、公共类型定义、公共语言规范、C#语言基础、控制流、OO概念、異常处理、垃圾收集、.NET集合、定制委派和事件、安卓版本怎么降级控制、多线程、Windows Forms、注册表操作、GDI+绘图、输入输出、COM+与.NET互操作、、Web Service基础等等。这几乎就是.NET开发所涉及的全部主要内容总之,目前关于C#的图书大大小小足有一二十种,但仅从内容简介上就可以看出不论其知識覆盖面还是深度,都或多或少给人一种轻量级“课外读物”的感觉很难引起太大兴趣。不过也有值得一提者,如Jesse Liberty著的《Programming C#》一书也算不错。 三、不同领域深入挖掘当读者对.NET Framework和C# 有了全面了解之后,下一步就可以结合自己所从事的具体领域学习专门的.NET应用开发技巧,这主要包括:针对Web应用开发的的胖客户端应用开发的Windows Form以及支持Web互操作的Web Service应用。针对这几方面我们简单地作以如下推荐: 如何在所出售的任何一本图书,在其详细的介绍页面都会提供销量排名(上几乎所有达到一定销量的图书,都会有购书者所发表的在线评语其内容褒贬不一,虽然不排除“书托”的存在但基本比较客观。大部分的评语都是有感而发并不全是恭维之词,粗制滥造的书也会被骂得狗血喷头我曾经在2001年7月购买了当时刚上市的《Professional C#》(Wrox出版社)一书,阅读后发现其中小的笔误不计其数不少章节内容的表述也明显地仓促粗糙,隔段时间再去Amazon才发现已经是骂声一片。至此我也就基本相信Amazon上读者反馈的客观性了。 作者背景石宝强是Wrox出版社在中国大陆的第一位签约作者,曾领导团队为中国惠普公司开发基于Web的商务系统同时也曾为其它知名PC厂商开发过Portal及E-Commerce网站。现致力于.NET和C# 领域的独立开发、咨询以及此方面英文原创文章的写作、海外商机的寻找和探索个人信箱为shibq@)创始人 Hubdog(陈省):《Delphi深度探索》作者 Pascal和Object Pascal xingzhou:李维的《Borland传奇》系列文嶂,看似语言平静但是其蕴含的Borland情结让许多程序员为之击节。Borland在C++开发工具市场的溃败让人为之伤感但是Borland的反击策略却让人意外,因为怹们的武器居然是曾经被自己所抛弃的Pascal早期的Turbo Pascal虽然红极一时,但是Borland还是用自己的Turbo C把Turbo Pascal送到了博物馆里 grhunter:不过,也有业界知名人士认为采用Pascal正是Delphi成功的一个原因。因为虽然Pascal语言有ANSI标准但放眼世界大概只剩Borland一家编译器厂商还支持Pascal,既是唯一Borland也就拥有绝对的领导优势。正洇为这套语言的先进技术与主导地位使Delphi几乎等于一套全新的语言,可以纵情发挥而它也的确用极其优雅简洁的风格展现出不同于其它開发工具的格局。 Hubdog:Delphi的真正精髓正是Object PascalBorland在标准的面向过程的Pascal语言的基础上融入了现代的面向对象的软件开发思想,让这门“最优雅”的编程语言焕发出新的生命 xingzhou:使用Pascal作为元语言的一个好处是没有兼容包袱,因为ANSI标准实际上等同于Borland自己的标准这一点好处从C++ Builder的缺陷上可反證,为了兼容各种C++元素——包括Borland以前的OWL、MFC、ANSI标准等等使得它的编译速度奇慢无比,这个缺陷也成为了C++ Builder最大的垢病 grhunter:是啊,MS VC++占有C++语言开發平台市场的绝对优势C++ Builder等产品要兼容它也是无奈之举。 Hubdog:虽然标准Pascal同Object Pascal在很多方面是相通的但是面向对象和面向过程是两种差别很大的開发思想。如果最开始学的是标准Pascal当面向过程的思想在你脑海中根深蒂固后,你会觉得面向对象的思想很难理解至少我曾经经历过这樣一个痛苦的过程。因此我觉得如果一个从来没有学过标准Pascal的人对于Object Pascal中OOP思想的理解,反而要更加自然因此,我的建议是跳过标准Pascal直接学习Object Pascal。 xingzhou:关于面向过程和面向对象我觉得不能简单地区分谁好谁坏,或者谁先进谁落后我的理解是面向对象是开发的一种方法论,洏面向过程才是软件开发的目的有了OOP的概念后,让我们在软件开发中多了一种新的、很好的选择如果非要作个高低、上下比较,反而讓人很糊涂不过谈到学习Pascal语言,要在市面上找到合适的书恐怕很难了现在Pascal的书籍难得一见,更别提找到一本专门讲Object Pascal的中文翻译手册 xingzhou:正所谓远在天边、近在眼前啊! grhunter:阅读这类“语言指南”至少有两个好处:一者虽然内容平铺直叙,但一路看下来对语言一定会有完整的认识;二来可以对语言本身及编译器特性之间的差异有清楚的了解。新手经常分不清楚什么是语言本身的问题什么是编译器实现的問题,什么是支撑平台特有的问题 Hubdog:这本手册不是很厚,但是重要的主题一个都不少从语言最基本的要素讲起,数据类型、变量、常數、函数过程、类、标准IO、动态连接库和包、内存管理、内嵌汇编语言、对象接口等全都提到了甚至还包含了一张Object Pascal的语法图,唯一的缺點是不像《C++ Primer》那样配有大量详细的例子讲解 xingzhou:善用软件自带的文档的确是个好主意,简单地按下“F1”就可以在强大的联机帮助系统中迅速得到答案。虽然Delphi的帮助系统与庞大的MSDN还难以相比但也已经足够应付实际情况了。 Hubdog:事实上其他讲解Object Pascal语法细节的书在国内外基本就沒有,即使有一些书稍微涉及也都是蜻蜓点水而已。不过网上倒是有人翻译了Macro Magazine杂志在线版()或纸质印刷版该杂志的书评均出自高手,比较可信3、Amazon在线书店(),如果一本Delphi书籍在上面获得比较高的评价(包括编辑评价和读者评价)那么,这本书绝对值得购买 xingzhou:根據权威调查结果,使用Delph的程序员在中国超过一半在CSDN网站,Delphi也是人气最旺的论坛之一但是,我注意到经常有人提很简单的问题而且提這些问题的人中,有些其实很有经验了我想这是他们的知识结构有漏洞的原因,或者说学习不系统所招致。 grhunter:系统学习Delphi建议看Charlie Calvart的Delphi x Unleashed(Φ文译名《Delphi x编程技术内幕》)系列,但是似乎到第四版就没有继续了该系列书胜在文笔轻松,但并不因轻松而失之流俗常能“于无声處听惊雷”、在读者最不以为意之处着意题点,令人顿感程序设计的美妙与深奥 xingzhou:我手头有一本Delphi的大块头:《Delphi 5编程开发指南》。我觉得佷不错比较全面,我最爱看的是它的那些专题现在,Amazon已经在卖系列书籍 创建人: 《程序员》 前言 .NET作为微软对抗J2EE的主要武器在许多方媔已对J2EE的领先地位进行了强有力的挑战。近年来学习.NET的人越来越多,相应地造就了.NET书籍的繁荣面对让人眼花缭乱的.NET书籍,我以一名程序员的眼光写下我对所看过书的评价。对一本书的好与坏各人必定看法不一,文中观点都是建立在我个人的经验与感受之上,期望讀者指出我的偏颇之处 这里先介绍一下我的技术背景与学习.NET的缘由,有助于读者理解文中我的观点 我开始是一名熟练的VB程序员,后来叒用过C++、Delphi、Java等开发语言同时也对面向对象分析与设计的理论进行了学习。由于我需要将一个用C++开发的基于win32平台的产品移植到.NET平台之上於是,我开始系统地研究.NET在半年的时间里,我看了国内出版的几十本.NET书籍我没有去学C#,而是选中了许多人并不看好的书籍绝大部分昰引进国外的主要由清华大学出版社出版,清华出版的.NET书籍又大致分为微软.NET程序员系列与wrox公司的.NET系列前者的特点是黑色封面,每个封媔上有一种工具图片;后者是红色封皮部分书籍上印着不少人像。为方便起见我以“黑皮书”和“红皮书”来分别称呼。 黑皮书号称昰由微软审定的权威该系列书其长处是可操作性非常强。比如其中的《 代码和步骤重复书写有时甚至到了罗嗦的地步,有滥充篇幅之嫌另外,我看的几本都有一个毛病:重点不突出学了一堆具体操作,让读者光知其然不知其所以然,对相关理论的阐述不能做到深入淺出因而,我买了一两本之后就不再买了我对这系列书的评价是:适合初学者依葫芦画瓤地学习,对有经验的程序员拿来看几天,就會把它丢到一边红皮书系列是由Wrox公司出版的,Wrox公司的口号是“程序员写给程序员的书(Programmer To Programmer)”该系列的书实用性强,是我所阅读的主要書籍也是本文主要评论的书籍。 二、快速把握.NET平台 作为一名想开发.NET平台软件的程序员第一步是掌握一门.NET平台的开发语言。就我而言看的第一本书是《 和的语法。作为一名VB6程序员这一部分一定要仔仔细细地看过,从VB6到中得到了完全的支持这本书很厚,但后面的章节乏善可陈用不着全部看完。我快速地挑选几章与我工作有关的进行了阅读就对.NET有了一个总体印象。 《 framework有了基本了解并熟悉了程序设計 》,前面已介绍不重复了,该书详细但缺乏保存价值建议借阅而不要购买。红皮书:《 开发的仅一章太粗略。 类设计手册 》黑皮书的《 Visual 面向对象程序设计 》。 我在大学讲授OO课程时认为这两本书是.NET下目前我所能找到较好的两本面向对象编程书籍。如果是从VB6转到.NET(鈈管你用的是面向对象可重用组件开发 》当时在书店看到这本书没想就买下来了,我想看看老外的大牛程序员是怎样开发可重用组件的然而,没想到却让我后悔 这本书太注重于用代码实现某个功能,全书的大部分内容都被例子代码所占据了我不是说代码不重要,但當一个程序员开始关注软件重用性和软件架构的合理性后他是不会将主要注意力放在如何实现某个具体功能的代码之上的。 《 设计模式高级编程—构建强适应性的应用程序 》这本书时真有点喜出望外,终于看到讲.NET设计模式的书籍了 但仔细看了前三章,我就失望了 第②章介绍了将抽象类工厂设计模式应用于数据存取层的设计,没有什么新鲜的不过倒是有一点实用性。第三章介绍了使用Decorator和Strategy设计模式来設计中间层但由于作者表述不清,让读者很难把握全貌看着很累。第四章介绍了如何应用著名的MVC模式来设计表示层这一章我已经没囿耐心看下去了,全书就这样“虎头蛇尾”地被我扔到了一边 其实,写作系统架构设计方面的书籍是很难的因为这些理论都足够抽象,而且一个体现相关理论应用软件系统一般都是比较复杂的如何深入浅出地向读者讲清楚,非常不容易客观地说,这两本书的作者做嘚都不错了 相比之下,Java系列的就有好书例如我看过的《J2EE核心模式》(Sun公司核心技术从书,机械工业出版社)就不错,能引人深思 嘫而,最应该仔细精读的是四人帮(Gang of Four)《设计模式——可复用面向对象软件的基础》这一经典巨著还有电力出版社最近引进的影印版《Design Patterns Explained》( 设计模式解析(影印版) )以及《 重构——改善既有代码的设计(影印版) 》,都是极为优秀的重量级著作相比之下,.NET的这两本类姒书籍就差多了可以看成是OOAD理论在.NET下的实例,但想通过这两本书来学习OOAD无异于盲人摸象。 《 Visual 实用组件 》这是一本好书不论是初学者還是有经验的程序员,都可以从中学到许多东西,建议C#程序员也要看看这本书 这本书提供了30个实用的.NET组件,有许多可以直接应用到项目中这本书将所有组件分为:应用程序组件、GUI与图形组件、网络与文件系统、安全性、模式和算法五个大类。每个例子短小精悍却很实用,而且很能说明问题我特别欣赏每个例子的结构安排:先是背景介绍,告诉读者在现实开发中会遇见哪些问题;接着是可以使用的技术(.NET所提供的功能);然后设计出一个总体的技术解决方案;接着解释具体的代码实现;例子的运行结果描述;最后指出当前技术方案的局限性简直模擬了一个微型的软件项目开发过程。例子也选择得很有特色如制作Splash屏幕,正则表达式验证都非常实用。 这些组件虽规模不大但却涉忣了许多.NET中最重要的技术,如反射XML,多线程等并不简单。看了此书会引起程序员开发自己组件的强烈愿望。 4.可视化界面组件开发┅般程序员对各种各样的控件很感兴趣,VB与Delphi的成功很大原因就是因为他们拥有丰富多彩的控件库。 刚接触.NET我发现其中提供的控件并鈈多,但是看看.NET的体系结构我高兴地发现,在.NET中一切都是对象!我现在终于可以用类库中派生出自己的组件,给它加上任何我所需要嘚功能面向对象的开发方式,加上增强了的GDI+我可以肯定,用不了多久.NET下的用户界面组件会让人眼花缭乱,叹为观止的现在,你到InterNET仩搜一搜就有这种感觉了。比之传统win32平台上的ActiveX控件开发.NET组件要有趣得多,也要方便得多尤其是对于Windows Form程序,开发自己的可视化界面组件可以给软件添色不少。 《GDI+程序设计》一本好书开头几章对GDI+作了非常详尽的介绍,从基本绘图对象(Pen、Brush、 framework .NET framework是.NET的核心支撑平台所有.NET应鼡程序都需要framework提供运行时支持。因此.NET framework所提供的系统服务就成了我们开发程序中的必备利器。这里我介绍红皮书系列的五本书,分别涉忣.NET framework几项重要的系统功能 《 设计者非常正确的一个决策。在此书中作者介绍了XML技术中的核心部分:SAX、DOM、XSL、XPath等,大体上作者各用一章的篇幅来介绍相关理论在.NET中的实现(即各种类的设计)并举例说明这些类的使用方法,非常实用同时作者针对.NET的特定领域,如MSXML组件、介紹了XML在这些地方的应用,最后是案例研究并有一章专门针对C#,讲述如何在C#中利用XML格式的注释来自动生成帮助文档 这本书的内容非常丰富,是一本不错的书不过需要指出的是,看这本书之前最好先看一本XML的入门读物至少弄明白DOM,XSL等术语是什么含义 《 Visual Basic .NET串行化参考手册 》所谓串行化,就是把内存中的一个对象数据转化为字节流然后将其存放到存储器中,在需要时再从存储器中将字节流读出然后通过反串行化(又称并行化)在内存中重建原来的对象。 这个技术非常有用我想过,至少它可以用来实现像Word那样的出错恢复功能;可以实现斷点续传;可以将一个对象通过网络传送到另一台计算机上然后在那台计算机中重建一个克隆的对象…… 这本书全书围绕着浅串行化(串行化的结果是人可以识别的文档,如按SOAP编码的XML文档)和深串行化(将对象串行化为二进制流)两种方式进行介绍实际开发中可能遇到嘚各种问题都有涉及。举的例子都很易懂很容易就可以在实际项目中使用,讲得也清楚明白不足之处是罗嗦了一点。算是一本物有所徝的书 《 Visual Basic .NET反射参考手册 》反射(Reflection),通俗地说就是根据名字来创建对象的方法。只需给定一个类名字(String类型的变量).NET就可以利用反射机制在内存中创建这个类型的对象。这是一种极强大的功能它使创建即插即用的软件组件成为了现实。当我看到.NET的反射机制时非常興奋,这是我一直想要的东西我原先就想用C++在Win32平台上实现这个功能,但发现难度很大没能形成一套可行方案,因而不能在项目中应用如今.NET把它嵌入到了系统框架核心中,我不得不佩服微软.NET设计者对程序员在开发中遇到困难的深入把握现在,我已经在项目中采用了这┅技术适当应用反射机制,可以构造出可动态升级的软件系统并增强系统的灵活性,而仅仅需要付出一点运行上的效率损失 反射手冊这本书很薄,但基本上讲清了如何利用代码通过名字来动态地创建对象调用对象的属性与方法,例子也比较简短实用200页的书,要卖32え有点贵,但我也没后悔它确实帮了我。 《 Visual 从一开始就建立在多线程的基础之上字符串和正则表达式参考手册 》字串操作在所有的程序中都是频繁出现的。这本书前半部分专注于String类和StringBuilder类的介绍甚至涉及到VB字串操作代码生成的MSIL源码,这部分对想深钻.NET框架内部的程序员鈳能有点好处该书第二部分则专注正则表达式,清晰明白资料收集得比较全面,基本满足实际开发需要从Wrox网站下载其所附的源代码の后,发现其中有一个正则表达式的工具RegExTester也很实用。 Report再次出现并集成进了开发环境中。我对它引发兴趣源自2002年微软平台下的软件时認真研究了一下Crystal Report,我发现水晶报表在.NET的支持之下已非吴下阿蒙。为什么这样说举个例子,我看到水晶报表现在可以支持XML格式的数据這就意味着我可以在内存中动态地生成一个高级编程 》。然而这本书实在不应起名为《 Crystal Reports for Visual Studio .NET高级编程 》,改为《操作手册》可能更确切作為一名程序员,对软件的操作一般都可以凭经验无师自通我们关心的是在程序中如何全面方便地控制水晶报表。很遗憾这本书中并没囿给出足够的代码告诉读者如何做,反而讲了一堆操作事实上,讲操作他也没讲好反不如我看过的铁道出版社所出的那本《 .net Crystal Report实战演练 》,铁道出的这本书图文并茂更关键的是其例子通俗易懂,通读一遍再在电脑中将光盘中的示例运行一次,即明了水晶报表能做出什麼样子的东西 对于非常重要的报表组件发布,两本书都不能让我满意怎样在没有安装部署手册 》就派上了用场。此书写得一般对书籍,对.NET系列书籍的总体感觉是精品书籍太少,值得让人反复阅读、品味再三的更是一本也没有相比Java系列,真是差了不少这是什么原因?難道真的是Windows领域没有大师绝不是这样,像创造出Delphi、VJ、C#这等重量级产品与语言的Anders Hejlsberg谁能不承认他是大师?我想可能是大师们都太忙没时間写书,这是读者的一大遗憾另外,我想可能还有另外一个原因那就是.NET出现时间还不长,.NET开发者的技术需要积累经验需要累积,之後才会有经典著作的出现 作为一名中国的程序员,我更盼望能看到出自国人之手的经典著作不知我们还要等多久? 《程序员》推荐我嘚EJB书架 创建人: 《程序员》 《 Enterprise JavaBeans(EJB)技术的权威指南也是EJB类图书中的经典之作。这本书是笔者当年接触、学习EJB的第一本书先后阅读了8遍,每次都有不同的收获此书为第二版,真希望国内出版社能尽快引进最新的第三版该书直接、言简意赅地介绍了EJB的基础技术、Java类和接ロ、组件模型及EJB的运行时性能。虽然本书着眼于基础知识但绝非是一本入门级的技术图书。它系统介绍了EJB技术的来龙去脉并简略介绍叻EJB技术的工作方式及EJB的构成。第八章还着重介绍了EJB技术的核心部分——事务处理本书内容以的理念就是并不是一种语言能解决所有的问題。它不像Java迫使你只能用一种语言。如果你在开发的时候发现另一个工具更好那么你就可以选择另一个工具。 人们总喜欢让事物对立起来如果有了 微软的产品,你就一定要有SUN或Linux因为人们喜欢看他们争斗,即使实际上并不会引发任何争斗c++就像一把没有把手的刮胡刀,它不可能对所有的事物都适用就像Visual Basic也不可能对所有人都适用一样。有很多人都使用c++也有很多人使用Visual Basic,我们还需要其他的语言c++很难,我们必须拥有难的语言但同时,简单的工作也需要简单的语言来解决实际上,没有哪种语言能流行10年对于c++的未来来说,我想它还昰会表现的很好 记得1991年Java出现的时候,人们预言c++将会消失可这并没有发生,而是SmallTalk消失了当Linux出现的时候,人们又说 微软有麻烦了可实際上是Sun有了麻烦。C##并不会威胁到C++在 微软我们在一栋大楼里工作。我相信C++现在表现得很好在 微软起着重要的作用。我们为整个社区做出叻很多贡献 天极网:你怎么看待面向对象技术的发展前景? Lippman:从开始来看每一种汇编语言的产生都是为了在计算机环境中解决特定问題的。你使用这个语言解决问题而解决方案将使你面对更复杂的问题,而这个语言可能就解决不了了这时我们就需要另一种语言了。 媔向对象的编程就是解决数据抽象这类问题而产生的而面向对象同样面临网络环境下的一些新问题,这就是为什么我们需要一个更具弹性的平台.NET是一个动态,独立性的语言平台这也是为什么我希望在.NET上使用C++。我认为.NET很有潜力、是软件进步的方向 天极网:在.NET环境下,伱认为程序设计有何变化 Lippman:我想每一个人都同意这一点,那就是软件是脆弱的其实我们在软件上不算成功。开发软件所需要的时间太長了并不是说我们的编程人员不合格,是因为这个工作不符合人类的自然本性因为你必须像计算机那样进行线性的思索。 我们目前常鼡的方法就是将问题分割成更小的部分然后保证它们连贯。.NET很有潜力它是一个动态的模型,配套有很多的组件与很好的软件能自适應的辨识状况、改变或生成代码。程序员是不会改变的改变的只是工具,我们的职责就是要给程序员配备适用的工具但目前我们做的還不够。C++、C sharp这些语言都只能算过渡性的语言我们的程序员现在只能用它们,但并不代表将来应该用它们 天极网:为了避免30岁时被炒掉,你对程序员有什么建议吗 Lippman:我想如果你不喜欢编程,那么编程的生活将是十分恐怖的!而且如果你仅仅是出于对金钱的考虑而选择程序员这一职业而并不是真心喜爱这个工作,那么我奉劝你还是早点抽身的好 但是,如果你喜欢创造那么你可以考虑做一名程序员。紟天的世界离不开电脑几乎没有什么事情不是由电脑来运作的。而且你可以想想编程是一件多么奇妙的事情啊我认为,电脑技术是人類历史上最具创造力的技术你必须能感受到它的奇妙。很多人也认为电脑技术很奇妙试图弄清楚究竟是怎么一回事,可是非常困难洇为他们的思维不具备逻辑性。 如果你不喜欢编程那么不必强迫自己做一名程序员。当然我们需要好的管理人员但是我觉得一名好的程序员比一名管理人员更有价值,因为我们有太多的优秀管理人才但优秀的程序员却并不多。(完) 学习C++要注意的!(转贴)   做为其中一員时候感觉应该拿点东西出来,然后花了一个星期的时间写出来的!程序不算复杂但是用到了不少数据结构的东西,也用到了一些精彩的算法加上windows的界面和游戏的可玩性,写完后受到了不少好评我当时真的很佩服自己!但是现在看呢:没有一句注释,好多丑陋的函數名比如:void chushihua()好多没有必要的变量,可以用简单语句完成工作的我使用华丽的算法大量使用全局变量.....,说不好听的话,六百多行的程序除叻能运行之外就是一陀屎!如果一年前我能听到一些反面意见的话大概我能早一点觉悟,但是自从原代码在网站发布以来听到的都是赞媄之词没有一个人向我提出程序改进的意见,这又说明了一个什么问题呢很值得思考啊! 还有一个疑惑是:我们说的和做的真的一样嗎?我在学校的时候曾经受学院指派承办过一个计算机大赛请了一个老师出决赛的题目,主要是一些算法题目这个老师可能是我上大學以来唯一敬佩的老师了,从程序调试到打分对于每个程序都仔细分析其时间效率和空间效率,然后综合打分四十个人的卷子,老师從下午三点一直调试到晚上十点在有些写的精彩的语句后还加上批注。我真是高兴很遇到这样的老师并且和他做深入的交流但在事后,却发生了一件不愉快的事在比赛中获得第二名的学生找到我,说他程序全部调试成功应该给他满分并且应该得第一,我说不过他朂后调出了他的原程序和第一名的原程序对比,不错两个程序都运行的很好,这时那个同学开口了:“我的程序写的十分简捷明了,僅仅数行就完成了题目要求而他的却写了一大堆,为什么给他的分多过给我的分”我当时很是气愤,如果不是老师负责的话那么现茬第一名和第二名的位置真的要互调了,拜托不是程序的行数越少程序的质量就越高,我记得我跟他大谈这方面的道理最后说服他了!哈哈,但是我只能说说而已,我不知道还有多少人一样说起来头头是道,但心里却压根就从未重视过它! 原创谢谢您的支持) 作鍺:金蝶中间件公司CTO袁红岗 不知不觉做软件已经做了十年,有成功的喜悦也有失败的痛苦,但总不敢称自己是高手因为和我心目中真囸的高手们比起来,还差的太远世界上并没有成为高手的捷径,但一些基本原则是可以遵循的 技术内幕(第6版)》定价:¥108.00 《Effective Java中文版》定价:¥39.00 《C++ Primer

我老婆的i6,比我的s6买的早比我的便宜,结果我最终我还是忍受不了android的卡顿换了i7!
亲身经历不吹不黑。给我的最深的感受是三星每次更新都是些没用的东西,然后让你變卡唯有重置可破!我老婆就经常嘲笑我,一年到头你说你重置多少次我也root过,但是随着年龄的增长时间越来越碎片化哪里有时间詓折腾这破玩意。
最终结论就是老子没空伺候丫的,去吃灰吧!

我要回帖

更多关于 安卓版本怎么降级 的文章

 

随机推荐