免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zhn636
打印 上一主题 下一主题

[算法] 浅谈算法 [复制链接]

论坛徽章:
0
51 [报告]
发表于 2007-08-30 11:34 |只看该作者
还是取决于你想成为哪个层次的程序员(这里的层次跟水平等没有关系)
如果你只用word的话,你就根本不需要知道还有"算法"这个词
对很多人来说,word,powerpoint就是很nb的"编程工具"了

如果你认为什么"算法"都是现成的,你只随便调用一两个函数就可以完成任务了
那么你的任何很简单,记住几个函数名就行了
当然,你的程序的安全性,正确性,效率等等都寄托在别人身上了
任务简单意味着会的人很多,你可能随时被替换,或者你的薪水会一般(当然有特殊情况)
你能影响的人也很少

写算法实现的人,要会的东西和要完成的任务显然要更多更复杂一些
这类人会相对来说少一些,你的工作会稳定点,更多的人会尊重你,薪水可能会高一点
他们会很乐于影响只会调用他们写的函数的哪些人.

研究算法的researcher,要掌握更多更理论,更基础,更本质的东西,还要有相当
深厚的数学功底,需要更多的创新,解决原来解决不了的问题,找到更优的算法
这类人更少,地位,薪水会更优厚
他们会乐于影响只会实现算法的人

nb的knuth就更少了,地位,薪水...他会影响几乎所有使用计算机的人

算法对一个人来说重要不重要,这是一个主观问题,它取决于你想成为哪个层次的程序员

[ 本帖最后由 ypxing 于 2007-8-30 11:37 编辑 ]

论坛徽章:
0
52 [报告]
发表于 2007-08-30 11:50 |只看该作者
原帖由 bluster 于 2007-8-29 18:04 发表

这怎么能算扯呢, 除了职业歧视,您给我一个学习算法的理由啊   总在那里说需要学,可是什么理由都没有或者只有很空洞的理由,那怎么行。

把算法提高到很高层次的高度是我们有些人抗拒算法的原因之一吧。
算法有很高深的层面,这一点也不错。可是它也和你日常写程序息息相关呀,只不过我们都自觉或不自觉地采用一些常用算法罢了。简单例子如2×3。你可以计算2.0*3.0,也可以2*3,还可以3+3。复杂的就更多了。
再举个例子。二维图象有噪声,被噪声污染的象素已经标出并用-1表示缺值,现在要你对缺值点分两种情况决定是否插值:孤立的缺值点以及一维线状的缺值点都要插值,其它(也就是成片的)缺值一律任其缺值。这也许不是教课书里标准算法问题,但你显然要想想怎么做。这就是算法了。

论坛徽章:
0
53 [报告]
发表于 2007-08-30 11:52 |只看该作者
原帖由 reiase 于 2007-8-30 00:11 发表
个人感觉算法是优化程序用的,写程序的时候先考虑结构方面的问题,能够通过改善结构消除的问题就不用要用什么算法,能够通过结构消除的分支,异常,循环就不要考虑算法了。就像某个大牛说的,解决问题一定要简单 ...

我感觉是反过来,算法决定结构。

论坛徽章:
0
54 [报告]
发表于 2007-08-30 11:54 |只看该作者
原帖由 diker007 于 2007-8-30 00:16 发表
设计算法的人一般不会自己动手写代码。

会心一笑,这位对我似曾相识啊。

论坛徽章:
0
55 [报告]
发表于 2007-08-30 12:26 |只看该作者
这个论题还在讨论就很说明问题了。

这是个personal question。引用楼上一位朋友说的话,一个优秀的百货店的营业员会像一些办法来使自己的工作效率更高,他也可能会用到“算法”;一个度日子为主的营业员可能更关心娱乐八卦,都一样。算法,就是用来解决问题的方法,你有新的方法,你就好样的;如果你能上升到理论高度,你就是牛人。

