Code complete 2th,代码大全第二版的中文书已经出来了

公司很早就买了这本书的英文版,硬皮的,非常厚实稳重的手感,无论如何不能便宜到100块人民币以内的样子。可惜感觉看上去有点吃力(是我水平不够啊),也就没有继续读下去,准备拿中文版看。不过我还是先等等,最近这些译者的态度和水平非常不咋地,比如我购买的《Joel on software》祖尔谈软件的中文版本,实在不容易读,那可都是中文阿。

CC2e:《代码大全(第2版)》集萃(陈硕)

CC2e:《代码大全(第2版)》集萃

《代码大全(第 2 版)》是一本写得很有意思的书,既有生动的比喻,偶尔也有夸张的表达,另外作者还时不时开开玩笑,读起来一点也不枯燥。以下是从中摘录的一些有趣的话。这个版本略有删节,等书出版之后,我会扩充这里的内容。

* 首先为人编写程序,其次才是为机器。

* 傻子都会写让计算机理解的代码;而优秀程序员写的是人能看懂的代码。(Martin Fowler)

* 好习惯很重要,因为程序员做的大部分事情都是无意识完成的。

* goto的标号应完全大写并对齐行首,还应包含编程者的名字、家庭电话号码和信用卡号。(Abdul Nizar)

* 编码时要把维护你程序的人想象成知道你住址的有严重暴力倾向的精神病人。(佚名)

* 有两种设计软件的方式:一种方法是让设计非常简单,看上去明显没有缺陷;另一种方法是让设计非常复杂,看上去没有明显的缺陷。(C. A. R Hoare)
* 忽略编译器所提示的程序错误太过草率,关掉编译器的警告功能则无异于掩耳盗铃。关掉编译器的警告功能仅仅意味着你看不到错误,并不表示这些错误就此消失,正如同小孩闭上眼睛并不能让面前的父母从此消失一样。

* 想通过更多测试来改善软件的质量,就跟妄想通过更频繁的称体重来减肥一样。(编按:作者并不是说测试无用,而是说不能仅仅依靠测试。)

* 心理取向对调试有什么影响?首先,它证明了养成良好的编程习惯的重要性。规范的格式、恰当的注释、良好的变量和子程序命名方式,以及其他编程风格要素都有助于构建编程的良好基础。在这样的基础之上,可能发生的错误将因为与众不同而变得格外引人注目。

* 交互式调试器极好地代表了那些程序员们并不需要的调试器——它鼓励程序员采用随机试验查找错误的方法,而不是对程序进行系统的分析。同时,这样的工具也给了那些几乎没有资格从事细致的程序设计的人滥竽充数的机会。(Harlan Mills)

* 聪明不像是个人性格的一个方面,也确实不是。碰巧的是,高智商与优秀程序员之间并无太密切的联系。

* 懒惰这种品性能促使你努力减少整体花销;使你编写节省劳力的程序,别人也会觉得这些程序有用;使你编些说明,免得人们老是问你。(Larry Wall)

* 你可能某天从上午8点工作到下午2点,就感到累得不行了。但你还是坚持下来,又从下午2点拼命干到5点。之后的一周时间,你却在修改这三小时里写出来的东西。

* 有效编程中最重要的工作是思考,而人思考时通常不会看上去很忙。如果和我共事的程序员总是忙个不停,我会认为他并非优秀的程序员,因为他没用最有价值的工具——自己的脑袋。

* “我们需要有五年以上C语言编程经验的程序员”就是愚蠢的说法。如果程序员过了前一两年还没有学好C语言,那么再加三年也没什么意义。

* 调试代码的难度是首次编写这些代码的两倍。因此,如果你在编写代码的时候就已经发挥了全部聪明才智,那么按照常理,你将无法凭借自己的智慧去调试这些代码。(Brian Kernighan)

* “这个循环好像有问题。可能是一个off-by-one错误。让我先来写一个-1试试。哦,这样不行。那么我就写个+1试试。啊哈,看来程序正常工作了。我可以宣布问题搞定了。”——随机地修改代码,直到你的代码看起来能工作,这就是所谓的“voodoo programming(巫毒编程)”。

* 每个团队里都也许有这样一个程序员,他总会遇到无穷的问题:不听话的机器,奇怪的编译器错误,月圆时才会出现的编程语言的隐藏缺陷,失效的数据,忘记做的重要改动,一个不能正常保存程序的疯狂的编辑器——你怎么描述这种行为好呢。这就是“迷信式编程(programming by superstition)”。

最后谈一点,数学对编程很重要吗?纵观《代码大全》,作者谈了影响软件质量的方方面面,却*没有*说过程序员的数学功底是一个重要的影响因素。对程序员而言,掌握数学知识也不是必备技能。就我看来,数学不是决定性因素,甚至算不上重要因素。我没有听说过哪个软件项目因为开发人员数学功底不好而失败,或者因为在数学方面的不足使得质量低下、bug 丛生。

首先,数学是一门很大的学科,有非常多的分支。如果认为它很重要,必需列出到底其中哪些知识会影响软件开发,这样才有指导意义。我个人感觉,项目开发直接用到的数学知识很少。而且如果真的要用到,涉及的代码比例也不会很大,那么整个项目组里有一两个人(不一定是程序员)精通就行了(借助封装+抽象,让它是个黑盒子)。

与其强调抽象的“数学知识”,不如强调具体的“领域知识”。有些领域知识会涉及一些数学,比如我熟悉的有数值计算、电路分析、图像处理、信号处理等。不过这些数学知识都是针对这个领域的,而且经过领域知识的封装。有些领域几乎不涉及数学(前提是你不要把所有与思考相关的都归入“数学”),比如数字电路设计、体育比赛记分、以及很多常见的软件项目(考勤、系统工具、网站)。这些领域也都有各自的领域知识,不掌握这些知识肯定没法写软件,不过跟数学好像没什么关系。

