作  者: (美)罗森伯格 著,韩磊 译
出 版 社: 电子工业出版社
  • 出版时间: 2008-6-1
  • 字  数: 274000
  • 版  次: 1
  • 页  数: 336
  • 印刷时间: 2008-6-1
  • 开  本: 16开
  • 印  次: 1
  • 纸  张: 胶版纸
  • I S B N : 9787121066795
  • 包  装: 平装
定价:¥49.00 当当价:¥36.80 折扣:75折 节省:¥12.20
送积分:368 积分说明
 共有商品评论0查看评论摘要

最佳拍档

梦断代码

与此 1 件拍档商品一同购买

总定价:¥91.00

总当当价:¥70.40
请至少保留一件商品。

编辑推荐

两打程序员,3年时间,4732个bug,只为打造超卓软件。

内容简介

软件乃是人类自以为最有把握,实则最难掌控的技术。本书作者罗森伯格对OSAF主持的Chandler项目进行田野调查,跟踪经年,试图借由Chandler的开发过程揭示软件开发中的一些根本性大问题。
  本书是讲一事,也是讲百千事;是写一软件,也是写百千软件;是写一群人,也是写百千万人。任何一个在软件领域稍有经验的技术人员看完本书,必掩卷长叹:做软件难。

作者简介

Scott Rosenberg:作家,编辑,1981年毕业于哈佛大学,1995年与他人共同创办了Salon网站,此后担任其首席技术编辑达数年之久,并负责技术工作。从1986到1995年,一直为San Francisco Examiner写作,最初写剧评,后来又写影评和“数字文化”专栏。所写的剧评曾于1989年获George Jean Nathan奖。在进入Examiner之前,一直为Boston Phoenix写剧评、影评和书评。个人博客地址为www.wordyard.com。

目录

第0章 软件时间
第1章 死定了[2003年7月]
第2章 Agenda之魂[1968~2001年]
第3章 原型与Python[2001~2002年11月]
第4章 乐高王国[2002年11月~2003年8月]
第5章 管束奇客和狗[2003年4月~8月]
第6章 完成设计方案[2003年7月~11月]
第7章 细节视图[2004年1月~5月]
第8章 白板上的即时贴[2004年6月~10月]
第9章 方法
第10章 工程师和艺术家
第11章 通往狗食版之路[2004年11月~2005年11月]
尾声 长赌[2005~2029年及以后]
译后记
附录A 专有名词对译表

媒体评论

“每个有志于开发畅销产品的程序员都值得耐心去品味这个故事。”
                 —— CSDN总裁 蒋涛
  “《梦断代码》是一本代码史。”
                —— DoNews制作人,千橡集团副总裁 刘韧
  “《梦断代码》乃承Tracy Kidder《新机器灵魂》血脉之初见者,融技术眼界与叙事功夫于一炉,实多年未见之奇书。读毕,当可了解软件术士辈之所为。”
         —— 詹姆士·菲罗斯(James Fallows),《大西洋月刊》
  “技术人员爱把复杂的问题形容为‘非凡’。司各特·罗森伯格选取了极度非凡的主题,并使之浅显易懂。他盛赞写代码的人,但也坦承他们如常人般复杂而有缺陷。《梦断代码》实在是一流的报道和著作。”
         —— 丹·基尔默(Dan Gillmor),公民媒体中心主席及《自媒体(We the Media)》作者
  “《梦断代码》探索了编程如何鼓舞和破坏人类对新工具的创造,既令人迷醉,又教人冷静。本书文笔优美,专为对创造与革新之根源感兴趣者——无论是开发者还是其他人——所写。”
         —— 史蒂芬·强森(Steven Johnson),《开机(Everything Bad Is Good for You)》及《幽灵地图(the Ghost Map)》作者
  “司各特·罗森伯格放胆踏入非程序员未敢涉足之地:那人类想象苦苦变身为代码的旋风中央。在《梦断代码中》,他华丽地将一家初创软件公司的故事与我们理顺编程过程的(无穷尽)努力结合起来讲述。”
         —— 艾伦·乌曼(Ellen Ullman),《走近机器(Close to the Machine)》作者

