如何面对“算法”的困惑?
 
收到一封面对“算法”问题困惑的来信:
我是网络专业 自然 不回接触 软件方向 ,但是 我对JAVA 感兴趣   我想做开发 开发当中用到的 好像和 算法(和那些数学相关的) 没有什么直接关系,都被包装好了...
我还需要 去学习一下 <算法导论>"这些吗?

回信如下:
 
1、很多都封装好了啊!还需要学习算法吗?
回答:是啊,如果开发一些简单的程序当然可以用包装好了的方法,但是,并不是所有你想干的事情都被人家包装好了啊。如果你只做面向数据库的“增删改查”,基本就不用研究算法了。
 
2、那“算法”这东西到底是什么?
回答:如果你自己做一个类似数据库的程序怎么办?有人会说,人家都做好了现成的MySQL、SQL-Server、Oracle等等数据库程序,我们直接使用就行了,还做它干什么?
我说:为什么我们就不能自己做一个数据库?
好,要不你自己做一个WebServer如何?
算了,这些都难,那你做一个简单的数组中的数据比对程序,最后形成一个新数组如何?
你只知道,调用JDBC怎么完成这个开发任务?
 
我给一个定义:

        算法其实就是用最简洁最快的方法,“折腾”数组或者其他数据,你的“算法”能力决定着你程序的运行效率。
        所谓的“折腾”就是各种针对数组或者其他数据的运算过程,这个过程根据你的需要完成。

3、“算法”可怕吗?
回答:很多同学一听“算法”立马腿软,其实有那么可怕吗?一点不可怕,软件开发是门技术,但同时又是一门艺术,多练练就不怕了。

4、切莫为了“算法”而“算法”
很多同学为了练习“算法”,而特意去找一些“算法”的东西去练,练到最后,还是云里雾里,到底什么时候用到“算法”呢?还是很晕,这就是“算法”和实际应用脱节的结果。
记住:任何程序都是有意义的,没有无意义的程序,不要为了“算法”而去“算法”,任何“算法”都是和实际应用相结合的。
 
5、回去试着做一道题:
 
试着做一个方法,传入两个数组和一条SQL语句,返回一个数组。
这个返回的数组时你SQL语句指定的返回条件返回的结果。
 
试试看,你能做出来这个程序,你的算法应该就没什么问题了。
注意:这个程序很实用,甚至可以理解为一个小型数据库的雏形程序呦!
 
钟声
2009-8-31