韩磊@当下

《疯狂的程序员》序

绝影在CSDN Blog上连载《疯狂的程序员》,自2007年12月22日开始,到2008年9月15日全文完成,9个月时间写了35万字。对于专业作家,这也许算不得什么了不起的成就,可绝影只是一位技术工作者,9个月的业余时间,就全搭在这部书上面了。

以文学的角度来看《疯狂的程序员》网上连载版本,缺点和问题比比皆是,但这些瑕疵无法掩盖因其“真实反映程序员工作生活”而焕发的独有光彩(据我所知,印刷版本在文字方面改进良多)。“深入生活”无如“从生活中来”,我不相信有任何专业作家,能比绝影们更有资格写出《疯狂的程序员》这样的作品——看看市面上,有几本描写程序员的小说呢?

现在这部书要出版了,我又从头逐篇看Blog上的连载。越看越觉得,互联网改变出版,实在已经不是一种理论或是幻想。其表现有三:一,互联网让原本不属写作人群的人能够撰写并发布作品;二,互联网上改变了“小黑屋”式的写作,作读互动贯穿于并影响着写作全过程;三,读者评论、作者回应,乃至于包括正文在内的页面表现,构成了某种完整、自足的作品表现形式。对于出版机构而言,互联网变作了有效的“选题筛选器”。当然,在正式出版前,还有很多的编辑工作要做,但至少在写作阶段,已经和以前大有不同了。网上连载与印刷版本有没有冲突呢?如果有,怎样化不利为有利,使之促进印刷版本的销售?在与绝影签约后,出版社没有要求绝影停止在网上连载,这是一种勇敢应对新类型出版的积极态度。

阅读全文 »

e人谷龙门阵之代码猴

按:上次写了twitter.com的创业史,读者反映还不错。本来准备了资料,打算继续写其他一些网站或创业公司,今天看到登高CSDN个人空间推荐歌曲,突然想起一事,就打个岔先。和本系列其他文章不同,这篇要写一首歌,以及和它相关的事情。好奇吗?现在开始。

2007年3月份,我去硅谷Santa Clara参加CMP的SD West 2007大会,着意听了几场演讲或课程。最令人兴奋的是Robert C. Martin (Uncle Bob)的演讲“Craftsmanship and the Problem of Productivity: Secrets for Going Fast without Making a Mess”。甫一上台,Bob大叔就手舞足蹈唱起歌来,像极了一只焦躁的猴子。当然这只是个暖场的手段,演讲本身之精彩,自不待言,但Bob大叔那夸张到走调的演绎,让我对他唱的歌产生了兴趣。可惜闪念之间,还是觉得听后面的课程要紧,也就抛诸脑后了。

今天想起来,Uncle Bob的歌声仿佛还在耳边回响,趁着中午有点空闲,查了一下。原来那首歌叫做Code Monkey(代码猴子),作者是Jonathan Coulton。此人住在纽约布鲁克林,是个独立音乐人。在相当一段时间(大约两年)里,他每周创作、演唱并在网上循CC版权协议发布一首新歌。拜新科技所赐,从配乐演奏到主唱,Jonathan可以独力完成。Code Monkey就是这些歌曲中较为成功的一首。因为创作歌曲数量之庞大,Jonathan被外间叫做“写歌机器”。

阅读全文 »

Dreaming in Code中文版第0章试读

0章:软件时间

那是1975年的冬天。我在终端机房中俯身敲击一台电传打字机,每打完一行,那笨重的机头就会摇头晃脑猛然撞回最左边,开始新的一行。我从几个小时前开始输入一行行黑代码[1],忘记了时间流逝,全然不知已是午夜时分。看门人已经关闭廊灯。我并没有得到许可在纽约大学物理系大楼中流连忘返、使用向高中学生免费发放的计算机账号。不过,倒也无人责难。

那时我年方十五,正迷恋于一个叫做Sumer的游戏,在游戏中,我管理着新月沃土[2]上一座古代城邦。今天的电脑游戏玩家也许会嘲笑其稚嫩:它在一卷纸上逐行打印出大写字母,报告游戏进程。玩家运筹帷幄,分配食用和留种的谷物,然后程序就会告知城邦每年的发展情况。“汉谟拉比陛下,”程序像一个诚惶诚恐的宰相般报告说,“微臣伏启圣鉴……”

