当前位置: 首页 > news >正文

代码,梦

今天下午19:00,翻译完Dreaming in Code最后的《结语》部分,这本书算是基本完成了。说来惭愧,去年初接下这个任务时,满以为顶多半年足可交稿。真正开始翻译时,才知道自己低估了任务难度。作者Scott Rosenberg是在线杂志Salon.com的主编,笔下极尽引经据典、推敲字句之能事,夹叙夹议,奇闻轶事和以精论妙谈,300来页一本书,触及软件开发中多个根本大题目,叫人看得心惊肉跳之余,又不由得掩卷长叹。

《大褂还是内裤》一文中,我简单提到Mitch Kapor和Chandler项目。Dreaming in Code在“叙”的部分就是写这个项目的。本书的副标题很长,也很吸引人:Two dozen programmers, three years, 4,732 bugs, and one quest for transcendent software(两打程序员,三年,4,732个缺陷,只为打造卓越软件)。Mitch Kapor和他的程序员们曾经打造过最伟大的软件,现在他们有了近乎奢侈的资源,为了“用代码改变世界”的梦想,共襄盛举。可惜他们遇到了“软件时间”的黑洞,从2001年开始,泥足深陷、举步维艰。Scott Rosenberg从项目一开始就贴身跟踪,记录下Chandler项目开发过程中的点点滴滴。

如果本书仅及于此,就不过是一篇尚可一观的“报告文学”。幸好Scott Rosenberg的主要目标是揭示软件开发中的普遍问题:为什么做软件这么难。在描写Chandler项目进展的段落之间,温伯格、布鲁克斯等大师级研究者,Linus Torvalds和Joel等实践者纷纷“出来”现身说法,还有来自各机构、媒体、作者的大量资料,从“软件时间”入手,兼及各种方法论、积木式编程、软件设计、项目管理,所有这些都是最后一个大话题的铺垫。在《结语》部分,Scott Rosenberg提出了这个大话题:人工智能有没有可能超越人类?在这个问题上,Mitch Kapor打了个20,000美金的大赌。他打赌,到2029年为止,都不可能造出能通过图灵测试的机器。

Mitch Kapor绝非悲观主义者。他本人和整个OSAF团队做梦都想通过软件系统“改变世界”。改变世界的梦想鼓舞过无数程序员,然而最初却不是对程序员说的。在Dreaming in Code书中提到这么一桩轶事:当年Steve Jobs(就是Apple的乔布斯大爷啦)想要说服百事的CEO John Sculley加入Apple,就对John Sculley说,你是想终己余生“卖甜水”呢还是过来造计算机、改变这世界?不过John Sculley加入Apple后不久,就联合董事会把Jobs赶出了公司。

过去几十年以来,计算机软、硬件制造者们一直以他们的努力推动这世界。而他们的每一分努力,因为halting problem(停机问题)的缘故,都注定是未完成的任务。他们是在挑战智慧和精神力的极限,简直是“逆天而为”——所以也难免要遇到软件生而固有的困难。

Dreaming in Code以一个具体项目的进程为例,列出了这些普遍存在而又近乎无法解决的困难。有趣都是,在翻译本书的过程中,每每与朋友聊天,他们提出的一些问题,在书中也都涉及。这本书很快就要出版了,到时一人送一本,他们是软件实践者,看后应该会比我更有感触和启发吧。

相关文章:

  • python求两个时间相差的天数_Python计算两个日期相差天数的方法示例
  • python 序列化压缩成字符串_python 序列化模块之 json 和 pickle
  • 2005年10月--至今,开发过的项目
  • 红黑树的原理_Linux内核-红黑树的实现原理及应用
  • python整型数据源码分析_Python 源码剖析(二)【整数对象】
  • 如何选择适合自己的 Linux 发行版
  • ttc格式安装到手机_水电安装维修学习资料免费赠送
  • 服务器选购前的考虑
  • python bool函数应用_Python如何在bool函数中取值
  • 如何在网上选购一本好书
  • python中numbers什么意思_Python 基础知识全篇-数字(Numbers)
  • 控件Repeater的嵌套使用
  • python中迭代器机制_浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器...
  • 如何在 Windows Mobile 程序中获得包含 Millisecond 的 DateTime
  • python绘制动点_Nurbs样条线算法推导和python实现
  • ES6指北【2】—— 箭头函数
  • $translatePartialLoader加载失败及解决方式
  • [deviceone开发]-do_Webview的基本示例
  • 【翻译】babel对TC39装饰器草案的实现
  • Angular数据绑定机制
  • ES6之路之模块详解
  • express + mock 让前后台并行开发
  • overflow: hidden IE7无效
  • SpriteKit 技巧之添加背景图片
  • vue.js框架原理浅析
  • 爱情 北京女病人
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 前端面试之CSS3新特性
  • 区块链将重新定义世界
  • 你对linux中grep命令知道多少?
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • const的用法,特别是用在函数前面与后面的区别
  • MPAndroidChart 教程:Y轴 YAxis
  • ​力扣解法汇总946-验证栈序列
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (2)(2.10) LTM telemetry
  • (5)STL算法之复制
  • (9)目标检测_SSD的原理
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (Ruby)Ubuntu12.04安装Rails环境
  • (zhuan) 一些RL的文献(及笔记)
  • (zt)最盛行的警世狂言(爆笑)
  • (安卓)跳转应用市场APP详情页的方式
  • (转)程序员技术练级攻略
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转载)从 Java 代码到 Java 堆
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .net反编译的九款神器
  • .NET中两种OCR方式对比
  • ?