[ 本帖最后由 NewCore 于 2007-8-30 12:30 编辑 ]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
56 [报告]
发表于 2007-08-30 12:52 |只看该作者
原帖由 純白 于 2007-8-29 19:24 发表
算法的问题可能在现在面向对象的大环境下用得少.
你要问算法的重要性,那我可以问你个问题:
请用类C写出a,b两个数的最大公约数.
你有好几种办法,可是效率绝对不是一个数量级的.
老是用C#.NET的话,会被MS变成 ...

辗转相除法

论坛徽章:
0
57 [报告]
发表于 2007-08-30 13:27 |只看该作者
原帖由 reiase 于 2007-8-30 00:11 发表
个人感觉算法是优化程序用的,写程序的时候先考虑结构方面的问题,能够通过改善结构消除的问题就不用要用什么算法,能够通过结构消除的分支,异常,循环就不要考虑算法了。就像某个大牛说的,解决问题一定要简单,如果不能简单解决,那就搞复杂后藏起来(MICTHI)。比如你觉的用锁进行同步的算法怎样,很牛的算法,但是很多著名的软件中都强烈避免使用需要锁的结构。Unix编程艺术中就强调的所谓的艺术(哲学),而比较轻视算法。

感觉写出使用过多算法是失败


“比较轻视算法”
此书我也看了,我不认同你的理解。

此书是有提倡简洁的意思,但我理解的整个意思是,“简单->复杂->简单”的过程。
1,简单。最开始知道的少,是简单的。
2,复杂好用。了解的多了,做的更多了,于是变得复杂;功能多了也就好用。
3,简单好用。后来又发现通过简单的方式,也能够解决复杂的问题,又回到简单。

a,很多时候,2不如1。我们常常是处于1和2之间,2是不太可取的,很多很多时候都不如1。
b,我觉得我们应该追求3的这种简单。这样才能够经久不衰。我喜欢称之为经典。

举个例子,在太空中,怎么写字?“太空笔”?
呵呵,俄罗斯好像用的铅笔。

[ 本帖最后由 spibit 于 2007-8-30 13:28 编辑 ]

论坛徽章:
0
58 [报告]
发表于 2007-08-30 14:02 |只看该作者
Linus Torvalds创造了Linux,不是因为他的算法多么高超,而是因为他有超凡的架构思维;比尔.盖茨是微软的首席架构设计师,而不是首席算法师。
偶认为:算法和架构相比,架构比算法复杂得多,架构需要天赋,而算法未必,如果想提高算法水平,专心学学数学就搞定了。

论坛徽章:
0
59 [报告]
发表于 2007-08-30 14:11 |只看该作者
原帖由 pzz68 于 2007-8-30 14:02 发表
Linus Torvalds创造了Linux,不是因为他的算法多么高超,而是因为他有超凡的架构思维;比尔.盖茨是微软的首席架构设计师,而不是首席算法师。
偶认为:算法和架构相比,架构比算法复杂得多,架构需要天赋,而算 ...


把算法理解得过于狭隘了,
架构这个词我不喜欢,吓唬人用的,

论坛徽章:
0
60 [报告]
发表于 2007-08-30 14:23 |只看该作者
咳咳,这个坑比较深了,可以结束了吧。
所谓算法,窃以为未必就是什么数学公式原理,也未必就一定要最小生成树之类的才能算做算法,偶没记错的话,根据TAOCP对算法的定义,几乎所有的程序逻辑都可以归结于算法,不管是一个循环还是一个欧几里得算法。算法与数据结构是结合在一起的,所以算法直接影响整个程序。窃以为一个程序的结构也是对应于算法的。所以想多靠程序设计赚点钱,或者有志于程序设计,算法还是有必要一学的。   另外鄙视一下前面动不动就“中国”xxx的同学,这种提法一点技术含量都没有 -_-||

PS. 另外加一句,算法就是思想,未必真对应某个数学公式

[ 本帖最后由 bluster 于 2007-8-30 14:25 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP