February 2009 Archives

February 19, 2009

翻译Python历史:微软于1996年发布Python代码

This post a a Chinese translation of Greg Stein’s article “Microsoft Ships Python Code... in 1996” on a blog named “The History of Python”, which is started by Guido van Rossum.

原文地址:http://python-history.blogspot.com/2009/01/microsoft-ships-python-code-in-1996.html

非常感谢Guido让我分享我自己关于Python的历史!

我把我对Python的介绍放在另一篇文章里,结尾介绍了我们几个人在1991年的开始。那时我们在制作一个大型的处理B2C电子商务的客户端/服务器系统。客户TCP协议运行在旧的X.25网络上,是非常旧时代的东西了。

在1995年,我们认识到,与我们过去所相信的相冲突的,越来越多的客户实际上是联网的,我们需要给我们的客户(计算机销售商)提供一个系统可以访问连接到互联网上的客户。

我们的第一个问题就是要转换到一个完全基于浏览器的环境。我们的客户端不再使用了,所以我们要给客户们提供一个新的购物体验,而且服务器的基础结构要提供支持。那时,控制一个网络浏览器意味着为Apache和Netscape的HTTP服务器编写CGI脚本。通过CGI,我连接到我们已有的服务器后端来处理订单、维护购物篮、以及抓取商品信息。这些CGI脚本生成纯的、vanilla HTML(1995年还没有AJAX!)。

这项计划非常不理想,因为每一个请求花费很长时间来生成一个新的CGI进程。反应能力非常弱。因此,在1995年十二月,当我参加在华盛顿特区举办的Python研讨会时,我(从Digital Creations,最了解Zope的人)那里得知了一些Apache和Netscape模块在服务器进程运行的比较稳定。这些模块使用一个名为ILU的RPC系统来与后端的一直运行的进程交互。把这个系统替换进去后,CGI派生的高额开销就解决了,而且购物体验相当舒适!我们开始把原型转换成实际的代码。随着我们的投入,我们的系统看上去越完善,而且有更多的人加入这个项目。以后几个月的开发变得非常迅速(感谢Python!)。

在1996年一月,微软敲了我们的门。他们内部的电子商务系统的开发不断失败,他们需要一些懂得行业(那时我们做电子商务已经好几年了)而且聪明的人。当谈判开始时,我们在整个春天继续开发软件,在1996年六月完成了工作。

当我们带着我们的短小的Python代码到了微软,我们要完成如何把产品发布到Windows NT上。我们加入的小组里有很多Windows经验,我们制作了一个IIS插件通过管道来与嵌入我们的Python服务代码的后端NT服务器进行交互。经过从七月开始的疯狂冲刺,我们在1996年十月发布了微软商业服务器1.0版本(Microsoft Merchant Server 1.0)。

是的,如果你把外面的封装解开,隐藏在系统下面的,是一个Python解释器、一些扩展DLL文件、以及一堆.pyc文件。微软当然没有宣传这一点,但如果你知道从哪里寻找的话,它们确实在那里。

当院长的硬盘上存了色情图片……

国外大学的关于计算机伦理的讨论案例: http://www.cse.nd.edu/~kwb/nsf-ufe/PornOnDeansPC.pdf,讲的是在1999年5月,哈佛大学神学院的院长觉得自己的硬盘不够用,于是找服务人员安装了一块空间更大的硬盘。服务人员在把旧硬盘的资料转移到新硬盘的时候,发现了院长保存的“私货”……

事情的结局挺有意思的,大家可以对照去年一位华人明星的类似事件来思考一下。

February 15, 2009

合理吗?

今天打开Google Reader,按照我一贯的先解决新文章少的blog的习惯,上来就看到了Herock Post的这篇文章。

整个事件目前真相未明,但事件带来旁观者的改变让人挺无奈的。让这几天一直沉浸在思考“思考”的我不禁要问:

这合理吗?

中国需要计算机伦理学家

今年的二月16日开始的一个星期我们学校称之为“Reading Week”,实际上就是期中假期,也可称为“春假”。我正好利用这些天来整理一下从开学到现在所学的内容。

