从思维角度看编程过程

  当我们来到一个陌生的城市,就像我当初刚去杭州上学。到了周末,并想着跑出去玩一趟。但对城市又不了解,于是只好找地图,或者打电话问114应该坐什么车到哪里哪里。对于这个城市的一个新人来说,能找到地儿,已算不错。但坐车的机会多了,你并会了解其实从之江到武林广场根本不只302这辆破车,还有Y5,K28路等可以走。K28是空调车,速度挺快,车挺新,但走的道挺绕,耗时久。Y5也是空调车,速度快,道又近,而且走的是旅游路线,一路上风景极好。

  当我们对这个城市越来越了解,越来越熟悉的时候。再次出门,我们心中对坐什么车自然已有概念。并会根据每次出门的不同情况,作不同取舍。

  比如:

  * 如果时间紧急,那就得坐Y5。虽然Y5要三块,而302只要一块。

  * 平常情况,我们就选择坐K28路。价格公道,质量上乘。

  * 302虽然便宜,而且车站就在门口,但往往路上会经常堵车,而且走的道很偏。而Y5路上不堵车,而且道上可换乘的其他公交车多。所以,值得花上10分钟,去Y5的车站坐车。

  * 虽然Y5坐着方便舒适,而且快捷,但偏偏它容量小,坐不了几个人。所以,当全班同学出动时,只能去乘又脏又慢的302。

  其实,每次思考,你心中都已经装着整个城市。你的大脑就是张地图,而且是张标志着每条路路况,每路车价格的地图。

  我们编程的时候,用的也是这个思考过程。

  当我们还是个新手,我们还停留在学会使用工具的阶段时,我们不停地翻看工具书,或者找有经验的人问询。只要把程序的功能完成,就算是不错,很少会考虑性能,负载等问题。

  而当我们有了越来越多的经验,对程序的运行过程已经心中有数之时,每实现一个模块,一个方法,甚至每写一句程序,我们都会自然而然的考虑很多事情。

  比如:

  * 我们会在两种实现之间权衡,一种速度快,但耗费空间;一种节省空间,但速度慢。(当然,现在空间已经不是问题。)

  * 做过多的over design 和优化,在没有客户/用户需求之前,都可能是没有必要的。

  * 我们可以在很短的时间内,用最快的手段,实现一个方法,虽然代码丑陋了点。而往往一段好的程序,都需要考虑它很多特性,比如:它要通俗易懂,它要干净,它的耦合性要低,内聚性要高,扩展性要好,等等等等。

  * 我们可以选择像Ruby这种优美,简单,开发效率高的语言。但是如果对性能要求极高,我们不得不选择速度更快,性能更好的语言,如C++,虽然开发效率会降低很多。

  其实,每次思考,你心中都已经装着整个程序。你的大脑就是内存,而且是知晓很多外界因素的内存。

  人类在考虑很多事情的时候,思维模式都是相似的。所以,各种事情,都可以找出其相似性。

猜你喜欢

转载自andyhu1007.iteye.com/blog/201424