c/c++程序员必读的十本书(下)

第六本,C专家编程(C和C++实务精选),douban链接http://www.douban.com/subject/1232029/

第七本,C陷阱与缺陷,douban链接http://www.douban.com/subject/2778632/

这两本书都是将近20年前出版的超级经典好书,个人认为,只要c语言还被使用,这两本书就不会过时。这两本书也都是C和C++实务精选这系列丛书中出类拔萃的两本,字字珠玑。另外推荐大家如果有闲钱,可以另外买下面这两本:《C++代码设计与重用》,《C和指针》。

《C专家编程》这本书很有意思,里面不少内容被不少企业作为面试内容出现,比如我常看到的这个“如何不使用临时变量确定链表中存在重复”,还有“数组和指针有什么区别,什么时候相同”等等,不过最后一章关于c++的论述因为时代关系,可以跳过不看。

第八本,《C++标准程序库自修教程与参考手册》,douban链接http://www.douban.com/subject/1110941/。这本书可以作为案头书使用,对于c++中的template,介绍的那是恰到好处,没有任何炫技之处,整体风格就是德国人典型的认真、朴实、实用,如果想在项目中使用模板技术,这本书一定要放在手边。

最后两本很难选择,感觉剩下的基本上可以战成平手,故此更细化一些,大家可以根据个人喜好来选择。

如果专业是windows桌面编程,建议如下两本。

第九本,《Visual C++技术内幕》,译者潘爱民,链接http://www.douban.com/subject/1027574/,第十本,《Win32多线程程序设计》,译者侯捷,http://www.douban.com/subject/1231702/。

这两本算是我入门时候看到的好书,尤其是第九本,非常之经典(新版本好像评价不高)。如果使用MFC及COM开发,这本书可以让你一步一步照着做,免得没有头绪。而且还有个优点就是介绍的比较全面,windows桌面开发可能用到的技术基本上都有涉及。这本书也是推荐我最喜欢推荐给公司新入职同事的,非常有帮助。第十本关于多线程,个人觉得一个Windows程序员如果不了解多线程,那就不能算是一个完整的程序员(笑),如何进行线程同步,如何使用锁、事件、句柄这些东西,这本书介绍的非常仔细。

而且这两部书的译者都非常不错,翻译的口碑相当不错。另外插一句,孟岩、刘未鹏也是国内译者中我很喜欢的,他们翻译的书都有质量保证。

如果关注的不是windows桌面开发或者MFC开发,可以选择这两本书。

第九本,《代码大全》,http://www.douban.com/subject/1477390/,作为一个程序员,应该反复读读这本书,里面的内容很浅显,道理很实用。没错,我很喜欢强调使用,这么厚的一本书,不需要一口气读完,可以有针对性的读读里面某些章节,比如7、8、9章关于程序的,18章关于表驱动方法的,22章开发者如何测试的,都是看了就能用的内容。

第十本,Effective C++,http://www.douban.com/subject/1842426/,这本书介绍了55个非常实用的,没错就是非常实用的C++编程条款,相比herb sutter的书,这些条款可以算的上脚踏实地,比如什么情况下应该写拷贝构造以及赋值函数,虽然有些章节略微难一些,但是实用性还是比较高的。

有的朋友推荐《深入理解计算机系统》这本书作为入门,我回家又翻看了一遍,感觉不选是对的,《深入》作为教材系统学习是很有用的,也建议大家有空读读,但是实用性相比来说差了不少,可以让大家深入理解,但是无法写出好的代码。个人浅见,写代码之所以成为一个手艺,是因为它可以在模仿前人的基础上达到一个比较不错的水平,而《深入》这本书可以让工匠往大师的方向发展,对于初学者来说,不是必要的。

另外,一个程序员应该多少了解一些软件工程思想以及涉猎一些代码开发边缘的书籍,《快速软件开发》《微软研发制胜策略》《writing solid code》(最近有引进影印,网上有不错的翻译)《代码阅读方法与实践》,另外C++ FAQ和C FAQ都可以在网上找到,这都是非常值得读读的。作为一个C、C++程序员,最好再涉猎一门脚本编程语言,如果对web开发感兴趣,可以学学php,入门极为容易,有c基础就行。或者看看python,是google主推的编程语言之一,桌面网络开发都可用。