阅读全文 »

代码,梦

今天下午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年为止,都不可能造出能通过图灵测试的机器。

阅读全文 »

《南阳韩氏宗谱》全文

按:此谱得于云南弥勒县弥阳镇,乃我韩氏一脉数百年传承之记载。前数月余曾刊《韩氏世系图》一幅,此后常有同姓询及。特将《宗谱》全文贴出,以供阅检。此谱文辞朴实、叙事简略,若与他谱对照,或可互校漏、误,俾得一更为可信之刊本。余力有未逮,待之以贤者。

又:正文中有括号者,均余所补。读者知之为要。

始祖讳成
明洪武恩授统兵官。同太祖讨陈友谅,会兵鄱阳湖。兵败,陈贼追急。公服太祖衣冠惑贼,投水靖难。至今人口啧啧,有公替死马家渡之言。后追封侯爵。子孙世袭将军。

阅读全文 »

南阳韩氏宗谱世系图

图序

我韩氏一门,自始祖成公以下,凡二十世,宗谱录者,十八世而已矣。以春公始,仅记十七世。而世有更替,嗣见存乏,长房未必袭祖荫而光大门楣,次子或可继香火且世代不绝。数百年间,行旅驻戍之劳苦,悲欢离合之秘辛,仕宦营营之沉浮,庶民碌碌之晨昏,倏而俱往,茫然不可追矣。惟余故纸一十八页,藏于乡间农舍。修谱大事,由一姓之公义,忽变而成一房之私务。国既禁之不及,家亦承之无力,是故谱系湮没,宗族断绝,此非独吾一姓一门之殇也。每念及此,腕为之扼断,酒为之不能下。幸于弥勒县访获《南阳韩氏宗谱》,阅之有所感,遂录毕誊清,条分缕析,得世系图一。图者,文之辅也;既一目以了然,又纲举而目张。族胞同门,有偶见之者,或四顾而有追远之意,则图之为图,尤韩氏之为韩氏焉。十九世孙 磊 焚香沐手撰。

阅读全文 »

南阳韩氏宗谱序

(磊按:近日访得家谱,谱名《南阳韩氏宗谱》。名之以南阳者,盖追往而溯源也。自有明成公以降十数世,虽只记一姓之本支,我中华世系,传承久远,于此谱亦可管窥,睹之令人神驰。兹录《序》于下。)

且夫家之有谱,无异国之有史。国史纪一朝之治乱、兴衰、人物、事迹,而家谱则记一门之祖德、宗功、本支、源流,继继绳绳,以相传于未艾。抑即以贻后世,子孙触目惊心,由曾元而上溯高远,有以知其所由来,常切水木本源之念,时存敦雍睦族之思;而春露秋霜、冬烝夏禴,于是乎仁孝之心油然而生矣。则谱之攸关,典至巨也。

弥邑东偏,离城五里许,有村名三道桥,有韩氏者,系出大姬。自晋公族武子封韩原,而韩遂氏焉。韩穿、韩厥皆其后也。累朝以来,世族日繁,代有开达。但势殊时异,地角天涯,文物无征,难以悉考。即有明之成公者,同太祖讨陈友谅,靖难鄱阳湖,恩赐状元,授统兵元帅,爵封侯,子孙世袭将军。兹复啧啧人口,及春公者,由山东济南籍。洪武中,随国公沐出镇云南,授指挥使。仕宦日久,子孙遂隶于滇,为滇一世祖。又三世,有昂公者,以成化戊戍进士,授顺天府宛平县,亦誉重当时。递及我朝,讳名伯公者,尤以康熙甲子举人,擢丁卯贵州乡试同考官,后掌成才书院,而滇黔之颂教养者,于兹未堕。是以越至于今,后裔(此处一字不清)隶昆明、居开化、住路南、留弥阳,亦皆子孙繁衍,人文蔚起。其间之采芹食气、掇巍科而膺显秩者,指不胜屈。所谓源远流长、根深实茂,其滇中之望族焉。