书摘插图

  第0章:软件时间
  那是1975年的冬天。我在终端机房中俯身敲击一台电传打字机,每打完一行,那笨重的机头就会摇头晃脑猛然撞回最左边,开始新的一行。我从几个小时前开始输入一行行黑代码,忘记了时间流逝,全然不知已是午夜时分。看门人已经关闭廊灯。我并没有得到许可在纽约大学物理系大楼中流连忘返、使用向高中学生免费发放的计算机账号。不过,倒也无人责难。
  那时我年方十五,正迷恋于一个叫做Sumer的游戏,在游戏中,我管理着新月沃土上一座古代城邦。今天的电脑游戏玩家也许会嘲笑其稚嫩:它在一卷纸上逐行打印出大写字母,报告游戏进程。玩家运筹帷幄,分配食用和留种的谷物,然后程序就会告知城邦每年的发展情况。“汉谟拉比陛下,”程序像一个诚惶诚恐的宰相般报告说,“微臣伏启圣鉴……”
  没过几天,我就已经把游戏玩了个遍。但是,和现在令青少年着迷的大多数游戏不同,Sumer可以让玩家打补丁。谁都能够窥探其内部运行机制:该游戏只是向计算机发出的一系列简单指令,这些指令存储于一卷多行八孔纸带上。(电传打字机旁的塑料盘中堆积的纸带,几乎带来和游戏一样多的乐趣。)纸带像地下出版物一般在朋友间流传共享。只要花几个钟头学点简单的Basic语言,改游戏就会和玩游戏一样容易:将纸带上的指令装载到计算机,然后开始往程序里加代码。
  Sumer是个空白画板——历史只是个轮廓,随时准备着让少年的梦想来浇筑。我和朋友们掌握了它简单的构造,开始往里加东西。让玩家可以选择不同的宗教信仰吧!偶尔来一次腺鼠疫,会发生什么事?蛮族入侵者应该很酷。嘿,搞几具弹石机如何?
  那天晚上,我倾力于改造游戏中民众造反模式的设计。Sumer只提供粗糙的起义模式;如果你干得太差,人民就会起来推翻你。(Sumer的原作者是个乐天派。)我认为,游戏中的起义模式应该多种多样,所以就创建了一些子程序补丁——让Sumer陷入内战,或是引入一个想要争取合法地位的反对派政府。
  我不在乎干到多晚。F线地铁整夜运行,可以把我带回位于皇后区的家。一定得重新设计游戏中的革命模式!
  四分之一世纪后,2000年五月,我坐在旧金山的一间办公室里,眼睁睁紧盯着一台现代计算机屏幕(高解析度、数百万种颜色)。喝剩的咖啡纸杯胡乱摆在键盘边上。正是凌晨5点。
  那时我四十岁,是在线杂志Salon的创始人和总编,此外还负责一个软件开发项目。我们花了几个月精心规划,希望给网站增加动态特性,使之彻底改观。然而,现在我却眼看着项目濒临绝境。
  在没日没夜苦干了几个星期之后,主力程序员终于宣告工作完成,自己要飞往夏威夷,度一个全家盼望已久的假期。剩下他的老板,技术副总裁查德·迪克森(Chad Dickerson),独自琢磨为什么存储网站文章的数据库就是不肯与负责显示页面的程序对接。查德两个通宵没合眼,努力修复问题。若是不然,到周一早上,我们的两百万读者就只能看到网站上没更新过的旧闻了。
  难道我们以前没做过软件吗?
  做过。
  是没有全面测试吗?
  显然不太充分。
  怎么会搞得一塌糊涂?
  鬼晓得。
  我吃完了自动售货机里最后一袋饼干,徘徊又等待,却仍是毫无指望。时间还多。还有时间去读那位以新项目的名义准备香槟加蛋糕聚会的倒霉同事的邮件,回复他说:“或者咱们再等等吧。”还有时间去体会身陷困境孤立无援的感受,然后琢磨将系统的中心服务器命名为“卡夫卡”是不是个好主意。
  大约早晨9点,我们终于发布了站点“改进版”的第一个版本。又是周一清晨,其他同事相继出现在办公室,他们过了好一会儿才知道,原来我们六个人昨夜压根儿就没回家睡觉。
  又过了几星期,程序员们修复了最严重的问题,软件运行趋于平稳。但后来每每听说某公司打算“升级其软件平台”、重新搭建一套大型系统时,我总不免暗自担心。
  20世纪90年代科技行业的兴盛,给我们带来了“互联网时间”的概念。对该短语含义的理解见仁见智,但多指“快速”之意。数字时代的新时间机制下,一切皆有可能发生——技术产生、公司创立、创造财富——而且速度惊人。这意味着你没时间做到尽善尽美——无须担心,因为别人也一样。
  随着投资潮退,“互联网时间”这个短语也风头尽失,很快被其他时髦词所代替。但新词掮客们的确一语中的。在做软件的过程当中,时间似乎确实时快时慢。如果一切顺利,你会沉浸在心理学家称之为“流逝”的状态中,全然忘记了时间。如果事有不谐,你又会陷入困境,四顾茫然、举步维艰。无论是哪种情况,时钟都被抛诸脑后。你用的是软件时间。
  在使用一门新编程语言时,程序员的第一个程序通常是“Hello World”——输入一系列代码,召唤计算机,命令它打印出这两个词,向主人致敬。在Sumer游戏所用的Basic语言中,这个程序像这样:
