分享
 
 
 

庖丁解羊----划分

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

庖丁解羊

----闲谈编程思想

作者:HolyFire

经过多年的编程,我发现编程的思想对一个程序员是至关重要的,以前拿到一个问题,马上就开始考虑如何来一点一点把他用代码来实现,于是啃啊啃啊于愁眉笼罩千辛万苦下每完成了一点就欣喜若狂。编着编着发现这里不足,那里没考虑到于是东补补西凑凑,异常蹩脚的完成了一个小程序,当时的感觉就像我完成了全世界,或许那个时代是我最开心的。

完成了四五个程序的我,开始发现我做了很多重复的劳动,于是乎开始做我的程序库,编写功能型模块。想到了这些模块只要写一遍就可以受用无穷不禁得意洋洋,或许那个时代我是聪明。

当我写了五六千行代码的时候,我发现我写的功能模块已经记不清什么是干什么的了,而我已经习惯使用别人写的比我好的模块时,我开始迷茫,我做的一切究竟是为了什么。这时我开始研究别人的代码,开始懂得什么是优化,什么是数据结构,什么是数学建模,我开始研究应用数学和软件工程。这时我开始使用C++用类来写程序,或许那个年代我是明智的。

当我写了四五十个*.h和*.cpp后,开始发现我写的类一点都不通用,无法再利用。我开始深入学习类以及面向对象,明白了继承和封装,这时的我才开始深深思考什么是重要的,于是我开始分析问题而不是一上手就开始编代码。或许以前的我是个傻瓜^_^。

我足足花了三年多的时间来浪费我的青春做了别人仅需一年的事情(当然着三年中我积累的经验不可能是一年能做到的,但是对于编程上的修养,我浪费的时间已太多),如果你们没有意识到这点,或许也会浪费很多时间。

分析能力对一个程序员来说是一个重要的属性,它直接关系到你对事物的理解能力和组织能力,程序员做的工作就是将一个事物分解成数学元素然后重新组织在计算机里重现,所以如何处理事物是个要点。

我们了解一个事物并进行描述的时候,往往是先处理它的一部分,接着处理另一部分,然后等所有的部分都处理完的时候,具体的事物就重现了。比如给一个不知道山羊的人介绍山羊,如果你对他说山羊就是山羊,他是无论如何都不会明白的。如果你说山羊是一种有四只脚的脑袋上有两只角,还有短短的尾巴,那他模模糊糊会有些形象在脑海里了,如果加上有绒绒的毛,可笑的胡子,咩咩的叫的食草动物,至少他不会和牛混淆起来,如果你能描述的更详细更好,那他有九成知道山羊是什么样子了,当他看见山羊的时候就会立刻明白。对于什么都不懂得计算机你不用说明什么,但是要是别人或者几年以后的你自己能看明白你的文档,详细的说明是必须的。而从上面的过程看来,将事物分成小块来处理是个好办法,我们把这个过程叫做划分。当然划分是可以继续下去,将划分的小块继续划分直到不能划分为止。当然要对一只山羊划分需要一个对山羊有着全面了解的人,所以划分你的问题的时候要对问题有全面的了解。看上去这对一个还没有了解这个问题的人是一个矛盾,划分一个事物有助于了解这个事物而要很好的划分却需要对事物充分的了解。于是我们要有所改变,要改变的是我们的做法。我们先粗略的了解问题,然后粗略的划分一下,将划分的模块再粗略的了解一下,然后将它粗略的划分,等到都成为不可划分的小块时,我们再来组织它。而且这个时候,我们对问题已经有全面的了解了,这时候我们将小块的重复部分扔掉(一般一定会有重复的部分),然后将这些小块重新将问题组合起来,想一下将一只大卸八块的山羊组合起来,哈哈,一定是活不过来了,不过有羊肉吃也不错。如果你很顺利的组合起来了,表示你很好的划分了这个问题而且了解的很透彻,以后的事将会一帆风顺,你这时脑袋里一定充满了解决这个问题的方案,已经跃跃欲试了。不要急,聪明的人会仔细的将划分的过程多看几遍,重组的方法多试几种,这不但对以后和编程有好处,也是更好解决方案的起点。

现在我们来解剖一只山羊,如果你愿意还可以细分,动物爱好者请回避。

山羊

-> 脑袋

-> 躯体

-> 四肢

-> 尾部

脑袋

躯体

四肢

尾部

-> 五官

-> 胸

-> 两只前肢

-> 尾巴

-> 胡子

-> 腹

-> 两只后肢

-> 绒毛

-> 绒毛

-> 背

-> 骨架

-> 骨架

-> 内脏

-> 绒毛

-> 骨架

五官

-> 耳朵

-> 眼睛

-> 鼻子

-> 嘴巴

内脏

-> 心

-> 脾

-> 肝

-> 肺

-> 胃

-> 肠

-> 肾

前肢

后肢

-> 脚

-> 脚

-> 绒毛

-> 绒毛

-> 骨架

-> 骨架

最后我们得到的是:

山羊 脑袋 躯体 四肢 尾部 脑袋 五官 胡子 绒毛 骨架 躯体 胸 腹 背 内脏 绒毛 骨架 四肢 两只前肢 两只后肢 尾部 尾巴 绒毛 骨架 五官 耳朵 眼睛 鼻子 嘴巴 内脏 心 脾 肝 肺 肾 胃 肠 前肢 脚 绒毛 骨架 后肢 脚 绒毛 骨架

去掉重复的部分:

山羊 脑袋 躯体 四肢 尾部 五官 胡子 绒毛 骨架 胸 腹 背 内脏 两只前肢 两只后肢 尾巴 耳朵 眼睛 鼻子 嘴巴 心 脾 肝 肺 肾 胃 肠 脚 脚

最终的不可划分的子模块:

胡子 绒毛 骨架 胸 腹 背 尾巴 耳朵 眼睛 鼻子 嘴巴 心 脾 肝 肺 胃 肠 脚

现在我们将它重新组合一下,是不是很简单的就完成了。而且我们需要处理的东西并不多。现在我们来用数学元素来描述一下

胡子: 数量不多的多种形状的轮廓,有各种颜色

绒毛: 非常多的多种形状的轮廓,有各种颜色

骨架: 多种形状的轮廓,有一种颜色

胸: 某形状的轮廓,有一种颜色

腹: 某形状的轮廓,有各种颜色

背: 某形状的轮廓,有各种颜色

尾巴: 某形状的轮廓,有各种颜色

耳朵: 最多两个的某形状的轮廓,有各种颜色

眼睛: 最多两个的某形状的轮廓,有各种颜色

鼻子: 最多一个的某形状的轮廓,有各种颜色

嘴巴: 某形状的轮廓,有各种颜色

心: 某形状的轮廓,有一种颜色

脾: 某形状的轮廓,有一种颜色

肝: 某形状的轮廓,有一种颜色

肺: 某形状的轮廓,有一种颜色

胃: 某形状的轮廓,有一种颜色

肠: 多种形状的轮廓,有一种颜色

脚: 多种形状的轮廓,有各种颜色

现在我们又得出了数量、轮廓和颜色这个三个元素,他们是所有元素都有的共性,我们找到了组合山羊的最小划分,虽然在科学上这不是正确答案,但粗略地表达一只山羊这已足够。好,虽然历时不多,我们在脑海里已经解决了这个问题。

2001/8/05

丁宁

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有