`

四大发明之活字印刷??面向对象思想的胜利 (转)

阅读更多

四大发明之活字印刷??面向对象思想的胜利

        话说三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连成一片,眼看就要灭掉东吴,统一天下,曹操大悦,于是大宴众文武,在酒席间,曹操诗性大发,不觉吟道:“喝酒唱歌,人生真爽。…………”。众文武齐呼:“丞相好诗!”于是一臣子速命印刷工匠刻版印刷,以便流传天下。

        样张出来给曹操一看,曹操感觉不妥,说道:“喝与唱,此话过俗,应改为‘对酒当歌’较好!”,于是此臣就命工匠重新来过。工匠眼看连夜刻版之工,彻底白费,心中叫苦不喋。只得照办。

        样张再次出来请曹操过目,曹操细细一品,觉得还是不好,说:“人生真爽太过直接,应改问语才够意境,因此应改为‘对酒当歌,人生几何?…………’!”当臣转告工匠之时,工匠晕倒…………!

        可惜三国时期活字印刷还未发明,所以类似事情应该时有发生,如果是有了活字印刷。则只需更改四个字就可,其余工作都未白做。实在妙哉。

        第一,要改,只需更改要改之字,此为可维护;第二,这些字并非用完这次就无用,完全可以在后来的印刷中重复使用,此乃可复用;第三,此诗若要加字,只需另刻字加入即可,这是可扩展;第四,字的排列其实有可能是竖有可能是横排,此时只需将活字移动就可做到满足排列需求,此是灵活性好

        而在活字印刷术之前,上面的四种特性都无法满足,要修改,必须重刻,要加字,必须重刻,要重新排列,必须重刻,印完这本书后,此版已无任何可再利用价值。

       小时候,我一直奇怪,为何火药、指南针、造纸术都是从无到有,从未知到发现的伟大发明,而活字印刷仅仅是从刻版印刷到活字印刷的一次技术上的进步,为何不是评印刷术为四大发明之一呢?

       做了软件开发几年后,经历了太多的客户(曹操)改变需求,更改最初想法的事件,才逐渐明白当中的道理。其实客观的说,客户的要求也并不过份(改几个字而已),但面对已完成的程序代码,却是需要几乎重头来过的尴尬,这实在是痛苦不堪。说白了,原因就是因为我们原先所写的程序,不容易维护,灵活性差,不容易扩展,更谈不上复用,因此面对需求变化,加班加点,对程序动大手术的那种无耐也就非常正常的事了

      之后当我学习了面向对象分析设计编程思想,开始考虑通过封装、继承、多态把程序的耦合度降低(传统印刷术的问题就在于所有的字都刻在同一版面上造成耦合度太高所制),开始用设计模式使得程序更加的灵活,容易修改,并且易于复用。体会到面向对象带来的好处,那种感觉应该就如同是一中国酒鬼第一次喝到了茅台,西洋酒鬼第一次喝到了XO一样,怎个爽字可形容呀。

       再次回顾中国古代的四大发明,另三种应该都是科技的进步,伟大的创造或发现。而唯有活字印刷,实在是思想的成功,面向对象的胜利。不知您是否也有所感呢?

分享到:
评论
2 楼 karna 2007-01-18  
<p>好文,好文</p>
1 楼 lformat 2007-01-18  
佩服,要好好学习

相关推荐

    戏说面向对象设计原理

    #### 四大发明之活字印刷——面向对象思想的胜利 在《戏说面向对象设计原理》一文中,作者通过一个生动的故事引入了面向对象编程的核心思想:可维护性、可复用性、可扩展性和灵活性。故事发生在三国时期,曹操命令...

    戏说面向对象程序设计

    四大发明之活字印刷——面向对象思想的胜利 第一章............面试受挫——代码无错就是好? 第二章............代码规范、重构 第三章............复制VS复用 第四章.......

    面向对象程序设计C#版---.zip

    四大发明之活字印刷——面向对象思想的胜利 第一章............面试受挫——代码无错就是好? 第二章............代码规范、重构 第三章............复制 VS 复用 第四章......

    戏说面向对象程序设计C#版.docx

    "四大发明之活字印刷——面向对象思想的胜利"章节以三国时期的活字印刷为例,揭示了面向对象设计的四个关键特性:可维护性、可复用性、可扩展性和灵活性。活字印刷术允许单独替换和重用字块,就像面向对象编程中的...

    戏说面向对象程序设计C#版

    ### 四大发明之活字印刷——面向对象思想的胜利 作者以中国古代四大发明之一的活字印刷术为引子,类比面向对象设计的核心优势。活字印刷术的出现极大地提高了文字印刷的效率和灵活性,与面向对象设计的可维护性、可...

    设计模式 面向对象程序设计 C#版

    面向对象思想的胜利,就如同活字印刷术的发明,改变了软件开发的格局,使得程序员能够更高效地应对需求变化,提高了软件产品的质量和生命周期。通过学习和应用设计模式,开发者可以更好地应对“曹操”们的需求更改,...

Global site tag (gtag.js) - Google Analytics