10 PRINT “HELLO WORLD!”
  20 STOP
  “Hello World”程序一无所用,但足可蛊惑人心;它鼓励新手,唤起每个程序员心中乐观的一面。“既然能叫它说话,就能让它做任何事!”计算机协会(The Association for Computing Machinery),计算机领域中的ABA或AMA,维护了一张网页,上面列出将近两百种编程语言版本的“Hello World”程序。简直就是程序代码的罗塞塔石碑。
  在Java这种商业世界中流行的重量级编程语言里面,“Hello World”看起来高不可攀:
class HelloWorld {
public static void main (String args[]){
System.out.println(”Hello World!”);
}
  }
  Public static void:无数个Java程序代码块中,都有这串密语存在。这串词有特别的技术含义。不过我常常把它看作一阙机器诗篇,在它召唤出的冷宫里面,多少软件项目一开始雄心勃勃,最终却未结善果。
  如果你和计算机编程打过交道,就很难不对它又爱又恨。作为少年游戏玩家,我品味过编写代码的巨大快乐。作为媒体工作者,我见证了软件世界中无数个悲惨故事——无论是跨国公司、政府机构,还是军工大鳄,都曾一头撞上过代码的冰山。而作为一个经理人,我也得对付自己桌面上的泰坦尼克号。
  这25年令人气馁的软件历史,也许不具代表性,但却是我的个人经验。依照硅谷的数字乌托邦理想,事情理应朝好的方向发展。在Salon网站发布失败后的几个月里,理想与现实之间的差异开始对我露出了利齿獠牙。
  编程已不再处于萌芽期。我们的世界依赖于无穷复杂的软件。在长达半个世纪的研究和实践之后,为什么还是很难做到按时限、按预算做出计算机软件?为什么还是很难让软件可靠而安全?为什么还是很难把软件做得易于学习使用,且具备按需修改的灵活性?这只跟时间和经验有关吗?是否有出现某种根本性突破的可能?在软件的本质特性(抽象性、复杂性及延展性)上,是否存在某种总能击倒我们的无常之物,将开发者咒入充满不可挽回的延误和根深蒂固的缺陷的世界?
  “软件难做,”编程界经典教科书的作者高德纳(Donald Knuth)这样写道。但原因何在?
  你可能已经注意到,我把本章标为“第0章”。我无意搞笑,只是想指出计算机程序员和其他人的一处小小不同:程序员从0开始计数,而不是从1开始。要解释这种习惯的来源,得从计算机中央处理单元里的寄存器,以及数据队列的结构等等奥义秘辛说起。不过,我发现最直截了当的解释来自于一个网页,该网页试图向大众解释黑客的行为——“黑客”一词的本义是“痴迷的编程匠人”,而非后来衍化出的贬义“数码入侵艺术家”。
  为什么程序员要从0开始计数?因为计算机从0开始计数!所以,程序员也训练自己这样计数,以免让他们要指示操作的计算机产生误解。这本也无伤大雅,只是使用计算机的大多数人是从1开始计数,未免令人烦恼。往下到系统层面,在这个层面上,数据被存储和操作——意味着我们的金钱、工作和设想被转换为机器可读的符号——计算机程序及编程语言经常会做小小的偏移操作,即“+1”或“-1”,使得计算机从0开始计数的列表与人类从1开始计数的列表保持同步。
  在计算机的二进制数字世界里,所有的信息都被简化为0和1的序列。但是,在0和1 之间有空间存在,在机器计数和思考的方式和人类计数和思考的方式之间也有空间存在。当你寻找软件缺陷、延误和不按设计思路运行的原因时,那原因就藏身于这空间之中。
  在构思本书的那段时间里,我每天要驾车从旧金山海湾大桥(Bay Bridge)上通过。一天早晨,当我的车努力爬上连接奥克兰(Oakland)岸边和桥东段中心较高地带的长长引桥时,我发现,右边有个新物体挡住了海湾碧水和远山绿树:那是一台高耸的红色起重机的顶端,正好超出桥面。它在那儿日复一日地矗立着,突然有一天,又多了12台起重机,在桥北一线齐齐排列,如同挤在食槽旁的机械怪兽,等着倒霉的上班人士送进嘴来。
  这工程是要替换双层大桥的北半部分。在1989年的Loma Prieta大地震发生时,该部分上层一段五十英尺长的桥面坍塌到下层的车行道上。现在,将在旧桥旁边搭建一座更安全、更现代的新桥。
  随后几个月,这些240英尺高的起重机,开始将一根根直径达8英尺、长达300英尺的锈钢管打进海湾水底。在清晨时分,从我远在伯克利(Berkeley)山的家中都可以听到敲击声。总共将会有160根这种大管子被打入海底,填上混凝土,支撑新桥的水上部分。整个过程设计精密、执行无误;它分毫不差,完全满足了我们对工程一词的信心。
  关于软件缺陷的话题,只要谈上几分钟,必会有人拍案叹道,“为什么就是不能像造桥那样造软件?”
  和摩天大楼、水坝等永久性建筑一样,桥梁体现了人类对物理世界的技术把握。在过去半个世纪里,软件成为构建这个世界的虽不可见但却深入渗透的人造物。“人类文明运行于软件之上,”广为应用的计算机语言C++发明人比昂纳·斯卓思柯普(Bjarne Stroustrup)这样说道。
  初听起来,这像是奇谈怪论或是自卖自夸。即便没有Microsoft Windows,人类文明也会同样延续,对吧?然而,软件并不只是用来发电子邮件或写报告的程序那么简单;它已经不声不响地渗透到生活的每个角落。它存在于厨具里、汽车中、玩具里,建筑中。商业和银行、选举和新闻媒体、电影和交通网、医疗和国防、科研和基础公共服务——人类生存之所需都系于计算机代码这根易断的细线上。
  而且我们要为其脆弱埋单。根据国家标准和技术学会(National Institute of Standards and Technology )2002年的研究,软件错误每年造成美国595亿美元的经济损失,三分之二的项目明显延误或超出预算,甚至干脆无疾而终。
  人类文明运行于软件之上。但是,软件创建艺术却隐于暗处,即便对于专家们也是如此。在历史上,我们从未如此地完全依赖于这样一种人类自己不知道怎么才做得好的产品。在对软件系统的加速依赖和踱着方步学习怎么做好软件之间,有一条巨大且有时叫人恐惧的壕沟。对软件的依赖以指数级增长,而做软件的技能——和应用技能的愿望——却进展缓慢。
  你要和程序员说这些,就等着挨批吧。这边厢,有人也许会说,世界从未如此光明:我们拥有了比以往更好的工具、更好的测试、更好的语言,还有更好的方法!那边厢,你又听人家说,自计算机时代的黎明以来,其实并未取得多少进展。计算机先驱莫瑞斯·威尔克斯(Maurice Wilkes)[7]回忆起1949年他在英国剑桥工作的情形,在拖着打孔纸带上楼给雏形计算机EDASC装载程序时,他看到了未来:“我强烈地意识到,生命中剩下的好日子,都将耗费在给自己的程序找错误上头。”从威尔克斯的时代直到现在,尽管有那许多创新,程序员却一直陷于调试除错之苦境。工作中只有百分之一的灵感迸发,剩下的是艰难寻找、汗湿重衣;他们的作品永远尚未完成或未臻至善,区别仅仅是“问题更少”的程度不同罢了。
  软件就是麻烦一堆。而且我们不能够也不愿意把电脑一关走为上计。给我们带来挫败和束缚的软件,也用更多功能、更快更好的工作与生活方式来引诱我们。无路可回。我们对软件的需要,远甚于对它的仇恨。
  所以我们梦想着得到更新更好的东西。在现代软件研究领域多有建树的专家弗里德里克·布鲁克斯(Frederick Brooks)在1987年写了一篇题为《没有银弹(No Silver Bullet)》的著名论文。布鲁克斯在论文中称,无论编写计算机程序是如何地令我们倍感挫败,也永远无法找到一种魔法般的突破——我们只能期待渐次前行。布鲁克斯的观点难以辩驳,但也难以接受;参加计算机业界会议或是浏览程序员网站时,你总会遇到一些坚称其错的人。
  有些人梦想炸毁今天的整座软件大厦,替以某种全新之物。有些人则只一味盼望找到不太顽固、更能响应人类愿望和行为流程的程序员,盼望能得到召之即来、挥之即去的软件,盼望得到足堪依赖的代码。
  梦之所寄,行之所为——地狱之门就此洞开。
  第1章 死定了[2003年7月]
 迈克尔·托伊(Michael Toy)双手托腮,将下巴埋入手腕之间,瞥向他的PowerBook电脑,嘴里嘟嘟哝哝:“约翰死定了。在下个版本出来前,他得连干五百个钟头……凯蒂死定了。她得干到天荒地老。布莱恩越发要完蛋。而且他只有一半时间了。至于安迪嘛,只有安迪没事。他的工作列表上可没有成百上千的任务。”
 其实他们看起来还好。这是一个夏日,程序员们围坐在加州贝尔蒙特(Belmont)的一张普通会议桌旁,倾听着经理的发言。托伊是位高个子男士,有着一副铁石心肠和一条马尾辫,不过看起来他正陷入沮丧之中,历数程序员们是多么地落后于进度。这是2003年7月17日,他感到自己也死定了,只有不到两个月的时间,不可能在下一版本预定完成时间到达之前搞掂一切。
  “谁的工作列表不够时间完成,就和我一起重新过一下列表。”
