瞎子摸象,自顶向下和面向目标

来源: 王六一 2009-07-02 22:26:08 [] [博客] [旧帖] [给我悄悄话] 本文已被阅读: 次 (2378 bytes)

头两天为生计所迫,改别人写的代码改得头疼,终于忍无可忍,推翻了重来。回头看看,从来米国上学那天起,写代码已经写了二十多年,其间所见的怪事怪人,算起来也真不少。

到硅谷后的第一个上司是个学硬件出身的英国人,他的口号是:代码谁都能写,代码携带的技术才是真正有价值的。他雇用的一个硬件工程师,根本没有FUNCTION的概念,两百行就能解决的问题,他弄出了一千多行,里边大部分是重复的代码。那时候面向目标技术还没诞生,但是他至少应该有点模块的概念。此公的另一绝活是变量名都用得特神秘:XYZ用完了,便是ABCD,要不是我们逼着他加上了IN-LINE COMMENTS,谁也看不懂他那充满XYZ的天书,他还振振有词:短的变量名占内存小。这是1992年,几千个BYTE就算大内存了,我们一时还真驳不倒他。

苏联人的教学方法和教科书组织影响了我们至少两代人。我们的教科书总是以系统的、结构严谨的方式出现的。目录本身就是一个大纲,教学大纲基本就遵循目录。曾经有几个懒蛋老师,就是这么做的,抄目录给我们。到了美国,我才发现,目录完全可以以另一种面貌出现。一本程序员熟知的书,Programming Pearls的目录就是这样,让人完全不知所云,彻底淹没在程序设计的汪洋里。请看:

Column 1: Cracking the Oyster

Column 2: Aha! Algorithms

Column 3: Data Structures Programs

Column 4: Writing Correct Programs

作者本人可能对程序设计概念很清楚,也不是成心让读者坠入五里云雾之中,只是不喜欢板着面孔教训人式的系统方法,就别出心裁地弄出这样一本艺海拾贝式的拼图游戏。可怜我们这些初学者,只好跟着他老人家瞎子摸象,好在坚持不懈地摸下去,终将摸遍象身上的每个部分。

循着这样的教学方式,我的美国同事把艺海拾贝也带到工作场合里来,结果只能是一盘毫无头绪的意大利面条。

大约在1999年,我见到了平生所见最漂亮的代码,是两个莫斯科大学物理系的博士共同写的。巧合吗?当然不是。只有我们的“老大哥”才能写出那样的代码,也只有我这个“小弟弟”才能欣赏它。那段程序美极了。标准的自顶向下的设计,从一个树根开始,分出两三个树叉,然后再分,变量名都是有意义的,加上适当的IN-LINE COMMENTS和文件,非常易于弄懂和维护。他们两人合作紧密,连FUNCTION名都采用统一的规则,长度都弄成一样的,眯缝起眼睛来看,一排排的代码长短划一,好像一篇漂亮的乐谱。那时面向目标的技术已经开始推广,但是那家公司仍旧采用C。我以为,单用C一样也能写出漂亮的易于维护的程序,两个老大哥就是明证。

然后面向目标的罐头盒打开了,什么虫子都跑了出来。有些人天生就缺乏系统性和组织能力,可惜这些人也牙缝里夹着面向目标的菜叶混进了程序员的队伍。结果就是脱裤子放屁的一大堆CLASS的定义,毫无用处的FUNCTION名OVERLAPPING,定义了却从来不用的OPERATIONS,庸才穿上了面向目标的外衣也还是庸才,只是危险性更大了。



请阅读更多我的博客文章>>>
  • 瞎子摸象,自顶向下和面向目标
  • 小脑不发达的人生
  • 老印真那么可恶吗?
  • “挣钱和花费就是一切”?
  • 由给人体排错想到的
  • 所有跟帖: 

    面向目标--oo? -撅着挺好- 给 撅着挺好 发送悄悄话 (82 bytes) () 07/03/2009 postreply 02:50:03

    what is SO please? -王六一- 给 王六一 发送悄悄话 王六一 的博客首页 (30 bytes) () 07/03/2009 postreply 10:52:10

    No, u r good, it pretty much depend on the projects u involved i -撅着挺好- 给 撅着挺好 发送悄悄话 (76 bytes) () 07/03/2009 postreply 14:18:57

    service oriented. -撅着挺好- 给 撅着挺好 发送悄悄话 (0 bytes) () 07/03/2009 postreply 14:02:00

    SOA, or, plus E -HappyNow?!- 给 HappyNow?! 发送悄悄话 HappyNow?! 的博客首页 (0 bytes) () 07/03/2009 postreply 14:04:45

    P.I.E. Yes, "苏联人的教学方法和教科书组织影响了我们至少两代人。" -HappyNow?!- 给 HappyNow?! 发送悄悄话 HappyNow?! 的博客首页 (35 bytes) () 07/03/2009 postreply 05:22:01

    老美面前,用俄人的数理功底。在老俄面前,玩近似算法。 -任我为- 给 任我为 发送悄悄话 任我为 的博客首页 (0 bytes) () 07/03/2009 postreply 10:27:50

    两边的好儿都占了? :) -王六一- 给 王六一 发送悄悄话 王六一 的博客首页 (0 bytes) () 07/03/2009 postreply 10:52:51

    挺那啥呵! -greenwave- 给 greenwave 发送悄悄话 greenwave 的博客首页 (0 bytes) () 07/03/2009 postreply 15:33:02

    need your help! thank you! -HappyNow?!- 给 HappyNow?! 发送悄悄话 HappyNow?! 的博客首页 (186 bytes) () 07/03/2009 postreply 05:26:18

    you mean you want to see their code? -王六一- 给 王六一 发送悄悄话 王六一 的博客首页 (0 bytes) () 07/03/2009 postreply 10:33:10

    回复:you mean you want to see their code? -HappyNow?!- 给 HappyNow?! 发送悄悄话 HappyNow?! 的博客首页 (105 bytes) () 07/03/2009 postreply 14:03:23

    何必那么认真呢, LZ欣赏就好 -dropinto- 给 dropinto 发送悄悄话 dropinto 的博客首页 (0 bytes) () 07/03/2009 postreply 18:17:02

    I worked for a russia's boss, he is great, ever -dropinto- 给 dropinto 发送悄悄话 dropinto 的博客首页 (0 bytes) () 07/03/2009 postreply 17:42:26

    请您先登陆,再发跟帖!

    发现Adblock插件

    如要继续浏览
    请支持本站 请务必在本站关闭/移除任何Adblock

    关闭Adblock后 请点击

    请参考如何关闭Adblock/Adblock plus

    安装Adblock plus用户请点击浏览器图标
    选择“Disable on www.wenxuecity.com”

    安装Adblock用户请点击图标
    选择“don't run on pages on this domain”