fan's profile好词好句PhotosBlogLists Tools Help

Blog


    February 28

    C++ STL(标准模板库) 学习资源列表

    作者: winter

    STL以其独特的魅力得到越来越多的程序员钟爱,STL彻底封装复杂的数据结构,提供丰富灵活的程序接口,同时还能保证程序的运行效率。上次整理的STL技术文章列表得到许多朋友的捧场,这里整理更全面的STL学习资源列表,希望对朋友们有所帮助。

    STL网站类

    SGI STL  ★★★★★

    SGI STL是目前应用最为广泛的STL版本了。此网站提供SGI STL源码下载,还提供相应的STL编程帮助文档,以及部分设计文档。不过对于STL刚开始学习的朋友来说,可以放在第二步学习。

    STLport ★★★★★

    STLport STL完全可以与SGI STL媲美。此网站提供STLport STL源码下载,在线帮助,同时也提供一些STL资源列表,都是英文的,不过看看无妨。在C++ Builder中使用的就是STLport

    Dinkumware VC/VC.net STL.net官方网站 ★★★★

    也是常说的P.J. STL官方网站。如果使用MS的C++开发工具,这个网站是不能少的,从VC6到VC7,STL方面已经得到了质的飞跃,在随后的5年之内,MS都会使用Dinkumware 的STL版本。

    Rouge Wave STL ★★★

    Windows平台下的C++ Builder STL以前的版本,具有一定的声誉,但相比前几个版本来说,略落后一些,主要是在性能方面。目前在其首页已经找不到STL的资料了,只能从支持文档中得到部分资料。

    Center of STL Study (最优秀的STL学习网站) ★★★★★

    以Blog的形式,提供STL学习资料,收集了大量的STL电子书,技术论文,应用实例等,而且在不断更新。对于初学者和深入研究STL的朋友,都是一个很不错的网站。

    STL书籍类

    (此处所列的STL书籍,均提供电子版下载):

    The C++ Standard Library : A Tutorial and Reference ★★★★★

    这本是最为经典的一本STL教材,可以作为自学教程,也可作为参考手册。目前已经有中文版,书名为《C++ 标准程序库》候捷和孟岩翻译,华中科技大学出版社。翻译得很不错,只是价格偏高,一百多,如果英文不错还是看英文版吧:)。

    Effective STL(英文版) ★★★

    Effective STL是一本非常好的书,帮助你更好的理解STL,其作者就是《Effective C++》一书的作者。如果你已经初步了解了STL的容器、迭代器、算法和函数,而又想更好的了解STL,那么《Effective STL》是你的最佳选择。

    Effective STL(中文版) ★★★★★

    Effective STL中文版是由龚敏敏翻译,很不错,强烈推荐。如果你想看看其他人翻译得,也可以查看Effective STL 中文版(大全)。各有特色。

    STL编程指南(Programmer's Guide) ★★★★★

    《STL编程指南》本电子书把SGI STL的相关帮助文档集合在一起,形成chm格式文档,查阅起来非常方便。使用STL编程的必备手册,比拟于VC的MSDN,Linux/Unix平台下的man命令。

    STL源码剖析(候捷) ★★★★

    如果希望全面理解STL内部机制,如果希望真正精通掌握STL,如果希望从STL中学习更多的编程技巧,那么你一定要看这本书。可惜的这里只有上册电子版下载,找不到下册。

    STL 中文站 ★★★★★

    STL 中文站是目前最专业介绍STL的中文网站,网站收集了STL技术文章,提供STL电子书下载。并且有大量的原创文章,值得收藏。

    其它 C++ STL电子书下载 ★★★★

    那里还包括各种版本的STL电子书下载,而且还在陆续更新,值得推荐。

    技术文章类

    STL技术文章不完全列表(STL学习使用指南) ★★★★★

    为Winter所作的,按不同类别进行整理,而且在更新中。

    CodeGuru上的STL技术文章。  ★★★

    CodeGuru就不用介绍了吧,其收录的文章也不错。都是英文。

    CodePreject网站上的STL文章。 ★★★★★

    又一个经典网站,看看就知道了,目前许多中文的技术文章其英文版,在上面都有。

     

    STL技术文章不完全列表(STL学习使用指南)

    作者: winter

    在网络上,关于STL使用的有许多优秀的文档,本文收集了一些经典的中文和英文文章,包含STL中的标准容器 vector list set map deque hash_map multiset multimap hash_set string Allocate stream及算法等各个方面,并会做简短的内容介绍和评价,并增加相应的链接。以后会随时更新补充新的内容,如果有朋友发现更好的文章,请回复留言,我也会加入列表中--Winter

    入门教程:

    标准模板库(STL)介绍 ★★★★★

    本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂。不失为STL的入门文章,新手不容错过

    STL实践指南 ★★★★★

    文章从STL基础知识讲起,逐步深入,涉及到了STL编写代码的方法、STL代码的编译和调试、命名空间、STL中的ANSI/ISO字符串、各种不同类型的容器、模板、游标、算法、分配器、容器的嵌套等方面的问题,作者在这篇文章中对读者提出了一些建议,并指出了使用STL时应该注意的问题。

    三十分钟掌握STL ★★★★

    有个叫karry的网友翻译的《using stl》,可以快速浏览,从0开始了解STL。值得一看。

    C++ STL简介 ★★

    文章从算法、容器、迭代器三方面简要介绍了STL,读者可以对STL有一简单映像。

    C++ STL轻松导学 ★★★

    本教程介绍有关学习C++ STL的预备知识和STL的相关背景知识,适合想对STL做大致了解的初学者。

    STL学习小结 ★★

    文中介绍STL基础知识,配有一个整体实例和图表说明,最后还做了简单的效率测试。

    容器:

    深入研究 STL Deque 容器 ★★★★★

    文章深入地研究了std::deque 容器。本文将讨论在一些情况下使用deque 比vector更好。读完这篇文章后读者应该能够理解在容量增长的过程中deque 与vector在内存分配和性能的不同表现。老外写文章确实比较严谨,值得一看。

    STL vector 容器介绍 ★★★★★

    这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。又是一篇经典。

    学习STL map, STL set之数据结构基础★★★

    本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分析了map, set的优势之处。对于希望深入学习STL和希望了解STL map等关联容器底层数据结构的朋友来说,有一定的参考价值

    C++ STL中用vector 改进内存的再分配★★★

    本文描述的是一种很常见的情况:当你在某个缓存中存储数据时,常常需要在运行时调整该缓存的大小,以便能容纳更多的数据。本文将讨论如何使用 STL 的 vector 进行内存的再分配。原理说的比较详细,对于初学者比较适用。

    应用:

    使用STL流(stream)来简化C++“线程安全”日志记录

    ★★★★

    流是一种强大的数据处理抽象机制,它允许你调用泛型的读/写函数,不必关心数据从什么地方来、到什么地方去。使用流,同样的代码可从控制台、文件、套接字等地方读取数据。STL通常不是线程安全的,本文提出了如何在线程安全的方式下使用流的方案。

    用标准模板库STL实现文件比较★★★

    本文讨论如何使用标准模板库(STL),类模板和函数模板,以及其它编程技术来解决实际问题。本文涉及到STL包含的集合和向量,函数模板,类模板,常量检验,出错处理和使用STL的文件I/O。

    用STL快速编写ini配置文件识别类★★★★

    ini文件是技术人员经常用到的一种系统配置方法,如何读取和快速识别ini文件中的内容实现起来比较繁琐。STL强大的功能在于能快速的实现排序、查找、 识别等功能。本文通过STL中的map,string,vector,ifstream等,来快速实现ini文件的识别类class IniFile。IniFile可以实现常见查找功能,并提供完整的源码。

     

    其他:

    Effective STL中文版 ★★★★★

    分为50个条款,每个条款一个主题,详细介绍了STL容器、算法、迭代器、Allocator、应用等,通过例子,通俗易懂。但是需要读者有一定的基础知识(至少知道vector是个容器吧),由不同作者翻译,Winter也翻译了几篇。共有50篇文章,每篇文章相互独立,你想看什么自己选吧。强烈推荐。

    彻底学习STL中的Allocator ★★★★

    Allocator是C++语言标准库中最神秘的部分之一。它们很少被显式使用,标准也没有明确出它们应该在什么时候被使用。文章详细地介绍了STL中Allocator的用法和特点。如果你有较多的STL知识,又想更深入的了解STL Alloc,这篇文章再好不过了。

    STL之父访谈录 ★★★★

    STL之父Alexander Stepanov接收记者的采访,文章对於STL发展历史的最完备介绍, 侯捷先生在他的STL有关文章里推荐大家阅读这篇文章。原文在SGI STL上有一个版本,在portSTL上有一个版本,Winter做了简单的整理,把两个版本的英文和中文版本都做了相应的链接。还可以参卡最近的访问:对话STL 之父Alex Stepanov

    STL的不同实现版本 ★★★

    简要介绍了STL的几个版本,包括 HP STLP.J. Plauger STLRouge Wave STLSTLportSGI STL虽然文章比较短,如果想了解STL版本知识,还是值得一看的。

    CUJ文库:STL中的Unary Predicates ★★

    标准运行库中的几个泛型算法在运行时使用了一元判定式(unary predicate)。例子是带if的算法,比如count_if()、find_if()、remove_if()、和replace_if(),但也有partition()这样[不带if]的算法。在本次专栏中,我们就近距离接触unary predicate,看它们可能以及绝不能做什么。(内容比较专业了,只是翻译得好像不够好)

    体验Visual C++.NET 2005中的STL★★★★

    本文详细讲解了STL.net的特性,其优势,并有充分的实例,值得一看。

    STL学习资源列表★★★★★

    本文中列举了权威的STL官方网站和STL学习网站,并提供了经典的STL教程推荐和电子书下载,不可错过。

    February 21

    book list

    K_eckel's book lists(Tech)

         最近一年,多读技术书籍。每有经典著作,买之、藏之、读之、研究之,受益颇深。况置身于一日千变的IT行业,不读书,便有落后之感,而终日读书于诚惶诚恐之间。从开发语言平台(C/C++、Java系列)、OO思想、设计模式、UML、软件过程(敏捷开发等),到算法、数据结构、软件体系架构,不同层次、不同层面的书都有涉及,初略统计,购书竟达¥1000以上。
         经常被人问及该读何书、从何入门、如何深究,因此给出这个Book Lists。list中的书基本都是我所读过,并以为经典,当作我的一个读书总结,也可作为大家学习之参考。
         我的学习历程还在行进,我的读书之路也在继续,因此这个book lists也在持续更新中.....................                                                            
                                                                                                      —— 题记

                                                k_eckel's book lists

    【语言和平台】
    【C/C++】

     [1]《C陷阱与缺陷》,Andrew Koenig,高巍译,人民邮电出版社:如果让我推荐一本关于C深入学习和研究的书,那一定会是《C陷阱与缺陷》。第一看这100多个Page的书,感觉不过如此(少年轻狂:)),第二次看是自己做了一个编译器后,带来就是震撼,再一次看的时候就是恐惧——Andrew Koenig的这本书出版14年来,在全世界内重印了18次,并且从第3次后就一个字都没有改变!如果你想知道编译过程对程序设计的影响,如果你想检验自己对底层的把握力度,强烈建议你读读这本书。

    [2]《C++编程思想》(第二版),Bruce Eckel,机械工业出版社:Bruce Eckel的《Thinking in C++》和Stanley B. Lippman的《C++ Primer》是C++从新手到进阶的必备书籍,当然个人认为两本中取一本研读即可。我选择的是《Thinking in C++》,原因是觉得《C++ Primer》实在是太厚了(:)实际上绝对全面,我后来还是在不少地方要参考Lipman的书)。《Thinking In ×××》风格甚至是书名都成为了Bruce的“专利”,后来的《Java编程思想》(第二版,目前已经有了英文的第三版),以及《Thinking In C#》(目前还没有中文版,并且该书是和Larry O'Brien合作。),都是经典中的经典,强烈推荐阅读。

     [3]《Effective C++中文版》(2nd Edition),Scott Meyers,候捷译,华中科技大学出版社:对于这本书,我认为任何想把C++学好,想用C++做项目开发的都应该好好研读本书孟岩在该书的印介中如是说:“曾经在网络讨论组中间看到这样的说法,C++程序员可以分成两类,读过Effective C++的和没读过的。”个人认为,《Effective C++》将面向对象的思想和原则与软件设计、C++开发很好地结合在一起,达到了一种完美统一的境界:你在学习C++技术(以原则条款的方式给出)的同时,OO思想得到了升华和提高。纯粹的OO思想的学习会略显得枯燥和无味,但是以为使用、掌握了一门用于面向对象系统开发语言便以为懂得了OO的开发与设计(OO的精华)则会显得多么的无知和轻浮。如果大家想真正体验OO设计开发、享受C++的强大与精髓,请读《Effective C++》

     [4]《More Effective C++中文版》,Scott Meyers,候捷译,中国电力出版社:《Effective C++》的完美续集。

     [5]《C++沉思录》,Andrew Koenig  & Barbara Moo,黄晓春译,人民邮电出版社:这本书的英文名字叫:Ruminations on C++:A Dacade of Programming Insight and Experience,十年程序设计的真知灼见。Andrew Koenig夫妇是世界上著名的C++大师级人物,并且他们也堪称C++领域的“第一神仙眷属”,看看他们在AT&T曾经做过的事情,你就没有办法不去承认这样的书名实在是实至名归,用起来也当之无愧。而Barbara Moo则更是C++领域的女中豪杰。读这本书实在是和无意中的机缘巧合读了Andrew的《C Traps and Pitfalls》,感叹崇拜之余,则买了这本《C++ 沉思录》,该书的特点一是适合学习(教学型的讲解方式),而是适合练习(书中给出了很多的实际的例子进行分析和讲授,甚至包括一个简单的string的库),怪不得C++之父Bjarne Stroustrup如是推荐:对于C++是什么样的以及能够作些什么,他们的先见之明在这本书中随处可见。他们另外一本书《Accelerate C++》也是C++学习中的经典。

     [6]《C++程序设计语言》(特别版),Bjarne Stroustrup,机械工业出版社:如果您在学习或使用C++语言,但是没有上过Bjarne Stroustrup的网站,建议您登录:http://www.research.att.com/~bs/homepage.html。让我记忆最为深刻的不是Bjarne Stroustrup有型的照片(工作),而是照片下的第4行话:I designed and implemented the C++ programming language.因为这句话世界上就Bjarne Stroustrup有资格如是说。之于Bjarne Stroustrup本人不劳我多言,之于这本书,大家都知道Bjarne Stroustrup的风格就是有些教条化,别人也称之为“学院派”,可能读起来比较不是那么上口,我个人也就是有一本e文的影印版本,实话说也没有真正系统读完过,但是有时候还是在里面查阅了不少知识。不推荐作为入门的书籍,但是建议收藏,至少也是对Bjarne Stroustrup这位给我们带来C++语言的大师的敬畏和敬意。

     [7]《深度探索C++面向对象模型》,Stanley B.Lippman,候捷译,华中科技大学出版社:对于Stanley B.Lippman本应该好好介绍他的另外两本更加知名、流传也更加广泛的书《C++ Primer》和《Essential C++》,这两本书(特别是后者)都是C++入门的好书,当然前者也是C++进阶、研习的最好书籍之一。无奈前者我没有买过,只是在学习和开发中参考、查阅过(电子版本倒是有收藏),而后者则只是初略看过一遍,不好妄加评论。而这本《深度探索C++面向对象模型》 我则收藏了,原因有二:一是我对底层实现比较感兴趣,二是冲着Lipmman的大名,而我自己也在实现一个比C++简单很多的一种学习语言的编译器(一些介绍:http://www.mscenter.edu.cn/blog/k_eckel/category/384.html)。在《深度》中,Lippman就自己当年在AT&T实现CFront编译器的实际经验总结、分析了C++的对象组织模型、函数模型,C++中多态的实现机制(virtual table的组织)等。这是一本研究的书籍,如果你对C++的使用已经比较自信,但是对底层实现很感兴趣,这本书则正是你梦寐以求的经典。Stanley B.Lippman的个人主页:http://staff.develop.com/slip 。我也发现一般大师的主页都很简约、简洁,无论是Knuth,还是诸如Bruce Eckel、Bjarne Stroustrup还是这里的Lippman都一样。大家对Lippman的最近的印象应该比较的熟悉,Lippman现在是Microsoft C++/CLI的总架构师,专门负责将传统C++移植到.Net平台上,前一段时间因为需要曾经花了一段时间研习过C++/CLI,个人觉得虽然比起丑陋的Managed C++,C++/CLI要elegant不少,但是给Managed C++善后却不是那么的容易,给Lippman +U,也期望C++/CLI走好!

     [8]《C++程序设计教程》,钱能,清华大学出版社:之所以这里列出钱能老师《C++程序设计教程》主要是因为个人认为在国内写C++方面的书中就钱老师的书最有份量,我姑且不敢将钱老师的书和上面提到的大师们的经典比较,但是在国内这样一个浮躁的环境中,钱老师的书也确实给了我不少的希望和期望。大家可能也注意到了,国外大师们的书上都是著名×××,而国内大部分则是×××编著,不读研不知道编与著的区别,现在才知道编和著真的可以说是差之毫厘、谬以千里。《C++程序设计教程》实在可以作为C到C++学习的一个预科读物,推荐大家想学C++但是基础不是很好的研读之。

    【Windows程序设计/VC/MFC】
     [1]《WINDOWS程序设计》(上、下),Charles Petzold,清华大学出版社:这本书是Windows编程领域的“圣经”,无法描述其在Windows程序设计领域的影响和功效。而Charles Petzold则是作为仅有的七个人之一(并且是唯一的作家)被《Window Magazine》和Microsoft公司授予Windows Pioneer奖,以表彰他对 Microsoft Windows的成功做出的贡献。之于这本书遗憾有二,一是价格不菲(上下两册一共160RMB,就算打个八折也还是......),二也是最重要的,现在业界实在是比较浮躁,于是我们也跟着要浮躁,很少有人能够真正静下心来去研习诸如windows程序设计的基本知识,去在没有VC生成的一大堆的MFC垃圾代码的情况下就写写windows程序了。企业和公司要求的就是一堆的会拖拉点击的熟练的操作人员,他们需要的是能够立即能够带来商业利益的代码工人,尽管他们也要求技术功底的深厚。绝大多数的VC程序员都是在完全没有过windows程序设计经验就去被教着使用MFC进行桌面系统的开发。Java、.Net需要我们学习和熟悉的地方太多了,以至于我们无法安静下来好好去把内功练到本该具备的级别就要上战场冲锋陷阵了。实际上我也是这般,虽然我看了这本书的绝大部分的内容,也用记事本写了一些简单的windows程序,从WINMAIN写起,注册窗口、创建、显示、消息循环,然后WinProc的实现,但是我也没有胆量说我对windows程序设计已可以和像使用C++/Java那样熟练。实际上可能是否要在学习使用VC等之前一定要把windows程序设计非常深入的观点也值得商榷,个人看法是:熟悉windows编程,机制、过程,做一些简单的练习,然后在基于MFC开发过程中对出现的问题在去参考这方面的资料,再去解决相关的问题(可能要用到windows程序设计中的本质东西)。我便是这般。因此建议大家能够阅读

     [2]《深入浅出MFC》,候捷著,华中科技大学出版社:这本书也不是一本浮躁人看的书,个人认为也不太适合于初学者看。个人有一个看法,如果把VC/MFC程序设计的学习像学习一门语言(例如C++/Java)那样学习,就在某种程序上理错了方向。像这种和开发应用联系最为紧密的开发平台的学习应该是一个解决问题的学习过程,这个意思就是当你遇到一个实际开发中的问题的时候,你可以去查阅相关的API、search相关的解决方案,然后解决问题就是了。因此这本书不是作为VC /MFC入门的书籍,VC/MFC的入门我觉得直接到书店找一本这方面的书(大部分都是内容差不多,因为基本是大家互相copy的:)),然后去把书中的例子实现一下,积累对VC开发的感性认识,也满足一下自己的虚荣心。然后可以参看这本《深入浅出MFC》去理解为什么你的程序要那样编写,为什么可以那样实现,怎样才可以在MFC的大网中自由发挥。书中讲消息传递、运作机理最为深入浅出,而对于Doc/View结构却并不是最好的讲述(尽管已经很好了,因为我曾在网上看到过一篇专门讲Doc/View的Document,个人认为最为深入浅出)。强烈推荐大家阅读。顺便一提的是,候捷老师是我个人极为推崇的国内的技术专家和作家,无论是他写的这本书,还是他翻译那些大师的作品,都极为精致,实在是精品和经典。候捷老师本人我和他也算是有一面之缘:2004年10月24日,候捷老师到大陆讲学,其中一站就是同城的华中科技大学,华中科技大学微软俱乐部组织了候捷老师与您工话IT人生活动,也邀请了我们这边俱乐部参与(就算没有邀请,我也一定会去的,呵呵),活动完毕和候捷老师有过一个简单的交谈并留影纪念(遗憾的是照片由于某些原因一直没有找到,深以为憾。)。我在http://www.mscenter.edu.cn/blog/k_eckel/archive/2005/04/15/1426.html中曾经记录了这件事情。

    【J***A】
     [1]《Effective Java中文版》,
    Joshua Bloch,潘爱民译,机械工业出版社:Joshua Bloch是Java社区第一号精神领袖(但是已离开Sun供职Google,郁闷ing......),该书也是Java语言领域的《Effective C++》。书中介绍了57条Java语言开发和编程中极具实用价值的经验规则和建议。揭示了该怎样产生高效、清晰和健壮的Java代码。并且本书的译者潘爱民老师也是集著、译于一身的名家,《C++ Primer》、《VC++技术内幕》(第4、6版)、《COM本质论》等也都是由潘老师翻译的,另外《COM原理与应用》则是出自潘老师的技术力作(可能现在大家对COM的了解和关注力度已经大不必从前:))。强烈推荐阅读。

     [2]《Practical Java中文版》,Peter Haggar,候捷/刘永丹译,中国电力出版社:《Practical Java》是我学习Java后阅读第一本Java方面的书籍,当时也正在参与一个使用Java开发的项目,也可以说是一边学一边作项目,项目没有做完,书倒是很快就看完了:一是因为学习总是应该比需求快,而是因为这本书写的实在是很经典。《Practical Java》最大的特点就是简洁、贴近实际开发,书中提到的改善代码的68个主题都是在开发中很容易面临的问题,实在是很Practical。这本书的重点还是Java语言本身,之于面向对象的一些思想和开发理念提及的很少,而在Java的另外一本经典书籍[1]中《Effective Java》中则是集合了不少的OO的设计思想和原则。因此这本书可以作为在学习、研究Java语言本身的必备书籍,强类推荐阅读。

     [3]《JUnit In Action》,Vincent Massol,鲍志云译,电子工业出版社:这本书是介绍JUnit测试优先开发的参考书,TDD(Test-Driven Development)是敏捷软件开发中的最重要原则和技术之一,而JUnit则正是这个技术的实现。JUnit则是由两位世界级的大师Erich GammaKent Beck完成的Java的单元测试的框架,Erich Gamma 是《设计模式》巨著的作者GoF中的第一位,而Kent Beck则是XP的创始人。JUnit不单是给我们提供一中非常elegant的单元测试工具,更为重要的是JUnit塑造了一种新的软件文化:Keep the Bar Green!只要我们能够保证JUint中Bar Green,我们软件就没有问题了。《JUnit In Action》则介绍了JUnit用法,内容包括用mock objects进行隔离测试、用Cactus进行容器内测试、用Ant和Maven进行自动构建、在Eclipse内进行测试、对Java应用程序、Filter、Servlet、EJB、JSP、数据库应用程序、Taglib等进行单元测试等。这本书最大的特点就是示例驱动教学,适合初学者,很容易上手,推荐阅读

     [4]《Struts Kick Start》 ,James Turner & Kevin Bedell,孙勇译,电子工业出版社:

    【.Net】
     [1]《.NET框架精髓》,Thuan Thai & Hoang Q.Lam,王敏之,中国电力出版社:这本书是我看的第一本关于.Net方面的书籍,尽管在网络上有人说这本书的翻译不是很达意,但是个人觉得还是很不错的讲解.Net平台的入门书籍。我学东西比较偏好于行而上和行而下结合,也就是在看一种语言实现的时候我都会结合看一本讲解框架和平台概述的书,这本书也正是和《C# Primer》一起看的。我有一位给我帮助很多的师兄告诉我说:在做项目的时候一定要抬头看看架构、设计的书,看架构设计的书籍时候一定要刻意去做做实际的编码。个人觉得这本书作为.Net框架介绍性入门书籍的定位还是比较准确的,并且里面有很多的示例,比如.Net平台上的语言的无关性中作者就通过一个分别由VB.Net /C#/Managed C++编写的示例程序(交通工具),感觉是非常好的体验。书中还对诸如.Net 中的数据访问、XML等内容进行了一个概述,总体说来还是达到了我的预期期望,因此这里推荐大家作为入门级别阅读

     [2]《C# Primer》,Stanley B.Lippman,候捷译,华中科技大学出版社:没有买Lippman的《C++ Primer》,终于在这里给予了补偿。但是遗憾的是总是觉得Lippman的这本书远远没有想象中的经典,或许一个人期望越高,失望就会越大。也可能是看的时候因为有不少的OO、C#本身的基础,而最后和自己的收益期望有所差别,鉴于以上原因,这里不妄加推荐,当然也不敢妄加评论

     [3]《Windows Forms 程序设计》(Windows Froms Programming in C#),Chris Sells,荣耀、蒋贤哲译,人民有点出版社:一直认为MFC确实是一个非常了不起的设计框架,虽然很多人弊病其冗余的垃圾代码、复杂的文档/视图结构以及不如RAD开发平台的快速入门和快速构建。MFC中使用文档视图结构可以很简单就构建一个简单的编辑系统,但是你却很不容易才可以构建一个MIS系统(使用Doc/View结构你得面对一大批得冗余代码和信息,并且很不好实现界面的转换,并且如果不是有个很长一段时间的VC开发很难胜任和上手;使用基于Dialog的结构进行开发则会被Dialog的限制给整个体无完肤(大小自由拉动、菜单、工具栏、状态栏等你都得重头再来或是使用别人的代码)),于是做这种开发我们很容易地想到要转到Delphi、VB或是C++ Builder这样的RAD开发工具。这里的Windows Forms给我们带来了福音,Windows Forms正是补充了MFC中的Dialog的缺点,结合Delphi等的经验而成的开发Windows 桌面应用程序的开发利器。如果你是MFC开发人员,想网.NET开发转变,又要做桌面的开发,这本书就是给你的必读作品。当然你要通过这本书进入.NET的开发也是一个非常好的入门读物(因为Windows Forms开发入门门槛不来就不高)。强烈推荐阅读

    【底层研究与编译器】
     [1]《深入研究计算机系统(Computer Systems:A Programmer's Perspective》,Randal E.Bryant & David O'Hallaron,中国电力出版社:这本书并不适合每个人去读,因为相对来说比较底层。我一直认为,无论你做的那个层面上开发,只要你做的Programming方面的工作,都应该对底层的东西有所了解。去年去参加候捷先生的一个讲座,其中有一位同学的提问我至今还是印象很深刻,大意是:我们现在处的学习氛围是一个很好的阶段,但是同时也是非常尴尬的一个境地。虽然目前众多的语言、平台尽力去屏蔽掉了一切的底层的细节(从C/C++到Java/.Net等),使得我们学习的机会和成本大为降低,这和以前(特别是80年代甚至以前)的学习者比起来(那个时候一般的程序员要遵循的学习路线是:汇编(甚至有机器代码)->C—>C++->Windows 程序设计(SDK),MFC,Java,.Net),因为这些技术是随着他们的学习而出现的,也就使得他们的学习曲线是一个平滑的曲线,而现在绝大多数人的学习曲线是一个陡峭的折线:一下子就到达目前最为前言的技术风口。虽然没有必要去遵循以前的那样一个学习的曲线(成本太大),但是如果对一些底层的东西最好还是能够比较了教。就比如说汇编语言,可能你一辈子都不会使用汇编语言去开发一个系统,但是至少你要能够读懂汇编代码,至少你能够在Debug的时候透过汇编代码找到错误的所在,或者是为了性能优化嵌入一些小的汇编代码片断。这本书则提供了这样一个“桥梁”:他把计算机的系统结构、C语言、汇编、操作系统的相关知识有机地结合在一起了,从一个程序员的角度去审视计算机,告诉你你的程序是怎么被编译、装载和运行。当然这本书并不是适合大多数人,因为时间和定位的不同决定了学习的过程和内容,建议希望对底层比较了解,并且时间比较充沛(例如大三的时候),好好研习本书,定会受益不浅。本书的作者Randal E.Bryant 是卡耐基梅隆大学计算机科学的主任教授和计算机学院院长,而卡耐基梅隆在我眼里一直是怀着敬畏的心情看待的。我曾做过编译器,感觉这本书里面的内容讲的确实是比较到位(不过我没有时间去看完,85rmd的书也就看了一部分,惭愧:)),推荐大三的基础比较好的能够阅读

    【算法与数据结构】
     [1]《算法I~IV(C+++实现)——基础、数据结构、排序和搜索》(第三版),Robert Sedgewick,张铭泽译,中国电力出版社:这是我目前看过的将数据结构和算法中的最好的书籍。作者Robert Sedgewick是算法宗师、计算机大师Donald E.Knuth的高徒。Donald E.Knuth是我崇拜的计算机大师之一,不仅仅因为他的学术渊博,还有就是他做事情的风格(他为了写《The Art of Programming》辞掉了在Stanford的教授职位,只担任斯坦福大学计算机程序设计艺术的荣誉退休教授。这里有一个连接http://www.kaiyuan.de/forum/lofiversion/index.php/t15802.html,感兴趣的可以继续:)),Bill Gates就曾经说如果有谁读完了《The The Art of Programming》可以直接给他发简历(确实,我曾经鼓起勇气从第三卷看起,最好还是放弃了,因为......)。Sedgewick的书的最大特色就是深入浅出,他把一个个算法(以及相关的经典问题)通过最易于理解的语言诠释的淋漓尽致,真正是大师出品、大师风范。当然这只是Sedgewick算法系列的上册,还有下册(图算法)。强烈推荐阅读。

     [2]《编程珠玑》, Jon Bentley,谢君英译,中国电力出版社:这本书的英文名字叫《Programming Pearls》,编程中积累下来的珍珠,当然宝贵。关于这本书的评论网上到处都可以找到,但是这本书薄薄的纸张竟是涵蕴着无尽的宝藏:从封底计算、经典的查找、排序算法(二分查找、堆排序等)、程序性能估算(Profile)、调试(Assert宏)等都是编程中的Pearls。强烈建议要换工作、或者要找工作的好好研读,因为笔试和面试中经常就是这里面的内容,当然开发者也必备,因为可能就是因为里面一些算法的启示给我们驱走了程序实现中的郁闷

    【OOA/D(设计与思想)】
     [1]《设计模式:可复用面向对象软件的基础》,GoF,李英军等译,机械工业出版社:设计模式中的圣经,面向对象书籍中的经典。虽然GoF在前言就一再声明他们写的这本书不是介绍面向对象技术或设计的书,但是我一直认为(Utill Now),就像GoF在其第一章引言中说的:学习设计模式可以帮助学习面向对象,而我的观点更加深入:只有真正理解了设计模式,才知道什么叫面向对象分析与设计【1】。【1】是我在经历了理解设计模式前后做的系统的比较得出的,并非个人的一时冲动的论断,在看了GoF的这本圣经n遍,并实际编写一遍23中设计模式的实现,思考并在实际系统设计和开发中适当运用设计模式后,我只能说慢慢地对面向对象的分析和设计有一些感觉和体会了。GoF在这本书中给常见的设计模式分为创建型、结构型和行为模式共23种,这些也就构成了当前软件界通用的设计模式的代名词。这本书是设计模式中的圣经,但是个人觉得唯一的瑕疵就是(可能看过的都有感觉):行文比较生硬。可能是因为GoF都是Ph.D,并且主要基于Eric的博士论文,读起来对于初学者有些难度(我是鼓起n次勇气读了n次后,才慢慢体会到博士水平还是不同!)。作者也在前言中“坦白”:请记住,这不是一本读完就可以束之高阁的书。这里强烈推荐。BTW:我将个人学习和使用设计模式的经验和理解在本Blog中有一个连载(见设计模式部分),主要想就GoF的23种模式以一种更加易于理解和接受的方式展现出来,并给出了我在学习设计模式时编写的C++代码实现。

     [2]《敏捷软件开发:原则、模式与实践》,Robert C.Martin,邓辉译,清华大学出版社:该书曾获得第13届Jolt大奖,Robert C.Martin自己也是软件开发界的大牛。读过这本书的人都有体会:内容和书的名字有些出入。书中虽然花了一些篇幅在讲述敏捷软件开发(Agile Software Development)的原则和实践,但是书中绝大部分的内容在讲述面向对象分析和设计OOA/D),例如面向对象设计中的原则(单一职责SRP、开放-封闭OCP、Liskov替换LSP、依赖倒置DIP、接口隔离ISP)、设计模式(共23种,但是不是和GoF的23种设计模式全部相同)以及UML等内容。个人觉得该书可以和《设计模式》一书结合起来读,并且是面向对象设计和分析的必读书之一。这里推荐阅读。Robert在书中的一句话或许会记一辈子:Next to My Life,Software is My Passion

    [3]《Design Patterns Explained-A New Perspective on Object-Oriented Design》(影印版),Alan Shalooway & James R.Trott,中国电力出版社:这本书我在买的时候还只有影印版,现在中文版本已有熊节翻译出版了。买这本书的时候我还对设计模式一知半解,只是看着这本书的名字比较OK就买了,实际上买回来后一开始也没有怎么看,但是在看完了GoF的《设计模式》后,我再把这本书认真看了一遍,感觉也是经典。这本书最大的特色就是实例教学,他首先对OO设计进行了简单扼要的讲述(个人认为是最好的OO教授之一,个人受益匪浅),然后选取了GoF23种设计模式中的10种进行了详细的分析:先引入问题,然后Derive相应的设计模式,这种方式最为容易理解。其中我觉得讲的最好的就是Bridge模式,分析到位、实例清晰,实在是给我理解Bridge模式给予了很大的帮助。强烈推荐大家阅读

     [4]《GoF 23种设计模式解析附C++实现源码》,k_eckel,PDF文档:这是我将自己总结的设计模式的解析的一个汇总文档,并提供了C++实现源码。旨在提供一个简单、直观的设计模式的一个解释,适合初学者学习和熟悉者研究,可以到这里获取整个文档。(2005-05-13更新)

    【UML与建模】
     [1]《UML精粹——标准对象建模语言简明指南》(第2版),Martin Fowler&Kendall Scott, 徐家福,清华大学出版社:Martin Fowler在软件界的威名大家是有目共睹的,Martin Fowler是架构、企业构架、设计模式等方面的大师,他的《分析模式》是商业层面的《设计模式》经典,他的另外一本书《Refactoring》则树立了Martin在XP(极限编程》中宗师级的地位。《UML精粹》也正是吧UML的精粹部分展现了我们面前,我们知道UML是咱们做软件必须要熟练掌握的建模语言(不然怎么和别人交流?!),但是我个人觉得学习UML的是枯燥的,且不说别的,就是UML中的那9类图都够咱们郁闷的(尽管不是每种都很常见和常用)。我也正是通过这本书慢慢地去熟悉、适应、使用UML,本书也是面向对象思想(OO)学习的经典,你可以从这本书中学习到很多的OO的思想和原则。唯一美中不足的就是:个人对翻译的徐家福老先生翻译的笔风不是很称,很多的名次和现在的表达有一些出入,也让人有时候觉得很是费解。anyway强烈推荐大家阅读。

     [2]《使用UML—关于对象和组件软件工程》,Perdita Stevens & Rob Pooley,包晓露译,人民邮电出版社:这本书虽非出自大师级的高手,但是个人觉得这本书是非常好的面向对象思想和UML学习的教材。就像本书最开始就讲到:面向对象的3块基石(封装、继承、多态)中封装的本质就是高内聚(Cohesion),多态的本质就是低耦合(Coupling),这是我看过讲面向对象理论最为简洁、本质的论断,也带给了我莫大的思考。这本书还有一个特点就是适合个人学习,因为该书的组织是按照教学的进度安排,还设计由讨论和问答,非常适合OO思想入门和UML使用入门。推荐阅读

    【软件过程管理】
     [1]《人月神话》,Frederick P. Brooks,JrUMLChina翻译组 汪颖译,清华大学出版社:排在这个位置的一定是这本《人月神话》,我个人觉得这本书本身就是一个神话,它的经典、它所诠释的软件开发的精神、软件过程的艺术,使得该书畅销了20年经久不衰,让人不得不认同这样的一种神话。Brooks获得1999年的图灵奖,他在1986年发表的论文《没有银弹:软件工程的根本和次要问题》,让“没有银弹”的软件领域的“定理”成立20年,可能还不知道要成立多久。《人月神话》是关于人和团队的书强烈推荐阅读

     [2]《敏捷迭代开发:管理者指南》,Craig Larman,张晓坤译,中国电力出版社:Craig Larman是面向对象、模式、迭代开发等领域广为人知的世界级专家,他的那本《UML和模式应用》被Martin Fowler推崇为:“人们常常问我,哪本书是引领他们迈入 OO 设计殿堂的最佳著作。自从幸获 Craig 的《UML和模式应用》,它就成为了我的倾力之荐。Craig Larman在这本书中讲述了四种著名的迭代方法(Scrum、XP、UP、Evo)的关键实践,并就敏捷和迭代开发中的实际问题给出了建议和实践经验。Craig Larman维护了一个中文网站:http://www.craiglarman.cn/。我个人比较推崇敏捷软件开发,虽然很难说得其要领,但是还是觉得在当前得这样一个软件开发环境里敏捷迭代的思想还是值得咱们好好推究和实践的。

     

    "推荐几本书:
    C++: c++primer, effective c++, c++经典问答,
    如果学vc用一本 vc++技术内幕就够了
    设计模式, 重构---改善既有代码的设计, 测试驱动开发, 敏捷开发与极限编程这个系列(主要是kent beck和martin fowler的书,这一系列的书也是开发哲学,没什么具体的技术的东西,但是对开发思想和正确观念的形成非常有用,特别是写程序要自己写测试的思想)
    design by contact也值得推荐一下,孟岩翻的,跟测试驱动的思想有互补之处。

    还有一个电子书微软编程精粹也不错,也是写开发经验的。

    虽然语言c++和java都可以,但是我觉得effective c++和c++经典问答中对某些开发原则和oo的解释非常好。而且这两个语言其实是相通的。最重要的是设计模式是用c++写的示例。
    重构是用java写的示例,不过学了c++看起来没有什么障碍。

    effective c++和 c++经典问答的可读性非常好,值得反复看,文字很幽默也很轻松,但是技术含量绝对一流。有空可以去读读 jjhou.csdn.net上的文章。

    还有人月神化可以读一下,不是技术书,所有搞项目管理的都可以读一下。"

    前几天给赵鹏推荐书的时候写的。虽然没你的全,不过大部分也差不多了。我这一年半买书也不少了,不过不少书比较废,走了一些弯路。好钢要用在好刃上,精品不能浅尝辄止,好好研习,就会觉得五日一小变,十日一大变,月月上层次。呵呵,有些夸张了。这些虽然都是开发的东西,但是可复用性非常强,生命力也非常持久。

    现在我主要读的都是业务书了(概率统计数学的,cool吧?呵呵),做得东西也是看起来规模比较玩具的,不过那些开发思想和很多技术都可以应用到,抽象的东西可复用性确实非常强。另外可以关注一下python。这玩意对付测试自动化和文本比较有效,去年看过一段时间,现在做分类器又派上用场了,让我很欣慰。

    good luck.

    site lists

    学近五年,多有困于学业、开发之中。然常求学于书籍、网络,受益良多,记之。鉴于感恩,亦为后来人参考。持续更新中.....................
    【1】www.google.com:世间万象,包罗其中。唯一的缺点就是正是因为信息太多,所以很杂乱。google已是一种文化,我更赞同google是一门学问:能够使用好google,很多事情其实也已经解决了一半。
    【2】www.codeproject.com:软件开发设计必备网站,一般解决不了的问题都可以到codeproject中寻得帮助。看了codeproject中的文章,真正知道学无止境、学海无涯了。
    【3】www.codeguru.com:C/C++技术的“大哥大”,比codeproject开山早n年,但是个人觉得codeproject比codeguru更偏于实践,后者则在研究方面造诣深厚。
    【4】www.sourceforge.net:全世界最大的开源网站,只要你能想到的、或者你还没有想到的,你在sourceforge中都能找到copyleft的代码。学习的天堂,在sourceforge中也切实体会到了程序员的尊严。
    【5】www.csdn.net:我把csdn当作计算机技术中的sina,每天都会看看最新的IT动态,无论是技术更新、还是IT企业八卦,拓宽知识面,受益不少。
    【6】http://arbow.itocean.net/wakka/wakka.php?wakka=UsefulBooks:里面Java书籍的全面让我觉得不可思议,经典书籍里面基本都收集了,关键是可以免费下载,强烈推荐学习。
    【7】:http://www.maththinking.com/boat/booksIndex.html:书籍的天堂paradise(Heaven),推举大家下载资源。
    【8】:http://soft.yesky.com/:天极网的软件频道,以前做开发的时候经常在google上就搜索到天极Sky中的开发资料,做开发的时候值得参考。
    【9】:http://tech.ccidnet.com/:塞迪网在技术上还是做的不错,开发中可以到这里获得很多的解决方案和参考资料。
    【10】:http://www.developer.com/:很知名的国外关于开发和技术的网站,可以学习到很多的知识。
    【11】:http://crab.rutgers.edu/icons_new/icons.html:在开发中经常就被图标郁闷,这里给了你灵感和解决方案。
    【12】:http://www.zdnet.com.cn/:一个很不错的网站。
    【13】:http://patternshare.org/:Community forPattern,里面有着很多的大师的专版,例如GoF、Martin Fowler,建议对模式感兴趣的可以去看看。
    【14】:http://www.biplip.com/default.aspx:移动开发网,移动开发很好的网站。
    February 16

    c++经典

    下面的是学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++!

    补充:
    对c++学习的一点感想,希望对初学者能有些帮助

    1.如果你以前从来没有接触过c++,那么选择的第一本c++教程就显得尤为重要,我认为你可以参照以下的标准进行选择:
    a.对标准c++进行讲解,毕竟c++比从前发生了很大的变化。
    b.要求全面,但不要很深,这要有助于你对于c++有一个全面的认识,打好基础,并且易懂的教材还能加快学习的进度,让自己保持一种成就感。
    c.要有完整的范例来讲解每一个知识点如何运用,请注意这里所说的完整,并不是一个个代码片断。因为由于你以前从未接触过用c++进行编程,完整的代码可以使你有一个整体的概念,并且能够很快去进行大量的实践,因为变编程是从模仿开始,完整的代码恰恰告诉你了一个完整的步骤。不必自己去揣测。
    d.推荐:《c++ primer plus》
    2.当你有了一定的基础以后,就要选择一些书来迅速提高自己。这类书的特点是不仅仅教你如何去运用,而且要叫你如何去思考,并且你读起来也不是那么轻松。它意味深远,并不是你读一遍就能掌握的。
    推荐:《thinking in c++》《effective c++》《more effective c++》
    《c++ programming language》...《c++ 沉思录》
    3.接下来就是对第二步所介绍的书籍进行反复的阅读,并且进行实践。由于这些书一位深远,每个人基于自己的基础都会有不同的收获,例如如果你的基础还没有达到某一高度,那么你就对一些精深的技术视而不见,不信?你可以试试,看看当自己有了一定提高之后再来读从前的一本书,你会发现许多新的东西。
    February 15

    春田花花同学会

             今天看了春田花花同学会,感觉还是很不错的,不像别人说的是一部烂片,导演还是很用心的。几十个演员,再加上个周笔畅。她的戏份还真是重,演的还不错,穿上女装的周笔畅还真是有点小女生的味道,很可爱,是一种不同于超女比赛上的感觉。笔畅的头发很好看,神情也蛮可爱的,导演真的是不错,我要是导演估计就累死了。不过整部电影的主角还是动画人物,两只小猪很可爱,让我发笑几次,现在能让我笑的电影还真是不多了哦。
          一句话,春田花花同学会让我回忆过去,也让我期待未来,更让我想起我的同学们。现在我的所有同学们你们都在干什么呢?过的快乐吗?还记得最初的梦想吗?还想继续拼搏吗?还想继续打拼吗?
        

    05年的经典语录之计算机科学

    05年的经典语录之计算机科学

                                                                   by EmilMatthew(EmilMatthew@126.com) 06/02/07

    1     计算机科学技术包括科学和技术两部分,不仅强调严谨的科学性,同时也注意工程性,是一门科学性和工程性并重的学科。信息科学技术的支柱学科是微电子、计算机、通信和软件,其中微电子是基础,计算机和通信是载体,软件是核心,它们相辅相成,共培培育了知识的经济。

                                                                                 ------杨芙清(中科院院士,著名软件专家)

    :

           评价一件事情的重要性,务求客观和全面,杨院士对计算机科学学科的精当评价正是这方面的典范。

     

    2  Three major of Computer Science:

    Theory: rooted in mathematics.

    Abstraction (modeling):which is rooted in experimental scientific method.

    Design: which is rooted in engineering.

                                                                                               ------Think like a scientist

    :

           给计算机科学的学习内容及能力要求与传统科学加以比照及借鉴, 合理而精当。

     

    3   计算机科学与计算机技术毕竟是不同的,掩饰或者故意模糊这种区别是为了给当前的过分技术化,工匠化以及经济化时尚作辩护。对计算机而言,没有精而尖的技术(特别是先进的制造工艺)作为支持,侈谈其科学是不合适的。但反过来也有危机,容易使人沦为技术的奴隶,使科学丧失理性和人性。只重视具体实用技术而轻视甚础理论的弊病,在我国信息产业界也显露出来。

                                                                                                           ------《大师的智慧》

     

    4   对于我来说,计算机科学上的第一个挑战是如何把命令维持在有限个内,然而巨大的、分立的宇宙是复杂地缠绕着的。第二个也是同样重要的挑战是如何传授解决那第一个问题的方法:只培养你个人的才智(那会随你进入坟墓的东西)是不够的,你必须教会其他人如何去发挥他们的才智。你越关注这两个挑战,你越会清楚的看到它们只不过是同一枚硬币的两个面:自学是去发现什么东西是可以被教会的。

                                          ------ Edsger Wybe Dijkstra(1972图灵奖得主,著名计算机科学家)

    :

           从培养他人的成就来定义自身的成就,境界之高非我辈此等年纪可参透。

     

    5   有的同学埋怨说现在大学里教的内容不够新,跟外面企业的要求脱轨。我要说,如果你要学最新最流行的东西,直接去读外面的培训班就是了,还来上大学干什么?

                                                                                           ------谭浩强(著名计算机教育家)

    :

           大学的四年,是为今后的人生加下坚实基础的四年,在该学的时候不学,到书到用时方恨晚时才发出要是当时多学点… …”的感慨,是遗憾的.

     

    6   技术这个东西,大家都知道,有时候就是一层纸,一捅就破,一开始你会比别人做的好些,但慢慢地别人也会熟悉,多翻翻书,多看看,我钻研一下,细节是可以搞清楚的。

                                                                                                         ------周怀北(旅美PhD)

    :

           技术当然很重要,但千万不要眼中只有技术,否则就是技术的奴隶了。

     

    7   我就是搞不懂,难道C语言在中国已经没有用了?学好了C语言这个基础,再去学别的语言,就会轻松不少。

                                                                                           ------谭浩强(著名计算机教育家)

    :

           自己感受过,才能有体会。

    February 14

    学习的总结

                               学习和实践总结

     

     

    自从上个学期加入到我们项目小组以来,在几个月的时间里接触到了一些新的技术,学习到了一些新的知识,也获得了一些实践的机会,在这里我对这些学到的知识和经验做一个总结和梳理。

    首先,对.net的概念有了一些了解。由于自己是新手上路,没有做过什么项目,以前也没有接触过 .net,所以一切都要从头学期。

    上面的这个图给我的认识.net是个什么东西启发比较大,这个图很好的表现出了,程序设计语言和.net应用程序和.net framework class library还有公共语言运行时之间和操作系统和硬件之间的关系。.net是一个很大的概念,基本上微软现在的所有的新开发软件,都被冠上聊.net的帽子。前断时间看到csdnRichard Grimes的一篇文章,文章表示了对.net技术的一些失望,Richard Grimes是一个非常有名全球公认的COM/.NET技术专家,他的这篇文章在技术社区中引起了很大的反响。但是由于我对.net的认识还不够深刻,这篇文章的许多意思我都不是很理解,它的大概意思是.Net其实是很棒的,但是它迷失了方向,它把太多的力量都用在了提高用户的操作舒适度或其它一些技术上,偏离了微软原来提出.NET时所声称要达到的一些主要目标。在我使用.net开发项目的过程中,我个人觉得.NET还是很不错的。当然我的认识和Richard Grimes的认识不是在一个层次上面的,或许我觉得不错的地方,就是Richard Grimes觉得ms做得不适当的地方。

    另外,也学习了一门新的语言——C#。C#是一门综合了C++和java的有点的新型语言,是一种完全面向对象的语言。它的语法有很多跟C++差不多,只是加了一些新的特性,例如:属性,索引器,委托等新的概念。在实际的运用中觉得的确是很方便,但是要说

    C#优于其他的面向对象语言我看也不见得,如果在C#背后没有ms这个强有力的支撑,它的发展也不会像今天这么红火。

    下面谈谈从我们所作的项目中得到的一些收获。原来写程序,都是一个人写,从头到尾每个字母都是自己敲进去的。如今做项目就不一样了,现在的项目是由六个人一起做,在这种情况下,编程风格就显得格外的重要了,我总结了几条经验如下:

    1.              变量的名字和函数的名字绝对不能乱取,一定是要有意义。让人一看就能明白的,好的命名是不需要注释就应该能够看懂是什么意思的。这一点我是感受深刻的,原来编程的时候都是用一些简单的没有意义的字母来表示变量,程序变大了之后回头看前面的程序,自己有时都不知道自己定义的变量是用来干什么的了。这就像小时候,家里人教训我字写的差的时候说:“自己写的字自己都不认识”,这种很失败的感觉,有损士气,打击信息,而且也不好看,好的变量名和函数名是有一种美感的,自己看了都舒服。

    2.              团队的编程人员,编程风格尽量能够协调一致。例如,控件的命名,变量的命名,函数命名的规则应该尽量一致,要达到几个人的代码整合到一起就像一个人写的才好。因为团队的人员组成可能是随时变化的,有时会增加人,有时会减少人,有时又会替换人。如果一个人一个风格,势必新来的人看不懂,如果他再带来一种不同的风格,那程序就会显得非常的糟糕,就像烂菜地一样。这对后期的维护人员也会增加许多的麻烦。

        下面我谈谈团队的分工问题,由于现在的许多项目被分成了三层结构:用户层,业务逻辑层,数据层,因此,项目自然而然的分成了三个部分,但是我们的项目界面和逻辑联系的比较紧密,这两个层次就没有分开,由一个人专门做数据层的,其他的人再根据逻辑分工,来做上面两层,我分到了两个逻辑块。用到了存储过程,事务等一些技术,确保了系统的安全性。我觉得让一个人来做数据层的做法是很好的,这样确保了数据库的信息一致性。

    其实让我觉得收获比较大的地方,就是参与到了软件的设计过程。在对数据库的设计过程中,把原来书本上学习到的一些知识运用到了实践中,在建表的过程中锻炼了分析能力和逻辑能力,也深深的体会到软件设计真是个脑力劳动。另外,这也是我第一次在这种大的项目中看到是怎么运用面向对象的方法的,怎么抽象出对象,怎么建立对象。这使我印象深刻。

    其实学到的东西很多,但是比较杂,不好组织。很多感想交织在一起,每一点都写了一点,但每一点都没有完全写出来。以上的总结可以说是比较主要的一些收获了吧,先写到这里。

     

                                         

     

       王凡

    写于  2006年元宵节

    January 21

    About love

     Just because someone doesn't love you the way 
    you want them to, 
    doesn't mean they 
    don't love you with all they have. 
     
     
    I love you not because of who you are,
    but because of who I am when I am with you. .......
     
     
     
    To the world you may be one person, but to one
     person you may be the world.........
     
     
     
    The worst way to miss someone is to be sitting 
    right beside them
    knowing you cant have them...
     
     
     
    Maybe God wants us to meet a few 
    wrong people
     before meeting the right one, 
    so that when we finally meet the person,
     we will know how to be grateful. ..

     

     

    Don't cry because it is over, smile
     because it happened.
     
     
    No man or woman is worth your tears, 
    and the one who is, 
    wont make you cry..................
     
     

    November 26

    国际文化节

          今天的中午接到小韩的电话,说桂园在搞国际文化交流节,强烈建议我们去看看。我们去了,结果证明不虚此行。
          今天来参加国际文化交流节的国家大概有20,30个国家。来的都是年轻人,身着各式各样的民族服饰。日本的展台的人很多,因为几个pp的日本mm在和大家合影留念。原来还以为日本人和中国人长相没有什么不同,可是今天近处一看,日本人其实很明显的看出来和中国人的气质是不一样的。有一个日本mm面貌清秀,身材修长,估计有1.7m左右,笑容非常甜美,连我反日的roomate也连连称赞好看。她身穿蓝色和服,脚上穿一双银色中跟鞋,站在绿色的草坪上,不停的满足大家合影的要求,每次照完相她都跟要求合影的人鞠躬,是那种典型的日本人式的鞠躬。可惜我没有照相机,要不然跟她合个影留作纪念。估计她的照片在珞珈山水上是找不到的吧,不过还是去找找看。

    地震了

          今天早上8:55分在湖北江西交界出发生了5.5级地震。
          早上还在被子里面睡觉,突然门就开始响,我就意识到可能是地震了。不过根据经验判断,武汉是不可能发生地震的呀,又不是在地震带,于是就没有在意。直到早晨跑去上课,小韩才说,刚才上个课的时候发生地震了,投影荧幕在左右晃动,脚也麻了。回到寝室,李明说他的泡菜也翻了。
          这是我平身第一次经历地震,感觉很奇怪,有点后怕。赶快跟家里人还有朋友发短信,道一声平安。
    November 25

    研究生会的茶话会

           今天既然来了,一不做,二不休,搞两篇再说。
           由于我们寝室小韩是研究生会主席的缘故,也由于我想尝试新鲜事务的关系,我在上个星期加入了我们学院的研究生会,担任组织部部长。说起来是部长,不过已经是最底的职务了,不知道以后还需不需要增加人手。由于刚换届,马上又要搞活动(初步定为是合唱,马上就要开始排练了,我也是合唱成员之一。上次准备排练,由于借用教室的问题,差点闹出冲突)于是原来的研究生会的部分重要成员给我们开了个茶话会。茶话会上来了原来的研究会主席,还有武汉大学校研究生会的副主席,还有珞珈山水的站长,还有其他的一些人

    生日记

          已经一个月没有来了,我又大了一岁。昨天是我的生日,跟寝室的兄弟们去校外的星星搓了一顿,点了四个菜。一个牛蛙汤,里面的酸菜还不错;一个皮蛋煮鱼片;一个手撕包菜;还有一个什么忘记了。四个人喝了两瓶酒。阿杜越来越不行了,喝了一杯就几乎挂了,脸全部都红了,一直红到脖子。不过人还是清醒的,后来去商店买东西还知道杀价,真是难为他了。
          昨天小韩同志由于发现自己明显比原来照片上的模样胖了不少,于是在我的生日PARTY上也有所顾虑。不过嘴上是说有顾虑,最后也没有比平时少吃。李明还是想平时一样,发挥正常而稳定,席间聊了他原来请客出血的事。有了朋友的生日宴会,虽然没有山珍海味,但是还是非常有乐趣。
    October 09

    梦想在实现时失去

    当考研成功的那一刻,伴随着考研成功带来的喜悦,剩下的就是一点点的失落感。
    October 05

    有些东西只是一闪而过,思想的火花不保存,就会消逝

    不晓得怎么用,先试试,以后就在这个上面写东西了
    。今天看了本介绍《俄狄浦斯王》的书,勾起了考研时,李海洋谈起的俄狄浦斯情结。
    俄狄浦斯情结是弗罗伊德从《俄狄浦斯王》中解析出的,讲的是孩子对异性的上一辈有天生的爱慕,对同性的上一辈有天生的憎恨,通俗的讲就是恋父恋母情节。真是神奇,恋父,恋母情节早在两千年前的戏剧中就有涉及。不过我还是不能理解,你要让一个女生喜欢你就必须像她的爸爸,这真是个高难度的任务。