今天整理了一下“计算机伦理”这门课的笔记。刚开始上课的时候对课程没有概念,于是课堂笔记就胡乱的记录在几张纸上。现在对课程的理解有了一定程度,就筛选、整理初比较重要的内容,抄在真正的本子上。

刚才整理了这门课的第二堂课的笔记,那时老师在给我们简要的介绍为什么学校会有这门看似和计算机科学没有什么关系的抽象课程。其实这一段时间我也理解了“计算机伦理”的重要性,但总觉得它是离我们相当遥远的事情。但刚才笔记中的一句话给了我触动,原来结合中国的国情,我们是非常严重的需要“计算机伦理学家”的。

触动我的这句话是“We shouldn't let others to decide the planet of computer”,翻译成中文就是“我们不应该让别人来决定计算机的命运”。这里的“我们”指的是计算机科学家、以及将要成为“计算机科学家”们的计算机系的学生们。“别人”只的是其它学科的人们。

这句话的背景是:计算机发展了这么多年,但真正探讨“计算机伦理”的先驱们很多却不是“计算机科学家”。相反,真正决定计算机“伦理”的人们却来自法律学家、哲学家、与极少数计算机工程界的人们。而很少有人以计算机科学家的身份来决定计算机伦理的概念、性质、政策等等。这样就造成了一个问题:真正懂计算机,对计算机领域有深刻见解的人们没有了话语权,而决定计算机命运的政策却由一些对计算机不那么了解甚至不懂计算机的人们来制定。为什么在中国除了CNN等一些社会类网站外,一些自由软件的网站、维基百科、flickr等计算机相关的网站也常常无法访问;为什么中国不允许使用无线网络;为什么中国移动不允许个人使用路由器来分享网络;为什么中国盗版这么盛行……由不了解计算机的人们来指定计算机界的规则,是造就这些状况的重要原因之一。

另一个事实是,某种程度上来说,是计算机科学家们自己放弃了相关的话语权。本身社会就对“计算机伦理”的认识相当肤浅,也没有特别重视,计算机科学家们沉浸于计算机技术中,也没有对“计算机伦理”方面的规则空缺、甚至概念空缺有相应的警惕。不仅中国,欧美发达国家一样如此,这里的人们对“计算机伦理”的认识相当空洞。

这就是我们要研究“计算机伦理”的价值所在。计算机引起的社会问题的处理方案,应该包括计算机科学家们的影响。

February 13, 2009

统计结果与伦理行为

limit.png周一的那节伦理课我们进行了一项游戏。老师拿了一个盛了许多豆子的塑料罐子,说里面有600至6000颗豆子,让我们估计里面有多少个。

我当时估计了单个豆子的体积,估算一下一层豆子大概有多少个,然后估计罐子里盛了多少层,得到结果后取一个相近的整数,得到2000颗。答案是2047颗。

重点不是有我估计的有多接近,而是在一群人(我们的样本是大约20到30人)的估计下,大家结果的平均值接近真实值。

其它类似的事实:

  • 在美国进行过一个实验,在纽约随机找群众估算纽约一共有多少出租车,结果人们答案的平均值就是真实值。
  • 在绝大多数情况下,Google搜索结果的前五个基本上就是你要的网站。
  • 普选的结果是大家满意的。

在群众样本组够多的情况下,单一个体对最终结果的影响几乎可以忽略不计。 就像政治上的选举,你一个人把选票投给任何一方都不会影响结果。理论上说当投票人数N趋于正无穷时,你的结果在最终结果中的比重1/N就趋近于0。

这样就带给我们一个困境。有时候我们在伦理道德上做的正确的事情,根本不会对社会的伦理道德起到任何积极作用。比方说我们坚持垃圾分类,但别人没有这样做,你的努力就不会给环境带来任何正面的影响;你不开自己的车,而是坐公交车上班,你减少的那点汽车尾气、温室气体、石油使用量对环境改善的影响为0......而你的付出无疑是没有任何价值的。这给了我们一个多么充分的理由去享受"为恶"带来的乐趣啊!