终于写完这十本书,感觉前面五本相比后面来说容易写的多,也许是自己读的少(推荐的我都读过,而且感觉不错),也许是经典也就这些的缘故吧。

二人世界

周六陪宝宝玩了一天,多少有点累。因此决定第二天哪里也不去,让帅哥好好歇歇。

星期天睡了大大懒觉的我起来后第一次吃到现成的饭菜,虽然是婆婆给带回来的饺子,好歹也是人家帅哥热给我吃哦,感动得我就差泪光点点了。当时就在憧憬着以后每个星期天的早晨都能吃上老公做的饭菜——哪怕偶尔把前晚剩下的放微波炉里转两圈也行啊!

更让人开心的是饭后帅哥边刷碗边问我是否需要洗衣服,得到肯定回答后就麻利地把洗衣机搬进去,接好电源和上下水管,只等我将衣服分门别类放进去加洗衣粉选择程序按动开关。洗衣机勤勤恳恳工作中,我把自己解放出来收拾整理卧室和客厅,然后用洗衣机放出来的水涮拖布,擦第一遍地,看到帅哥今天心情格外好,就乘胜追击,说帅哥今天太棒了,帮我做那么多家务,跟他商量看能否把我刚草草擦过的地扫一下,人家从床上一个高蹦下来,说绝对没问题,我心里那个美啊。

等到后来那位仁兄就一发不可收拾了,不但帮我把漂洗节省下来的水放到洗衣机里让它进行第二拨劳作,看我忙着擦第二次地还雄赳赳气昂昂地帮我晾衣服,天啊天啊,活脱脱一个勤劳善良的模范丈夫啊。我早该在他帮忙做家务后就立刻表扬鼓励的,其实人家不是不干活,是不稀得干啊,干了我也没表示,人家凭什么要干呢?

家务活的确挺烦躁的,但如果是两个人分担就变得轻松多了,而且能省出许多时间用来交流感情哦。

为了庆祝俩人合作愉快,晚上做大菜一道:萝卜炖牛肉,可能味道就是好,也可能真的饿了,满满一盆儿吃得精光,哈哈,简直好极。

除了一起劳动一起吃大菜还一起看大片《黑客帝国》,当然,他只是又复习一遍,我呢因为之前没看过,显得异常紧张兴奋,亏得有他在身边适当做解释,不然,实在看着费力呢。原来总说在电影院看大片才有感觉,那都是小资情调在作祟,跟爱人在一起守着电脑看其实也蛮不错的,嘿嘿。

参加由二舅公请客的家庭聚餐后我们又领大家去K歌,跟帅哥一首《知心爱人》唱的还算可以,反正公公婆婆都说好听,帅哥工作一天早已经折腾累了,我想着之前定好的这题目就噼里啪啦上来敲打一番。假期还剩一周,等上班后不知还能否有心力好好经营二人世界,还是否有时间经常过来记账呢。

偶尔有朋友恭维说我文章写得耐看,说我写出的的生活那么美好,也有朋友说我文笔实在有待提高,不管怎么说吧,生活就是这样,你不管怎么写都得好好过好好体会才行,而且就算写得再光鲜亮丽也肯定是酸甜苦辣咸五味俱全,或者苦乐参半的。静下心来想想咱这二人世界可能维持不了多久,现在萌萌还小,我们有些自私地把她托付给老人照看,等她大了上学了,需要我们辅导功课了,还是要回归成三口之家,或者升级到一家五口的。

最后贴两张我们去年六月用手机拍的搞笑照片吧,二人世界的瞬间展示

去丽英达给萌萌拍照片后,跟帅哥在青泥洼桥的雅惠歇脚喝冷饮,等待接坐火车回大连的妹妹。俺说咱俩很久没有合影了,用手机对着镜子来一张吧,那家伙死活不肯给面子,勉强拍了第一张他居然把脸挡上了;第二张是在我好说歹说以后心不甘情不愿才把手放下来,却做了呆呆木木地表情,很有当年送我那只硕大加菲猫的味道,哈哈。