总而言之,相比起程序员的其他职业素养(求知欲、诚实、交流能力、懒惰、良好的习惯等等),“数学知识”实在排不上号。

ps. 我是这本书的 4 名译者之一,我不可能向各位提供电子版。

2005年第16届Jolt产品杰出奖

原文在此 http://www.sdmagazine.com/jolts/2006index.html

SDMagazine每年都要评比一批书籍和软件方面的奖,基本上是客观真实可信的。书籍方面的得奖者也是我购买计算机书的一个有力参考。

让我们看看2005年第16届的得奖人都是谁,有不少不了解不熟悉的,不加说明了,有知道或者使用的朋友可以留言,我会加以增补。

通用书籍方面是Ken Pugh的Prefactoring获得大奖,O’Reilly出版社出品,估计今年就会有引进了。对此书内容不了解,不多评论,但从字面上应该是与重构有一定的联系。

技术书籍是Agile Web Development with Rails获得Jolt大奖,Ruby on Rails的强劲势头一点没有减弱。很佩服小日本,能搞出ruby这种语言。

企业级项目管理软件由WelCom的WelcomRisk 2.6获得大奖,竟然打败了微软努力多年的Team System。中文介绍在这里能看到http://www.ntweike.com/products/WelcomRisk.php

数据库产品和工具由微软SQL Server2005获得。它的对手有Mysql5.0,Berkeley DB4.4,完全不是一个数量级的对手,胜之不武啊。

缺陷跟踪配置管理方面的软件,是Perforce的Perforce SCM 2005获奖,竞争对手有Joel on software的公司开发的FogBugz。这个不熟悉。

设计与建模工具得奖者Lattix的Lattix LDM 2.0。竞争对手里有Borland的Together2006 for Eclipse。

开发环境得奖者是微软的Visual Studio Team System 2005,努力多年的成果。竞争对手比较强,Eclipse和IntelliJ IDEA 5.0都是java开发环境,Komodo 3.5是perl python开发环境。

库、框架及组件的得奖者是微软的.NET Framework 2.0,也是多年耕耘的结果,更加成熟有力。竞争对手里有QT4.0,也就是KDE的底层环境,还有Java方面的Spring Framework 1.2.6。

移动开发工具由Crossfire 5.6得奖,公司是AppForge。竞争对手有Nokia的Carbide(不熟悉)和Adobe的Flash Lite 2.0,以及NetBean4.1。Flash Lite最近很火。

质量项目管理由Rally Software Development的Rally 5.6获得大奖。竞争对手知道Compuware,但产品都不太熟悉。

安全工具得奖者是Elemental的Elemental Compliance System 1.4。

测试工具得奖者是VMware,产品是VMTN Subscription 2005,没有听说过。

应用软件方面由TechSmith的Camtasia Studio 3.0得奖,好像是一个视频捕捉软件。竞争对手有Compuware的evPartner Studio 8,也就是BoundChecker等产品的集合版本。

网络开发工具大奖又是ROR,得奖产品是Rails 1.0,真是如同狂风扫落叶啊,一个个人开发的软件框架如此的受欢迎,估计开发者自己也没有想到。竞争对手都是大公司,Jboss的Application Server4x(J2EE),Adobe的的Macromedia Studio8 (Flash,Dreamweaver,Cold Fusion),Zend的Studio Enterprise 5(php)。

最后就是我们荣誉堂的得奖者,当当当,它就是微软的Visual Studio Professional Edition。

--------------------------------------------

从以上的获奖名单可以看出来,微软今年有一定的上升势头,主要就是靠着Team System Visual Studio和SQLSERVER2005这两个产品拿奖。但是最近几年,Java的强势在Jolt里面体现的非常明显。比如2005年,技术类书籍就是由Better, Faster, Lighter Java拿走大奖,竞争对手三个里面,也有两本是关于java的,另一个是C++ code standard,没有DotNet的。2005年的开发环境IDE大奖由Eclipse获得,也是关于java。类库组件方面由Hibernate 2.1得奖,也是java。移动开发是由J2ME Wireless Toolkit 2.2得奖。而微软自己没有什么得奖的,这可能也跟评委多数是喜欢Unix有关系吧,这是我瞎猜的。

另外附上近几年荣誉堂的得奖名单,
2005 Visual Studio Professional Edition
2004 Installshield by Macrovision
2003 Dreamweaver by Macromedia
2002 MSDN by Microsoft
2001 Borland
2000 Visual SlickEdit by MicroEdge
1999 O’Reilly and Associates
1998 Visio by Visio
1997 Visual Basic by Microsoft
1996 BoundsChecker by NuMega

韩剧《宫》剧情猜测

终于看到了21集,不得不感慨,这么滥俗的故事竟然让韩国哥们拍了二十多集。现在几个人还是整天弄得生离死别的样子。

剧里面的大反派毫无疑问应该是阴谋主义者、原来的皇太子妃xx,名字我也叫不出,不过她在剧里面的阴险已经表现的比较充分了。昨天突然想起一个推想很有意思,就是原来的皇太子是怎么死的。

线索一,现在的皇帝,也就是原来的第二顺位继承人,与大哥(也就是死去的皇太子)的妻子xx曾经有一腿,感情相当的深。

线索二,出事这天,应该是第二顺位继承人,也就是现在地皇帝坐在出事的车上。但是临时有事,变成了大哥顶替弟弟。

线索三,皇帝对大君律相当的有好感,就好像对待自己的私生子一样。

结论比较明显,过去的皇太子是一个替死鬼,原来应该出事的是第二顺位继承人,而这个车祸,也许就是xx有意的。

嘿嘿,瞎扯了。