最有价值的编程忠告 (来自 Plan 9 的创始人Rob Pike)

Rob Pike,目前谷歌公司最著名的软件工程师之一,曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要领导人,Inferno操作系统开发 的主要领导人。他是缔造Go语言和Limbo语言的核心人物。下面是他分享给大家他在贝尔实验室工作的一段经历,这段经历改变了他对bug调试的思想认 识。

Job的主要工作经历:

我在贝尔实验室工作了很多年。我在计算机科学研究中心,你会很诧异,这是个很小的实验室,但这里却创造了Unix,我来到这里工作的时候Unix已经发布了第七版。从2002年起我来到谷歌工作,主要开发一些系统基础架构。

最主要的成就:

我最为人所知的应该是我和Brian Kernighan(Unix开发组的重要成员)合著的两本书:《The Unix Programming Environment》 和 《程序设计实践(The Practice of Programming)》 (30年后的今天仍在印刷出版!),影响范围最广的一件事应该是我和Ken Thompson共同开发完成了UTF-8编码格式。在其它方面,诸如计算机图形,操作系统,软件开发工具等上也做了大量的工作,最近在给谷歌开发Go编程语言。

使用最多的编程语言:

长久以来,C语言是我编程的选择,但在我的编程生涯里,我使用过很多种语言。而目前我开发d 东西基本上都是用Go语言,这是我见过的最高效的一种编程语言,它在我的工具箱里已经完全取代了C语言的位置。

忠告:

在我加入贝尔实验室一年多后,我开始和Ken Thompson一起在开发一个针对由Gerard Holzmann设计的很小的图形化交换语言的即时编译器上做结对编程。 我打字比较快,所以我坐在电脑前,Ken站在我身后看我编程。我们开发的很快,但经常会遇到问题,而且可以看出来出错了——毕竟这是一个图形化的编程语 言。当程序出错时,我本能的一头扎进问题,检查报错跟踪信息,添加调试打印语句,启动调试器,等等,但Ken只是站在那思考,完全不理会我也不查看我们写 的出问题的代码。一段时间后我发现一个规律,Ken经常会比我先找到问题出在什么地方,而且会突然的喊一嗓子,“我知道什么地方的问题了。”每次他的判断 都很准确。我认识到,Ken已经在脑海里构建了代码的模型,当有问题出现时,那是他脑子里的模型出了问题。在思考为什么会发生这些错误时,他能凭直觉找到 模型中什么地方不对或发现写的代码跟这个模式什么地方有出入。

Ken教会了我一个极其重要的习惯:纠错前先思考。如果你一头扎进问题中,你可能只解决了当前出现问题的代码,但如果你先思考这个错误,这个bug是怎么引入的?你通常发现和纠正一个更高层次的问题,进而改进了系统设计,防止了更多bug的出现。

我认识到这种编程思考模式非常的重要。有些人痴迷于一行行的、使用各种工具来调试所有的东西。但我现在相信,思考——不看代码的思考——是最好的调试途径,因为它能让你开发出更好的软件。

[本文英文原文链接:"The Best Programming Advice I Ever Got" with Rob Pike ]

火狐 17 将不再支持苹果 Leopard

火狐平台部门员工乔希·阿斯(Josh Aas)在Bugzilla上发布消息称,“我们计划火狐17不再支持Mac OS X 10.5,它不能在Mac OS X 10.6之前的版本上运行。”

OS X 10.6代号为Snow Leopard,发布时间为2009年;Leopard发布时间为2007年。

根据Mozilla的发布计划,火狐16发布时间为10月9日。火狐17将是第一个不支持Leopard的火狐版本,发布时间为11月20日。

Google 7月31日发布了最后一个支持OS X 10.5的Chrome浏览器版本——Chrome 21。

Mozilla去年12月份曾考虑不再支持Leopard,但最终决定继续支持Leopard。6月末,Mozilla的工程师、经理等重启不再支持Leopard的讨论。

据Mozilla称,Leopard的重要性在不断降低。阿斯表示,“Mac OS X 10.5用户数量每月减少1%,再加上Mac OS X 10.8 Mountain Lion发布的影响,意味着火狐17发布时Mac OS X 10.5用户在Mac OS X用户中的占比可能仅为10%。”

阿斯称,截至6月21日,在火狐13的Mac用户中,Leopard用户占13%,Snow Leopard占35%,Lion占48%。Mac用户在火狐13用户中的占比为4.6%。

与Google一样,Mozilla列出的放弃支持Leopard的另外一个理由是苹果不再支持Leopard。

苹果最后一次发布Leopard补丁的时间是2011年11月份。苹果已停止在OS X 10.5上支持Safari浏览器。苹果1年多前发布了最后一款OS X 10.5版Safari补丁软件。

阿斯指出,Mozilla的资源有限,“苹果发布操作系统速度相对较快,每个新版本都包含重要的变化,我们必须支持这些变化,这需要资源,由于目前我们资源有限,这意味着我们必须做出艰难的投资决策”。

Mozilla一直在从事的一个项目是开发一款兼容Windows 8的浏览器。火狐平台工程师布莱恩·邦迪(Brian Bondy)上周发表博文称,Windows 8版浏览器项目一直在“稳定推进”,Mozilla的目标是下个月底发布一款预览版本。