奇妙的是,当综合大家的影响后,确实可以影响最终结果。我怀疑应该有一个阈值,当群体中的个体数目超过这个阈值后,这群个体的集合的影响就会给整体结果带来决定性的影响。我凭感觉觉得这个阈值应该至少小于等于总体数目的一半,而且应该有一个函数g=f(n),当总体数目为n时,g就是这个阈值。不过我不精通统计学,对此没有任何的严格的结论。

看图不说话:情人节

临近二月14日,我们学校的校报Manitoban登了一些相关的内容。有些图片比较有趣,我把它们照下来,放到这里分享:

1

IMG_1369

2

IMG_1370

3

IMG_1371

4

IMG_1372

5

IMG_1375

6

IMG_1376

7

IMG_1377

February 12, 2009

我很赞同Windstorm在“社会的自私化发展—博弈论分析二”一文(也就是上一篇文章中介绍囚徒问题的文章之一)中的这么一段话:

当然,上面所有的分析都是天真而理想的分析。事实上,人和动物最大的区别:文明,让人不会,至少短时间内不会陷入全背叛状态。文明在人类历史上最大的作用就是促进了合作,事实上,人类文明社会就是一个在重复不断相互作用—–你也可以说利用——的人群,而某些作用必然会在自身利益和集体利益之间做出选择。这就是一种博弈的平衡。

刚才在车站等车回家的时候(我坐公交车上下学,是为了环保还是因为我没有车?:)),想起了小时候看的电视剧《绿卡族》里的一个镜头:那位带着儿子回国的男人,在美国适应了那边的道路交通,结果爷俩在中国着陆后,半天都没有过去一条马路,原因是车辆不让行人,导致他们走一半,看到有车冲过来就赶紧退回马路边去。这应该是文明达到博弈平衡的例子。公认越“文明”的国家,发生“邪恶基因”主事的机会应该越少。

另外,虽然我是属于“向善”的一类人,但等车的时候我也想到几乎不可能做到在任何方面都做“善良的基因”。因为今天晚上锻炼结束后在公共澡堂淋浴时,在淋下来的水的“掩护”下小便,因为我不想走出澡堂走到厕所……

类囚徒问题

这篇文章记录的是我上一周的一节计算机伦理课的内容。虽然已经过去了一个多星期了,问题的内容也不是很新颖,但确实让我思考了很多,我想值得记在这里。

关于囚徒问题徐宥的文章Windstorm的文章有浅显易懂的介绍。我这次讲的“类囚徒问题”与标准的囚徒问题有些微的差别。

我们的规则是:老师说他有足够的钱要分给我们。我们有两种选择:如果我们在纸上写下2000,就会立即得到2000加元;如果我们在纸上写下1000000,同时没有其他人写2000,我们就都会得到一百万加元。我们的规则和标准囚徒问题的不同在于:囚徒如果选择了总体利益最大化的选项(也就是保持沉默),则有很大的风险被同伙出卖;而我们的规则里,无论如何我们都不会遭受损失,无论获得2000元还是获得1000000都是白给的,没有理由不选多的那种。因此我当时在纸上写了1000000。

结果却大跌我的眼镜。结果是多数人写了1000000,但仍然有几人写了2000。我就相当不能理解:选择1000000的风险仅仅在于有人为了保障自己的2000块,在没有任何惩罚的情况下,这样的风险简直可以忽略不计了。我也实在搞不懂那些写2000的人是怎么考虑的,我感觉在没有风险的情况下,写2000的是不是在故意整人呢?

