-
2009-10-28
说书单2009.10.28 - [书山文海]
十月以来,自已通过网购或换购还真收了不少书,这里说说:
国内关于伟大领袖毛主席的传记实在让我无法提起兴致,但哈佛大学教授Ross Terrill的《毛泽东传》我早在其出版时就关注过,它可以让我弄清楚毛主席在一个西方人眼中的事实形象。昨天偶然发现该书在卓越网的卖价居然比其他网店(诸如当当网)便宜近十元,这个“便宜”怎能不捡^_^,遂在昨天下了订单。今天再一看卓越的定价居然涨到了35.8元,涨了仅5元,不过还是比其他网店要便宜。
说到传记,就不能不提到最近卖的很火一本传记书-前Google中国区负责人李开复的新书 《世界因你不同 李开复自传》。以前读过李开复的《做最好的自己》,感觉很不错,所以这次也这本新书列入了购物车中。同时我也的确想通过李开复的书或多或少的去了解一下像微软、Google这样的大公司的一些运作“内幕"^_^。
今天在中国移动积分商场看到一套丛书套装《世界艺术瑰宝》很是动心,遂让同事先帮忙用2170积分换购下来(我的积分还差100多)。丛书共六册,均为全彩印刷,主要留作日后陶冶艺术情操、提升品位、家庭教育和旅游规划之用。
“灵修”二字我也是第一次遇到,十月初网购的一本名为《新世界 灵性的觉醒》就是此类书籍。书的作者在西方很有名,同时也是一个怪人。书还没开始看(还未做好心理准备^_^),初略翻阅了一下,觉得有些难度,或多或少的会折腾一下你的大脑神经的。
《怪诞心理学》和《思维风暴》与“新世界”一书一起到手,前者是为了尝试了解一些大众心理学的内容,花了两个等晚点航班的时间段就翻阅完了;后者则纯粹为了让自己的大脑保持活跃的。
现在已是深秋近初冬季节,在暖气未供给之前,北方的屋内也都是冷冷的、湿湿的。捂在暖暖的被窝儿中看书那是何等的快哉。捧在我手中的这本《世界是平的》 自从07年从书刊批发市场买回后只看了一半,现在正以每天一章的速度阅读着,估计这周就能欣赏完这部三年前的名作了。如果再不快看,里面的一些观点可能就要过时了^_^。 -
计算机类图书"贵"就一个字,而且计算机领域知识更新快、新书迭出;程序员们为了跟上知识更新的步伐,不得不花上大把银子采购图书,久而久之,哪个程序员的家里没有几箱子书呢^_^。以前我买书的哲学也是非新书不买,但自从同事告诉我互动出版网有"二手书"可淘之后,我就渐渐喜欢上网上淘二手书了。
China-pub上所谓的"二手书",实际上和新书也没差多少,基本都在9成新,有些书可以说还是“崭新”的,但是这些二手书的价格却是出奇的低,一般网店新书都是7折以上,而这些二手书大多仅是四折。以前买一本书的价钱,现在基本上可以买上三本,这足以给你带来消费的冲动。不过目前只有三星以上的China-pub会员才有淘二手书的"权力";虽说我早早就在China-pub注册了会员,但因购书量少,至今还只是一星,所以网上淘书也只能通过同事那边的渠道。二手书中不乏好书,比如机械工业的"计算机科学丛书"系列、华章程序员书库系列等,关键在于“淘”。经常到China-pub的"二手书"区翻翻,说不定你就能找到你心仪已久的好书。
今天到手三本"二手书",分别是"计算理论导引"、"程序员密码学"和"Algorithms IN C, Graph algorithms",三本书加在一起才50元,要知道如果是新书的话,仅一本“Algorithms IN C”定价就50元。 -
现在我买书(一般指技术类,非技术类在书市买折扣比网上多)一般都是先到豆瓣网去'货比三家',哪家价格低我就在哪里买。上个月25号凌晨未睡,无意中看到"代码大全2"在卓越网卖价很低,到卓越一看,卓越亚马逊居然还免运费,正巧还想买那本经典的"人月神话",就在卓越下了单。
第二天,mail通知已发货,并给出到达预期是在3月3日左右。
我买的"人月神话"是2002年出的平装第二版,而不是去年那个32周年中文纪念版,后者略贵,关键是内容也没有什么变化。"代码大全2"已经出版很久了,一直没有买。刚出版时翻了翻,感觉很多内容自己不关心,最近又翻了翻其中文电子版,认真的读了几章后决定拿下,好书,先收藏起来,至于什么时候读,什么时候读完那是后话^_^。
下午,接到送货员的电话,赶紧下楼取货。"人月神话"由于出版年头已久,不免有些"沧桑感"(略有些发旧,估计库存时间很长了),而"代码大全2"则是崭新的,一共是94.1元,我说我没有零钱,送货员说他自带了零钱,给他100元,他找了我6元,说那一角钱就算了。看来卓越的服务还不错^_^。回到座位上突然想到下单时忘记开发票了,记忆中好像卓越没有提供发票选项,实在是记不得了,待下次下单时再重点关注一下。
卓越网在沈阳的送货上门服务范围是二环以内,由于公司在开发区,已经超出此范围了,我下单时就trick了一把,故意选择二环内的和平区,然后送货地址填写正确的地址,我是想看看到底卓越能否给我送到,还别说这招真灵。用白云大妈的话来讲:真是太有才了!^_^ -
也许有人会笑话我,但这是事实,前天我才收到我第一次网购的两本书。在这个互联网发达的年代,这个"第一次"未免有些落伍了。其实不在网上买书也是有原因的,现在的书店也是打折很多的,还有很多与公司有协议的,拿着工卡就打更多折扣,特别是计算机图书,社科类的书倒是没有这么大折扣。
这次是从互动出版网(china-pub)买的书。互通出版网成立于2000年7月,我也是那个时间进入大学学习并开始接触计算机和网络的,我也是那时注册的出版网的会员的,也许还属于从未买过书的元老级会员呢。
在大上周日,在网上发现china-pub的"Algorithm in C"这本书的英文版居然6折出售,要知道这本书在书店基本已经绝迹了。顿时产生了网购的念头。网购一单买一本是不划算的,再寻觅一本吧。在数学书店中,我发现了排在销售榜第一位的"什么是数学"一书,我一直以来都想买一本科普性质的数学书。而"什么是数学"恰是一本科普性质的,但是也不乏深度的书,属于数学爱好者和专业人员皆宜的书。这本书第一版诞生
于上个世纪中旬,几十年来一直长盛不衰,已经成为世界公认的经典数学科普读物了。该书第一版作者R·柯朗(Richard Courant)是20世纪杰出的数学家,他的"数学物理方程"和"微积分学"也是学科内公认的杰出代表作。相信看这样大师做的书一定是会有思想性的收获的,关键是能坚持读下去,估计有一定难度,呵呵。拿下。另外还有两本著名数学科普书"从一到无穷大:科学中的事实和臆测"和"啊哈,灵机一动"也是值得收入囊中的,下次吧,书要一本一本看,贪多嚼不烂啊。
C算法"Algorithm in C"这本书也是不错的,被作为美国很多名校的CS专业教材或参考资料,书中以介绍和实践为主,并不是教你如何进行算法设计的书(千万别买错了),但平时放一本这样的书在身边,可以作为参考书使用。 -
2007-11-09
读'代码修改艺术',可观其大略 - [书山文海]
早在几个月前就从网上下载到了"Working Effectively With Legacy Code"这本书的E版,之所以下这本书是因为看到了"Legacy Code"这两个单词了,说实话当时我并不知晓这本书的价值,只是想当然的认为:这本书可能会有助我改善我所从事的项目中的"Legacy Code"。早在上个月去逛书店时,就看到了书架上的这本"修改代码的艺术",遗憾的是没有给予足够关注。在最近看到这本书译者刘未鹏的博客以及Dreamhead关于这本书的评价后,才又从电脑中找到这本书开始翻看。从与这本书几次"擦身而过"的经历来看,自己识书的能力实在是差劲。
我需要这本书,首先是因为我目前的项目中就有大量大量的"Legacy Code",所以我已经开始迫不及待的想看完这本书了。但是翻看一些后,我觉得作为使用C的开发者独观其大略即可。为什么呢?书中代码多以面向对象的语言Java或C++作为例子代码,很多细节对使用结构化语言的开发者意义不大。毕竟结构化的思想与面向对象的思想有着较大的差别。
作者提出来的修改软件的四个起因基本上大家都是应该认同的:
(1) 添加新特性;
(2) 修正bug;
(3) 改善设计;
(4) 优化资源使用。
同时作者又给出了为了减少修改行为带来的风险而应该考虑的三个问题:
(1) 我们要进行哪些修改?
(2) 我们如何得知已经正确地完成了修改?
(3) 我们如何得知没有破坏任何(既有的)东西?
在第一部分第二章的最后作者给出了一个解决这些问题的算法:
以下算法可以用于对遗留代码基进行修改:
(1) 确定改动点;
(2) 找出测试点;
(3) 解依赖;
(4) 编写测试;
(5) 修改、重构。
看完这些我觉得就可以直接进入第二部分了,作者给出了细致的、具体的面对不同情形应该如何去做。建议:在读每一个章节之前先回顾一下自己是否遇到过类似情形,自己当时是如何做的,当时的做法是否有改善的地方,哪些是值得发扬广大的,哪些是应该摒弃的,如果是现在我还会如何去做?之后,再看看Michael Feathers是如何去做的,这样效果应该是很好的。有如下这些情形值得我们去考虑:
(1) I Don't Have Much Time and I Have to Change It 时间紧迫,但必须修改
(2) It Takes Forever to Make a Change 漫长的修改
(3) How Do I Add a Feature? 添加特性
(4) I Can't Get This Class into a Test Harness 无法将类放入测试用具中
(5) I Can't Run This Method in a Test Harness 无法在测试用具中运行方法
(6) I Need to Make a Change. What Methods Should I Test? 修改时应当测试哪些方法
(7) I Need to Make Many Changes in One Area. Do I Have to Break Dependencies for All the Classes Involved? 在同一地进行多处修改,是否应该将相关的所有类都解依赖
(8) I Need to Make a Change, but I Don't Know What Tests to Write 修改时应该怎样写测试
(9) Dependencies on Libraries Are Killing Me 棘手的库依赖问题
(10) My Application Is All API Calls 到处都是API调用
(11) I Don't Understand the Code Well Enough to Change It 对代码的理解不足
(12) My Application Has No Structure 应用毫无结构可言
(13) My Test Code Is in the Way 测试代码碍手碍脚
(14) My Project Is Not Object Oriented. How Do I Make Safe Changes? 对非面向对象的项目,如何安全地对它进行修改
(15) This Class Is Too Big and I Don't Want It to Get Any Bigger 处理大类
(16) I'm Changing the Same Code All Over the Place 需要修改大量相同的代码
(17) I Need to Change a Monster Method and I Can't Write Tests for It 要修改一个巨型方法,却没法为它编写测试
(18) How Do I Know That I'm Not Breaking Anything? 降低修改的风险
(19) We Feel Overwhelmed. It Isn't Going to Get Any Better 当你感到绝望时
当你看到这些具体情形的列表,眼前是否浮现出是曾相识的经历呢?"代码修改艺术"应该说是一本实用主义的书,如果你是使用面向对象语言的程序员,那你很幸运,建议你将一本"修改代码的艺术"放在你的办工桌旁,随时翻看、思考和领悟;如果你和我一样是结构化语言的使用者,也没有关系,观其大略,品其思想,细读你兴致之所在。
以上的书中文字的中文翻译部分摘自于刘未鹏的中文译文。 -
2006-12-26
'Write Great Code'书中的一处错误 - [书山文海]
今天看中文版'Write Great Code'第3.4.4小节的时候发现作者的一处笔误,估计应该是笔误。
第3.4.4小节讲的是如何使用'位与'创建一个模-n的计数器(modulo-n counters),在其举例中,作者意图创建一个模-32的计数器,按照作者的理论,建立一个模-32的计数器,需要这样一个'位与掩码',n = 2^5-1 = 31,31的十六进制应该是0x1f,而作者一时失误将之写成了0x3f(63d),显然这是个模-64的计数器。中文版的翻译显然也没有发现这处笔误,这里提醒大家看书时注意一下^_^。我已经在chinapub上提交了勘误。
-
2006-12-23
2006岁末期待·Harry Potter and the Deathly Hallows - [书山文海]
-
2006-12-22
从本源看世界-读'Write Great Code' - [书山文海]
以前曾经说过自己并非计算机科班出身。想想自己在大学时的学习过程未免有些底气不足,记得当时一直坚持去旁听计算机专业的课,但是鉴于本专业老师的点名和课堂作业,自己未免耽误了很多节课,弄得自己学的很不系统,效果不是很好。工作后一直从事应用级的开发,对计算机方面基础的本源性的知识也逐渐陌生起来。但我是那种知其然也要知其所以然的人,这两年也不间断的买了不少讲解计算机底层知识的书,目的是让那些计算机本源性的东西在我脑袋里逐渐清晰了起来。这不又一本好书问世了-'Write Great Code'第一卷,我很早就已经下载了其英文版,只是没来得急看,这两天看了其中几章,发现很适合我的口味。
在我眼中每个领域的大师级人物都是知其领域本源的人,他们把本领域的知识融汇贯通,而且大多时候我们在聆听大师级人物的讲解时都有一种豁然开朗的感觉,那其实就是因为他的知识体系很成形,他们会从本源去讲解,从最简单的原始状态去讲解,这样听起来印象深刻,收获自然颇丰。
'Write Great Code'(中文名:编程卓越之道)一系书的作者是Randall Hyde,他同时也是'The Art of Assembly Language'的作者。'The Art of Assembly Language'一书算是汇编领域的佼佼者了,虽然我没看过^_^,不过网友的评价也是很重肯的哟。当初刚刚下载'Write Great Code' Vol1时曾经浏览一遍目录,'Numeric Representation','Binary Arithmetic and Bit Operations'等这些章节的名字让我心动,我就喜欢这样的书,而且和一般的教材性质的计算机组织结构或者计算机系统结构相比,这本书是从程序员角度来讲的,更加适合我们这些人的口味。这本书所讲解的知识层次就在我们工作层次的下一层,对于想挖掘知识本源的我来说再合适不过了,东西要一点一点的吃,你说是不是^_^。
我没有从开篇'Numeric Representation'这张开始读,我直接跳到了第六章'Memory Organization and Access',因为前不久又对内存对齐等有新的认识,所以我也希望通过这章的阅读知道更多的东西,让我脑子中的知识点'串'起来。这本书没有令我失望,本章第一节关于三大总线的介绍就格外精彩:
The system bus connects the various components of a VNA machine.
-> A bus is a collection of wires on which electrical signals pass between components of the system.
-> Most CPUs have three major buses: the address bus, the data bus, and the control bus.
-> CPUs use the data bus to shuffle data between the various components in a computer system.
-> The data bus on an 80x86 family processor transfers information between a particular memory location or I/O device and the CPU. The only question is, 'Which memory location or I/O device?' The address bus answers that question.
-> The CPU uses the data bus to move data between itself and memory. This prompts the question, 'How does the system know whether it is sending or receiving data?' Well, the system uses two lines on the control bus, read and write, to determine the data flow direction (CPU to memory, or memory to CPU).几句'关键意义'的句子循序渐进的把三大总线的用途描绘的淋漓尽致,其思路和方式完全符合认知的过程,同时让你的大脑里马上形成一个框架,带着这个框架再去读相关细节,只能让你越读越兴奋。
第6.2小节讲的是物理内存的组织以及CPU如何访问内存,但是你看完后再细致品味,实际上这节的内容完全可以作为'为什么要进行Data Alignment'的标准讲义,和我上次在'三谈内存对齐-背后的故事'一文中说的同出一辙,而且更加细致,让我对内存这块的内幕了解的更加透彻。
第6.3小节讲的则是'字节序'问题,讲解了'Big-endian'和'Little-endian'的由来,最后作者通过一个很实用的例子形象的说明了字节序带来的影响。
第***节和6.5节讲的略微有些深了,要细看才行,最好对更底层有所了解,可以参照别的书籍一起学。
我刚刚读到第7章-'Composite Data Types and Memory Objects',该章每一小节针对一种复合数据类型做深入分析,精彩在后头,我正准备继续呢,实在忍不住了,写下此篇,好让更多同仁知道有这么一本书,早读早受益,明天周末去书店买本中文版,坐在床上读更舒服。
从本源看世界,你会发现另一番天地。
-
经过中国各大计算机图书出版社的多年的努力,国内渐渐进入无'新书'可读的状态,记得前些年各种以前外国出版的经典书籍纷纷进入国内,让像我这样的读者们着实过了把瘾。从今年7月份以来就基本上在市面上找不到能吸引我的计算机书籍了。
无'新书'可读,不代表无'书'可读,至少还可以温故而知新吗:),我的书架上还有一些买来许久仍然仅仅停留在序言阶段或者第一、二章的书。前不久在某学院出差时恰逢大四学生毕业,让我以'极低'的价格淘来一本'保罗.萨缪艾尔'的'macroeconomic',说实话,自己对经济领域的东西一窍不通,但是爱看书的我早已萌生了学学经济学的想法,记得有一期'程序员'杂志曾经转载过一篇老外的文章,他就建议在校的大学生都要学习学习经济学,当时他仅仅提到'microeconomic'。至于为什么要了解一些经济学常识,大家都亲身体会过生活必需品涨价,汽油涨价以及高高在上的房价给我们带来的痛苦,但是很多人都不明白其中的缘由,我是这样想的:了解一些基础的经济学常识,也许能想通一些,更好的指导自己的生活。不过那么厚厚一本书,也真需要一段时间才能览完,想法是好的,不知道能不能坚持下去:)。
纵观目前的计算机图书市场,真正能让我动心的且未出版的书,我一时还真想不起来有几本。随着年龄的增长,经验的丰富,自己的读书圈也会越来越窄,毕竟大部分市场上的书都是趋平庸的,也许目前仅仅能从一些老的经典的书中才能挖掘些有价值的知识吧。
期待着好书降临。
-
2006-05-18
我读书的TIMELINE - [书山文海]
在'Blog on 27th Floor'的blog上看到一篇名为'读书人的timeline'的文章,文章中列出了各个年龄段读的书,我也觉得这是一个很有意思的话题,不妨也回顾一下自己这20几年曾经读过的书,模仿这种TimeLine格式列出来大家瞧瞧^_^。
我首先声明自己不是一个博览群书的人,但是我喜欢读书。这里的'书'指的是非专业类的书籍。小的时候是读书没有什么方向,长大了各种应试教育的功课压在身上,无暇读书;大学后则偏向专业书籍;工作后有了'博览群书的计划',但又迫于工作压力,进度并不明显,呵呵。
列出我的各个年龄段读过的书:
0 - 3岁 看图识字、听姥姥讲'一个屁咯嘣嘣,两个屁列个缝,三个屁连根拔'的故事(这应该是一个南方的故事,具体的情节我已经记不清了,但是这个故事的名字我却印象深刻)、听妈妈说汉字。4 - 6岁 看小人书:三国演义、霍元甲...;看童话故事:'阿里巴巴与四十大盗'、'小红帽'、'海的女儿'、'胡桃夹子';看好孩子画报:最喜欢小猪呼噜噜;看十万个为什么(虽然不是很懂);看动画书:黑猫警长、哪吒闹海、大闹天宫、超人...。
7 - 12岁(小学) 继续看'十万个为什么'(终于懂得一些道理)、看期刊:少年科学画报、新少年(在校生必须订阅的);看漫画:圣斗士星矢、机器猫; 看电视剧书:恐龙特急克塞号、变形金刚、百变雄狮。
13 - 15岁(初中) 学业繁重,以漫画:七龙珠为主要精神食粮,辅助幽游白书、乱马1/2。
16 - 18岁(高中) 开始接触大部头小说,包括中国古典名著、武侠小说和一些当代著名小说(似乎有点晚^_^)。当代小说:'平凡的世界'、'东方';武侠小说:以金庸系列的为主:倚天屠龙记、天龙八部、神雕侠侣、笑傲江湖;古典名著:红楼梦(没怎么读懂)、西游记(没读全)、水浒传;名人出书:岁月随想(赵忠祥)。
19 - 22岁(大学) 看专业的书籍较多,不时地也看非专业的书籍以作消遣。看漫画:棋魂(大学里唯一看得上瘾的漫画);小说:海岩作品 '永不名目'、'玉观音';科普读物:时间简史;网络小说:第一次亲密接触;外国小说:挪威的森林
22 - 至今(工作) 除了晚上和周末,就没什么自由支配时间,专业书籍占了大部分读书时间。其余时间看包括小说:达芬奇密码,哈利波特1-6,亮剑,深牢大狱(海岩),高效能人士的七种习惯,准备决定一切等。自己制定了今后的读书计划,只不过进度缓慢^_^。