快乐的一家三口

星期六两个人带着萌萌出去玩,小丫头听说要领她去劳动公园简直开心毁了。不过因为灯展公园要收门票,加上天气不暖和,就临时改变了计划。

早听美女姐姐说过新玛特楼上有小孩子玩耍的地方,因为找得不专心几次都没领萌萌去玩成。这回也是一路打听才找到地方,原来并不是汤姆熊,而是卖宠物那里,接连有玩沙子的,做陶的,还有做画(不知具体名字)和卖玩具的。

我们先是看了些小动物,萌萌很友好地跟它们一一打招呼呢,然后玩了会沙子,起初三四个小孩儿都玩得挺好,不争不抢还有些合作和交流,谁知末了大几岁的男孩子居然把一盆沙子都扣到另外一个小姐姐头上,萌萌看不出形势还在跟那哥哥要一个大家都喜欢的小塑料碗,我跟帅哥决定让她还是不要再玩了,两边家长都在为小女孩儿清理身上的沙子,我们除了无奈也只能把萌萌带走,小丫头明显没玩够,红扑扑的小脸带着极度不情愿。之后我们问一起玩的小孩子里她比较喜欢谁的时候,萌萌居然说喜欢那个小哥哥(往小女孩头上倒沙子的那个),这该不会就是男人不坏女人不爱吧,我俩都被萌萌的想法弄晕了。

玩沙子出来就去吃饭,在雅惠,之前省的40块门票钱,足够我们饱餐一顿了,小丫头吃得尤其开心,可能是玩的太投入消耗能量太多吧,也许是早晨没吃饱?反正她吃了将近一根烤肠外加一个胡萝卜画卷和小半碗鸡蛋糕,以及蔬菜若干。饭后,爸爸给买的冰激凌也一遭进了肚子,因为担心爸爸会一口吃光她的冰激凌,人家怎么也不肯给爸爸尝尝,倒是做妈妈的我很有面子,居然主动喂了两勺给我呢,嘻嘻。爸爸在边上看着那个冤啊!