但老师的想法显然和我不同。在统计结果之前他就很有信心的说里面肯定有人写2000的。结果出来后他也挺得意的,然后发表了一些论点。这些论点比游戏结果让我更容易接受。

  • 他在讲这课的大约10年时间里每次都做这个游戏,结果每次都有人写2000.
  • Safeway(我们这里大型的食品、日常用品连锁超市)的推车有特殊的设计:要取一个推车,需要在车上塞进25分硬币,这样车才从链子上脱落。但就是这样的简单设计和小额硬币,让顾客在无论多冷的天气里都把车子送回原位,这样当把车再锁到链子上时,才能取回硬币。老师也说,当他在Safeway的停车场上看到有没有送回原位的车子后,趁别人没发现前赶紧去把车子抢到手,送回原位,这样就可以得到车子上的25分硬币。而沃尔玛等其它的超市没有这样设计的车子,结果推车分布在停车场,需要工作人员定时收集,顾客也不容易来的时候就拿到车子。
  • 在电影院的座位旁边经常散落着爆米花包装盒、饮料罐、食品包装纸之类的东西。不远处就有垃圾桶,但人们不愿走几步送过去,而是直接扔到地上。不仅如此,如果你觉得自己够高尚,主动捡起地上的垃圾扔到垃圾桶里,旁边的人不会赞美你的美德,而是笑话你迂。
  • 垃圾分类在加拿大实行很多年了。但他们这一代人看待垃圾分类很冷淡。一是他们觉得即时自己分类,别人也可能不会分类,这样自己的努力就白费了。二是即使大家坚持垃圾分类,对环境的改善有多少,还没有相当肯定的答案。相反他的侄子这一代对垃圾分类很热衷,“我要为地球/未来做贡献”的话经常挂在嘴边,而他持不以为然的态度。
  • 加拿大的发达国家里自驾车已经很普及了,他们这些人也承担的起驾车上班的油钱。但很多人开自己的车而不是坐公交车上班明显会对环境带来负面影响,他说他对此相当清楚。有时候他觉得自己应该主动坐公交车上班,减少温室气体的排放、减少对石油的消耗、减少汽车尾气对大气的污染。但坐了几次公交车后,他发现公交车的环境大大不如私家车:一是可能会冷、二是人多的时候自己的空间很小甚至没有座位、三是有可能旁边的乘客早上吃了大蒜之类的食物让他感觉气味很恶心。更重要的是:他不开车,别人一样开,而他的所谓的“高尚”行为对环境的改善微乎其微,可以忽略不计。于是他后来继续开车上班。
  • 那些在游戏中写1000000的人,以及在电影院捡垃圾、主动做垃圾分类、坚持坐公交车为了保护环境的人们,并不是他们“高尚”,而是他们是“贪婪”的。写1000000的人想获得更多的钱,另外的人是为了获得别人的称赞以及获得自己心理上的满足。

他说的这些都很有道理,确实是社会不可忽视的问题。而且这类问题都有着证明“人性本恶”的特点。我个人还是抱有对善良的期待的,但确实有碰壁的感觉,不知道是不是我迂。记得在初中时每天做广播操,几乎全校的同学都不认真做,动作不到位、抢拍,我觉得既然要做就应该做好,应该遵守规矩,于是就故意认真做、把动作做满、按照节拍做,结果在整体的队伍中显得很扎眼。结果呢?班主任把我叫过去,问我为什么不认真做。我说我做的是正确的,结果得到了是“社会现实”的说教。我没有坚持反驳,当然也很不认同,以后仍然我行我素,后来班主任也没再管。

“人性本恶”或许是现实,但渴望善良并坚持善良的人是存在的。在听伦理老师论述的时候,我想到“坚持善良的人走上极端的可能性”,并感觉理解了一些做出相应的极端行为的人们:如果把那些“自私的、邪恶的”基因容器全部消灭,不就相当于净化了世间,善良的基因就可以继续存活了吗?

当然这只是一时的玩笑话,但“邪恶基因”的未来是什么,难道是某些人说的“末法时期”吗?

Bill Gates在TED上谈论教师问题

TED我印象里很早就知道了,但一直没有用心去看。我们伦理课的第一次课堂考试老师就出了关于TED上的视频的问题,老师让我们看了Bill Joy、Ray Kurzweil和Kevin Kelly的演讲,否则考试就答不上。开始时我觉得可能会太难,听不懂,只好强迫自己去看。看了以后感觉还可以,多看了两遍后也差不多理解了。然后就有点迷上了TED,它的优点就是很多各行各业的大师级的人物谈论自己的想法与见解,多数都是那些大师的比较新的观点,我感觉很有启发。同时带动我思考,也是一件好事。

