Category Archives: 生活

2011年总结

不满意的事

  • 没有坚持学完任何一门公开课
  • 没有读完任何一本技术经典
  • 没有做出有价值的创新工作
  • 没有坚持学英语
  • 在开源上的贡献太小
  • 没有读完的论文太多
  • 时间规划与实施是两回事

比较满意的事 || 与去年的变化

  • 参与了开源项目,贡献代码和知识
  • 申请了一些专利
  • 学习了不少Android
  • 学习了ARM
  • 开始用Python实现想法和提高效率
  • 初步了解了lisp的思想
  • 进一步了解软件漏洞的知识
  • 学习和使用了gcc/make/gdb/gprof/doxygen等工具
  • 再次回归LaTeX
  • 开始用数据库做大数据统计挖掘
  • 学习了一点并行计算的知识
  • 彻底抛弃Windows
  • 大量对外活动,交流和表达能力提高
  • 开始和业内的人有一定交流
  • 重新开始了博客
  • 开始直接用英文写一些技术文章

喜欢的书

  • On Writing Well
  • 黑客:计算机革命的英雄
  • Rework
  • 集体智慧编程
  • ARM Cortex-M3权威指南
  • 上帝掷骰子吗
  • 演讲之禅:一位技术演讲家的自白

喜欢的电影

  • 源代码
  • 荒野生存
  • 那些年,我们一起追的女孩
  • 此间的少年
  • 荷尔蒙
  • 李献计历险记
  • 钢的琴

乐土不再:评《黑客》

Hackers: Heroes of the Computer Revolution这本书很早以前就有了,但是在对Hackers and Painters和Coders at Work失望以后,一直没有打算读一读它。直到出了中文版,买了一本来翻一翻,于是大呼万幸。

这是一本极好的书。它没有掺杂个人意志,作者只是站在旁观者的角度去描述那一段史诗般的岁月——而那些时光已经完全被现在的人所遗忘。阅读的过程就是不断震撼的过程,看那些纯粹的人不断地创造历史和挑战自我,仿佛可以呼吸到MIT科技广场大楼9楼的那种嘈杂的空气。

然而这样的场景、这样的人已经很难再有了。为什么无法重现?这是我一直在思考的问题。结果是:外因——钱、内因——复杂。

无论多么崇高脱俗,也不得不承认钱是重要的东西,至少需要用它维持生计(当年有个人为了不被国防部门调去用IBM的烂机器,不得不想办法搞到3K刀付了违约金,然后继续开心地用PDP-1)。当年ARPA为目的不明的基础研究源源不断地支付大笔的费用,仅仅是为了将来国防上需要用到什么的时候,能从这些支助项目里找出一些可用的技术来。赞美你,纯洁的国防部……这些费用支撑起9楼,让这群hackers能无忧无虑地玩spacewar。

然而,慢慢地ARPA开始现实起来,不再撒钱。这成了衰落的最初原因。

随着技术和产业的发展,以及计算机的普及(又是hackers的功劳),也有人发现了其中蕴含的大量商机。这些人包括:内部的、外部的、恶意的。

最典型的内部的例子是Symbolics公司,这个制造了最强大的Lisp机器的企业,不但从MIT分化成为纯商业公司,还不断地从9楼挖人。正好这些人很难拿到ARPA的资助了,于是开始进入商业的圈子。Gosper,这个领袖,就走了这样的道路。而现在,他一边做独立咨询的工作,一边继续玩数学、分形和Game of Life,从未磨灭的兴趣再也无法支撑自己的生活,让人唏嘘不已。

最典型的外部的例子是Microsoft公司,完全不用多说。Gates打破了hackers最优秀的传统和约定,推动法律将代码保护起来并直接卖钱。这一产业开始形成,一方面大量的人发现赚钱是如此容易,另一方面自由交流带来的损失会如此巨大。Gates说他自己是真正的hacker,显然他没读过这本书。

恶意获利的例子来得最晚。最早的恶意代码和恶意攻击都是圈子里的人在展现自己无所不能(就像在9楼做的事一样),甚至第一个rootkit就是Ken Thompson公布出来的。直到八十年代末才出现ransom类的木马,加密了文件以后敲诈受害者,而大规模的获利性攻击直到九十年代中期才出现。无论如何,这些恶意的获利者进一步促使了技术的封闭——虽然这种认为不被人知道就安全了的想法不怎么正确。

接下来看内因。系统的不断复杂使得后来的人很难具有第一代hacker的能力了。

