遇见高手

遇见高手高手似乎不常见,不过那是因为我们没睁开眼睛。"高手"二字又不是贴在脑门上
的。今天先是见了奇异天象,然后见识了巨牛高手两位。展示天象的这天,是天天得
见,只是不常抬手,这两个巨牛高手也是早就认识,还有一位没事就见,不过未
曾经常一见身手。从净月去应化所,我们坐关同学车里。我用嘶哑的声音大喊,"彩虹!"包师弟
说,"啊,你看到的是玻璃吧。"是啊,大晴的天,之前也没下雨,怎么会有彩虹。
不过二猫妈也看到了,不是我的错觉。关同学说,"我也看到了,在那。"我说,"你
快别看了,好好开车吧,吓死我了,你。"我打小到大没见过这样的彩虹。一长条,非常宽,横在天空里。随着车的移动,
能发现很有一部分藏在楼群的后面。变换了几次位置,始终没有看到全貌。我
想,得有几十公里的长度吧。是谁当时说,"是彩虹桥么?"我想起了赛德克・巴
莱,不过,说话人的意思,也许是以为我在讨论远处的某座水泥桥,叫这个名字。赶紧掏相机,不停地拍。经常有人问我,你老带个相机干什么。我一般答,"万
一哪天遇到UFO。"今天,虽无UFO,然而也派上了用场。晚上检查照片,发现其实那不是彩虹,而是更为宏大。那是日晕的一部分,是双
层日晕的外层。而内层日晕,因为阳光太刺眼,我们几个人都没有注意去看。高手也是这样,不显身手时,你哪里知道这家伙居然如此牛。高手故事之前想起
刘老师讲的一位体育老师,身高一米五几,非常瘦小,但是重达90多斤,练什么
武术的。一次遇到变相劫道的,上去是跟人家握手还是什么,反正一个照面对方
就服了。试想,她就这么往你面前一站,如果不显气场,哪个能看出来这是高手。我常用的座机是x200笔记本,装了Ubuntu 10.04 LTS,dell U2311H显示器。这
一组合的结果是,长期以来,我只能工作在1920x1080的分辨率下,而我的视力
相当不好,只好更贴过去。还有一个后果,因为x200只有vga输出,所以dell显
示器的hdmi及dvi-d接口都派不上用处。这种分辨率下,vga输出的显示器上经常
有条纹慢慢飘过去。高度近视的同学都知道飞蚊症。当年我问医生,能手术不。医生说,你不是还能
看见么,先对付着用吧啊。我说,看着这么闹心可怎么办啊。医生说,调整一下
心态就好了。我明白了,忍一忍吧。后来条纹到是没更重,但是我想,长此以往,眼睛该更完
蛋了。准备忍痛花钱解决一下。花钱,指买点设备,不是换眼睛。以前就跟包师弟谈过。我说:我那机器有点毛病……包师弟说,因为你那是VGA的,它
的分辨率上限就是这个,规范啊带宽啊云云。今天,我又重提这个。我说:打算买个PCMCIA卡。包师弟说:你换个操作系统就好了。我说:我不打算用windows了。包师弟说:那你升级一下呗,原来的东西还都在,我升完了。我说:嗯,不错。包师弟说:其实你用这样的分辨率 (他指着牛同学的大约1024*720说),就不晃
了。我说:我的显示器不支持啊,16:9的分辨率只有这一个,其余的都是4:3,看
着太扁了。包师弟说:那是你的操作系统不支持,不是显示器不支持。如果你的操作系统连
这个分辨率都不支持,你确定它支持PCMCIA。我顿时没词了。我:我打算买个vga转dvi-d。
包师弟指着我的vga口:瓶颈在这里,从这出来的时候就有条纹了。我顿时再次没词了。包师弟说:其实应该能添加定制的分辨率。然后,晚上,我添加了定制的分辨率,结束了长期的小字生涯。虽然由于弱视散
光还是看不清楚,但是总比小字容易辨认很多。再然后,我准备给包师弟发封邮件感谢,发现他已经把一个链接发给我了,就是
如何添加定制分辨率的。可能有的同学说,添加个定制分辨率么,你这么感慨。这跟另一件事非常类似。刘同学替我讲算法与程序设计实践课的时候,选的主题
是用setjump实现C语言的异常捕获。我事后对同学们说,他要讲的并非setjump
函数及用法,这些知识没有多么重要。他要讲的是:如何在一个受限的平台上使
用受限的开发工具,实现原来没有的功能。这正是工程师的一个重要素养,修改原有方法,实现新的功能。包师弟的杰出在于,精确的判断路径。他一语道破,为啥我的那些解决方案都是
愚蠢的。这甚至不必实验,因为我的计划是不符合原理的。我仅知道原理,并认
同,而他看到了由原理导致的结果。高手的特点就是,你只看到了那家伙一侧
身,而高手知道他是准备来个后踢,然后一脚踹他屁股上。下午,见另一位高手,董老师。董老师卡卡讲了半下午,数学、信号系统、电子
学、化学、计算机程序--结论是它们都是一致的。事涉项目机密,具体内容不能
深谈了。总之,牛人说"这个挺简单的",那个时候,他真的觉得那个东西挺简单的,以他
的标准。而当他实现,对他真的很简单。因为我们的那些错误技术路线,他根本
就不会遇到。比如,他使用针对特殊问题采用特殊的方法,他更清晰地看到问题的本质 (什么
是什么,具有什么特性,而不是什么,那个特点一点也不需要考虑;比如包师弟
上午指出:临域均值是一种拟合,使用线性函数,所以平滑不是什么特殊的东西)。还有。当我们看到那个理应简单的电路,结果高手用了相当多的器件;那个应该
非常短的代码,高手写了N长。那正是他们比我们高级的地方。他们的设计能够
在更恶劣的环境工作,能检测更精细的信号。我们的,只有在特定的场合下能测量特定的东西。更糟糕的是,我们可能还不知
道,以为高手们的设计那么多多余的东西。所谓沧海横流,方显英雄本色。我们
平时也挺牛的,沧海一流,我们就成了培养英雄的土壤。有一次修打印不干胶的机器,串口接计算机上,那个串口坏了。我把机器换到另
一个串口,然后把软件设置中的串口也改了过去。因为第一个判断就对了,所以
前后不到半分钟。所以,当时听到"哇,原来这么简单啊。我也会啊。"作为答复,我当时讲了个故事。一个家伙马桶堵了,怎么也捅不开,只好找水暖
工。水暖工来了以后,三下五除二把马桶下面打了个洞,然后就修好了。马桶的
主人也是,"这样也可以啊,我也会啊。"可是,你不知道"这样也可以"啊。这就是画一条线999美元的故事。在不干胶机器的案例中,我当时还有没说的。除了第一方案,我还设想了四五种
可能的原因,如果一击不中,我还有后手的。你也有么?我只是极其偶尔才冒充一把高手。不过道理是一样的,我们见不到高手,往往是
我们自己的眼睛睁得不够大,以为他们与我们相同。那些不同,正是我们无缘或
没有能力见到的,把我们与英雄区分开来。听说海因莱因认为"一个人应该有能力换尿布、策划侵略、杀猪、给轮船掌舵、设
计建筑物、写十四行诗、平衡收支、造墙、接骨、安慰临终之人、写菜单、发布
命令、合作、独立工作、解方程、分析新问题、施肥、写电脑程序、做可口的饭
菜、有效地战斗、英勇地死去。"我除了最后一条能部分实现,其余的,竟无一命
中,真是失败。命中那部分,就是能死,甚至这一条也无法全部满足,因为绝对
无法做到英勇。不过,能遇到高手,也算幸事。是不是还有很多人以为自己一直没有遇到过高手
呢。
--------------------
博客会手工同步到以下地址:[http://giftdotyoung.blogspot.com]
[http://blog.csdn.net/younggift]
[http://www.renren.com/268966623/profile#pblog]

为什么要自己架个"gtalk"服务器

为什么要自己架个"gtalk"服务器如果你也因为不使用QQ,同时偶尔有即时通信的需要,GTALK又被隔在GFW下时而
不能登录,那么可以试试自己架设一个服务器。GTALK基于一种开源通用的聊天协议,叫做jabber,或者XMPP。凡是遵循jabber协
议的服务器和遵循jabber协议的客户端都能相互通信,这样的免费开源服务器和
客户很多。服务器之间可以连接起来彼此通信,还可以与msn等聊天工具互通。在这里,我
只架单个服务器,容纳几个账号。各种感慨都在最后,非技术人员请从此跳过,方法是按END键。1. 选型很多种服务器,著名的有 jabberd2, jabberd14, openfire。我用了openfire,
因为1.它支持web管理界面,偶尔远程管理的时候工具容易选择;2.支持
ssl/tls,通信安全;4.有deb包,ubuntun容易安装;5.基于java虚拟机,也可
以在windows上跑。客户端也有很多种,我用得少,感觉不到太多差别。为了测试,我这次安了
gajim,平时主要用emacs-jabber。2. 安装安装真是没啥可说的,下载
openfire_3.7.1_all.deb,[http://download.igniterealtime.org/openfire/openfire_3.7.1_all.deb]
然后装上。3. 运行这个麻烦点。起初,各种毛病,反正我没运行起来。网上说openfire的手册要比jabberd*要好,不过我没空看。比如存储账户信息,
我希望使用内置的数据库,不想用mysql。因为顶多10个账户以下,而且跑在我的
笔记本上,根本不想为此架个mysql server。但是,报错,说内置数据库有麻
烦,参见手册,但是在手册的哪里,没有提。后来终于找到 (跟着某位大侠的贴
子,他说,他就要放弃时找到了)了,说是第17 次版本更新的时候(?)数据库的
语句写错了,应该把哪段以前的都删除就好了。我登时傻眼了。怨不得有人说开源的维护成本高,这手册是给人类看的么。又一顿折腾,我屈服了,安了mysql。可能有的同学会问,你为什么不架jabberd14或jabberd2呢?因为我遇到了更大
的麻烦。用ubuntu软件中心安装上以后,我参考了一下手册,我又傻眼了。手册
上说,要先建 jabber 这个用户和组。我知道,又有同学跳出来说了,这难么?不难。问题是,此时处在"用ubuntu软件中心安装上以后"这个时间点,我发现
jabber 这个用户和组已经建了。那应该是ubuntun软件中心的版本建的,那么,
接下来手册里的步骤,哪些已经完成,哪些没有完成呢?一步一步检查?我可能检查了20步,都完成了,一放松警惕,结果第21步软件中
心没自动给建好。所以,在jabberd*两个版本上,我花了一个小时,两个小时
(?),然后放弃了。如果你小的时候,有大人一边给你喂药,一边说"不苦",结果你吃下去苦得直咧
嘴;如果你修牙的时候,牙医说"不疼",结果整得你一身汗;如果你的高中老师
告诉你上了大学就好啦……以后你都不要相信他哪怕一句话。总之吧,后来我使用mysql,安装mysql-server, mysql-client, jdbc。然后
jabber服务器openfire就跑起来了。剩下的,还需要数据库的一些设置,登录口令和主机啦啥的,你如果会也不用我
罗嗦,你如果不会,我这一篇也写不下,如果只列上我的步骤,哪怕一小步你的
机器跟我的不一样,还特别把你引入歧途。所以,略。对了,得跑下面这条语句:
> cat openfire_mysql.sql | mysql openfire -u root -popenfire_mysql.sql这个东西,在我机器里是在
[/usr/share/openfire/resources/database]下面。参见
[http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/database.html]。4. 客户端连接
* with emacs-jabber
localhost:5222 ssl* jabber客户端 gajim用户名需要类似 young@young-laptop; localhost:52225. 外网连接这个时候,内网就可以用了。如果你在防火墙 (或者NAT,或者无线路由)的里
面,而你需要外网用户连进来,需要查到你的外网IP。可以这么查,用浏览器访问[http://www.showmyip.com/]。然后你需要设置防火墙 (或者NAT,或者无线路由),让从外网能够访问你的防火
墙某个端口,相当于对应访问内网你的jabber server的IP及端口。为啥说这么
麻烦呢,因为不同的防火墙在这时使用的名字不一样。比如我的,在"转发规则
->虚拟服务器"里设置。为了对用户友好,开发商起了这些"友好"的名字,结果
连专业人员也不知道那是什么了。用户?当然也不知道。以上设置完成以后,你可以告诉你要聊天的对象,让他把jabber客户端的服务器
设置为你的外网IP,还有端口……然后,你们就可以聊了。6. 其他我禁用了注册用户的功能,凡是要用的,手动添加。文字聊天,传文件,都行。
语音没试,我嗓子基本还是不能发声,所以没啥意义。还有,各种客户端里,还就是pc版的gtalk不行,它不能更改服务器的地址,只
能连到google。--------------------有的同学可能会问,你为啥不用QQ呢?其一,2007年12月,我在博客里提到 我永不使用QQ,"永"对现在而言,仍然是有
效的。其二,QQ是某个公司开发的产品,使用者没法选择这一服务而拒绝产品。如果你
使用电子邮件这一服务,有很多产品可以用。对网络中心提供的不爽,你还可以
用google的,对google不爽,你还可以用163的。你对QQ提供的不爽呢?其三,QQ的一些模式真的令我非常不爽,不仅2007年底事件,还经常让我想起许
多敏感词。比如吧,比如,我发放课件的时候,会向同学的信箱发送,而不是要求同学到我
的博客或网站下载,原因非常简单,要求别人如何如何,是一种*侵入式*的合作
方式。如果老板要求下属必须使用某款手机,不能要求下属去买一个,而只能为下属备
好免费的,还要问下属乐不乐意非工作时间带在身上,要不要公司为带这么沉个
东西付补偿款。老板不能因为员工也可以用这手机聊聊私喀,就理所当然地认为
有权利要求下属了。这让我想起李记者讲过的例子:为了避免侵版被告,公司老板要求员工自备操作
系统和所有开发工具。你怎么不要求产业工人自备车床呢。所以,各种旧的和新的原因吧,我仍然不使用QQ。很多同学问过我这个问题了,
你一个IT男为啥没有QQ呢。2007年12月那篇博客,我是这样写的:我将永不使用QQ。
我的MSN和邮箱:[email protected]
对给您带来的不便深感抱歉。
添麻烦了。有不少朋友问到原因。如果你不知道,麻烦google: QQ soff查对方IP可以使用netstat或其他QQ版本。以此纪念soff君。不认识soff,也基本
没用过他的作品,也不关心审判结果。弃用是因为感情上不再能接受QQ,不是技
术原因。转个故事,说明一下原因。古时候,阿跋斯哈里发王朝的第四代哈里发叫阿尔・马蒙。他有匹千里马。一
次,一个叫奥玛的商人路过巴格达,他看到阿尔・马蒙的马,羡慕不已,提出用
十个金币来换,但阿尔・马蒙说就是给一百个金币,他也不换。奥玛恼羞成怒,
决定用诡计把千里马骗到手。奥玛打探到阿尔・马蒙每天独自溜马的路线,选择了一个离城门最远,人迹罕至
的地方,乔装成病重的流浪汉,躺在路边。果然,善良的阿尔・马蒙看到
有人病倒路边,赶紧把他扶上千里马,打算带他进城治病。奥玛装作有气无力的
样子指了指地上的包袱,阿尔・马蒙把他的包袱拾起来,系在马背上。奥
玛又指了指远处的木棒,阿尔・马蒙以为这是流浪汉的木棒,忙转身去捡。
奥玛趁机夺过缰绳,纵马逃走。阿尔・马蒙追在后面追了很久,终于跑不动了。奥玛知道奸计得逞,便想奚落奚落
阿尔・马蒙。他勒住马,得意洋洋对阿尔・马蒙说:"你丢了千里马,连一
个铜子也没有得到,都是因为太慈悲了。你还有什么好说的?""马可以归你,但我有个要求," 阿尔・马蒙大声说,"别告诉别人你骗走千里马的方法。"奥玛哈哈大笑说:"原来哈里发也怕别人嘲笑!""不,"阿尔・马蒙喘着粗气说,"我是担心人们听说这个骗局后,会怀疑昏倒在路
边的都是骗子、强盗。说不定哪一天你我也会染疾,倒卧路边,那时谁来帮助我
们呢?"后来,两年前吧,与包师弟聊天QQ和gmail等事情。对话基本是这样的:你不用QQ,如果哪天gtalk也封了呢?那我们就用gmail,然后电话或短信通知邮件发了吧。如果gmail也封了呢?对话围绕着,如果A不能用了,那么用B吧,如果B也不能用了,那么用C吧……如果
Z也不能用了,我们要不要用QQ呢?一个人,你可以杀死他,但是,也不能令他屈从。屈从,以及生命,不能共存于
一个人的身体中。好在,除了QQ,我们不是还有别的么,比如 jabber server。--------------------
博客会手工同步到以下地址:[http://giftdotyoung.blogspot.com]
[http://blog.csdn.net/younggift]
[http://www.renren.com/268966623/profile#pblog]

去看李记者,天津印象

去看李记者,天津印象李记者现在天津工作。丹麦著名的制药公司(或者著名的丹麦制药公司?),NNIT。
NNIT以生产治疗糖尿病的药而闻名,老李同学正需要这个。lars说,李记者去对
地方了。不过,正如李记者其实不是记者,而是IBM什么技术方法的咨询师一样,
他的NNIT也不产药,而是产软件的。去天津看了他一趟。坐下吃了半天饭,我说:你瘦了啊。才注意到。这家伙已经由圆脸变成了方脸,
隐约有皱纹。他说:140斤了。这就跟我的份量不相上下了。不过他肚子尤在且大,刘典同学不必担心,你仍然不是最胖的。然后我们开始总结他变瘦的原因。三班倒,天津太热,天津空气不好。诸如此类
的。在这之前,李记者带我参观了意大利风格的小镇。没错,在天津,一个意大利风
格的小镇。也不知道像不像,反正我没去过意大利。李记者说,那个叫"花仙子"
的雕塑有几份复制品,摆在好几个地方。真的,这几个半裸女子有的互相还能看
到呢。去吃早餐的时候,他非常小资地带我去了星巴克。我非常小资地选择了坐在外面
木头地板上。然后他告诉服务员把遮阳伞打开,我惊叹:这东西原来是能打开的。
这可不是瞎扯,当时我确实没想到那东西居然还能打开,脑袋不够用。天津很
热,而且漫天大雾,雾气似乎完全不流动,就缠在你的每个毛孔旁边。你刚刚渗
出一点汗,就生生给你逼回去。CPU过热的感觉。在这样的雾里行走,觉得自己不是很清醒。像是刚散了瞳,世界非常明亮,而极
端不清晰。我看到完全不能转的摩天轮立在广场上,在海风里生着铁锈。它的后
面是满是青色玻璃的大厦从雾里一直插进云里。还有伪装成很古老的忘了名字的
桥,上面立着些金光闪闪的女神,每个人手里端着一样乐器。海河在桥下静静地
流,像这里的浓雾一样没有波澜。看呐。一个家伙在海河里游泳。我赶紧把相机拽出来,这会工夫,他又改成了安
逸的仰泳姿势。旧的波纹在他周围慢慢散开,再也没有新的。欧洲小镇里来来回回的,是来自西安的河南的各地的游客。导游拿着个大功率的
喇叭,"一九几几年……"我说:就这点不像欧洲啊。他们的导游似乎不带迈克的。李记者问:扯嗓子喊么?我说:不。他们人少,能听见。我俩大笑。我说:另外,这会吵到别人吧。我的声音非常小,不是因为修养,是因为声带还在失声。所以,大部分时间都是
李记者在说,我只是倾听。其实,这也正是他需要我做的吧。偶尔,我讲起"有
一个新故事,是这样的……"。他说,"哈哈,你真的老了。这个故事你讲过啦。"是吧,我们就是这样开始衰老的。衰老从来不是渐变的,而是突然产生的。你生
了一场病,然后很快就老迈了。我老到开始重复自己说过的话了,而且还不记得。我拖着行李箱,他背着有NNIT标志的书包。我们走在天津的街道上--为了伪装成
欧洲小镇的效果,街上的铺路石特意很不平的样子,我的行李箱一直
gegelengleng响着。不过我猜,那些铺路石并没有看上去和应该的那么深。我们这样走了很有一会儿,因为小镇在执行欧洲坐息时间。饭店都要11点以后才
能营业。除了游客导游,还有维修维护和清洁工走来走去。我和李记者坐在星巴
克的伞下,观察他们。非常非常热,太阳很亮,我不由得眯着眼睛。去厕所的时候才知道,原来星巴克里面非常地凉快,空调大开。我原以为屋里要
比外面更难忍呢。但是我们仍然坐在外面,这样才够小资。事实上,有一些我还是没有告诉你,而只是选择了小资的那部分侃侃而谈。比如,我脱了鞋,把脚搭在对面的椅子上。虽然只有我们两个小资的顾客坐在外
面,也不算雅观。而且,我换上了跨栏背心--或者你也可以理解成男式吊带或大
砍肩式样的。再比如,我们离开饭店去车站,坐的是小三轮摩托。我没有想到天津这样的城
市,这种交通工具居然还合法大行其道。这确实有点欧洲精神,不过一点也不小
资。再比如,在小三轮摩托上,李记者似乎看着窗外,其实已经开始点着头睡过去了。
他在和我见面之前,刚刚上完夜班,然后是1个小时的车程赶来。再比如。我们在车站的广场握别,互道珍重。我转身走出一段路,回过头,放下
行李,取出相机,开始拍李记者的背影。他背着NNIT的包,逐渐深入到雾里去。
大雾依旧。近处远处的高楼在雾里沉浮着,这个城市才刚刚醒来。而李记者,要
回去睡觉了。在火车上,我发送短信给他。当我到达长春,他的短信回复了。深夜,我们都出
现在网络上。我们说:相聚时短,各自珍重。博客会手工同步到以下地址:[http://giftdotyoung.blogspot.com]
[http://blog.csdn.net/younggift]
[http://www.renren.com/268966623/profile#pblog]

我在课堂上为什么要展示编码的过程,而不止是结果

我在课堂上为什么要展示编码的过程,而不止是结果我在上程序设计课程的时候,会在课堂上当场编程。而我见到的大多数老师喜欢
事先备好课,用PPT或WORD以更大的字体展示程序内容。为了能够更好地展示现场编程,我试过一些办法:尽可能缩小班级人数、不用投
影仪而是用机房的广播系统。这确实带来一些麻烦,更不用说,现场编程比事先
备课更容易出错,挂在黑板上。那么我坚持现场编程序的原因是什么呢?1. 过程我要向同学演示代码由无到有的过程。事先备好课确实有很多优点,但是当我是同学的时候,我总感觉是在看场魔术。
老师拿来个帽子,展示一番,然后,突然从里面掏出只兔子来,有毛能跑的。如
果我只是观众,哈哈,很逗。但是如果我是学魔术的同学,我就会特别想看到慢
动作地重放--从空帽子到兔子的过程。而这个过程,如果事先备好课,通常就只是打开工程,然后编译,运行,出结果
了。结果就是老师说的那个,但这一点也不令人意外。我想看到代码修改以后还能跑么?最好是从什么都没有,开始创建一个工程,然
后代码逐渐增多。不然,除了神奇,我什么也没有学到。作为同学我这样想,我私下猜测,同学们也会这样想吧。所以,我想展示给同学
代码的过程,而不仅仅是代码本身。代码本身能学习和分析的东西确实很多。我们对着早就墨迹干涸的红楼梦也能分
析出比它本身厚得多的著作来。但是,如果你站在曹雪芹的身后,越过他的肩膀
看他把红楼梦写出来,那样的话,收获该是多少呢?你能看到他删除掉了哪几个
人物,哪几个人物原本不是这样的,她们 (想想真似乎没有几个男子,所以不妨
直接用女字旁了) 的命运、性格原来是那样,历经了几次修改……但是我们都没有那样的机会。所以,"披阅十载,增删五次",作者不得不感叹,
这样好的过程你们都没有看到。我们要看画家作画的过程,看不到甚至要用X光去还原底下一层层都是些什么。
我们要看鲁迅或韩寒的手稿,最好是不清楚的勾勾抹抹的那种,才能了解当时当
事,都发生了些什么。代码,也是一样的。如果我们跟踪Linux核心的所有历史版本,而不仅是分析最
近的,会得到更多的东西--为什么某个特性那么迟才添加进去;最初的有力地构
成整个系统是,是哪几个要素?同学们看到那一大砣代码时想问的问题:你咋把它整出来的。过程说:呶,先这样,再这样。如果只给最后的结果,那就是:你猜呢。2. 出错我想让同学看到 老师也会出错,挟带的私货,更重要的是学习老师解决错误的过
程。bug人人会造,代码能跑起来靠的一个重要功夫就是把各种bug杀掉。同学们最初
遇到bug的时候容易感到惊慌失措,并倾向于自我否定,"怎么会这样呢?"然后
就想知道,如何从"这样"恢复,最终把那一砣代码整出来并跑起来。从bug中恢复过来,除了归类总结,文字材料以外,很重要的是让同学看到:呶,就
是这样。没看过血的,理论学得再好,也当不了临床医生。我甚至特意造出bug,大家一起傻眼,调吧。然后,我们一起看看调试bug的过程。也演出了编程习惯。比如一对大括号,要先写前面后面,再添中间。这些,亲眼
所见与纸上看来,对初学者,终究有所不同。说到这里插一个话题。颇有些研究生同学喜欢看视频学习的,我和几位学长都认
为非常不可取。理由非常多。其中一个是视频太慢,还有一个是视频往往太肤
浅。还有一个是视频可能会对初学者造成一个困扰--"为啥老师那么整能行,我同
样的操作,现象就不一样了呢?之前,我只有一步有一小点不同吧。版本不同,
那是什么?"之所以课堂上的展示不必讨论上述话题,是因为无论展示编码过程,还是只展示
结果,然后分析,视频的弊端都是存在的。3. 还是过程稍微大一点的代码,都不是一次成型的。尤其,一定不是从头往后写的。小学作文老师教我们,要有大纲。写代码也是的。可能,我们一个键也没有敲,
但是此时已胸有沟壑。这个时候老师得把这些沟壑都画图画图交代一翻,指点
好,这里我要写啥,这里我要写啥。此外,为了保持一直可以编译、测试,而有时代码写作要持续几天的时间,中间
不可能连个厕所也不去。有时代码非常长,超出了初学者直接写作的能力。这个
时候,我们会一点点写--重要的是,在这一点点写的时候,始终保持可编译和测
试。所以,有时中间结果与最终的差别非常大。代码可能先多起来,然后又慢慢
删除掉一些,后来成了最终的样子。而不是像有的同学想的,一直由少到多。我的一个比喻。如果你体力不济,还想游过一个大湖,我们要做的不是横渡,而
是沿着湖边,不停地隔一会上岸歇会。我们确实更慢了,更是安全更重要。这样,最终的代码 (到达对岸)与中间的代码的差别会非常大。有时,我们很难
一下子就想像到中间发生过些什么。你能从残局猜到那些死掉的车马炮都怎么牺牲地么?我们用过程向同学们展示这
些。4.保证向同学们保证,你看代码确实是活人写的,因此你也能写出来。身边活人的榜
样,比书上印好的铅字更有说服力。想当年我跟韩老师去北京学习,他买了个魔球 (能变成棒子还能变成三角什么的)。
没见过的同学,你可以把它当成三维的七巧板。韩老师很快拼了好几个形状。
拼,也正是看图纸上的最终结果,把过程猜出来。后来到球形的时候,他放弃
了,说这个不行。然后轮到我玩。他看我拼出球来,让我拆了。拿过去没两分钟
就把球拼出来了。所以说,身边活人的榜样,比书上印好的铅字更有说服力。我用课堂上编码的过
程向同学们展示:活人编的啊,真是活人编的。当然,让同学展示,比让老师展示的效果更好。不过同样,一旦同学们把这位同
学当成与他们不一样的人,那就失效了。这个时候,我真的也不知道该如何告诉
同学们:你真的也行。装睡的人,你是怎么也叫不醒的。5. 例子我见过周老师讲JSP的时候,就在课堂上现搭环境,现写代码。见过林老师讲
win32api编程的时候,现写代码。6. 未来的工作考虑过做视频发布,但是我们的视频站点目前的清晰度,是为了看大片或小片准
备的,看代码,似乎清晰度还不够。再就是p2p上传了吧。