这周一看到了Bill Gates在前几天在TED2009年会上的演讲,讲得是关于医疗和教育的问题。在演讲中,Gates说了两个话题:一是“如何停止蚊子传播的致死疾病?”,二是“如何使老师great?”第一个话题中讨论的内容与我们国家已经有了一大段距离了,因此我也不是很关注。但关于教师的问题就让我感到比较震撼了。

Gates在这一段里说了一句话让我印象很深刻:“如果我们有优秀的老师,在两年里就可以把和亚洲在教育上的差距弥补,在四年里就可以把世界上其它的所有国家都甩在后面。”我不知道Gates在这里说的亚洲国家包不包括中国(亚洲国家的教育能排在前列的应该有中国),但我觉得Gates说的是表面的形象。也许是在美国的中国裔小孩都比较优秀,给了老美这么个印象。我的印象里中国的基础教育一直是非常薄弱的。

这点小事先不谈,我觉得震撼的是Gates对教育的认知,也大概代表了西方国家对教育的认识。当中国的教育还在致力于“驯化”百姓的思想时,老美已经开始考虑基础教育建设对国家的影响了。我们已经被落下很远了。更让人难以接受的是,在美国Gates可以在TED上任意宣扬关于教育改革的思想,而我们还在被升学、待遇、潜规则之类的问题困扰着。改革教育的声音更是几乎没有,有了也没法流传,流传了也没法进行操作。至于解决方案,我个人是对peaceful的演进不抱什么希望。

另外,前几天刚刚发现了一个名为TED中国粉丝团的blog,去年10月份成立。内容是即时关注TED的新闻,以及很多TED演讲稿的中文翻译,相信对英文不好的同学有很大帮助。

February 11, 2009

老外知道Baidu

今天的伦理课上老师讲解了这门课的学期论文的主题与要求。我们的论文主题是“Net Neutrality”,也就是“网络中立”的意思。网络中立这个中文翻译并不是对"Net Neutrality"一词的精确表述。举例来说,ISP限制用户的网络带宽与月流量,对于“中立”一词应该没有什么关系,但确实是"Net Neutrality"的一个话题。

网络管制当然是其中的一项重要话题,老师也在课上提起了。他说“如果你在中国用Google搜索一些东西,你会……”,然后是关于Google的著名信条“Don't be evil”的探讨。这时下面有同学就说道关于Google被劫持到Baidu的事件。

作为在场的少数中国人之一,我当然有很深的感触。其中最强烈的一点是中加(应该不止加拿大)两国人民的信息不对等。长城在古代的作用是抵御外族入侵,现在长城的作用是抵御外族信息入侵,也就是堵住中国国民的耳朵。对外国人民几乎没有任何影响。

人们是否应该接受被过滤了的信息,这也是一个容易引发强烈讨论的话题,我不打算在这里做出讨论。但当我想起这件事的第一个感觉,是觉得中国人比加拿大人接触到了更少的信息,无论这些信息是好是坏,总是比别人少了,应该算是一种吃亏吧。

此外,信息这种东西,我的感觉是,接触的多总比接触的少好。不像“债务”、“疾病”之类的东西,多不总比少好,信息应该是越多越好的(此处不讨论信息过载的问题)。原因?信息是引发思考的一项重要因素。我最近常常感到我们比老外少了很多“正确”的、“有效”的思考,也就是critical thinking,这与所谓“信息不对等”也有很大关系。

模糊的来说(因为我没有精确的证据支持),我感觉国内,至少是网络环境里的种种问题,就是我们缺乏有效思考造成的。而这种思考能力的缺乏,应该与原始信息有很大关系。

很忙……很累……

1

我们专业的课有些不一样。我的很多同学是几乎天天实验,有的经常考试。我们这两项都没有,我们有的是一门接一门的作业。

上一个星期就又是一个作业密集周,和刚开学时的日子有了明显的不同。那时除了能把从伦理课上思考的东西写下来发表在这里,还可以在业余时间翻译一下Guido van Rossum的关于Python历史的blog。他的这个系列的blog讲一门开发语言的历史,没有太多的技术细节,因此我的翻译标准很低,遣词造句就不过于考虑了(经过这次翻译,我明显感觉到英语的从句很难优美的转换成中文),只要读者能大概理解意思就OK。这样翻译起来不难,速度也不满,基本上一篇文章我花一个小时左右就能出炉。这个blog我是从头开始翻译的,从我的经验来看,没有同时的其它中文翻译者。所以我肯定会坚持下去。到昨天为止,我一共落下了三篇没有翻。正好今天的作业交了,下周又没课,应该会很快补上。

2

伦理课虽然全名叫Professional Practice in Computer Science,但讲的内容和计算机技术的关系很小,和哲学的关系比较大。这也确实是一门发人深省的课,每次听课时虽然仍然对课程的具体内容感觉云里雾里,但总是感觉灵感如泉涌,总有很多观点、想法冒出来。过去不忙的时候,我下午大概五点前下课后,我一般会到自习室,立即把想法总结出来,发布到这里,然后再去锻炼什么的。不止这门课,同时这种有灵感的状态也影响了其它方面,带动我也有了相应的思考。因此那段日子里,我的blog文章数目“暴增”,基本上超过了一天一篇。这里也有Paul Krugman的影响,他的blog平均每天有将近10篇。有一段时间我即时关注他的blog,发现他几乎是一有了什么想法就写上去。有时候我也觉得blog文章太频繁不太好,于是就把一些还不是那么清晰明确的想法留着,等着以后写。结果脑子里就留了一条一条的idea。这段日子忙,就有点荒废了这里,但脑子里并没有停止思考与产生新的想法。同时一些存了很长时间的想法也渐渐淡忘了,有点遗憾。以后争取不这样。

周一看了Bill Gates在TED上的演讲,其中关于教师的让我很有感触,还没有时间写出来。

3

去年暑假的学期(基本上是5月到7月末)我选了三门课,同时进行的课只有两门,因此学习很轻松。相比较国内的温度,这里也很凉快,更棒的是这里的蚊子不喜欢我的血,因此我过的很舒服。那时候我基本上每天晚上都安排第二天的日程,用iCal和手机来提醒自己,有时也用一阵子RememberTheMilk的服务。后来也忘了怎么也荒废了。大概是去年秋季学期一下子忙起来,也没有功夫管什么日程了。结果不知不觉生活节奏又乱了,感觉很不习惯,导致那个学期一直没精打采的。这学期的课程量和上学期持平,我也在渐渐摸索一种新的日程模式。但作业多的时候常常没办法。对我来说,GTD之类的模式需要有一定空闲时间,而我有时觉得挺欠缺。

4

国外大学的学期安排与国内有很大的不同。国内是每年两个学期,基本上前一年9月开始秋季学期,到过了元旦一段时间后的春节前放寒假,然后是当年2月初开始春季学期,到大约7月份结束放暑假。加拿大是每年三个学期,9月到12月20日左右是秋季学期,然后是圣诞节,到了一月初开始冬季学期,上课到4月中旬,然后是很长的暑假,从五月一直到9月前。暑假里学校也会开大部分的课,提供给一些想利用暑假时间加速学习的同学,因此这一段也算是夏季学期。有些比较“低级”的课一到两个月就能完成,像我们学的一些专业课就要花整个学期来学。

废话这么一堆就是说由于这种变化,在国内我会在春季学期开始的时候过生日,很轻松愉快的日子,到了现在,变成了冬季学期里最忙最累的一段日子。基本上除了和同学聚餐一晚上外丝毫没有任何放松。好在随着年龄增长,我渐渐觉得过生日是很无聊的事,因此也不会感到难过。看了蔡智浩的《生日不快乐》一文后,更加感到释怀。

5

再有不到半小时计算机伦理课就开始了,现在精神不错,对一会的课很期待。