书摘与插图

插图

商品评论 共31 (查看所有评论)

购买过的顾客平均评分

4
心情指数:9人 受益匪浅
阅读场所:10人 书桌旁
个人评分: 心情指数:  伤感 沉重 阅读场所:  床上 公车上
发表于 2008-10-09 13:32
现在我只看完大约一半 
 
如果你看过了两遍以上的《人月神话》,那这本书是一个典型到极端的例子,描述了项目是怎么失败了 
 
原本以为这是一本出色的消遣书,但出乎意料,书中描述的故事让我悲伤到无以复加 
 
软件工程已经提出这么多年,但距离我们想要的还是遥遥无期,我在想,是不是我们一开始就错了呢?软件这样的创造性工作,本质上就难以成为工程的呢? 
 
很奇怪,同样是艺术作品,文学、绘画都是难以成为工程的,建筑、电影等却是以工程的形式存在,原因何在?前者多是单人作品,后者则看中协作。 
 
软件也是多人做的,但问题在于,软件的协助并不需要创造性,反而,每个人写的代码才需要创造性。从这个意义来说,软件创作不像电影,反而更像一群画家在一起,各自创造,共同绘制一幅作品,这样的工作真的可以用工程来管理么?? 
 
前人有些利用了工程经验,获得了成功,他们就认为这个是可以普遍推广的...现在看来,这些经验的运用是不是太轻率了呢?
6人认为此评论有用,1人认为没用。
心情指数:  受益匪浅 阅读场所:  书桌旁
发表于 2009-06-05 10:48
一年后的今天重读《梦断代码》有感 
 
    一年之前的今天我在书店看到了《梦断代码》这本书,这本很早就在网上关注过的图书,当即就买下了,经过几天的挑灯夜读算是完成了第一遍的阅读,在余味未尽之时读了第二遍,对于书中说到的故事,看似说的是一个软件,其实说的大千软件,看似说一事,其实是说百事,作为软件开发行业的人员是深有体会的。 
    前两天在整理自己的书柜时,又翻到了这本曾经让自己彻夜挑灯夜读的书——《梦断代码》,回忆起当时自己第一次阅读到本书的时候的心情,当时是多么的激动和感慨。 
    花费了那么多的时间和经历,人力、财力及物力,换到的却是最终的失败,让人甚是惋惜和同情。想想发生在自己身边的事情,何尝不是如此的,虽然不如书中主人翁那样的花费,但是作为个人而言,有些事情的失败就已经可以是致命的了。 
    在整理书柜的时候,我又把这本书放到我们的书桌上,这几天又花了一点时间又重新的温习了一下,与一年前第一次来阅读这本书的心情还真的是不一样的,一年前是弄不懂为什么花费那么大,而最终要放弃,一年后再来读时,您会觉得如果继续做下去,将会永远的没有答案的,在项目开始的时候,主人翁定下的目标就是不太现实的,因为他们太追求完美了,正是过于的追求完美而导致的失败。 
     为什么说过于的追求完美反而会失败呢,因为世间本来是没有完美的事情的,过于的追求完美就违背了自然发展的规律,必然要失败的,正所谓“金无足赤,人无完人”,过度的追求就只能是失败了。 
    有些书可能读一遍就放过去了,但是有些经典的书,让您曾经激动过,兴奋过的书,你不妨再拿出来读一读,将会有更多的收获。