DNA:终极数据存储方式

北京时间8月18日消息,据国外媒体报道,在谈到信息存 储时,硬盘完全不能和DNA相提并论。在人类的基因序列中,1克的重量就可以包含几十亿GB的数据,而1毫克分子的信息存储空间就可以包含美国国会图书馆 全部的书籍,并且还有剩余。在过去,这些只是理论上的概念。现在,最新的一项研究表明,研究人员可以把一部遗传学教科书的内容存储到1微微克 (picogram,相当于万亿分之一克)DNA中,这一技术上的突破很可能会革命性的提升人类存储信息的能力。

过去,有些研究团队一直试图向活细胞中的基因组写入数据,但是这种方式有一些不足之处。首先,细胞会死亡,这并不是你存储学期论文的好方法。另外,细胞还会分裂、复制,其中会不断发生变异,从而改变数据的内容。

为了解决这些问题,一个由波士顿哈佛医学院合成生物学家乔治-丘奇(George Church)领导的研究团队发明了一种DNA信息归档系统,完全不需要利用细胞。相反,利用的是一台喷墨打印机,从而将化学合成的一小段DNA嵌入到一 块微型玻璃芯片的表面。为了给数字文件进行编码,研究人员把文件划分为微小的数据块,并把这些数据块以A、C、G、T(DNA的四种脱氧核苷酸)的字母组 合来表示,放弃了过去在计算机上的1和0编码方法。每条DNA片段还包含了一个数字“条码”,用来记录数据在原文件中的位置信息。在读取信息时,需要 DNA测序仪和电脑将所有片段按序重新组合起来,并转换为数字的格式。计算机还需要负责处理错误信息,因为每个数据块都可能会被复制上千次,经过比对,任 何小错误都可以被发现和纠正。

为了证实这一系统在实际应用中的能力,该团队使用了这种 DNA芯片将丘奇同他人合著的一本遗传学书籍进行了编码。他们成功了。在将书籍内容转换为DNA的信息、并将其翻译成数字存储模式后,该系统显示的出错率 为每百万比特仅两个错误,相当于一些小小的拼写错误。这同DVD的性能差不多,远远好过硬盘。本周五,该团队在《科学》杂志上发布的报告称,考虑到DNA芯片的体积非常小,它成为了目前世界上最密集的信息存储介质。

不 过,你最好别急着将闪存上的数据复制到基因存储上。美国马里兰州罗克维尔市克雷格-文特尔研究所的合成生物学家丹尼尔-吉布森(Daniel Gibson)表示,DNA测序仪和其他设备的成本相当高,目前还不适宜推广,但是这一领域发展迅速,这项科技将会变得更便宜、更快速和更轻便。吉布森过 去领导的研究团队曾合成了世界上第一个最完整的基因组,并在DNA中加入了一些额外的信息作为“水印”。不过,这些研究人员使用的是三个字母的编码系统, 要比丘奇团队的效率低一些,但是却成功阻止了活体细胞的复制,从而不会将DNA转换为蛋白质。吉布森说,“如果DNA要被用来存储信息,并且使用环境不在 实验室里,那么你还需要DNA测序仪的帮助,而这是很不现实的。”丘奇不同意这种观点。他表示,除非某人有意识的“破坏”他的DNA数据存储系统,否则信 息将非常安全。

「开放让我们更有力量」COSCUP 2012

每年一度的亚洲开源界盛事 COSCUP 2012 在8月18-19日举行。今年已是第七年,共吸引超过一千位软体开发人员、数十家科技大厂赞助,展现台湾软体开发界的热情与实力。今年活动主题为「Open Device, Seamless Apps Experience」邀请广达电脑技术长暨研究院院长张嘉渊博士在内,来自台湾、英国、中国大陆、香港等地共数十位讲者,分享各项开放原始码最新技术与资源。

今年活动总召-赵柏强表示「COSCUP 经过七年的成长,已成为台湾开放原始码社群一年一度的盛会。本着『开放让我们更有力量』的信念,参与 COSCUP 最主要的目的,40%是听演讲,60%则为了交朋友;透过活动让软体开发者(Coders)软体使用者(Users)与推广者(Promoters)广泛交流,相信能激盪出更多创新火花。从社群自发性举办的 COSCUP 活动,我们看到台湾软体开发界的热情与实力,期待未来台湾能有更多类似的活动与交流,建立一个更加友善与健全的开放原始码生态系统(Open source ecosystem)。」

广达电脑技术长暨研究院院长张嘉渊博士以「Open Up the Cloud」进行主题演讲,张嘉渊在演讲中引述广达电脑创办人林百里对于云端的看法是「云端运算科技创新关键不在于科技,真正的关键在于科技须以人为本,广达希望可以透过科技的创新,创造符合人性与文化的最高价值。」

与每年的COSCUP 开源人年会一样,除了数十场主题演讲,还有两场特别活动:分别为「各开发社群的 BOF(Birds of a Feather)聚会」及让会众自由发挥的「Unconference」。这些活动都是希望透过与社群同好的分享,不设主题限制的票选演讲,让所有参与者可以敞开心胸瞭解最新的科技趋势,也提供予软体人群更好的交流平台与舞台。