当我上网查找有多少种树结构的时候,我得到一个下面的列表。
世界何其之大啊,算法,数据结构又何其复杂啊。
设计模式,框架,架构,我仅仅听说它们的名字,
而又何时能懂得它们呢?
他们说,你的程序最好有一个接口能读取配置文件,你学点xml吧。
他们说,你的程序最好能用网页实时检测性能,学点web知识吧。
他们又说,其实已经有这些库了,你只要学习就好了。
他们又说,这些库,还不只一种哦,选个适合你的吧。
大概是自己笨的原因,我还记得上初中的时候解一道题,x^2=x。
(解决过程)我们都是先把x移到左边,然后提取x,得到x(x-1)=0,然后我们解得x=0或x=1。
当时大概几千万个中学生同时做这样的转换,好像世界上的问题的解决方法就是唯一的,而我们称之为数学之美。
我们几千万人做着相似的证明过程,世界就如此唯一,简洁而美。
然而长大后,这种思维方式还遗留在我们的思维里。
然而世界是复杂的,就连堆,栈,队列都可以有数组实现和链表实现,选择哪种?你的自由。
但是真的自由吗?尤其是我们想要一个系统级的程序时,太多选择蜂拥而来。
解决方案,解决方案,解决方案,方案就意味着不会只有一个,每一个方案在提高某一方面的性能的时候,就无法兼顾另外一方面的性能。
世界在我的眼中失去了唯一解,而出现了多解。
在高中的时候,我们通过不同解决方法得到相同的结果(看起来必须相同)的时候,老师会称赞你,啊,这孩子真聪明,真有创新精神。
然而真实的世界是,你通过不同的解决方法,而且给出不同的解,老师又该怎么称赞你呢?
当我们选择一种框架里的时候,我觉得我又躲进了那种唯一性,我们实际上又在抒写相同的解决过程,这种感觉真好,人在平台好做事,果然如此。
但是想象世界上又有如此多的框架,在你的框架之外,当你走出去的时候,你看到了什么呢?
写的很乱, 但是希望有人能看懂我说的是什么。
我来回答我自己的问题吧:当我着手编写一个程序的时候,不能优雅而优美的解决问题总是让我难受,然后又放下不写了。我怀疑是否再往上走一层(有人说,计算机的问题总能通过添加一个层来解决,那么一个应用软件不知道居于多少层的高度了。)就有完美的解决方案了,大多数情况确实如此,别人制定好的框架,能很好的解决你的问题。然而每往上走一层,就是信心消除的过程,越来越没自信了。
是否能够,先写一个程序,实现它的功能,不要管是不是写的很烂,如同童年的我们用泥巴捏出一个又一个奇形怪状的玩具,只要求开心。
但这话,始终说的没底气。
不知道各位学习过程中有没有遇到这样的问题,希望能解答我心中疑惑。
先把你想实现的功能以最简单的方式和最熟悉的技术实现了,然后再开始考虑,重构,可扩展性,可维护性,这一过程中就会接触到新的技术与知识,而这些就是你所要学习的,任何一款产品是不可能开发出来就是完善的,总是要通过不断改进,更新才能向完美靠近,
几句话送你:
1、解决问题谓之实用。
2、完美无止境。
你可以追求优雅而优美的解决问题,但前提是解决问题,然后才是优雅而优美。之前有本书介绍微软的开发过程,里面提到里程碑式开发,我想这是类似的意思。
就象人,有东西吃==》能吃饱==》吃得好==》....
大部份的技术人员都有这个通病,包括我,所以你只能在实践中尽可能去调整。否则就会出现没有任何一个产品出现,
而是永远在修改的过程中。
3、所有的产品都需要妥协
妥协的意思是,你不能等待A7 CPU出来,才开始销售IPhone,事实上,Apple 开始卖IPhone,他有一堆毛病,
当然,现在也还是有一堆的毛病。
怎么说呢,开发出最需要的功能点,辅助的功能点差点,只要能用,客户还是能接受的,然后有精力慢慢完善次要功能点。
说白了就是要分清主次。
给出解决方案的过程是一个为了平衡兼顾各种利弊而不断取舍的过程,只要能保证不会有明显的短板造成木桶效应,一般来说给出的解决方案就是一个上乘的方案。