论坛首页 海阔天空论坛

算法算老几?

浏览 33758 次
精华帖 (2) :: 良好帖 (0) :: 灌水帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-26  
hurricane1026问到:我问的难么?
这个帖子,我就不跟了,说说自己的看法:

1、无论是做软件,还是任何其他行业,甚至包括做人,很多时候,都是在解决问题。遇到麻烦,想办法解决。

2、最简单的问题,就是能够在书上找到现成答案的问题。比如:哪种排序的效率更高。

3、如果一个问题,书上没有现成的答案,能够通过Google、查找相关论文等等手段,找到答案的,也是简单问题。

4、如果,搜索不到现成答案,但是能够找到询问的人,问出答案来。比如Google不到,只能到论坛来求人,哀告,冒着被隐藏的危险提出问题。无论当事人觉得如何困难,其实都是小Case。

5、如果无论如何都找不到答案,怎么办?自己找呀!比如,这是一个开放源代码的项目,那就看代码。如果源代码都不开放,那就Hacking。反编译、debug、单步跟踪、设断点、打log,用尽一切办法,找到答案。

6、有很多问题,根本就是左右为难,你也知道了整个困难的全貌。然后怎么去解决他呢?左思右想,反复权衡,尽可能找到最好的方案。甚至如果有创意的话,能够想到一个两全其美的解决方案。

7、更加困难的问题是:它根本就没有正确答案,没有最优解。连如何评价各种解决方案的好坏,都说不清楚。怎么办?你还是得做出决策,然后执行。

8、再进一步,它本来就没有问题。但是,一个原本已经解决了的问题,你现在来考虑,有没有可能存在更好方案。比如:新的切入点;新的框架;新的语言;新的开发模型。这就更加困难了。

不再把人的问题牵涉进去了,那是没底的。

那么,算法算老几?
   发表时间:2007-03-27  
这么说有些绝对,算法真的不重要吗?这取决于你所做的事情。

真正在工作中应用成熟算法的机会并不多,因为那样的算法多半是现成的,没有必要重写。但是,有些问题没有现成的方案怎么办?比如,我现在所做的一些关于并行计算的算法,真的是没有现成可以参考的内容,因为我们用到的东西暂时还是不公开的。你只能自己去设计。

算法的根基关键是给了人一个思考问题的方式。我曾经写过一篇《乱弹算法》,其中谈到一个简单的小例子,如何判断一个数是2的幂。其实,每个人都能给出一个解决问题的答案,但答案之间却差异很大。思考问题的方式就是在学习算法的过程中锻炼出来的。

我承认,很多程序中更多的是在解决业务问题,所以,算法的必要性显得没那么重要。但是,如果想做一个好的程序员,算法是必备的根基,就如同1+1=2一样。没有根基,大厦是不牢靠的。

如果还在质疑算法的重要性,可以问自己一个问题,你真的想做一个好的程序员吗?如果答案是否定的,那算法确实不重要。

老庄,或许你经过一些锻炼已经掌握了一些做事的方法,但JavaEye还是有不少新手在看的,你这个言论容易误导别人啊!^_^
0 请登录后投票
   发表时间:2007-03-27  
hurricane1026 写道

打个岔,m&(m-1)应该是判断2的幂数的最佳办法吧。


我所了解到的范围内是最佳了。
0 请登录后投票
   发表时间:2007-03-27  
算法这个东西比较奇怪,如果我们记算法的价值为 A ,那么:

1. A = 0 的可能性为 99.99%
2. 存在 0.01% 的可能性,A = ∞
0 请登录后投票
   发表时间:2007-03-27  
几乎用不上.
0 请登录后投票
   发表时间:2007-03-27  
不搞研究,搞应用(二次开发),算法当然用得少啦。
当遇上强竞的竞争对手时,还是用点原创的算法好。
0 请登录后投票
   发表时间:2007-03-27  
当然,如果从广义的角度来讲:算法无处不在,从某一方面来说算法很重要:比如数值计算。但归根到底,算法的重要是建立在扎实的数学基础之上的,没有数学思想的算法,不管别人怎么说,我只会看看它的实现,不多说什么。以前我理解的搞计算机的都是数学大牛,现在发现搞数学的好多都是计算机大牛,而搞计算机的好多都不是数学大牛。介于此,如果要排名论辈份,我不敢说计算机算老几,但单单和数学相比,我把它放第二位。
0 请登录后投票
   发表时间:2007-03-27  
俺是逍遥派的,老庄可是我的偶像那
0 请登录后投票
   发表时间:2007-03-27  
算法对于写出好的程序来说,确实是很重要的,我们每写段程序,抛开数学上定义的算法来说,我们都是在写算法,业务逻辑等等都应该是广义上的算法.但是光从数学上算法来考量一个人,也不能说就是一种全面的考核方式.对于理解实际事物、事理,以及一个人的逻辑思维能力等全面的考核才比较公正,培养逻辑思维的不应该仅仅是数学意义上的算法.
所以,我取中庸.呵呵~~
0 请登录后投票
   发表时间:2007-03-27  
呵呵,我觉得这样的争论其实没有太多意义,和讨论C++和JAVA哪个更有前途有着同质性。
算法重不重要,要根据自己的兴趣及将来的职业方向来定了,如果想一直在行业软件或一般软件公司做,算法确实并不太重要,在招聘者所考虑其综合素质中占的比重确实不大;但是如果要做GOOGLE、Microsoft、IBM、INTEL、ORACLE等研究院的工作来说,算法在应聘者中所占的比重就很大了。但如果你决定将来转做管理之类的工作或正在做管理的工作,算法也不一定要是你的强项,而是掌握怎样让具有这种强项的牛人更好地为你工作的能力就够了....
关键是看“你是否愿意沿别人的路走”,还是“想有独创性,发现一条新路让别人沿着它走”...
就像一朋友说的那样“不是越优秀的人越适合你们公司,而是要选择合适的人”,想想,还真是这么个道理...
0 请登录后投票
论坛首页 海阔天空版

跳转论坛:
Global site tag (gtag.js) - Google Analytics