单位停车场,一排树十几棵,像是商量好了一般,在同一个高度泛红,连成一条笔直的线,如同一支朱笔划过。
家门口,树根之中长出不同的树和草。
家后院,野兔看到我过来就躲在菜叶下,我靠近了它也不敢动。
家前院,这棵丝瓜似乎知道周围没有地方攀爬,于是没有分枝,笔直向上一条线地攀登。
单位停车场,一排树十几棵,像是商量好了一般,在同一个高度泛红,连成一条笔直的线,如同一支朱笔划过。
家门口,树根之中长出不同的树和草。
家后院,野兔看到我过来就躲在菜叶下,我靠近了它也不敢动。
家前院,这棵丝瓜似乎知道周围没有地方攀爬,于是没有分枝,笔直向上一条线地攀登。
周日看了盲人印度舞,舞蹈开始前需要有人协助初始站位,并且带着舞者从初始站位出发向各个方向走一下,感受舞台的大小。
舞者很认真,一丝不苟,但总感觉和传统的印度舞不一样,连播放的音乐都感觉很妖异。究其原因,或许是因为知道了他们是盲人的缘故,心里总想着舞者是多么地不容易,于是欣赏舞蹈时难以进入状态;也可能是印度舞的一大特色是灵动的会说话的眼睛,而盲人舞者无法像传统的印度舞者那样靠眼神来表达。不过过后问女儿感觉怎么样时,女儿感觉他/她们跳得很好,或许儿童不像我们想得那么多,反而更能直接欣赏舞蹈的本身。
女儿终于到年龄了,可以上幼儿园了。
国内的国际学校多是富人读的,美国的国际学校则是免费的,主要服务于在美国的外国人。使用英文,但每周也有外文课——学的是中文。
一个班20-21人,周二草坪上的家长会还有冰激凌吃,可惜错过了。后面分三批到学校熟悉环境,我们排在周五。女儿去了一天,去的时候叫着“怕”,要我们贴身保护了一上午。我们逮着机会溜走后,下午接回来时是笑着回来的。
教室门口橱窗的中国元素。有一个上面写着合肥市宿州路幼儿园的张伟小朋友。
外观,国际学校历史一般比较久一些,房子看着比较旧。
教室一角。
老师要我们搜集这个:超市里一些商品会有这个绿标签,搜集了交给学校,学校可以用它换0.1美元。
这个是给学校抽奖用的。
以前只知道图书实现共产主义了,图书馆大家随便进、书随便借、免费上网、免费借CD/DVD,可以各取所需,按需分配,还提供各种免费食品给小孩。
以前只知道孕妇和小孩实现共产主义了,穷人生孩子完全免费,生个小孩产前产后一万五千美元全部报销,中间还可以领各种补助,小孩5岁前也有各种补助。配给的牛奶、鸡蛋、水果、麦片、果汁、花生酱等。
以前只知道教育实现共产主义了,免费上学,学校还提供免费吃喝和图书。文具要自己买,但也有不少组织为大家提供免费文具和书包。
如今知道,穷人吃的东西原来也可以按需分配。
收获的季节,有很多人捐赠新鲜的蔬菜和水果。去年Mid-Ohio foodbank分发了一千万磅的新鲜蔬菜和水果。一家三口家庭年收入小于3万7千美元左右(如果我没记错的话,不过即使记错了也错不了多少,这个收入拿到国内的话应该属于被共产的一群了)就可以领了。收获的季节每个月领一次,据说每次东西各不相同,但质量都不错,和超市里的一样。这个月是一个西瓜、一个哈密瓜、20个桃子、30个李子,12个玉米、2袋马铃薯。这是共产主义?是社会主义吧,定量分配。后面共产主义来了,黄瓜、西红柿、胡萝卜、青椒,你需要多少就领多少,只要你家里放得下。穷人们一个个开着车来了,东西太多,所以分发的人为大家提供超市里的大手推车、还帮着大家往车上运。
难怪有人说,美国没有真正的穷人。路上碰到有人乞讨的时候,熟人都叫我们别给。因为据说政府已经为他们提供了居住场所以及食物,只是这些人要吸毒,而政府会要给他们戒毒,所以他们才不住政府提供的地方。你给他们的钱他们马上就会拿去买毒品了。
0. 引子
人语——英语:期望很高,读书时投入很多,工作以后得到的回报也很多;但是其实我深深地知道,英语永远无法像母语那样成为我生命中自然而然的一部分;但我更深深地知道,即使明知没有希望得到英语的垂青,也明知对英语无法像对母语那样产生发自心底的爱,但我仍旧不可能离开英语,只能无怨无悔地继续投入,别无选择。也正因为如此,总会有种幽怨不时地飘过。
图语——UML:不离不弃,在最失落的时候给了我回光返照的安慰,但却始终未能修成正果。人生难免不如意,只是想起来总会有些遗憾。
图语——机械制图:曾经的深爱,还到图书馆自学了几本更深入的教材,为各种精巧的设计惊叹不已。但一切属于单恋,“我本有心向明月,奈何明月照沟渠”。就像寒门小伙难娶富家千金,要把我的各种想法和设计变成现实,门槛太高,这也使得我最终彻底放弃,转向了计算机,转向了一样给我带来种种惊叹的程序设计。计算机貌似豪门,其实一旦拥有,就只需要一点电费就能没有成本地实现各种新奇的梦想了。俺的眼光还是蛮准的,尽管刚工作时的几年计算机仍旧属于稀缺资源,到了今天,很多手机都赛过那时的计算机了,更何况学校机房也向学生免费开放。
机语——编程语言是计算机所用的语言,学了很多编程语言,情形各不相同。有的是包办婚姻,先结婚再恋爱。有的是利益型婚姻,皆为利往。有的是心怀不轨,奔着A去追B。有的是跟随潮流,跟着大家一起追大众情人。年轻时追求各种不同的语言,有机会就自学新语言,以后想感情归一了,却已停不住脚步,现实的无奈还是让自己继续不断地学了各种各样新的编程语言。所幸的是,计算机的世界很单纯,只要追求,都可以上手。只是有些付出很少,得到很多;有些付出了很多,却只是满足了一下自己的兴趣。
其实在国内搞编程的大都各种语言通吃,不像老外,几种语言就可以做一辈子。不过话说回来,其实编程语言都不难,学到后面大同小异,相近的语言花个半天看一下就可以上手了,难的是学习各种不同的开发工具、各种不同的程序库和框架以及设计中的各种思想,那可是如汪洋大海永无止境。
简单点,就单单回忆一下编程语言吧。
1. Basic语言——计算机算命
本科时学院有个计算机四年不断线的理念,就是每年开一门计算机相关的课程。Basic语言是第一门,也因为这门课程,第一次有机会去计算中心“上机”。
其实那时上机的机会很少,只够把自己的作业挑几个输入进去运行一下。大部分时间在纸上写程序,但从来没有机会去运行一下看看效果。考试则全部靠背,我背了个最高分:98分。
读研究生时,南京街头流行计算机算命,有同学弄了个程序来,我们在Quick Basic中跑一下自己给自己算命。看了一下代码,大部分是if…else…语句,就知道计算机算命是多么不靠谱,唯一有点技术含量的是根据你的出生日期算出来你已经活了多少天了,算命本身则全看编程序的想打印什么给你看。
2. Fortran语言——牛顿下山
Fortran是学院安排的第二门计算机课程。当时的主流思想是:学Basic入门,但工科要用数值计算,必须学Fortran才行。不过说实话,我对学Fortran已经没有多少印象了,因为之后就没多少机会来用。
只记得后来学数值计算和算法分析时是用的Fortran,那时对用牛顿下山法解数学方程感到很震惊——竟然可以在一个区间用二分法不断地猜结果来计算方程的近似解!和学数学课时完全是不同的思路,解法很暴力,明显不像数学那么准确,但确实又能解决问题、能达到工程所需要的精度。那时另一个让我惊讶的是,对于设计得不好的工程计算,小数点后N位相差一点点,竟然会层层放大,最终结果会有天壤之别。不过那时我显然没弄懂为什么让我们学这个,导致的后果是我对任何计算出来的结果都不知道该不该相信。
3. Pascal语言——宇宙延伸一倍的欣喜
印象中,Pascal是自学的。之所以学它是因为自己选了一门叫《数据结构》的公共选修课,而那时的数据结构教材都是用PASCAL作为例子来讲解的。之所以选《数据结构》这门课程,用选修课老师的话来说:这么点时间其实学不了什么东西,大家其实都是来混机时的。确实,那时大家都喜欢去上机,但没有机会,只有选了计算机相关的课,才能得到几个小时的上机机会。老师在有限的时间里只教了链表、堆栈等,最后的大作业是编程序计算逆波兰表达式。
学Basic、Fortran、Pascal,其实都在同一个层次学习,学到后面就会发现大家都差不多,都是变量、分支、循环、数组、文件之类的。那时虽然对编程序很痴迷,但实际上做的其实都是很简单的计算,自己在图书馆找了本趣味程序集,里面大部分也是把各种现实问题数学化后靠循环、判断来解决。时间久了,对着小型机的终端就会感觉不知自己还能编些什么有意思的程序。
在这百无聊赖的时候,忽然间数据结构向我揭示了另外一篇天空:当一块块数据按照各种方式链接在一起后,就可以充分发挥你的想象力,做出各种奇妙的事情。我和这些数据打了这么久的交道,怎么就没想到把它们链接在一起呢?
这个感觉,就像你呆在屋子里过了几年正无聊的时候,不小心触碰了身边的一堵墙,于是这堵墙突然向外缓缓移动,我盯着这堵移动的墙,一个全新的宇宙不断映入眼帘,整个宇宙似乎一下子翻了一倍,在这个新扩充的宇宙里你可以发挥想象自由驰骋。更让我惊讶的是这个全新的宇宙本质上是如此的简单,它就在我身边,和我仅隔了一层薄薄的纸板,而我竟然没有丝毫察觉,更没有想到过伸手推一下这堵墙。这时的头脑是兴奋异常又异常冷静,整个世界都宁静下来,吃兴奋剂的人估计就是这种感觉。那时每天走在校园里,看人来人往,觉得这个熟悉的世界之外竟然还存在一个完全不同的世界,而我就在这两个世界穿梭,一种使命感油然而生。
这种醍醐灌顶般的震惊,在我的学习史上,后来只有工作以后学习设计模式时再次领略过。
之后对软件就不断有各种新想法,在纸上写各种各样的新程序。印象最深的是做了一个简单的有自学习功能的游戏。
读书时用了很长时间Pascal,有了微机以后就用Turbo Pascal,再之后,Pascal就逐渐淡出了,但数据结构从未淡出。有句名言:程序=数据结构+算法,以后学C语言、C++、Java,数据结构的作用依然。研究生时学习人工智能和专家系统,真正把树的结构弄清楚,编一些有点智能的下棋游戏,数据结构所带来的新世界不断在扩展。
4. 汇编语言
学习汇编语言,一方面是学单片机课程时做了简单的实验,更多的是后来有机会用微机了,看别人都在屏幕上显示出画图出来(后来知道人家是在用Windows里的扑克游戏),只有我的屏幕上光是文字,于是去钻研如何控制屏幕,能在屏幕上画出线来。那时的开发环境还比较简单,钻研的结果是只能直接往内存指定的地址写数据,可以控制屏幕上哪个像素显示什么颜色。这个就只得靠汇编来帮忙了。高级语言调用汇编,到以后加载鼠标驱动、读鼠标状态、读键盘状态,把这些和其他语言结合,就感觉整个计算机都归我控制了,只要能想到什么效果,都可以通过程序实现。
5. LISP语言
学AutoCAD做二次开发用,和其他语言明显不同,所有的东西都放在表里。
读研究生时曾经以为这个会成为我的主业,但最后还是没有做成项目。那时有海外学者到系里做学术讲座,我们去听了,发现都是我们平时学过的东西。最后交流时,系里的教授副教授们也没提什么意见,就是说能不能分个模块给我们做?但还是分不到一杯羹。那时项目就很难拿到,就是这种低技术的活也不容易揽到。
6. Prolog——第一次做计算机方面的项目
硕士毕业的项目用了Prolog,这是唯一一个让我花了很大的劲才弄懂的语言,因为它的思路和其他语言完全不同,它的内核很死脑筋,以不变应万变,完全机械地回溯、匹配,却表现出了接近于日常生活的推理能力。
印象最深的例子是,程序里给出如下规则:
爷爷(X, Y):- 父亲(X,Z), 父亲(Z,Y)
给出如下事实:
父亲(张三,李四)
父亲(李四,王二麻)
它就可以靠回溯匹配判断出 爷爷(张三,王二麻) 是否成立。
摸清楚它的脾气后,一切就很顺手了。用Prolog编推理机、表示知识,我甚至用它调用汇编控制屏幕来编写输入界面,在屏幕上画线、擦线做菜单,并做了个绘图软件。
虽然付出不多,但它最终给了我很多,在省级科技进步奖里挂了名,后来又给了我上海市优秀青年教师的荣誉。但这些又确实没派上什么用场,评讲师时第一次还不知道消息,第二次则已经不需要了。评副高时又过了时效。
一个小插曲:刚参加工作时,投稿一篇文章,里面需要通过程序修改配置文件,但新单位找不C, C++, Pascal的编译器,还好我随身带的软盘里有Prolog,就用Prolog绕了半天编了个程序。心想编辑肯定要笑了:就改个配置文件还用Prolog。还好编辑没提出异议,还是接受了稿件。再之后,就再也没机会用Prolog做项目了。
7. C语言——第一笔计算机方面的稿费
传说C语言最厉害,最贴近底层,代码的效率最高。更传说读研究生时都需要会C语言,老板是不会给你时间学编程语言的,项目要用到什么技术时都是假定你已经会了的。于是未雨绸缪,将C语言学了。一开始还先编译成目标代码再链接在一起,后来有了Turbo C这个工具,再后来Turbo C++、Borland C++,但其实我是按着C语言来使用。这个语言是我学生时代最耗时间的语言,各种有意思的想法都靠它实现了,但里面的指针绕啊绕很费脑子,程序的每条代码都装在脑子里,每天走路时我的大脑就是计算机,一行行去执行那些代码看哪里有问题。
那时编个小程序就有杂志愿意发表代码,就投稿了一些简单的电子琴、小游戏、编程技巧之类的文章。倒真是有学生看了文章之后再把这些代码逐行敲到电脑里去调试,碰到问题还把代码打印出来通过邮局邮寄给我检查。看来编程的发烧友还是很多的,只是那时很多地方还没普及网络,否则直接把代码email过去就行了。
再后来用到C语言,则是工作以后在服务器端用它编写简单的CGI程序,只是后来它迅速被perl、php取代了。
8. C++语言——第一个计算机方面的兼职
这个语言给我带来了面向对象的概念。读书时出于打工的需要,三天突击自学就去面试去了。再次证实了我的感觉:一门新的编程语言,学个几天就可以用了,只是要用得好的话,那是永无止境的事情。
直到工作以后学Java,我才真正用上了面向对象的特性;直到再以后学了设计模式,我才敢说自己总算掌握面向对象的精髓、真正知道它好在哪里了。
9. 结构化查询语言(SQL)
在早期很长一段时间没搞清楚它和微软的SQL数据库以及开源的MySQL之间的关系。
后来在各种语言的程序中都用SQL语句了,再后来才发现它竟然也是属于一种语言,是一种领域/行业语言。再究其本质,其实数据库解释SQL语句时和BASIC解释器解释BASIC程序本质上是一样的,只是一个用在数据库这个领域,一个用在开发程序这个领域。
10. Foxpro
它既是小型的数据库又提供了二次开发。从Foxbase到foxpro到visual foxpro,有一阵子成了数据库编程的代名词,很多人靠它吃饭。但我似乎只是编了些小程序、做些界面玩玩而已。
11. Java语言——第一本独立编写的书
硕士快毕业时,Java诞生了,宿舍里流传着Java的传说:Java难学,一家企业要选拔员工去出国,只要会Java,就能出国。
去单位报到的火车上,在报纸上看到一个有关Java的报道,那是我第一次看到Java这个词。现在想来,那时看到的应该是10个最主要的操作系统供应商将在其产品中嵌入Java技术的报道。那时,还没有意识到Java和我会有什么关系。因为我认定有了C++已经可以编写任何程序了。
到了单位,学Java成了一项任务。虽然是自己去SUN的网站下载资料自学,但上班的任务是学习、还给你发工资,对我来说是天上掉馅饼了。看了资料才知道,尽管当时很多人认为Java难学,其实只是因为教材少,Java其实已经把C++中的复杂的东西都简化了。对我来说比较难的是,当时和单位的同事分工,他学习教程的前一半,我得跳过前面一半直接从教程的后一半开始学习。
Java让我真正学习了面向对象的各种特性,从此只用来做过一个短暂项目的C++语言就被打入冷宫,我准备将Java作为我所学的最后一门编程语言了。随着JSP、Servlet、J2EE出现,一路跟下去。
Java给了我很多第一次,第一次去首都出差、第一次写书……,以Java为依托学到的各种技术和思想就更多了,只觉得自己的内功越来越深厚。不过俺这么深邃的思想在国内国外都没派上用处,在老外这里面试时,就靠一个Java程序实现一个算法搞定面试,其实只用了十年前的技术,各种内功还没去发挥,但老外就已经很满意而当作一个面试案例了到处宣传了。在国外做编程确实比在国内简单多了。
12. 超文本标记语言(HTML)——第一本参与的书
学Java之前接触了HTML,第一反应是:这也叫语言?值得这么流行?不就是一个文本文件加个标记让浏览器根据标记排版、并点击后访问其他文件吗?和平时用的WPS在文件中加排版标记有什么不同?
还跟着领导出了生版了生平第一本书,第一反应是:这么简单的东西也值得写书?不过我写的是其中Java部分。
还看到有人在大学的学报发表论文介绍HTML,好歹也是核心期刊。第一反应是:这个都能作为论文发表?
不过那时做网页必须全部手写所有的标记,要记住这么多标记倒是比较费功夫的。印象最深的是自己把border写成了boarder,结果做不出效果,查了很久才发现这个问题。后来用这个考学生,考倒一大片。现在想想真是不够厚道。
13. 虚拟现实建模语言(VRML)
刚工作不就就用它了,存粹靠记事本做了个校园的模型作为校园网页大赛的一个亮点,这么简单就做了个三维的东东,那时真是那个兴奋啊。
14. JavaScript
它和Java的关系让很多人包括我困惑了很久,因为实在没什么关系,就是看Java比较火,就把名字改了借它的光而已。但我一直怀疑为啥没有版权问题。
做动态网页时用了很多JavaScript,但大部分都是参照别人网上现成的代码进行改编,从没正正经经地去学它。有几年不做网页了就再也不用它了,觉得这么多新技术出来了,它应该已经退出江湖了。没想到多年不碰它它仍旧风头不减,不断有新的东西出来。出国以后有项目做了,做的第一个项目也是以HTML和JavaScript为主,十几年前用的东西竟然没做多少知识更新就能直接派用场,只是和google map、KML之类结合了一下,还要学一些新的软件包和调试工具,就这些就赢得了老外的信任。一个硕士生找工作前还让我辅导一下JavaScript。
15. Perl
刚参加工作时出于工作需要,编写服务器端程序,之后我就不用C语言来编写CGI程序了。
16. PHP
PHP流行时是我的同事介绍给我的,我下意识地拒绝学习,因为跟风是永远没有止境的,而且不喜欢它把HTML和PHP两种不同的代码混杂在一起的风格,觉得读着特别别扭。但不知不觉周围就全部是PHP了,帮人看代码时也都是PHP,也就不知不觉地和PHP熟悉了起来。
17. ASP
微软的,一直在坚持用自己的JSP和Servlet,我要一路Java走到底。但微软太强势了,偶尔还是不得不面对ASP代码。
18. C#
总觉得它是抄袭Java的,任它多么流行,任微软怎么宣传,拒绝学它。不过后来出于上课对比不同语言的需要,还是简单学了一下。出国以后还在一个项目里用了一点点,主要是客户的环境中已经有.NET了,再让人家为一个小东西装个Java的话太臃肿了。
19. 工具命令语言(TCL,Tool Command Language)
读博士时用了网络模拟器NS,除了改内核得用C++以外,一般使用就靠TCL了。不过我老是想起那个王牌彩电的广告。
20. 扩展标记语言(XML)
XML那个热呀,反复学过几次,从编程的角度学和从做研究的角度学是完全不同的思路。最后对我真正有用处的还是编程用Java、JavaScript访问XML文件。
和HTML相结合,又出来个XHTML,我晕了一阵发觉和以前的HTML区别不大。就按照符合XML规范的HTML来用它了。
21. Web服务描述语言(WSDL)
搞Web服务时学了一下。
22. 业务流程执行语言(BPEL)
搞Web服务时花了很大精力看文档、看论文研究了一下。
23. Web本体语言(OWL )
本来应该叫WOL的,但WOL发音太拗口了,就OWL吧,还有一个说法是为了纪念William H. Martin 在上世纪70年代发起的 “One World Language” 项目。
在国内入了门,出了国继续用。
24. Flex/ActionScript
做Flash,一直坚持住没去学,但出国以后做项目时还是用了一下。
25. Python
第一次听说Python这个词是出国前了解云计算时,试了一下Google App Engine,看到它以前支持Python程序,后来开始支持Java程序了。那时对Python一点概念也没有,就直接看Java部分了。谁知道出国后一年竟然开始用Python了。
26. YAML
这个算是语言吗?不过是一种存储数据的文本格式而已。但它确实是从C,Perl,Python和XML借鉴过来的,早期它的全称确实叫语言:Yet Another Markup Language。
但后来它的全称变了,说自己不叫标记语言,全称为YAML Ain’t Markup Language。它还是语言吗?这和GNU全称叫GNU’s Not Unix、PNG有种全称叫PNG’s Not GIF异曲同工。
27…n. 各种脚本语言
不同操作系统不同脚本语言,DOS的批处理、Unix脚本、Novell Netware的脚本……这个就列不全了。
集大成者:
一个很好的项目,由于经历了几届学生,得Perl、PHP、Python、Java、HTML、JavaScript、Linux脚本、SQL都用上,十年不用的东西又重新上手了,很快熟悉一下以后竟然没有多少障碍。
尾声:
语言和工具本身其实是花拳绣腿,不学不行,但不断在变化,永远让你不停地追赶,算算已经追了二十多年了。回头看看,只有内功才是永恒的。
小时候看电视剧《再向虎山行》,对台词中的一句俗语记忆犹新:“练功不练拳,犹如无舵船;练拳不练功,到老一场空。”程序员在学了编程语言的花架子后,得以内功为主,否则年纪大了以后,真的要觉得自己什么也不会了。语言常换,里面的思想和方法才是永恒的,才是值得不断追求的。还好,在学习之初我就有这种意识。
但是,我练内功也练了近20年了,一直以来内功强大、花拳绣腿也不错,却也没做出什么事情来啊?
还是工科的思维在作怪,长期所受的训练形成的理念就是:接到工程项目、查阅文献应用最新技术和研究成果解决实际问题、解决方案经过实际应用检验后发表论文。但如果接不到项目呢?就一切都抓瞎了,内功再强大也没用。
所以还是理科的思维容易出成果:管你有没有项目,我看文献然后天马行空光靠脑袋想,想好了不管程序做得多烂能不能用,只要做出了原型有了数据验证了想法可行就去发论文。
从这个角度看,练拳、练功虽然必要,但并不重要,真正影响人的一生的是思维方式。而思维方式的形成则取决于所看过的书、所经历的人和事。故而人生取决于所看过的书、所遇见的人和事。
补遗:——另一种机语:数控机床
“机”非得是计算机吗?俺们机械也是“机”啊。大四学数控机床,涉及到数控机床编程来控制步进电机,俨然是一种新的语言,但其中的指令非常简单。
老师讲完了,找同学在黑板上写程序,几经动员竟然没有人上去。我觉得很容易啊,但就是没人举手。老师说:看来得来点激励措施,这样吧,谁做出这个题目就不用参加期末考试了。
还是没人上去,免考对我诱惑太大了,要省我好多时间,我终于忍不住举起了手——这是我大学期间屈指可数的几次举手。
在黑板上写完程序,当场点评,只有一个很小的粗心的错误。期末果然就不用参加考试了,交个报告就行了。
等我工作以后做老师后,上课问问学生问题时也是鸦雀无声,把问题难度降低再降低,还是没人吭声。我不敢用免考激励学生——那得算我教学事故了。但我可以给你加平时分呀,加1分,有人回答吗?加2分,5分,……最后还是得靠点名某某来做。其实我很理解你们,当初我也是,明明会回答,就是不肯举手或张口。
在老家住过地震棚、工作以后在上海也经历过东海地震的影响,但记忆中都没有感觉到过晃动。
今天下午上班时,有一阵觉得椅子有点摇,心中突然想:怎么像地震了。但抬头看看周围,并没有看到有什么东西在晃动呀。心想大概是自己的幻觉、或椅子没放稳?
晚上到家,方才知道弗吉尼亚地区发生里氏5.9级地震,我们这里小受影响了15秒。敢情下午真的是地震?不过只是一瞬间的感觉,当时没看一下时间,无法加以验证,故只能说是疑似经历地震了。
更汗的是,通过地震才知道华盛顿原来不在华盛顿州,原来离我所在的州这么近。
脑袋和心
闲来无事,挑战一下女儿:你平时想问题是用脑袋想还是心在想?
女儿不假思索:“用脑袋。”
挑战:那我们平时为什么会说“你心里在想什么”呢?
女儿想也不想:“心和脑袋一起想才想得更快呀。”
感慨:竟然懂得并行处理。
太阳雨
女儿笑得眼泪都出来了,于是自我感慨:就像出太阳还下雨,我笑的时候还流眼泪。(前几天出去正好碰到太阳雨,女儿竟然把这两者联系到一起了,仔细想想确实蛮有道理的)
想死
和女儿在湖边散步,女儿走不动了,于是拿出绝招哄她继续走——一边走一边做题目。正好有蚊子过来,拍完胳膊上的蚊子想出一个脑筋急转弯题目:月月在路上走,看到有个人自己啪啪地打自己,他为什么要打自己呢?女儿说:想死。我们笑弯了腰:为什么打自己就是想死呢?女儿说:他不是用枪指着自己的么。 咦?我哪里提到枪了?原来以前和女儿用手比作枪嬉闹时,都是一边开枪一边嘴巴里叫“啪啪”,女儿听到“啪啪”就想到是在开枪了。
蚂蚁
和女儿看着地上的一群蚂蚁,女儿很感慨:蚂蚁为什么不上幼儿园呢?不上幼儿园它们怎么学东西呢?
帽子
女儿走不动了,骑头上。忽然发现女儿正好可以当我的太阳帽。于是顺口编个儿歌:爸爸是地的帽子,月月是爸爸的帽子,树是月月的帽子,云是树的帽子,天空是云的帽子。
女儿接上:太阳是天空的帽子,上帝是太阳的帽子。
飞机不飞
飞机起飞时,叫女儿看外面:看,飞机开得多快呀,快到后面就飞起来了。
女儿一看,外面的景物飞速后退,果然是比坐车快多了。
飞机飞过云层,大地显现在脚下,飞了很久,女儿问:飞机什么时候飞呀?
我说:现在就在飞呀。
女儿说:那为什么外面的东西都不动了?
要想女儿解释清楚远近景物相对移动速度的问题倒是个难题。
地球是圆的
飞机飞在高处。女儿问:地球是圆的,对不对?
我说是啊。
女儿又问:我们现在就在地球的最中间,对不对?
我疑惑了一下,这个道理从哪儿来?为啥是最中间?不过想想地球既然是个球,哪里都可以作为最中间。于是敷衍一下:嗯,是在最中间。
快到目的地了,女儿又问了,为什么这里还是地球的最中间呀?
我奇怪了:女儿为什么老是觉得自己在地球最中间?往窗外一看,大地显示出圆弧形的天际线,怪不得女儿说地球是圆的,她的概念不是球体,而是实实在在的一个圆圈。怪不得她老是说我们在最中间,因为飞到哪里我们都在这个圆圈的圆心。
这一只,当初找地方时没算好距离,后仰的过程中被墙挡住了。还好最后仍旧顺利褪壳。
这一只在它的对面,空间很大,第一个完成褪壳。
为什么褪完壳总喜欢趴在自己的壳上?让人担心那个已经没有生命的壳会掉下来。
侧面照:
正面照:
第七门语言:统一建模语言(UML)——没有不好的学生
这也是语言?不就是图吗? 它彻底颠覆了我对语言的理解。但它说它就是语言:有精确的语法、有它的符号表示,还说一图抵千言,英文也叫Language,所以我就认可它是语言吧。写博文时较了一下真,查了一下Language的翻译,发觉语、文、话都可以叫Language,于是很怀疑我们一股脑把XXX Language都翻译成XXX语言是不是有问题。不过这样的翻译早就约定俗成了,不去想它。
人语中要数英语最让人爱恨情仇,图语中则当推UML,个中甘苦自知。起起落落花了很多时间在上面,既从应用的角度找项目做东西,又从研究的角度看了大量的论文,有很多很好的Idea。对UML一直未曾放弃,但各种原因之下,研究方面未写一篇UML相关的论文,应用方面也直到许多年以后出国以后才真正派上用场。
学这个语言对我有点回光返照的感觉,没落之际突然重新找回激动人心、开创历史的感觉,但此后很多年就一直退着走,直到出国以后重新感受辉煌了。
简单地说,学UML的起因是这样的:赋闲了,到处找活干。不管什么样,只要能干活就行。搞技术的没活干就像汽车没有汽油,感觉自己这一日千里的身躯整天趴在这里还不如一头毛驴有用。四处碰壁之际找到消息:L那里有个活在找人做,由于UML刚开始流行没什么人搞得懂,只要懂UML就有活干。于是我到处找UML的书和资料,天啊,竟然都看不懂!
在我学技术的过程中第一次碰到怎么都看不明白的情况,只有那个Rational Rose的软件用起来没碰到什么问题,但光会用软件也没什么用啊,软件得在思想的指导下才有价值。最后关头终于找到一本书,写得非常好,正好把我疑惑的地方都解答了、让我彻底弄懂了。
这给了我很深的印象:教材非常重要,只要学生愿意学,没有学不好的学生,只有不好的书或者与学生不匹配的书。
之后的经历也有很多巧合,开始干活,与L开始认识。再接下来,我靠着UML找到了相对稳定的饭吃。与L很久没了联系,再联系时已经是L反过来需要我介绍工作了。介绍给以前的老领导,做了几年正值国内的股票市场遍地黄金把所有人都吸了过去时,L跳槽了。再很久不联系之后,在我动出国的心思时发现L已经在美国了……我也到了美国,UML依旧,只是工具由以前用的Rational Rose, Rational Software Architect换成了我一直拒绝的微软的Visio。
第八门语言:机械制图——兴趣是最好的老师
往前追溯,UML算语言的话,刚进大学第一年学的机械制图也算语言了,它是机械工程师之间以及工程师和工人之间交流的语言。
机械制图其实很有意思,一个立体的物体,想象着从上往下看、从前面看、从侧面看,用三个视图就可以把机器的设计表达清楚。尤其有趣的是一个空心圆柱想象着用一把刀斜切下去,靠角尺和圆规就可以把切出来的形状精确地画出来。我们从学习削铅笔学起,直至从零件图到装配图。这门课和以前我学的课彻底不同,所以刚进大学时父母问起功课,我说机械制图比较难,父母便以为我学这门课碰到了困难而为我着急,其实这门课我考了90分,虽然没到最高分,但已经属于高分了。
还记得四年结束毕业设计时,教室关门早,我就抱着硕大的制图版趴在草坪上画图。有南京大学的学生过来寒暄,很羡慕我们工科,觉得文科学的太虚,不像工科学了就可以用。那时还很为自己自豪。
那时没有数码相机,画了这么多图可惜也没有留存,就网上找张图意思一下吧:
第九门语言:电路图——有机会动手才有动力。
再往前追溯,初中就开始学的电路图也可以算语言了。初中、高中、本科、硕士,其实一直在学电路图,初中的梦想是装矿石收音机,但那时没有电子器件。本科时自己还想过一些小设计,像通过电路使得电器中装电池时不用考虑正负极,直接往里面塞就行了。电路图的学习最终半途而废,最根本的原因还是动手的机会太少,只有上课期间有几次机会进实验室做实验,很多自己想做的实验没有机会去做。
就网上贴来一个最简单、最实用的电路图。
第十门语言:折纸图:——寒门给人动力,富贵让人懈怠。
继续追溯,以前看的折纸图也算是语言了。自有记忆开始就喜欢折纸,从这个玩伴、那个玩伴那里学来几十种不同的折法,折的东西多了就经常忘记怎么折了。后来将每种东西折个样品保存着,忘记后就把样品拆开来看一下,但这些样品时间长了总是会弄丢掉。
高中时新华书店时兴开架,在学校附近的书店第一次看到折纸书,于是学会了折纸图中的各种符号。那时舍不得买书,就趁着书店开架的机会把折法背下来,出了书店再折样品。再之后就把自己学来的折纸试着自己一边折一边自己绘图了,把自己会折的东西全部画出来,这样就再也不怕忘记了。花了很多心血,弄得像本书一样。收藏了很多年,可惜在前几年的搬家中弄丢了。
有了网络,资源一下子变成了无限,随便一搜就有大量的折纸图和网站,放眼世界,日本的折纸尤其复杂。但物以希为贵,从前就会那么几十种折法又舍不得买书时兴趣最浓,但当无穷无尽的资源一下子免费端到你面前时,就会觉得以前花的这么多精力做的这些事情很傻。玩折纸的乐趣一下子弱了很多——就像穷人家的孩子觉得自己最大的梦想就是住进糖果做成的房子,等真的住进去了,吃个几天就再也不想吃糖果了。
以前手绘的折纸图,就剩这一张了,心血啊。
寒门子弟的讨论凸显教育公平问题,寒门教师的问题则是另一个公平问题。
有的寒门教师,没有毕业于显赫的学校。就像有的孩子生在城里,有的孩子生在农村。
有的寒门教师,没有跟上显赫的老板。就像有的孩子父母什么资源也没有,有的孩子一毕业就什么资源都有了。
有的寒门教师,没有攀上显赫的领导。就像有的孩子虽然父母没有资源,但有很牛的干爹,而有的孩子不屑于攀干爹,或者想攀却不知道怎么攀。
按照考核指标,寒门子弟的水平确实不如别的孩子,不会弹钢琴,没有参加过这个全国比赛、那个国际竞赛。千里挑一的孩子有幸进了大学,成绩也比别人低,见的世面也没别人多。得在同一个环境中熏陶个几年,才能逐渐显示出自己的优势来。但现在的高校能让虚弱的千里马先进来吃点草熏陶一下再和其他膘肥体壮的千里马竞争吗?
按照考核指标,很多寒门教师确实不如别的教师,没有什么人际资源,拿不到多少经费,做的项目也没别人那么多、那么大,更重要的是,如果自己能力确实很强的话,还可以发发牢骚说社会不公,但看看自己也没写出一流的论文,和豪门教师比起来已经头也不敢抬了,再和大批海龟比起来就更无地自容了,咋比咋自卑。其实寒门教师得在同样的资源环境中干几年活才能体现出自己的能力来。但现在的资源,有可能流一点到这些寒门教师的手中吗?
寒门子弟是让人同情的,一方面因为他们还是孩子,另一方面人也没有办法选择自己的家庭。更重要的是,培养寒门子弟是学校的职责,寒门子弟得不到培养肯定是这个社会出问题了。
而寒门教师却只有自己坐冷板凳想着自己的饭碗,现实中难以得到同情。因为寒门教师已经成年,因为寒门教师之所以寒门多是教师之前的能力、眼光和际遇问题。更重要的是,很少有学校把培养寒门教师当做自己的职责,大家的兴奋点都在引进现成的、能马上给学校拉来项目、带来论文人才。
不管寒门子弟还是寒门教师,最终的问题都是:资源和能力,先有鸡,还是先有蛋?
昨天傍晚散步去超市,回来时看到一架直升飞机在头顶飞过几圈。来美国后对这个已经司空见惯,因为经常有警察的直升飞机在巡逻。但走了一半的路,老婆发觉这次飞机飞得格外低,飞到后来几乎贴着房顶在飞了。我开玩笑说:它在盘旋呢,在抓捕罪犯。路旁有两辆警车呼啸而过,我开玩笑说:他们正赶去增援呢。话说完,忽然感觉这个飞机这次确实和以前不同,真的在盘旋,一圈又一圈,一路走来,它盘旋的圈子越来越缩小,盘旋的中心竟然是我们租的房子!
有了这个发现后不禁兴奋起来,心跳不免加快。想象着一个持枪匪徒流窜到我家门口,上面直升飞机咬住匪徒,指引下面警车追捕。这倒从来都没有见过。
走到家隔壁的教堂门口,果然发现了一辆警车在停车场掉头。以往都是行人优先,这次警察示意让他先来,我们等着他挪腾车子等了好久才得以穿过停车场走到家门口。
准确地说,直升飞机不是绕着我家盘旋,而是绕着我家门前的那个街区。围堵的重点就是门口那个小巷子,靠近我家门口的那个巷子口由这辆警车把守,巷子里面还停了好几辆警车,外围还有很多似乎是骑自行车的警察,自行车后的灯一闪一闪的。绕到巷子的另一头时,直升飞机离去,警察开始撤。这才发现巷子另一头大大小小的警车就更多了,一辆又一辆地从巷子里面开了出来。
可惜没看到巷子里面的故事,也可惜没带相机,就贴一下去年11月份的炸弹威胁作为补充吧。那一次的阵势比这次大多了,只是那次由于没有直升飞机、而且不在我家,所以不像这次心跳那么快。
回顾去年11月份的炸弹威胁:
一早收到OSUToday邮件,以前每次都跳过去,今天看到标题有“Safety message“字样,遂打开来看看,没想到是说校警收到FBI警报,学校的主图书馆和三个实验室有炸弹威胁,校警在和FBI及消防部门一起调查。本以为是过去时,仔细一看是现在进行时。于是骑车过去看看。
难得的阴雨天,学校里到处是警车,几幢楼都已经用黄线拦住,人都疏散了,楼里面灯在闪,反复播放着语音提示。尤其三个实验室,就在计算机楼后面,从我的实验室所在楼开始,连续几幢楼都封闭了。楼边马路上塞满了各式汽车,看车上的文字,有消防部门的Bomb Squad, EHS Respond Team等。
在国内总感觉房车是富人的游戏,从没想过去体验。在美国发现不带引擎的房车才2万美元,带引擎的据说价钱翻个倍也就买到了。相比搞计算机的这个行业普通人一年6万到10万美元的收入,这个价格实在不算什么。有时想想,政府如果实在控制不了房价了,就鼓励大家买房车当房子吧,又省地方又环保,还利于以后收各种费用,又有政绩——让所有家庭过上了有房有车的生活。
周六去一个家庭体验房车生活。以前对房车的唯一想象就是跑长途时上厕所方便,可以放心地喝水,另外如果有老人的话休息比较方便,却没想到房车不光是开的时候用,而是可以停在树林的营地地面过夜。晚上在树林中睡觉时听无数虫鸣,但夜里下暴雨,雨点落在车顶还是很吵的。
先参观院子,小花园:
院子里挖了一块菜园。
推开院子门就直接是公园:
去这个州立公园,离市区半小时。一个框框就是一个房车的车位,20-30美元一天,提供免费水电和公共洗浴。里面像个迷宫,照着图开还是开错了。每个车位门口的路直通湖边的各个小沙滩。
车内一角。不是很宽裕,房车主人之前有个大房车,沙发、床什么都可以推到两侧,很宽敞。但每逢下雨接缝的地方容易漏水,所以换了这个小房车。
每个车位允许一辆房车和一个帐篷,每个车位有一块草坪供大家活动。
拍一拍别人的房车和帐篷。
游船。
步行去小沙滩。
开车去湖边看游船下水。
开车去大坝边上的Playground.
晚上,点燃篝火,烤棉花糖夹饼干。
第二天中午离开,这个房车没有动力,要一个小卡车拉。在没有倒车雷达的情况下,要分毫不差地对准进去。倒一点就下来看一看以便调整,来回四五次可以对接好。
国人的闯红灯比较出名,我们在被教育时都会听到美国人如何不闯红灯的例子。反反复复听得多了,就有人指出:美国人到了中国其实一样跟着我们闯红灯;再后来又有人指出:美国人其实在美国也闯红灯。
尽管有了这些翻来覆去的变化让我们的脑袋不断地撞来撞去,到了美国后发现美国人真的也有不少人闯红灯时还是有点惊讶的。看多了,也就见怪不怪了:人性都是相通的,闯红灯和不闯红灯都不奇怪,不同的只是频率的多寡而已。
逆反之后,有人以为“老外守在空旷的十字路口等一个红灯熄灭才通过的故事可能只是一个传说”。——这绝不是传说,至少我在美国和韩国都看到过很多次。
反过来,中国人有可能会在中国守着空旷的十字路口等一个红灯熄灭才通过吗?——不要固执地以为这也只能是个传说,凡是没有绝对的,至少我曾经这样做过。
其实不管美国人闯不闯红灯,关键还是就事论事,从我们自己的实情出发,从不同人的不同角度、不同的价值观、不同的成本考量,得到我们自己的共识。
再深入些,有做律师的国人重新解释了一下规则:“红灯的意义是为了保证最低限度的车辆通行权,而不是绝对的对行人的‘禁行’”。这样,既不让行人有违法之忧,又可以提高道路的利用率。
也有国人说,“在美国,闯不闯红灯还要看是车是人,无论何时,汽车都不能闯红灯,但行人却有闯红灯的‘绝对自由’”。“闯不闯红灯只是风险认识问题,与公德无关”。
哥伦布市:大部分地方人们还是遵守交通规则的,但学校周围大家普遍闯红灯。有时可看到个别人完全按照交通规则来,即使两边都没有车也等着红灯,后续的人也就跟着他等在红灯口。但红灯时间一长就会有人率先闯过去,于是就带动一帮人全部跟了过去。
丹佛的街头:比哥伦布市闯得更厉害,我看到的几个路段在车子不多时人们完全靠自己的判断过马路,完全无视红灯的存在。甚至在车水马龙的中心广场周围,也能见到像国内那样险情迭出的跑着闯红灯的场景。
哥伦布市区独立日烟火之后的满地垃圾。
路旁有很多圆筒,难道这是望远镜?
这只是一个圆筒,没有镜头。底座不同位置刻有多个凹槽,并标上文字。将圆筒转动到凹槽位置搁在凹槽上,透过圆筒就正好可以看到文字所标注的山峰或岩层。与图文解说以及边上的岩石标本相配合,很好的科普形式。
时间步道,将漫长的地质过程浓缩在短短的步行道上,同步展出展品,解释岩石的形成和峡谷的刻蚀过程。
把桌子收拾干净!——摄于科罗拉多大峡谷国家公园
超市门口给人吃饭的桌子上有下面的提示,让大家吃好东西后把桌子收拾干净。这可不是为了环境整洁,而是为了保护野生动物!
为啥?旅游手册上不是提示过嘛:要保持野生动物的野性和觅食能力,不要喂野生动物,否则会害了它们。
那关擦桌子什么事情?
你想,你不把桌子收拾干净的话,服务员可能还没来得及过来清理就有野生动物来吃你的剩饭了,那不相当于喂食野生动物了么。
它是活的!——摄于拱门国家公园
它叫生物土壤结皮(biological soil crusts)。“是由细菌、真菌、蓝绿藻、地衣和苔藓植物等孢子植物类群与土壤形成的有机复合体”。人家长一年,你踩一脚就让它白长了。后果是:没有它们,很多大型植物无法生存。没有大型植物,很多动物也就活不下去了。所以,不要在沙漠里乱走,得按照公园安排的步行道,而且即使在步行道上走时也得当心别踩到人家。