1人认为此评论有用。
个人评分: 心情指数:  没感觉 阅读场所:  床上
发表于 2008-09-07 22:43
书本身还是可以的(内容),翻译的的确不怎么样。 
对于有类似项目经验的人来说,这本书能很好的引起共鸣。 
翻译使得原书的味道不能很好的展现 
 
偶也是看了csdn的宣传。。。csdn越来越官僚了
2人认为此评论有用。
个人评分: 心情指数:  催眠 阅读场所:  厕所
发表于 2008-07-29 11:17
CSDN极力推荐这本书,买回来发现翻译的一塌糊涂,仔细看译者:韩磊是CSDN历任网站总监、副总经理……感觉上当了
2人认为此评论有用,1人认为没用。
个人评分: 心情指数:  没感觉 催眠 阅读场所:  公车上 厕所
发表于 2008-08-03 00:31
怎么说呢,CSDN越来越垃圾了,一本好书被折腾成这样。...
2人认为此评论有用,1人认为没用。
  • 4人 开心
  • 1人 伤感
  • 3人 感动
  • 7人 没感觉
  • 4人 沉重
  • 3人 催眠
  • 2人 过瘾
  • 9人 受益匪浅
  • 7人 床上
  • 6人 公车上
  • 1人 咖啡馆
  • 10人 书桌旁
  • 1人 沙发
  • 5人 办公室
  • 0人 图书馆
  • 5人 厕所

顾客评分详情(30人)

  • 9人
  • 8人
  • 9人
  • 4人
  • 0人

 

  • 只有您在当当网购买过这件商品,并在“我的当当”里完成了确认收货之后,才可对它发表评论和评分。
  • 您可以通过“我的当当”里面“写评论”或“我要评论”的链接看到您可以评论的商品,并开始评论和评分。
更多内容请查看《商品评论FAQ
商品问答 共0
用户对此商品的提问与回复
暂时没有问答。