从新玛特出来估计十二点左右,我们准备带她回家,随口问她玩得开不开心,小丫头居然用无精打采地口气带着幽怨的眼神说:“就是什么都没玩啊:(”

跟帅哥简单商量几句后决定带她去唱歌。上次王兄说他们一家三口唱的很开心呢,那我们也带萌萌去一次吧。小丫头听说去KTV立刻欢呼雀跃,在车上一个劲儿问啥时候才能到啊。因为是周末,歌厅人不少,我们仨进了个中包,麦霸也就此产生。萌萌拿着麦克风一首接一首地唱那些她喜欢的儿童歌曲,做妈妈的我边选歌边给她伴唱。可一说让爸爸唱她就老大不乐意,做爸爸的很有牺牲精神,而且看样也没什么兴致。由着萌萌唱了了四十多分钟才算过足了瘾,离开前为下次唱歌活动提了要求,说以后可得轮流唱,小丫头一口应承下来。

准备坐车回家时已是下午两点,爸爸好脾气地问了萌萌想不想再吃点东西,小丫头大眼睛一眨巴立刻说想啊。问她要吃什么小人儿就很狡黠地说,你们选地方吧。看样子很得意很酷很牛,让人不得不发感慨,这孩子真是大了啊。

做爸爸的去肯德基给萌萌买了个蛋挞和一盒土豆泥,小丫头还是像中午那样没少吃,我们担心她撑到就说剩下一口蛋挞给爸爸吧,她居然很果断地说不,想带回家吃,那半盒土豆泥也说要带回去吃。我俩都纳闷孩子这么护食,像谁呢?
回到奶奶家,听说小丫头早上压根没少吃,几乎吃了四个鸡蛋,牛奶还不算!我的天,难怪她最近沉得我都抱不动,难怪爷爷说她该减肥了。可她看着也不胖啊,肉都长哪里了呢?

想着星期一就是元宵节,决定星期天就不去沟里了,俩人在家休整,带孩子出去玩虽然开心,可也真是累啊,不过以后天暖和了还是应该多领孩子出去的,感情需要培养不是吗?好了,晚上回来写二人世界吧!今儿是正月十五有家庭大聚餐,得收拾下出发了。

西红柿牛腩汤,真牛

帅哥最近突然特别想喝西红柿汤,这点小愿望俺还是能够满足他的,春节前后分别做了一次,牛年嘛,就做西红柿牛腩汤好了。

之前在某家烧烤店点过一次西红柿牛腩汤,算是很正点那种,他也因此反复叨叨过几次,无奈俺就照猫画虎做给他好了。煮那个汤其实很简单,备料算是最主要的步骤了。两人餐桌有二两牛腩足矣,西红柿四五个(为节省,一两块钱的破西红柿就行了),胡萝卜半根,黄豆半杯,葱姜和香菜少许,番茄酱适量(我用的是家乐番茄沙司哦)。

事先把黄豆泡好;牛腩洗净切小块,热水焯一下备用;西红柿洗净切块;胡萝卜切片;葱姜可切小块或片及丝等;香菜洗净切小段。

做法很简单:葱姜爆锅,点少许料酒,将牛腩入锅翻炒几下,待其变色后加进泡好的黄豆并向锅内注入两碗清水,开锅后改小火慢炖十几到二十分钟;将事先准备好的西红柿块和胡萝卜片悉数倒入锅中,同时依个人口味加入适量番茄酱搅动均匀后烧开;然后小火慢炖十几到二十分钟;关火前放盐,后立刻加入少许香油和味精,别忘了还有香菜。这样一锅热气腾腾味道鲜美的西红柿牛腩汤就可以出锅了,而且营养价值也很丰富呢。

因为做得用心,味道自然不错,当然,好不好全由帅哥说了算。春节期间婆婆听说儿子喜欢喝西红柿汤就又做了一大锅,可惜附近超市的番茄酱脱销,公公只在沟里的小店买了另一个品牌的代替,结果味道实在不咋地,可能那种酱太甜了吧。

这不,今儿他又想牛一把,俺不忍心看他口水直流的样子就又做了一次,人家依旧赞不绝口。我们边吃边总结经验说,还是番茄酱的原因啊!看来做菜饭材料的确很重要啊,难怪俗话说巧妇难为无米之炊呢!

工具与技术,兼论如何选择技术

论点一,如果某项技术必须某个工具的支持,远离它。(微软的COM、DCOM)

论点二,工具只是帮助,不是学习技术的必须,vi、emacs也是如此。

论点二点一,熟悉工具会帮助你更节省时间,更好的专注于开发本身,比如textmate,但不是不使用这个工具就完不成任务。

论点三,如果某项技术连介绍都看不明白,远离它。(Windows Azure)

论点三点一,如果有两个类似的技术,选择表述实用、设计简洁、使用简单的那个,此乃奥卡姆原理的推论也。(c与c++,j2ee与spring,azure与appengine)

WRK – windows操作系统源代码下载

从潘爱民的博客看到这东西的,潘爱民准备写一个windows内核方面的书,就提到了微软的WRK计划(Windows Research Kernel),这个计划是让高校师生以及亲密的合作商有一个机会能够了解和学习windows的内核代码,它的网站在这里:

http://www.microsoft.com/resources/sharedsource/windowsacademic/researchkernelkit.mspx

虽然有个下载连接,可是进去以后需要申请一个序列号,我已经申请了,但是不知道能不能拿到这个序列号。

WRK应该是包含了以下这些模块的代码,都是很实惠的,学习一下感觉挺有意义。而且WRK应该是可以编译运行的(需要验证),如果是这样,那就比光看代码更有用处了。

The Windows Research Kernel contains the sources for the core Windows (NTOS) kernel.

NTOS implements the basic OS functions for:

* Processes
* Threads
* Virtual memory and cache managers
* I/O management
* The registry
* Executive functions, such as the kernel heap and synchronization
* Object manager
* Local procedure call mechanism
* Security reference monitor
* Low-level CPU management (thread scheduling, Asynchronous and Deferred Procedure calls, interrupt/trap handling, exceptions)

既然是为了学习(先拿到再说以后学习的事),估计会有好心人放出来代码的。所以开动google,果然找到了线索。国内有个驱动开发网,里面有个链接就是谈论这个东西。

http://bbs.driverdevelop.com/read.php?tid-99380-fpage-0-toread–page-1.html

如果还没有找到,那就试着查查wrk.7z,大概是个8M左右的7z压缩文件。反正我最后是从某个网站上下载了。

http://groups.google.com/group/lua5/web/wrk.7z

说到windows源代码,不得不说一下前几年windows2000代码泄露事件,那是货真价实的程序源代码,而不是像WRK这样的科研作品,但是好像也没有人因此产生什么新的书籍,谈论的也只是一阵就悄无声息,估计是被微软的法律信吓到了。不是有个博客“刀枪blue”因为介绍Windows7就收到了微软的律师信么?(参见http://www.vista123.com/html/5478.html)

论起来操作系统的开放源代码,MacOSX、Linux家族、BSD家族、Solaris都早已经大规模的开放了源代码,他们都各有特点和长处,在大型服务器领域这些开源的操作系统应该占有率已经超过了微软的windows server。windows这样偷偷摸摸的开放代码,还需要什么身份认证之类,真是很小家子气,你说我瞧不起他们难道没有道理么?而且Linux内核设计、 Linux内核设计和代码阅读、Solaris内核设计都已经有大量的著作介绍,阅读难度要比看WRK简单的多。就我个人而言,我只想看看里面一些简单的函数或者代码,花个半天时间研究一两个,整体上不会去深度研究的,毕竟这个东西研究的深了对我而言也没什么价值,兴趣所至玩玩即可。

年前年后这几天

过年对于我们大人来说似乎越来越没意思,除了能多些时间陪陪家人之外,用萌萌的话说简直就是索然无味。

腊月二十四从娘家回来后因为身心疲惫,足足在床上躺了两天,跟本没有精神去办什么年货,两个人甚至连双新袜子都没买。幸亏宝宝有爷爷奶奶照看,俺们也是

照例回沟里过年。如果说没有年货好像还有点儿冤枉了,福字倒是买了几个,呵呵。

虽没办什么年货,卫生还是打扫了一下的。先是大洗一通,把衣物床单被罩之类都清洗干净;然后把所有房间的灯具都擦拭干净

,还把坏掉的灯泡给换了;第三是把浴室彻底刷洗一遍,算是做到亮亮堂堂过大年吧。前两个活帅哥都起了很大作用,洗衣机由他搬进去,拆卸灯具也全是他的功劳,之前我总说人家不做家务,其实是大大地冤枉了,人家一年到头地负责刷碗,我咋给忘了呢,人家经常往家里办置生活用品我咋给忽略了,人家偶尔还会主动洗衣服扫地……

初一帅哥大舅全家到沟里串门儿,我们着实热闹也辛苦了一番,初二本来帅哥奶奶家亲戚搞家庭聚会,我因为娘家的特殊情况没有参加,急匆匆赶回去帮妈妈招待初三的大批客人,大厨的名声也因此传将出去。可惜因为妈妈的不信任和唠叨俺一走神儿割破了手指,幸亏伤口不是很深,今天已经没有那么红肿了。初四到长辈们家里拜年一上午(正规行礼那种)下午简单招待小姨后跟妹妹送其回家,跟一老同学仓促见面后,大晚上地搭朋友的顺风车赶回大连,因为没有吃好睡好加上紧张劳累,在车上有些恶心想吐呢。

实在折腾瘦了,今早称一下只剩94斤,一冬天不但没长肉反倒掉了五六斤,唉!初五幺幺睡了一天,才觉得缓过来一些。今儿阳光明媚,俩人儿高高兴兴去沟里陪老人孩子直到晚上才回来,想想很久没记账了,在帅哥的撺掇下,草草写几句,明儿还要回沟里包饺子,因为是小孩儿的日子,呵呵,年说过去就过去了,除了折腾就是折腾,难怪妈妈总说过年最没意思,唉。

之前听同事说好像初八上班,到现在没消息简直太好了,希望能按照原计划二月中旬开工吧,!!!

互联网上一切皆有可能

十年前,ICQ是国际上最流行最火爆的IM(即时消息)客户端,没人能想到不到10年它就衰败了。

十年前,最火爆的电脑软件公司是微软,微软一出谁与争锋。而现在,apple和google的一言一行都会引人注意,他们的CEO要么年轻(佩奇)要么有着明星般的气质(乔布斯),他们的粉丝给apple公司和google建立专题博客,甚至一点点小变化都可以成为焦点。而微软,虽然盖茨大叔也经常被人拿来嘲笑,可是到了巴尔默,好像只剩下傻乎乎的推销员热情,微软完全成了小丑,微软的新闻基本上跟官司或者负面联系到一起。

十年前,没人想到网络游戏把单机游戏打得如此之惨,所有的游戏公司都在往网络发展,已经很久没有听说过单机游戏大作了。暗黑破坏神3,等它出来估计网络功能要远远超过单机玩了。

五年前,没人想到一个输入法会重新因为网络而又火爆起来,搜狐、谷歌、腾讯,谁都在开发自己的输入法,功能都很雷同,目的都是重新抢占用户的桌面,由桌面从而勾引到网络。

十年前,腾讯刚刚起步,还叫oicq,百度还未产生,现在他们已经是中国互联网的大哥大,而当时牛逼的国外公司,现在已经有不少已经倒掉,Yahoo甚至求着别人收购自己。

五年前,互联网上免费邮箱越来越小,收费电子信箱好像成了主流,收费成了大众的呼声,而google的gmail一出,大家都歇菜了,263以及大批数字域名邮箱都在五年后销声匿迹,免费的gmail甚至打败了不可一世的hotmail,微软在互联网上又败了一阵。

五年前,ebay中国(又叫易趣)跟阿里巴巴的淘宝战在一起,没人能预料到阿里巴巴胜利了,而且竟然还吃掉了yahoo中国。地头蛇又一次战胜了过江猛龙。(百度算第一次,腾讯战胜msn、icq算一次)

五年前,没人知道ipod会带领apple建立一个庞大的媒体帝国,成为事实上的标准,而现在,有谁知道微软也推出了zune来对抗苹果?甚至在微软经营多年的智能手机领域,苹果和google的纷纷出手,把微软这个老师傅打得是两眼乌青,最炫的是iphone或者gphone,而windows mobile,那是山寨机的最爱,档次高下立辨。微软又输一阵。

五年前,微软雄心勃勃要用Vista来占领用户的桌面,继承windows Xp的优良传统,而现如今,windows xp的退休年龄不断延迟,而新一代的windows7也开始出头,vista注定要跟windows me一样昙花一现。甚至windows7,也未必能挽回微软的颓势。

为什么呢?互联网上一切皆有可能,apple和google都在推出自己的浏览器,加上google的app还有苹果的me.com,谁还需要windows呢?

对于一个传统行业,互联网应用是否就不那么重要呢?未必。除了一些特殊要求实时性和安全的行业,B/S系统(浏览器服务器体系)或者RIA系统(丰富界面互联网应用)有着一些优良的特性,一个是不需要客户端配置或者应用下载,只要服务器更新就可以。另外现在互联网开发的应用方法已经非常成熟,可以根据不同需求选择多种开发方法。设想一下,新的开发体系可能是服务器+简单桌面程序+浏览器+手机终端或pc终端。配置一个硬件只需要使用浏览器即可。当然一些复杂应用还是可以使用桌面开发,但是已经不需要使用原来笨重的设计方法了。

一切皆有可能,网络上,新的传奇一直在发生。