|
|||||||||||||
|
在实际工作中,算法真的那么重要吗?
我觉得,一个产品,可能也就需要一两个talent的算法工程师负责处理产品从发布到规模扩大化过程中遇到的部分算法问题,而剩余的大部分并不需要你的员工有这种talent,他们只要思维逻辑缜密就足够了,而且这剩余部分占据了产品开发一大半比重。
按票数排序 按时间排序
11 个回答
huzhi zhang、张亚伟、hheedat 等人赞同
这个主要看具体工作领域吧。
对于大多数工程师,应该对基础算法库(比如C++的STL)有比较清晰的了解,知道类库中提供的每种数据结构和算法的大致实现原理,它们的优缺点,在具体情况下该怎么选用。这个是必须的,因为总会有这种需要。至于怎么去实现类库中的数据结构和算法,除非你的工作领域就需要做这些工作,否则显然没有必要。
此外就需要看具体工作领域了,比如如果在搜索领域工作,对索引、查询等算法显然需要了解并能够实现,如果在图像处理领域工作,对相关的特征提取和模式识别方法需要充分地熟悉。
当然,技术领域对算法的盲目崇拜有时候总是难免的,面试中找些和具体工作毫无关系并且自己也一知半解的算法题去问别人,这种情况还是挺多的。其实跟一些边边角角的算法相比,做项目显然还有很多更重要的东西。就像Steve Mcconnell在评价Donald Ervin Knuth的Art of Computer Programming时说的一样,如果计算机编程艺术真的像Knuth书中那样(尽是些奇怪的算法),他一辈子也不会考虑进入这个行业。
对于大多数工程师,应该对基础算法库(比如C++的STL)有比较清晰的了解,知道类库中提供的每种数据结构和算法的大致实现原理,它们的优缺点,在具体情况下该怎么选用。这个是必须的,因为总会有这种需要。至于怎么去实现类库中的数据结构和算法,除非你的工作领域就需要做这些工作,否则显然没有必要。
此外就需要看具体工作领域了,比如如果在搜索领域工作,对索引、查询等算法显然需要了解并能够实现,如果在图像处理领域工作,对相关的特征提取和模式识别方法需要充分地熟悉。
当然,技术领域对算法的盲目崇拜有时候总是难免的,面试中找些和具体工作毫无关系并且自己也一知半解的算法题去问别人,这种情况还是挺多的。其实跟一些边边角角的算法相比,做项目显然还有很多更重要的东西。就像Steve Mcconnell在评价Donald Ervin Knuth的Art of Computer Programming时说的一样,如果计算机编程艺术真的像Knuth书中那样(尽是些奇怪的算法),他一辈子也不会考虑进入这个行业。
知乎用户、王超杰 (A Quiver Full of Arrows)、邓宣颖 等人赞同
对于实际工作来说,我认为最有价值的是对算法、时间复杂度的理解,以及对问题的分析能力、对问题解法的判断能力。
现今计算机科学已经发展到比较发达的阶段,不太可能一个个人学会所有的算法,解决具体的问题的时候,有时候还是更需要通过先分析问题,然后查阅资料、思考设计、甚至是讨论,最后再实现的方式去解决。
算法也有很多不同的分支,其面向的需求不同,适用范围不同,通常的“交流”圈子也不同,比如“图形学算法”、“人工智能算法”、“分布式算法”,不同分支下的基本概念和思考方式都不同,分析问题和理解他人方法所需要掌握的“常识”也不同。每个分支下又是每年都有大量的新论文、新方法出现,也不断伴随着新需求、新的应用场景。所以,掌握基本方法和概念,根据需求去深入学习相关的算法才是比较好的选择。
现今计算机科学已经发展到比较发达的阶段,不太可能一个个人学会所有的算法,解决具体的问题的时候,有时候还是更需要通过先分析问题,然后查阅资料、思考设计、甚至是讨论,最后再实现的方式去解决。
算法也有很多不同的分支,其面向的需求不同,适用范围不同,通常的“交流”圈子也不同,比如“图形学算法”、“人工智能算法”、“分布式算法”,不同分支下的基本概念和思考方式都不同,分析问题和理解他人方法所需要掌握的“常识”也不同。每个分支下又是每年都有大量的新论文、新方法出现,也不断伴随着新需求、新的应用场景。所以,掌握基本方法和概念,根据需求去深入学习相关的算法才是比较好的选择。
邓宣颖、程垒 赞同
和精通某些具体算法相比,更重要的是通过研究算法养成良好的思考和解决问题的能力,算法诚可贵,思考价更高。
算法还是很重要的,虽然计算机的处理能力越来越强,但好的算法还是非常重要的。好的算法的执行效率有可能是差算法的很多倍。以排序为例,一般情况下,快速排序就比冒泡排序快很多。算法好,应用程序执行快,用户体验就会好。
我觉得实际工作中需要算法的地方随处可见。
就拿两个你熟悉的功能来说
问题重定向
父话题子话题的ontology
都涉及图算法。
就拿两个你熟悉的功能来说
问题重定向
父话题子话题的ontology
都涉及图算法。
了解常用的数据结构的使用,什么需求下该选用什么算法和数据结构,就够了。发明算法,那是数学家才能做到的。
是的,特别是当处理时间要求达到毫秒级的时候
编程不是对于实际问题的计算机表示吗?对于任何一段实现功能的程序,实现的方式不就算法吗?那些书上的算法就是对于普遍问题的经典实现。有助于你思考,解决问题。
算法的确是很重要的!
我是一个网页开发的实习生,我在想到底算法重不重要,因为我在面试的时候老是吃亏在算法
合适是最重要的,处理问题的时候都有优先选用的算法。
1、无论是做软件,还是任何其他行业,甚至包括做人,很多时候,都是在解决问题。遇到麻烦,想办法解决。
2、最简单的问题,就是能够在书上找到现成答案的问题。比如:哪种排序的效率更高。
3、如果一个问题,书上没有现成的答案,能够通过Google、查找相关论文等等手段,找到答案的,也是简单问题。
4、如果,搜索不到现成答案,但是能够找到询问的人,问出答案来。比如Google不到,只能到论坛来求人,哀告,冒着被隐藏的危险提出问题。无论当事人觉得如何困难,其实都是小Case。
5、如果无论如何都找不到答案,怎么办?自己找呀!比如,这是一个开放源代码的项目,那就看代码。如果源代码都不开放,那就Hacking。反编译、debug、单步跟踪、设断点、打log,用尽一切办法,找到答案。
6、有很多问题,根本就是左右为难,你也知道了整个困难的全貌。然后怎么去解决他呢?左思右想,反复权衡,尽可能找到最好的方案。甚至如果有创意的话,能够想到一个两全其美的解决方案。
7、更加困难的问题是:它根本就没有正确答案,没有最优解。连如何评价各种解决方案的好坏,都说不清楚。怎么办?你还是得做出决策,然后执行。
8、再进一步,它本来就没有问题。但是,一个原本已经解决了的问题,你现在来考虑,有没有可能存在更好方案。比如:新的切入点;新的框架;新的语言;新的开发模型。这就更加困难了。
不再把人的问题牵涉进去了,那是没底的。
那么,算法算老几?
2、最简单的问题,就是能够在书上找到现成答案的问题。比如:哪种排序的效率更高。
3、如果一个问题,书上没有现成的答案,能够通过Google、查找相关论文等等手段,找到答案的,也是简单问题。
4、如果,搜索不到现成答案,但是能够找到询问的人,问出答案来。比如Google不到,只能到论坛来求人,哀告,冒着被隐藏的危险提出问题。无论当事人觉得如何困难,其实都是小Case。
5、如果无论如何都找不到答案,怎么办?自己找呀!比如,这是一个开放源代码的项目,那就看代码。如果源代码都不开放,那就Hacking。反编译、debug、单步跟踪、设断点、打log,用尽一切办法,找到答案。
6、有很多问题,根本就是左右为难,你也知道了整个困难的全貌。然后怎么去解决他呢?左思右想,反复权衡,尽可能找到最好的方案。甚至如果有创意的话,能够想到一个两全其美的解决方案。
7、更加困难的问题是:它根本就没有正确答案,没有最优解。连如何评价各种解决方案的好坏,都说不清楚。怎么办?你还是得做出决策,然后执行。
8、再进一步,它本来就没有问题。但是,一个原本已经解决了的问题,你现在来考虑,有没有可能存在更好方案。比如:新的切入点;新的框架;新的语言;新的开发模型。这就更加困难了。
不再把人的问题牵涉进去了,那是没底的。
那么,算法算老几?
[代朋友转贴][求助]恳求师大的都来挽病危 ... | 博客访问量超过50万了!
- 2007-03-26 23:39
- 浏览 17979
- 评论(56)
- 论坛回复 / 浏览 (55 / 28774)
- 分类:非技术
- 相关推荐
56 楼 jasongreen 2007-05-19
庄表伟 写道
hurricane1026问到: 我问的难么?
这个帖子,我就不跟了,说说自己的看法:
1、无论是做软件,还是任何其他行业,甚至包括做人,很多时候,都是在解决问题。遇到麻烦,想办法解决。
2、最简单的问题,就是能够在书上找到现成答案的问题。比如:哪种排序的效率更高。
3、如果一个问题,书上没有现成的答案,能够通过Google、查找相关论文等等手段,找到答案的,也是简单问题。
4、如果,搜索不到现成答案,但是能够找到询问的人,问出答案来。比如Google不到,只能到论坛来求人,哀告,冒着被隐藏的危险提出问题。无论当事人觉得如何困难,其实都是小Case。
5、如果无论如何都找不到答案,怎么办?自己找呀!比如,这是一个开放源代码的项目,那就看代码。如果源代码都不开放,那就Hacking。反编译、debug、单步跟踪、设断点、打log,用尽一切办法,找到答案。
6、有很多问题,根本就是左右为难,你也知道了整个困难的全貌。然后怎么去解决他呢?左思右想,反复权衡,尽可能找到最好的方案。甚至如果有创意的话,能够想到一个两全其美的解决方案。
7、更加困难的问题是:它根本就没有正确答案,没有最优解。连如何评价各种解决方案的好坏,都说不清楚。怎么办?你还是得做出决策,然后执行。
8、再进一步,它本来就没有问题。但是,一个原本已经解决了的问题,你现在来考虑,有没有可能存在更好方案。比如:新的切入点;新的框架;新的语言;新的开发模型。这就更加困难了。
不再把人的问题牵涉进去了,那是没底的。
那么,算法算老几?
这个帖子,我就不跟了,说说自己的看法:
1、无论是做软件,还是任何其他行业,甚至包括做人,很多时候,都是在解决问题。遇到麻烦,想办法解决。
2、最简单的问题,就是能够在书上找到现成答案的问题。比如:哪种排序的效率更高。
3、如果一个问题,书上没有现成的答案,能够通过Google、查找相关论文等等手段,找到答案的,也是简单问题。
4、如果,搜索不到现成答案,但是能够找到询问的人,问出答案来。比如Google不到,只能到论坛来求人,哀告,冒着被隐藏的危险提出问题。无论当事人觉得如何困难,其实都是小Case。
5、如果无论如何都找不到答案,怎么办?自己找呀!比如,这是一个开放源代码的项目,那就看代码。如果源代码都不开放,那就Hacking。反编译、debug、单步跟踪、设断点、打log,用尽一切办法,找到答案。
6、有很多问题,根本就是左右为难,你也知道了整个困难的全貌。然后怎么去解决他呢?左思右想,反复权衡,尽可能找到最好的方案。甚至如果有创意的话,能够想到一个两全其美的解决方案。
7、更加困难的问题是:它根本就没有正确答案,没有最优解。连如何评价各种解决方案的好坏,都说不清楚。怎么办?你还是得做出决策,然后执行。
8、再进一步,它本来就没有问题。但是,一个原本已经解决了的问题,你现在来考虑,有没有可能存在更好方案。比如:新的切入点;新的框架;新的语言;新的开发模型。这就更加困难了。
不再把人的问题牵涉进去了,那是没底的。
那么,算法算老几?
此文和 hurricane1026问到: 我问的难么? 联系在一起。
不知所云。
算法为王。
1026帖子中的担忧,我很赞同。
55 楼 抛出异常的爱 2007-05-19
发现有些人变化了。。。。
54 楼 jindw 2007-05-19
我觉得,算法这种东西,自己当时想通了就行,没必要死记下来,就算下次被某个面世官问倒了也无所谓。
每一道经典的算法,都体现了一些解决问题的方法。就算你忘记了算法的具体细节,但是这些方法能在你脑子里留下一个或深或浅的印象。将来自己解决问题的时候,不知不觉的就能用上。
相反,把那些细节记的死死的,个人觉得,反而会影响自己的创新精神。
好读书不求甚解,或许就是这个意思吧。
每一道经典的算法,都体现了一些解决问题的方法。就算你忘记了算法的具体细节,但是这些方法能在你脑子里留下一个或深或浅的印象。将来自己解决问题的时候,不知不觉的就能用上。
相反,把那些细节记的死死的,个人觉得,反而会影响自己的创新精神。
好读书不求甚解,或许就是这个意思吧。
53 楼 阳光晒晒 2007-03-29
有前途?
好还是不好?
没本事指望靠好前途吃一辈子,
晚年被迫下岗
待业在家的例子放在眼前.
大家在选的时候还是要甚重啊
好还是不好?
没本事指望靠好前途吃一辈子,
晚年被迫下岗
待业在家的例子放在眼前.
大家在选的时候还是要甚重啊
52 楼 庄表伟 2007-03-29
blueoxygen 写道
solospider 写道
其实个人感觉一个地区的软件行业算法应用的程度代表了这个地区软件的发达程度。
就我看来国内的软件企业大多是上层开发,不太关心底层,主要是和业务逻辑打交道。底层开发都是老外做好了的。
个人感觉算法在软件行业应用非常广泛:比如安全加密,计算机网络,人工智能,操作系统,数据存储等等,实在是太多了。而国内的软件公司大都是做应用软件比如办公软件,ERP什么的,对这些方面接触的少就不足为奇了。这代表了国内的软件水平还是比较低。
就我看来国内的软件企业大多是上层开发,不太关心底层,主要是和业务逻辑打交道。底层开发都是老外做好了的。
个人感觉算法在软件行业应用非常广泛:比如安全加密,计算机网络,人工智能,操作系统,数据存储等等,实在是太多了。而国内的软件公司大都是做应用软件比如办公软件,ERP什么的,对这些方面接触的少就不足为奇了。这代表了国内的软件水平还是比较低。
做应用为啥水平就低了? 非得写编译器才叫水平高么?
哪个国内公司能写个ORALCE Fusion或者SAP mySAP出来呢?
不仅仅是业务问题,一个SAP可以兼容几乎所有硬件平台,应用于几乎所有主流数据库。人家不照样活得潇洒着呢?
卖一套SAP就几乎要卖一套ORACLE的DB,或者IBM HP SUN的SERVER和操作系统,可以说,底层的咽喉被人家掐住了,可是几十年了,ERP领域除了ORACLE靠收购扩大市场份额,还是没人能撼动SAP的地位。
我感觉国内不是什么做底层的太少了,是能专注的太少了。整个市场环境就是浮躁的。写不出来DB,那写得让人满意的应用软件多么?
总感觉做这个才有前途,做那个才有前途。其实做人才最有前途。
顶这句话!
技术没有高低贵贱,只有不是够用心。
51 楼 blueoxygen 2007-03-29
solospider 写道
其实个人感觉一个地区的软件行业算法应用的程度代表了这个地区软件的发达程度。
就我看来国内的软件企业大多是上层开发,不太关心底层,主要是和业务逻辑打交道。底层开发都是老外做好了的。
个人感觉算法在软件行业应用非常广泛:比如安全加密,计算机网络,人工智能,操作系统,数据存储等等,实在是太多了。而国内的软件公司大都是做应用软件比如办公软件,ERP什么的,对这些方面接触的少就不足为奇了。这代表了国内的软件水平还是比较低。
就我看来国内的软件企业大多是上层开发,不太关心底层,主要是和业务逻辑打交道。底层开发都是老外做好了的。
个人感觉算法在软件行业应用非常广泛:比如安全加密,计算机网络,人工智能,操作系统,数据存储等等,实在是太多了。而国内的软件公司大都是做应用软件比如办公软件,ERP什么的,对这些方面接触的少就不足为奇了。这代表了国内的软件水平还是比较低。
做应用为啥水平就低了? 非得写编译器才叫水平高么?
哪个国内公司能写个ORALCE Fusion或者SAP mySAP出来呢?
不仅仅是业务问题,一个SAP可以兼容几乎所有硬件平台,应用于几乎所有主流数据库。人家不照样活得潇洒着呢?
卖一套SAP就几乎要卖一套ORACLE的DB,或者IBM HP SUN的SERVER和操作系统,可以说,底层的咽喉被人家掐住了,可是几十年了,ERP领域除了ORACLE靠收购扩大市场份额,还是没人能撼动SAP的地位。
我感觉国内不是什么做底层的太少了,是能专注的太少了。整个市场环境就是浮躁的。写不出来DB,那写得让人满意的应用软件多么?
总感觉做这个才有前途,做那个才有前途。其实做人才最有前途。
50 楼 solospider 2007-03-29
其实个人感觉一个地区的软件行业算法应用的程度代表了这个地区软件的发达程度。
就我看来国内的软件企业大多是上层开发,不太关心底层,主要是和业务逻辑打交道。底层开发都是老外做好了的。
个人感觉算法在软件行业应用非常广泛:比如安全加密,计算机网络,人工智能,操作系统,数据存储等等,实在是太多了。而国内的软件公司大都是做应用软件比如办公软件,ERP什么的,对这些方面接触的少就不足为奇了。这代表了国内的软件水平还是比较低。
就我看来国内的软件企业大多是上层开发,不太关心底层,主要是和业务逻辑打交道。底层开发都是老外做好了的。
个人感觉算法在软件行业应用非常广泛:比如安全加密,计算机网络,人工智能,操作系统,数据存储等等,实在是太多了。而国内的软件公司大都是做应用软件比如办公软件,ERP什么的,对这些方面接触的少就不足为奇了。这代表了国内的软件水平还是比较低。
49 楼 hideto 2007-03-29
文不对题,答非所问
48 楼 hexiaodong 2007-03-29
有理说理,没理就给星星吧
47 楼 ray_linn 2007-03-28
hexiaodong 写道
ray_linn 写道
数据仓库...就能直接连接到商业目标上么?
是我无知了还是你无知了...........
好大的帽子
数据仓库当然只是工具,实现目标还得看你怎么使用这个工具。但数据仓库及相关工具解决了你的算法问题,仓库或者集市的模型还得你自己建。
另外,还是你比较无知一点
好象挺你的人一个都没有,小星星好象倒是给了你一个....
46 楼 hexiaodong 2007-03-28
ray_linn 写道
数据仓库...就能直接连接到商业目标上么?
是我无知了还是你无知了...........
好大的帽子
数据仓库当然只是工具,实现目标还得看你怎么使用这个工具。但数据仓库及相关工具解决了你的算法问题,仓库或者集市的模型还得你自己建。
另外,还是你比较无知一点
45 楼 anweixiao 2007-03-27
仔细想想,数值算法等诸如此类的书,用java进行解释的还真罕见.........
44 楼 yimlin 2007-03-27
ray_linn 写道
hexiaodong 写道
yimlin 写道
robbin说的那些是互联网应用,应用的范围不一样,互联网应用尤其是web2.0都是要分析用户的行为,这些东西都算是数据挖掘的内容,没有算法是不行。
数据挖掘需要你自己写算法么?
那么数据仓库、数据集市以及相关的OLAP工具是干什么的?
数据仓库...就能直接连接到商业目标上么?
是我无知了还是你无知了...........
nod!
那些工具都只是给了一个手段,之上的Topic等需要我们来建
43 楼 ray_linn 2007-03-27
hexiaodong 写道
yimlin 写道
robbin说的那些是互联网应用,应用的范围不一样,互联网应用尤其是web2.0都是要分析用户的行为,这些东西都算是数据挖掘的内容,没有算法是不行。
数据挖掘需要你自己写算法么?
那么数据仓库、数据集市以及相关的OLAP工具是干什么的?
数据仓库...就能直接连接到商业目标上么?
是我无知了还是你无知了...........
42 楼 dwangel 2007-03-27
hurricane1026 写道
api不可能记住,也不回有人记。
常用的人记得住,也会有人记的。
当年那些写Windows程序的程序员,不记api开发效率要下去一大截。
41 楼 hexiaodong 2007-03-27
yimlin 写道
robbin说的那些是互联网应用,应用的范围不一样,互联网应用尤其是web2.0都是要分析用户的行为,这些东西都算是数据挖掘的内容,没有算法是不行。
数据挖掘需要你自己写算法么?
那么数据仓库、数据集市以及相关的OLAP工具是干什么的?
40 楼 nihongye 2007-03-27
算法对于学生算不上什么东西吧,他们要谈恋爱,玩游戏,做生意,各种各样的活动,各种各样的考试.学习算法能帮得上他们什么忙,有多少牛顿驱动他们去学习算法.
39 楼 ahuaxuan 2007-03-27
hurricane1026 写道
作外包也不一定一辈子做外包,更不一定一辈子做低层次的外包。不能今天吃饱了就不想明天吃什么吧。
你这样说只能说明你不懂外包得行情了
38 楼 yimlin 2007-03-27
下面这段话从“我问的难么?”回复中copy来:
“算法当然重要,但他是和数据结构在一起的,是面向过程开发时代关键。在面向对象开发时代(特指应用开发),如何用模型表达业务,用模式分离变化,是大多数人面临的任务。即便是性能处理上也不仅仅只会考虑算法,更多的可能是减少数据库连接,文件读取等手段。”
robbin说的那些是互联网应用,应用的范围不一样,互联网应用尤其是web2.0都是要分析用户的行为,这些东西都算是数据挖掘的内容,没有算法是不行。
“算法当然重要,但他是和数据结构在一起的,是面向过程开发时代关键。在面向对象开发时代(特指应用开发),如何用模型表达业务,用模式分离变化,是大多数人面临的任务。即便是性能处理上也不仅仅只会考虑算法,更多的可能是减少数据库连接,文件读取等手段。”
robbin说的那些是互联网应用,应用的范围不一样,互联网应用尤其是web2.0都是要分析用户的行为,这些东西都算是数据挖掘的内容,没有算法是不行。
37 楼 zhangzhaofeng 2007-03-27
End 2 End performance 这个又是什么?
评论
36 楼 weiqingfei 2007-03-27
hurricane1026 写道
weiqingfei 写道
hurricane1026 写道
weiqingfei 写道
其实我觉得大家观点大方向应该是一样的,只是一“度”的区别。
算法需要不需要学,我觉得在一定程度上还是有必要学的,否则即使你google,都不知道该去google什么。
但是要不要记住,记到什么程度,因人而异,在我看来,只要知道什么算法能解决什么问题,就可以了。
至于算法的实现,不一定非要装在脑子里。
算法需要不需要学,我觉得在一定程度上还是有必要学的,否则即使你google,都不知道该去google什么。
但是要不要记住,记到什么程度,因人而异,在我看来,只要知道什么算法能解决什么问题,就可以了。
至于算法的实现,不一定非要装在脑子里。
你说的这个也对。不过窃以为大多数问题都不是现成的答案,你去查书也找不到,世界上没有万能博士的存在的。需要你去利用现有方案去改进,去类比。你什么细节都不知道,你怎么类比?难道你去先看一遍,哦,原来这个样子,不能用,再去看下一个?不是说你要5分钟写出一个多么麻烦的算法。至少你脑子中要知道每个的思想是什么,这样你在用的时候才得心应手。
以前你的帖子里说,一部分人学的慢,但是扎实,一部分学的快忘得快。
要我说,我如果要人,要学的快记得牢的。如果找不到,也要扎实的。学的快忘得快的人没有用心学。
我同意你的部分说法,因为你和我说的不是一个领域的问题。
但是同样的,凡事有个度,我想大家都知道API这个东西,一般只要知道API是做什么的就可以了,用的时候再去查,我想没有人能够把API都背下来。
但是如果你打算在某方面做个东西的时候,至少你要在这段时间内,要把相关的API熟记在心,甚至于一点点微小的区别都要搞清楚,但是过了这段时间呢?你还能记得住么?
可能你喜欢的是那种学的慢记得牢的那种,确实那种人适合做窄领域的研究。
但是不代表学得很快忘得快的人,没有用武之地。(否则我不是要喝西北风了)
api不可能记住,也不回有人记。
我的意思是我问的东西相当于计算机领域中的1+1,难道一个人跟你说我1+1记不住,不过不要紧我可以很快查到,你会用他?
还有你说做过一段时间的东西,这么说吧。我现在做的东西,从2006年5月开始查外文资料。找领域课题,到现在为止,共翻阅参照的外文资料至少20-30篇了。我每个亲自看过的都可以给你随时讲解任何一个细节。
凡是我专心读过的书,你可以随时问我。比如我去年给GF辅导初等数学。发现自己还没有做不出来的高中题目。高中毕业7年了。解析几何拿来我还是能做,就是慢点。我的看法是认真学过的东西,是在脑海里有很深印记的。我相信大家应该有共识,你觉得老大们在javaeye上开坛论道的东西都是昨天才学的?越是学的久的东西越是经过消化的越多,越能够讲出其中的精髓。。。。
学了就忘要找找自己的原因,学习一下别人记忆的方法。不是什么值得夸耀的事情。。。。。
如果你像你说的那样的话,我真的很佩服你。
高中的东西,现在拿来让我做,我必须得翻书,否则我不敢保证我会做出来。
换句话说,你让我复习一段时间,我还是能够考上现在的大学的,但是就让我这样直接去考,我想我还是不要给学校丢脸了。
当时学得怎么样,这样说吧,我经常会被叫到办公室和老师讨论问题,当然如果是你说我老师笨的话,我无话可说了。
在高中时,我只要做过的数理化题,我到毕业都知道这题我做过。
至于说,我学了就忘(我只是忘记某种程度的细节),不是什么值得夸耀的事情,我承认。
但是我也不认为是什么值得惭愧的事情。
在前一个公司,我是做demo的。用到很多我从来没有接触过的东西,但是时间很短,必须要在第一时间做出demo向客户演示,否则就被别的公司抢先了。
仔细研究,当然可以,但是没有人有精力仔细研究那么多东西,这就要考验你的领悟能力。
当然,有超强的领悟能力,又有非凡的记忆能力自然更好。
可惜我只是个平凡的人。
35 楼 回帖专用 2007-03-27
hurricane1026 写道
回帖专用 写道
个人提倡,对非数学专业人士来说,先解决肚子的温饱问题,先解决不加夜班的问题,先解决身边的MM问题,再来学习数学.
其实夜班和温饱都与数学不冲突。核心竞争力高了,进正规公司的几率也大。这样待遇上去了。加班变少了。。。
就mm这个看天分。。。
实则上我的意思是,数学是你第二个MM,需要花很多时间陪.
34 楼 winterwolf 2007-03-27
非外包也很少用到算法 因为那个层次太低级了 距离应用开发太遥远了.
考算法还不如看看他会不会做测试性能.
考算法还不如看看他会不会做测试性能.
33 楼 dovecat 2007-03-27
hurricane1026 写道
回帖专用 写道
个人提倡,对非数学专业人士来说,先解决肚子的温饱问题,先解决不加夜班的问题,先解决身边的MM问题,再来学习数学.
其实夜班和温饱都与数学不冲突。核心竞争力高了,进正规公司的几率也大。这样待遇上去了。加班变少了。。。
就mm这个看天分。。。
哈哈!~
32 楼 simohayha 2007-03-27
俺现在只是解决了温饱,其他的还没解决呢。
31 楼 robbin 2007-03-27
我自己不是计算机专业出身的。但是从事软件行业以来,把计算机的基础课程也补的七七八八了,什么数字逻辑,抽象代数,系统结构,操作系统等等,唯独算法和编译原理两门基础课没有补,至今觉得遗憾。所以现在一旦碰到需要算法的场合,碰到需要语法分析的场合,就感觉非常窘迫。
不要说web编程里面不需要算法,其实用到算法的地方很多,例如你做web应用,如何保证用户每次访问,都返回随机结果,而且随机结果不会重复出现已经出现的结果,再例如你要防范别人扒你的信息,你如何提供好的混淆机制。JavaEye投票,使用什么算法能够提供最有效的方式,保证最大程度的论坛质量?如何根据帖子的点击总次数,不同人的不同点击权重,不同人的投票权重,计算帖子的质量?如何根据用户行为计算用户偏好程度?难道这些都不需要算法支撑?这些都还不算上全文检索了。如果需要中文的全文检索,那纯粹是算法的用武之地了。再考虑通过中文分词以后,统计关键词的重要性,关键词的关联度和反义度,关键词和文章的关联性算法,文章和文章之间通过关键词匹配程度计算出来的关联性,用户和用户之间通过关键词匹配,文章关联性计算出来的同好比例,处处都是算法。
不要说web编程里面不需要算法,其实用到算法的地方很多,例如你做web应用,如何保证用户每次访问,都返回随机结果,而且随机结果不会重复出现已经出现的结果,再例如你要防范别人扒你的信息,你如何提供好的混淆机制。JavaEye投票,使用什么算法能够提供最有效的方式,保证最大程度的论坛质量?如何根据帖子的点击总次数,不同人的不同点击权重,不同人的投票权重,计算帖子的质量?如何根据用户行为计算用户偏好程度?难道这些都不需要算法支撑?这些都还不算上全文检索了。如果需要中文的全文检索,那纯粹是算法的用武之地了。再考虑通过中文分词以后,统计关键词的重要性,关键词的关联度和反义度,关键词和文章的关联性算法,文章和文章之间通过关键词匹配程度计算出来的关联性,用户和用户之间通过关键词匹配,文章关联性计算出来的同好比例,处处都是算法。
30 楼 回帖专用 2007-03-27
个人提倡,对非数学专业人士来说,先解决肚子的温饱问题,先解决不加夜班的问题,先解决身边的MM问题,再来学习数学.
29 楼 weiqingfei 2007-03-27
hurricane1026 写道
weiqingfei 写道
其实我觉得大家观点大方向应该是一样的,只是一“度”的区别。
算法需要不需要学,我觉得在一定程度上还是有必要学的,否则即使你google,都不知道该去google什么。
但是要不要记住,记到什么程度,因人而异,在我看来,只要知道什么算法能解决什么问题,就可以了。
至于算法的实现,不一定非要装在脑子里。
算法需要不需要学,我觉得在一定程度上还是有必要学的,否则即使你google,都不知道该去google什么。
但是要不要记住,记到什么程度,因人而异,在我看来,只要知道什么算法能解决什么问题,就可以了。
至于算法的实现,不一定非要装在脑子里。
你说的这个也对。不过窃以为大多数问题都不是现成的答案,你去查书也找不到,世界上没有万能博士的存在的。需要你去利用现有方案去改进,去类比。你什么细节都不知道,你怎么类比?难道你去先看一遍,哦,原来这个样子,不能用,再去看下一个?不是说你要5分钟写出一个多么麻烦的算法。至少你脑子中要知道每个的思想是什么,这样你在用的时候才得心应手。
以前你的帖子里说,一部分人学的慢,但是扎实,一部分学的快忘得快。
要我说,我如果要人,要学的快记得牢的。如果找不到,也要扎实的。学的快忘得快的人没有用心学。
我同意你的部分说法,因为你和我说的不是一个领域的问题。
但是同样的,凡事有个度,我想大家都知道API这个东西,一般只要知道API是做什么的就可以了,用的时候再去查,我想没有人能够把API都背下来。
但是如果你打算在某方面做个东西的时候,至少你要在这段时间内,要把相关的API熟记在心,甚至于一点点微小的区别都要搞清楚,但是过了这段时间呢?你还能记得住么?
可能你喜欢的是那种学的慢记得牢的那种,确实那种人适合做窄领域的研究。
但是不代表学得很快忘得快的人,没有用武之地。(否则我不是要喝西北风了)
28 楼 庄表伟 2007-03-27
to:T1
我很同意你的观点。说两句题外话:
dreamhead担心我误导初学者。我就在想,要是个新手看到javaeye的这几篇关于算法的讨论以后,会怎么想,是不是会更晕?
当初我好像是跟你还是跟谁说过一句话:“初学者嘛,就是拿来误导的 ”
余下的话还没想好怎么说...
我很同意你的观点。说两句题外话:
dreamhead担心我误导初学者。我就在想,要是个新手看到javaeye的这几篇关于算法的讨论以后,会怎么想,是不是会更晕?
当初我好像是跟你还是跟谁说过一句话:“初学者嘛,就是拿来误导的 ”
余下的话还没想好怎么说...
27 楼 回帖专用 2007-03-27
从招聘的程序上看,我同意Robbin的这个说法,问这些问题事实上是一个reference check.
从数学对解决日常工作上来说,个人的看法是,一个好的程序员最好是要高标准严要求.一个人选择什么,同时你也必须放弃什么.熟悉API,熟悉Framework,当然能够让你赚个3/4千块钱图个温饱.但是你要说我知道这些就够了,我debug能力强就够了,那么你最好也就放弃去google去MS拿着1/2万的月薪的打算.当然也有人会说,赚钱也不一定要学算法吗,学数学吗.那些炒股的大户学过算法?事实上任何赚钱的行当都是不进则退,我一个朋友是私人老板以炒港股和纳斯达克为生.他告诉我他每天看的中外文报纸期刊都有机箱那么高一摞.上次我和他聊很多关于PushMail方面的问题,他说的都是头头是道几乎是这方面的专家.他说不管哪方面你要想赚钱,首先要成为那方面的专家.
再回到数学上来,你要成为程序方面的专家,那么数学最好学习.数学能干什么?锻炼思维,训练感觉.这些能讲得都已经讲了.我这里只想说的就一句"功夫在诗外".其他的不说,你要想成为程序方面的专家,那么你必须追赶最新的计算机发展方向,而不是等人翻译出再来学习,那实则上已经是二把刀了,国内外可能已经有无数的人在你之前已经看准了这个方向.你要学习最先进的发展趋势,最重要的就是能读Paper.国外和国内不一样,但凡一个开天辟地的伟大应用都是从大学里孵化出来的.你能不能读懂各种Paper,就决定了你能不能跟到跟对计算机发展的心跳.但是学术Paper不是news Paper,光英文好还不行,你必须有数学基础,必须能把那些数学牛人的理论与现实联系在一起.新技术成千上万,那个好,那个不好,那个有前途,那个没前途.完全看对于技术上的知觉.这种知觉不是说你熟悉多少API就能得到的,你必须知其然,知其所以然.好怎么个好法,又好在哪里?
比如说我在研究Erlang的时候,读HPE compiler创始人写的Erlang VM的优化报告时,他就提到什么是图色法,Erlang的Private Process模型对GC效率算法的影响.这些我都不懂然后去和Elminster,Potain讨论,然后再回过来看那份Paper的时候豁然开让,终于知道Erlang为何性能高,高又高在哪里?跟踪一个新技术,第一关就是要说服自己.
满足于任何已经学到的知识和经验,成天想着建造这个壁垒那个壁垒的人既不能成为一个专家,也不能成为雇佣专家的人.最好的壁垒是自己,最大的壁垒的也是自己.
从数学对解决日常工作上来说,个人的看法是,一个好的程序员最好是要高标准严要求.一个人选择什么,同时你也必须放弃什么.熟悉API,熟悉Framework,当然能够让你赚个3/4千块钱图个温饱.但是你要说我知道这些就够了,我debug能力强就够了,那么你最好也就放弃去google去MS拿着1/2万的月薪的打算.当然也有人会说,赚钱也不一定要学算法吗,学数学吗.那些炒股的大户学过算法?事实上任何赚钱的行当都是不进则退,我一个朋友是私人老板以炒港股和纳斯达克为生.他告诉我他每天看的中外文报纸期刊都有机箱那么高一摞.上次我和他聊很多关于PushMail方面的问题,他说的都是头头是道几乎是这方面的专家.他说不管哪方面你要想赚钱,首先要成为那方面的专家.
再回到数学上来,你要成为程序方面的专家,那么数学最好学习.数学能干什么?锻炼思维,训练感觉.这些能讲得都已经讲了.我这里只想说的就一句"功夫在诗外".其他的不说,你要想成为程序方面的专家,那么你必须追赶最新的计算机发展方向,而不是等人翻译出
比如说我在研究Erlang的时候,读HPE compiler创始人写的Erlang VM的优化报告时,他就提到什么是图色法,Erlang的Private Process模型对GC效率算法的影响.这些我都不懂然后去和Elminster,Potain讨论,然后再回过来看那份Paper的时候豁然开让,终于知道Erlang为何性能高,高又高在哪里?跟踪一个新技术,第一关就是要说服自己.
满足于任何已经学到的知识和经验,成天想着建造这个壁垒那个壁垒的人既不能成为一个专家,也不能成为雇佣专家的人.最好的壁垒是自己,最大的壁垒的也是自己.
26 楼 weiqingfei 2007-03-27
其实我觉得大家观点大方向应该是一样的,只是一“度”的区别。
算法需要不需要学,我觉得在一定程度上还是有必要学的,否则即使你google,都不知道该去google什么。
但是要不要记住,记到什么程度,因人而异,在我看来,只要知道什么算法能解决什么问题,就可以了。
至于算法的实现,不一定非要装在脑子里。
算法需要不需要学,我觉得在一定程度上还是有必要学的,否则即使你google,都不知道该去google什么。
但是要不要记住,记到什么程度,因人而异,在我看来,只要知道什么算法能解决什么问题,就可以了。
至于算法的实现,不一定非要装在脑子里。
25 楼 ahuaxuan 2007-03-27
庄表伟 写道
1、每个人都是从自己的工作经验出发,来总结的。所以,从我的经验来说,我的工作中需要算法的情况,的确是非常少。
没错没错,尤其是做外包,算法涉及的就更少了,但是我们涉及的少是因为我们在做外包,对不同的人,需要的东西是不一样的,就象robbin说他的网站需要算法来做会员同好功能一样,他有他要的理由,我们不能指望一个工具能满足我们所有的需求,钳子有钳子的作用,榔头有榔头的作用,不能说我们不用榔头就否认榔头的价值。
但是从市场份额来看应该还是做外包的多,也就是说大多数的程序员都用不到算法
24 楼 ray_linn 2007-03-27
庄表伟 写道
robbin 写道
比如说,我现在想给JavaEye做全文检索,文章关联性,和会员同好功能,我就发现算法很重要。
以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。
抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他?
以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。
抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他?
我会帮他打开eclipse,然后坐在他的旁边,一言不发。看他如何从头熟悉一个过去没有用过的IDE。
更有甚者,如果我正好有空的话,假设他说他用过Eclipse,那么我就给他一个NetBeans,看他怎么样去熟悉一个从来没有用过的IDE。
weiqingfei,握手。
我打开一个Visual Studio, 在里头大写java source code....
23 楼 simohayha 2007-03-27
忘了是spring嘟嘟,还是老庄说过的,面试的时候,就问他什么东西最不擅长,然后让他做,看能做成什么样子.
22 楼 庄表伟 2007-03-27
robbin 写道
比如说,我现在想给JavaEye做全文检索,文章关联性,和会员同好功能,我就发现算法很重要。
以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。
抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他?
以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。
抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他?
我会帮他打开eclipse,然后坐在他的旁边,一言不发。看他如何从头熟悉一个过去没有用过的IDE。
更有甚者,如果我正好有空的话,假设他说他用过Eclipse,那么我就给他一个NetBeans,看他怎么样去熟悉一个从来没有用过的IDE。
weiqingfei,握手。
21 楼 weiqingfei 2007-03-27
robbin 写道
比如说,我现在想给JavaEye做全文检索,文章关联性,和会员同好功能,我就发现算法很重要。
以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。
抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他?
以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。
抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他?
如果说,现在急需一个人能够立刻用eclipse来开发项目的话,这个人自然不能要。
如果不是,我会给他几分钟让他熟悉以下eclipse,看看他能在最短的时间内,掌握到什么程度。
因为将来的工作不可能只用一种东西,关键还是这个人的接受能力怎么样。
20 楼 robbin 2007-03-27
比如说,我现在想给JavaEye做全文检索,文章关联性,和会员同好功能,我就发现算法很重要。
以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。
抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他?
以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。
抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他?
19 楼 lordhong 2007-03-27
Readonly 写道
lordhong 写道
ray_linn 写道
我不懂算法, 但我懂End 2 End performance和CBA
弱弱的问一句...CBA是...Chinese Basketball Association?
NBA下属的一个北美范围内的篮球联赛的名称的简写也是CBA,全名是Continental Basketball Association
根据上下文,这里的CBA应该是Cost Benefit Analysis...
老王,出来换气啊!
CBA还有很多解释哦...
California Bluegrass Assocation
Center for Backyard Astrophysics
Commercail Banks Association
晕翻~~~~~~~~~~~~~~
18 楼 Readonly 2007-03-27
lordhong 写道
ray_linn 写道
我不懂算法, 但我懂End 2 End performance和CBA
弱弱的问一句...CBA是...Chinese Basketball Association?
NBA下属的一个北美范围内的篮球联赛的名称的简写也是CBA,全名是Continental Basketball Association
根据上下文,这里的CBA应该是Cost Benefit Analysis...
17 楼 lordhong 2007-03-27
ray_linn 写道
我不懂算法, 但我懂End 2 End performance和CBA
弱弱的问一句...CBA是...Chinese Basketball Association?
16 楼 ray_linn 2007-03-27
我不懂算法, 但我懂End 2 End performance和CBA,如果算法需要改进,那我就hire数学大牛...
我是放牛的....
PS:
只有熟悉业务流程的程序员最有价值,这个是一定要挽留的.其他都可以replace.
我是放牛的....
PS:
只有熟悉业务流程的程序员最有价值,这个是一定要挽留的.其他都可以replace.
15 楼 庄表伟 2007-03-27
昨天晚上的话比较冲,缓和一点,再说两句。
1、每个人都是从自己的工作经验出发,来总结的。所以,从我的经验来说,我的工作中需要算法的情况,的确是非常少。
2、hurricane1026做的网格计算;dreamhead做的XRuby,应该都是算法密集型的软件吧。
3、我先大而化之的论一下,软件至少可以像企业分为资金密集型、劳动力密集型一样,分为:算法密集型;业务逻辑密集型;使用体验密集型;他们面临的挑战是不同的。
算法密集型,典型的比如一个搜索引擎。
业务逻辑密集型,典型的比如一个ERP。
使用体验密集型,典型的比如一个全Flash站点。
4、任何软件,归根结底自然是数据结构、算法、逻辑这些东西。但是,我们做实际的项目,不是从根子上去做,而是从已有的基础上去做。
一个拿着榔头的人,看到任何问题都觉得可以把它作为钉子敲一敲。
而一个拿着锯子的人呢?
5、说实话,我的算法功底的确是不行,但是我也可以很负责的说,我的debug能力非常强。那么,当遇到一个问题的时候,我往往会第一时间想到用debug的办法来研究。
这既是我的长处,同时也会成为我的盲区。
6、hurricane1026你在算法方面下过苦功夫,因此,你在面试的时候,很自然的就会问人家算法方面的问题,而且,当人家不能回答那些“很简单”的问题时,你就认为他们不行了。
那么,反过来问一个问题:一个人要来你这里面试,你认为,他不知道,或者忘记了哪些东西,是可以接受的呢?
在我看来,如果他忘记的答案,能够借助电脑、网络,在五分钟内把答案再找回来的。那都不是要紧的知识。
7、上一次讨论应届生的问题时,我很强调完成任务的能力。交给你一个任务,如果这个任务需要你具备算法知识,那就去掌握算法知识。如果这个任务需要你具备debug的能力,那就去提高debug的能力。如果这个任务需要你....,那么,就想办法积累xxx方面的能力。
任他千难万险,我总能够搞定。才这是真的厉害了。
8、回过头来说学校阶段,摆在你面前的那些课程,无论他是否重要,无论你是否喜欢,搞定他。挂掉任何一门,都不算本事。至于通过之后,那些知识还是不是需要记在脑子里,我看也就不必了。
1、每个人都是从自己的工作经验出发,来总结的。所以,从我的经验来说,我的工作中需要算法的情况,的确是非常少。
2、hurricane1026做的网格计算;dreamhead做的XRuby,应该都是算法密集型的软件吧。
3、我先大而化之的论一下,软件至少可以像企业分为资金密集型、劳动力密集型一样,分为:算法密集型;业务逻辑密集型;使用体验密集型;他们面临的挑战是不同的。
算法密集型,典型的比如一个搜索引擎。
业务逻辑密集型,典型的比如一个ERP。
使用体验密集型,典型的比如一个全Flash站点。
4、任何软件,归根结底自然是数据结构、算法、逻辑这些东西。但是,我们做实际的项目,不是从根子上去做,而是从已有的基础上去做。
一个拿着榔头的人,看到任何问题都觉得可以把它作为钉子敲一敲。
而一个拿着锯子的人呢?
5、说实话,我的算法功底的确是不行,但是我也可以很负责的说,我的debug能力非常强。那么,当遇到一个问题的时候,我往往会第一时间想到用debug的办法来研究。
这既是我的长处,同时也会成为我的盲区。
6、hurricane1026你在算法方面下过苦功夫,因此,你在面试的时候,很自然的就会问人家算法方面的问题,而且,当人家不能回答那些“很简单”的问题时,你就认为他们不行了。
那么,反过来问一个问题:一个人要来你这里面试,你认为,他不知道,或者忘记了哪些东西,是可以接受的呢?
在我看来,如果他忘记的答案,能够借助电脑、网络,在五分钟内把答案再找回来的。那都不是要紧的知识。
7、上一次讨论应届生的问题时,我很强调完成任务的能力。交给你一个任务,如果这个任务需要你具备算法知识,那就去掌握算法知识。如果这个任务需要你具备debug的能力,那就去提高debug的能力。如果这个任务需要你....,那么,就想办法积累xxx方面的能力。
任他千难万险,我总能够搞定。才这是真的厉害了。
8、回过头来说学校阶段,摆在你面前的那些课程,无论他是否重要,无论你是否喜欢,搞定他。挂掉任何一门,都不算本事。至于通过之后,那些知识还是不是需要记在脑子里,我看也就不必了。
14 楼 叶子 2007-03-27
目前只用到了一次,算目录树的...
13 楼 dovecat 2007-03-27
anweixiao 写道
dovecat 写道
算法对于写出好的程序来说,确实是很重要的,我们每写段程序,抛开数学上定义的算法来说,我们都是在写算法,业务逻辑等等都应该是广义上的算法.但是光从数学上算法来考量一个人,也不能说就是一种全面的考核方式.对于理解实际事物、事理,以及一个人的逻辑思维能力等全面的考核才比较公正,培养逻辑思维的不应该仅仅是数学意义上的算法.
所以,我取中庸.呵呵~~
所以,我取中庸.呵呵~~
其实,算法和算法的实现还是不同的,我们应该说:算法算老几?算法的实现算老几?多多包含。
呵呵~~这到也是.
BTW:庄老大解决问题的流程属于最有效率的算法了吧.呵呵~~
12 楼 刑天战士 2007-03-27
我学算法,学的是一种逻辑思维能力,遇到新问题时候的思考能力,抽象思维的能力,不是说所有东西都能在现实中找到答案的。
11 楼 anweixiao 2007-03-27
dovecat 写道
算法对于写出好的程序来说,确实是很重要的,我们每写段程序,抛开数学上定义的算法来说,我们都是在写算法,业务逻辑等等都应该是广义上的算法.但是光从数学上算法来考量一个人,也不能说就是一种全面的考核方式.对于理解实际事物、事理,以及一个人的逻辑思维能力等全面的考核才比较公正,培养逻辑思维的不应该仅仅是数学意义上的算法.
所以,我取中庸.呵呵~~
所以,我取中庸.呵呵~~
其实,算法和算法的实现还是不同的,我们应该说:算法算老几?算法的实现算老几?多多包含。
10 楼 losing_fox 2007-03-27
算法就是前人证明过的最优解法
9 楼 珂儿 2007-03-27
呵呵,我觉得这样的争论其实没有太多意义,和讨论C++和JAVA哪个更有前途有着同质性。
算法重不重要,要根据自己的兴趣及将来的职业方向来定了,如果想一直在行业软件或一般软件公司做,算法确实并不太重要,在招聘者所考虑其综合素质中占的比重确实不大;但是如果要做GOOGLE、Microsoft、IBM、INTEL、ORACLE等研究院的工作来说,算法在应聘者中所占的比重就很大了。但如果你决定将来转做管理之类的工作或正在做管理的工作,算法也不一定要是你的强项,而是掌握怎样让具有这种强项的牛人更好地为你工作的能力就够了....
关键是看“你是否愿意沿别人的路走”,还是“想有独创性,发现一条新路让别人沿着它走”...
就像一朋友说的那样“不是越优秀的人越适合你们公司,而是要选择合适的人”,想想,还真是这么个道理...
算法重不重要,要根据自己的兴趣及将来的职业方向来定了,如果想一直在行业软件或一般软件公司做,算法确实并不太重要,在招聘者所考虑其综合素质中占的比重确实不大;但是如果要做GOOGLE、Microsoft、IBM、INTEL、ORACLE等研究院的工作来说,算法在应聘者中所占的比重就很大了。但如果你决定将来转做管理之类的工作或正在做管理的工作,算法也不一定要是你的强项,而是掌握怎样让具有这种强项的牛人更好地为你工作的能力就够了....
关键是看“你是否愿意沿别人的路走”,还是“想有独创性,发现一条新路让别人沿着它走”...
就像一朋友说的那样“不是越优秀的人越适合你们公司,而是要选择合适的人”,想想,还真是这么个道理...
8 楼 dovecat 2007-03-27
算法对于写出好的程序来说,确实是很重要的,我们每写段程序,抛开数学上定义的算法来说,我们都是在写算法,业务逻辑等等都应该是广义上的算法.但是光从数学上算法来考量一个人,也不能说就是一种全面的考核方式.对于理解实际事物、事理,以及一个人的逻辑思维能力等全面的考核才比较公正,培养逻辑思维的不应该仅仅是数学意义上的算法.
所以,我取中庸.呵呵~~
所以,我取中庸.呵呵~~
7 楼 giscat 2007-03-27
俺是逍遥派的,老庄可是我的偶像那
6 楼 anweixiao 2007-03-27
当然,如果从广义的角度来讲:算法无处不在,从某一方面来说算法很重要:比如数值计算。但归根到底,算法的重要是建立在扎实的数学基础之上的,没有数学思想的算法,不管别人怎么说,我只会看看它的实现,不多说什么。以前我理解的搞计算机的都是数学大牛,现在发现搞数学的好多都是计算机大牛,而搞计算机的好多都不是数学大牛。介于此,如果要排名论辈份,我不敢说计算机算老几,但单单和数学相比,我把它放第二位。
5 楼 voff12 2007-03-27
不搞研究,搞应用(二次开发),算法当然用得少啦。
当遇上强竞的竞争对手时,还是用点原创的算法好。
当遇上强竞的竞争对手时,还是用点原创的算法好。
4 楼 winterwolf 2007-03-27
几乎用不上.
3 楼 Elminster 2007-03-27
算法这个东西比较奇怪,如果我们记算法的价值为 A ,那么:
1. A = 0 的可能性为 99.99%
2. 存在 0.01% 的可能性,A = ∞
1. A = 0 的可能性为 99.99%
2. 存在 0.01% 的可能性,A = ∞
2 楼 dreamhead 2007-03-27
hurricane1026 写道
打个岔,m&(m-1)应该是判断2的幂数的最佳办法吧。
我所了解到的范围内是最佳了。
1 楼 dreamhead 2007-03-27
这么说有些绝对,算法真的不重要吗?这取决于你所做的事情。
真正在工作中应用成熟算法的机会并不多,因为那样的算法多半是现成的,没有必要重写。但是,有些问题没有现成的方案怎么办?比如,我现在所做的一些关于并行计算的算法,真的是没有现成可以参考的内容,因为我们用到的东西暂时还是不公开的。你只能自己去设计。
算法的根基关键是给了人一个思考问题的方式。我曾经写过一篇《 乱弹算法》,其中谈到一个简单的小例子,如何判断一个数是2的幂。其实,每个人都能给出一个解决问题的答案,但答案之间却差异很大。思考问题的方式就是在学习算法的过程中锻炼出来的。
我承认,很多程序中更多的是在解决业务问题,所以,算法的必要性显得没那么重要。但是,如果想做一个好的程序员,算法是必备的根基,就如同1+1=2一样。没有根基,大厦是不牢靠的。
如果还在质疑算法的重要性,可以问自己一个问题,你真的想做一个好的程序员吗?如果答案是否定的,那算法确实不重要。
老庄,或许你经过一些锻炼已经掌握了一些做事的方法,但JavaEye还是有不少新手在看的,你这个言论容易误导别人啊!^_^
真正在工作中应用成熟算法的机会并不多,因为那样的算法多半是现成的,没有必要重写。但是,有些问题没有现成的方案怎么办?比如,我现在所做的一些关于并行计算的算法,真的是没有现成可以参考的内容,因为我们用到的东西暂时还是不公开的。你只能自己去设计。
算法的根基关键是给了人一个思考问题的方式。我曾经写过一篇《 乱弹算法》,其中谈到一个简单的小例子,如何判断一个数是2的幂。其实,每个人都能给出一个解决问题的答案,但答案之间却差异很大。思考问题的方式就是在学习算法的过程中锻炼出来的。
我承认,很多程序中更多的是在解决业务问题,所以,算法的必要性显得没那么重要。但是,如果想做一个好的程序员,算法是必备的根基,就如同1+1=2一样。没有根基,大厦是不牢靠的。
如果还在质疑算法的重要性,可以问自己一个问题,你真的想做一个好的程序员吗?如果答案是否定的,那算法确实不重要。
老庄,或许你经过一些锻炼已经掌握了一些做事的方法,但JavaEye还是有不少新手在看的,你这个言论容易误导别人啊!^_^