最早,hackers对硬件、系统(哦,操作系统就是他们写出来的)、软件(软件也是他们写的,工具链也是他们写的……)有着无与伦比地了解。主要原因应该是本质地简单。TX-0的操作数前2位指示指令类型,也就意味着它只有4条指令——搞x86开发的人看到这句话一定是泪流满面的。PDP-1也不怎么复杂,而PDP-6干脆就是根据他们的需求设计出来的。为了减少指令,这群人甚至拆开机器,接上几个元件,就给它增加了一条指令——这一切只花了一个晚上。这真是乐土。

不到五十年,一切都变了。再也找不到一个对硬件、操作系统、编译器/汇编器、软件、人工智能都熟练的人。这是任何一种知识发展的必然(最经典的,Poincaré之后,再无全能的数学大师),但也够让人悲哀的。

不仅如此,现在的一切都被封装得妥妥当当。做开发的人再也不许要了解硬件,甚至连内存和CPU都不需要了解,更不会去管指令的手工优化。还有谁会在没有上机时间的情况下把代码写到纸上,精雕细琢?还有谁在现有工具用起来不舒服的时候,自己从头再去写一个?恐怕大部分人连什么是“不舒服”都不清楚,而会去评价并换另一个工具的人反而成为了牛人。

无论如何,复杂+对复杂的透明封装,一方面带来了方便,但另一方面又让人失去了什么。可以赞美这种伟大的现状,但也能从中回想到一些被集体遗忘的东西。

推荐几本英文写作的好书

1、The Elements of Style

豆瓣链接:http://book.douban.com/subject/1433835/

这本书是英文写作的bible,是一本必备的、应该每年读两次的书。

它的名气之大,以至于后来出现了无数本The Elements of xxx Style的书,甚至这些“衍生”的书都成了名著,比如The Elements of Programming Style。这一段可以参考徐宥的博文《编程珠玑番外篇-7.比代码大全好的两本书B》。

对这本书的推荐很多,就不需要我赘言了。说一下版本。

如果有可能,最好是买一本原版的,第四版或者50周年纪念版。目前卓越和淘宝上就可以买到。在amazon购买的话,一定要看清楚版本号。因为第一版已经没有版权问题,所以特别便宜,不要错买成这一版。

1992年,国内基于第三版译了一次,书名为《英文写作指南》,翻译质量不错,但已经买不到了。在孔夫子网还偶尔能淘到几本而已。

2009年,国内又出版了一个基于第一版的(又是出版商为了避免版税的不负责任产物),书名《风格的要素》,质量极差,一定不要买。

原版和中文第三版都可以找到电子版,此外,搜索一番的话还能下载到有声读物。

Continue reading

coding,coding,还是coding:《黑客与画家》札记

粗略读完Paul Graham的《黑客与画家》,收获并不太多,大抵是修为境界还远远不够。不过一边读一边回忆其他人的言论,倒是有些观点可以总结到一起,作为一种指导:

  1. 不断地迭代:写丑陋的代码、改进质量、将其抛弃;
  2. 为开源活动做出真正的贡献;
  3. 多调试,少设计;
  4. 用适当的语言做适当的事情,比如用Lisp思考、用Python做原型、用C或Java实现(Graham认为完全可以用Lisp来做开发,并且这种非大众语言甚至是一种壁垒性的竞争优势,我不认同);
  5. 做产品时,先快速出原型,再根据反馈改进(《软件开发者路线图》将其称之为反馈回路越短越好);
  6. 不要过早关注细节(或者说过早优化是万恶之源);
  7. 不被打扰状态将产生N倍的工作效率。

此外,《黑客与画家》这篇散文里,对“计算机科学”这一概念的质疑,我从心底赞同。将researcher、engineer、hacker产生价值的过程加以本质性区分,绝对是有必要的——事实上,我一直困惑于,总认为学术成果是最重要的,但又喜欢工程性或hack的东西,因此目标在两者之间不断徘徊。虽然还是没有真正明白hacker创造财富的本质,但至少主观上对这样的道路很坦荡。

说起内心坦荡,有一篇文章提到“不敢说出来的话”,其中的一个观点:每个学科的研究工作所需要的能力显然是大不相同的,但这样的观点在任何一个学校里都不能直白地摆到台面上来说。实际上我觉得,真正坦然地去承认这一点——承认总有那么一大批人是比自己强的,才是面对现实。内心不被主观情绪蒙蔽,方能认清自己的价值所在。