阅读全文 »

老祖宗的事

很小的时候,跟父母回老家(云南弥勒)。父亲一系,祖祖辈辈流传下来,县城边上的一个村庄,整村都是姓韩。我辈分颇高,和许多老年人同辈,甚至有老人家是我的侄辈。人小,也不懂那么多,跟着大人们上山扫墓、下跪烧香,除了一个“累”字,只记得打谷场上旋转的“磨秋”。

后来进了屋里,族中长房拿出家谱给我们观看。厚厚一本,是清朝重修的。翻开来,说第一代祖讳成,朱元璋手下将领,在鄱阳湖之战中,形势紧迫,扮作朱元璋自杀,让陈友谅军误以为对方首脑已死,致酿成后患。这位韩成的后代,不知从何时迁居云南,传到第十九代,就是我这一辈了。

家谱上还有一首四言的歌赋,用来给族中子弟取名排字辈的。先父字辈为“永”,传到我这里,新社会了,没按字辈来,爷爷给我取名为“子非”,被姨婆否定,最后得了个普普通通的“磊”字。“磊”字虽然普通,据说是可以上家谱的,只是自我以下,因为属旁支,就不能再忝列了。

阅读全文 »

Blog连锁游戏:读书

Tiny点名,不免要回应一下。只是可选太多,只好把“一本”的限定词去掉了……

1、你读了不止一次的书

这样的书有很多,比如《西游记》、《水浒传》、金庸的所有长篇、四书五经、《汉书》、《史记》、《大卫·考坡菲》、Canterbury Tales……其中,读了最多遍的,估计是《诗经》、《西游记》、《水浒传》和《易经》:《诗经》让我学会欣赏诗,《西游记》让我懂得怎样描写人物性格,《水浒传》让我懂得用动词和形容词,《易经》让我树立自己的哲学观和世界观。

阅读全文 »

入门不简单(《Beginning C# Objects中文版》书评)

由于工作性质的关系,我常常需要为公司面试程序员。通常,我会首先要求应聘者做两件事:第一,口头说明虚方法、抽象方法、接口之间的异同和使用场景;第二,脱离IDE,手写一个简单的WinForm程序(例如包括布局整齐的两个文本框和三个按钮、点击按钮弹出消息框显示文本框内容),然后在命令行编译运行。第一题是考面向对象中的继承和多态概念,第二题则是考C# GUI类和关于委托等C#独有特性的基础知识,以及编译、调试技巧。很遗憾,有一大半的应聘者会在这两个简单考题面前败下阵来。尤其是第二个考题,甚至难倒了一些写代码有年头的程序员。为什么?因为这些程序员不具备基本的面向对象知识,更加不理解C#的面向对象实现手法。

这不能完全归咎于中国计算机教育。实际上,在美国或其他发达国家,真正懂得面向对象开发的程序员也并非随处可见。这也是Beginning C# Objects(及其Java原版本Beginning Java Objects)一书成为畅销书、并在Amazon上获得读者极高评价的原因。作者写道:“我们常常与一些软件开发者会面——在工作场所、在客户办公室、在专业会议上,或在大学校园里——这些开发者都尝试去掌握一门类似C#的OO编程语言,他们参加C#培训、阅读关于C#的书,或是安装和使用像Visual Studio .NET这样的C#集成开发环境(IDE)。然而,这是舍本逐末的做法:他们缺乏对什么是对象的基础认识,更为严重的是,缺乏利用对象从头开始构建软件应用程序的知识。”

翻开市面上任何一本你能找到的C#入门书,看看第一章讲什么,第一个范例是怎么实现的。闭上眼睛你都能告诉我,第一章多半是讲怎么安装VS.NET,第一个例子多半是拖一个按钮控件到窗体,双击后输入一段调用消息框的代码。我们的技术作者们,就是这样把读者引入歧途的。IDE(集成开发环境)能极大地提升生产力,但开发应用程序所需的高度专业的知识和技能,却非IDE所能代替。的确,任何一个菜鸟也许都能利用可视化组件拼凑出“看起来还不错”的应用程序,但这样的程序却将带来高昂的扩展和维护成本。

阅读全文 »