. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->数据结构/算法
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  老生常谈:算法与数据结构究竟有多大用  [待解决] 回复[ 2次 ]   点击[ 913次 ]  
mywiil
[帖 主]   [ 发表时间:2008-11-08 18:26 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:4
注册日期:2008-10-14 16:29
不好意思又提出了这样一个可以有口水战的问题。很多人的答案是“有用”,大部分的理由是不懂算法就会限制“思维”。我觉得这种答案有点牵强。软件产业现在也是有蛮细的分工的。一个人精力多花在了算法之上,那他就少了精力放在更高层面的设计问题上。就好像读设计的大部分是不会碰到土木用的力学。我们能不能说算法就是土木工程师的活,而酸法以外的架构和设计则是设计师的活呢?对设计师而言,懂力学自然是好,但是即使不怎么懂,也会无伤大雅。 

所以我觉得学了算法当然有用,但是学算法花的时间会不会不值得。当然我说的学算法是在看完introduction to algorithm大半本以后的学习---intro to algo是蛮基本的, 但是像The arts of computer programming或者concrete mathematics就有点过头了。 

即便在现实生活中,很多情况下我们都不会碰到有难度的算法。如果碰到有难度的算法,整个开发团队只要有一个人有本事解决,问题就不算是问题了。 

所以我蛮想知道这两件事的, 
1. 在这个论坛的,究竟有多少人是每天工作要碰到算法的?具体而言是哪些算法(离散的,信号处理的或者图形的?)如果你需要设计算法,有多少时候是找开源代码能解决问题的?有多少时候要自己真正设计的? 
2. 究竟有多少人读过"the art of computer programming"?我自己算是大概翻过了这本书,很多章节我都从其他地方看过类似的材料。但是我不觉得直接看teh arts of computer programming是学习那些课题的高效方式。
mywiil
[第1楼]   [ 回复时间:2008-11-08 18:27 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:4
注册日期:2008-10-14 16:29
其实学习算法有两个好处:直接的和间接的. 
直接的好处就是将学到的算法使用在工作中.而间接的,就没有定论了,我觉得是能够提升思维能力. 
这两个好处中,我觉得提升思维能力更重要.说到底算法还是比较基础的东西.而越基础的东西,越是难以直观地评价它的价值.但是,正是由于它是基础的,其投资回报率其实更高.比如LZ所说的高层设计,也会因思维能力的提升而获益.另外,就算法本身而言,我觉得学习算法的主要目的是具备设计新算法的能力,而不是使用已有的算法.因为,人们很难预测将来的需求,只为现有需求付出努力回报率是不高的.因此学习算法的重要好处是:能够为将来未知的需求作好准备. 
总之,我的体会是:算法的实际价值总是比我们所估计地要高得多. 

当然,也没有必要因此就非算法不行.总体而言,它和其他基础的东西一样,是高投入高回报率的科目,但是并不是所有人都必须投入它.是否要花精力学习它,要学到什么程度,对每个人来说答案都是不同的.就象LZ所说,工作中直接遇到算法难题的情况平均而言是不多的.所以,也不必被算法的美好前景所诱惑.最好是根据自己的目标和实际情况,做最优选择.而一旦选择的学习算法,就必须下定决心做巨大的付出. 

就我个人而言,工作中是经常要碰到算法的;但是遇到难题的情况很少,大多数情况下,具备普通的能力就可以了. 
目前,我正在学习TAOCP,学习的主要目的是提高算法设计能力(而不是应付现有的工作).但是,我发现自己的数学基础还是有些薄弱(基础以前没打好,后悔啊),所以现在正在看Concrete Mathematics.(欢迎与我讨论这两本书上的内容,呵呵)
lgyhitler
[第2楼]   [ 回复时间:2008-11-09 19:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-09 19:43
同意LZ看法,还是要学好数据算法啊
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved