论坛首页 海阔天空论坛

算法算老几?

浏览 33710 次
精华帖 (2) :: 良好帖 (0) :: 灌水帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-27  
比如说,我现在想给JavaEye做全文检索,文章关联性,和会员同好功能,我就发现算法很重要。

以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。

抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他?

0 请登录后投票
   发表时间:2007-03-27  
robbin 写道
比如说,我现在想给JavaEye做全文检索,文章关联性,和会员同好功能,我就发现算法很重要。

以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。

抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他?



如果说,现在急需一个人能够立刻用eclipse来开发项目的话,这个人自然不能要。
如果不是,我会给他几分钟让他熟悉以下eclipse,看看他能在最短的时间内,掌握到什么程度。
因为将来的工作不可能只用一种东西,关键还是这个人的接受能力怎么样。
0 请登录后投票
   发表时间:2007-03-27  
robbin 写道
比如说,我现在想给JavaEye做全文检索,文章关联性,和会员同好功能,我就发现算法很重要。

以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。

抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他?



我会帮他打开eclipse,然后坐在他的旁边,一言不发。看他如何从头熟悉一个过去没有用过的IDE。

更有甚者,如果我正好有空的话,假设他说他用过Eclipse,那么我就给他一个NetBeans,看他怎么样去熟悉一个从来没有用过的IDE。

weiqingfei,握手。
0 请登录后投票
   发表时间:2007-03-27  
忘了是spring嘟嘟,还是老庄说过的,面试的时候,就问他什么东西最不擅长,然后让他做,看能做成什么样子.
0 请登录后投票
   发表时间:2007-03-27  
庄表伟 写道
robbin 写道
比如说,我现在想给JavaEye做全文检索,文章关联性,和会员同好功能,我就发现算法很重要。

以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。

抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他?



我会帮他打开eclipse,然后坐在他的旁边,一言不发。看他如何从头熟悉一个过去没有用过的IDE。

更有甚者,如果我正好有空的话,假设他说他用过Eclipse,那么我就给他一个NetBeans,看他怎么样去熟悉一个从来没有用过的IDE。

weiqingfei,握手。



我打开一个Visual Studio, 在里头大写java source code....
0 请登录后投票
   发表时间:2007-03-27  
庄表伟 写道

1、每个人都是从自己的工作经验出发,来总结的。所以,从我的经验来说,我的工作中需要算法的情况,的确是非常少。

没错没错,尤其是做外包,算法涉及的就更少了,但是我们涉及的少是因为我们在做外包,对不同的人,需要的东西是不一样的,就象robbin说他的网站需要算法来做会员同好功能一样,他有他要的理由,我们不能指望一个工具能满足我们所有的需求,钳子有钳子的作用,榔头有榔头的作用,不能说我们不用榔头就否认榔头的价值。
但是从市场份额来看应该还是做外包的多,也就是说大多数的程序员都用不到算法

0 请登录后投票
   发表时间:2007-03-27  
其实我觉得大家观点大方向应该是一样的,只是一“度”的区别。

算法需要不需要学,我觉得在一定程度上还是有必要学的,否则即使你google,都不知道该去google什么。

但是要不要记住,记到什么程度,因人而异,在我看来,只要知道什么算法能解决什么问题,就可以了。

至于算法的实现,不一定非要装在脑子里。
0 请登录后投票
   发表时间:2007-03-27  
从招聘的程序上看,我同意Robbin的这个说法,问这些问题事实上是一个reference check.

  从数学对解决日常工作上来说,个人的看法是,一个好的程序员最好是要高标准严要求.一个人选择什么,同时你也必须放弃什么.熟悉API,熟悉Framework,当然能够让你赚个3/4千块钱图个温饱.但是你要说我知道这些就够了,我debug能力强就够了,那么你最好也就放弃去google去MS拿着1/2万的月薪的打算.当然也有人会说,赚钱也不一定要学算法吗,学数学吗.那些炒股的大户学过算法?事实上任何赚钱的行当都是不进则退,我一个朋友是私人老板以炒港股和纳斯达克为生.他告诉我他每天看的中外文报纸期刊都有机箱那么高一摞.上次我和他聊很多关于PushMail方面的问题,他说的都是头头是道几乎是这方面的专家.他说不管哪方面你要想赚钱,首先要成为那方面的专家.
  再回到数学上来,你要成为程序方面的专家,那么数学最好学习.数学能干什么?锻炼思维,训练感觉.这些能讲得都已经讲了.我这里只想说的就一句"功夫在诗外".其他的不说,你要想成为程序方面的专家,那么你必须追赶最新的计算机发展方向,而不是等人翻译出<Programming XXX>再来学习,那实则上已经是二把刀了,国内外可能已经有无数的人在你之前已经看准了这个方向.你要学习最先进的发展趋势,最重要的就是能读Paper.国外和国内不一样,但凡一个开天辟地的伟大应用都是从大学里孵化出来的.你能不能读懂各种Paper,就决定了你能不能跟到跟对计算机发展的心跳.但是学术Paper不是news Paper,光英文好还不行,你必须有数学基础,必须能把那些数学牛人的理论与现实联系在一起.新技术成千上万,那个好,那个不好,那个有前途,那个没前途.完全看对于技术上的知觉.这种知觉不是说你熟悉多少API就能得到的,你必须知其然,知其所以然.好怎么个好法,又好在哪里?
比如说我在研究Erlang的时候,读HPE compiler创始人写的Erlang VM的优化报告时,他就提到什么是图色法,Erlang的Private Process模型对GC效率算法的影响.这些我都不懂然后去和Elminster,Potain讨论,然后再回过来看那份Paper的时候豁然开让,终于知道Erlang为何性能高,高又高在哪里?跟踪一个新技术,第一关就是要说服自己.

满足于任何已经学到的知识和经验,成天想着建造这个壁垒那个壁垒的人既不能成为一个专家,也不能成为雇佣专家的人.最好的壁垒是自己,最大的壁垒的也是自己.

0 请登录后投票
   发表时间:2007-03-27  
to:T1

我很同意你的观点。说两句题外话:

dreamhead担心我误导初学者。我就在想,要是个新手看到javaeye的这几篇关于算法的讨论以后,会怎么想,是不是会更晕?

当初我好像是跟你还是跟谁说过一句话:“初学者嘛,就是拿来误导的    ”

余下的话还没想好怎么说...
0 请登录后投票
   发表时间:2007-03-27  
hurricane1026 写道
weiqingfei 写道
其实我觉得大家观点大方向应该是一样的,只是一“度”的区别。

算法需要不需要学,我觉得在一定程度上还是有必要学的,否则即使你google,都不知道该去google什么。

但是要不要记住,记到什么程度,因人而异,在我看来,只要知道什么算法能解决什么问题,就可以了。

至于算法的实现,不一定非要装在脑子里。

你说的这个也对。不过窃以为大多数问题都不是现成的答案,你去查书也找不到,世界上没有万能博士的存在的。需要你去利用现有方案去改进,去类比。你什么细节都不知道,你怎么类比?难道你去先看一遍,哦,原来这个样子,不能用,再去看下一个?不是说你要5分钟写出一个多么麻烦的算法。至少你脑子中要知道每个的思想是什么,这样你在用的时候才得心应手。
以前你的帖子里说,一部分人学的慢,但是扎实,一部分学的快忘得快。
要我说,我如果要人,要学的快记得牢的。如果找不到,也要扎实的。学的快忘得快的人没有用心学。


我同意你的部分说法,因为你和我说的不是一个领域的问题。
但是同样的,凡事有个度,我想大家都知道API这个东西,一般只要知道API是做什么的就可以了,用的时候再去查,我想没有人能够把API都背下来。
但是如果你打算在某方面做个东西的时候,至少你要在这段时间内,要把相关的API熟记在心,甚至于一点点微小的区别都要搞清楚,但是过了这段时间呢?你还能记得住么?

可能你喜欢的是那种学的慢记得牢的那种,确实那种人适合做窄领域的研究。
但是不代表学得很快忘得快的人,没有用武之地。(否则我不是要喝西北风了)
0 请登录后投票
论坛首页 海阔天空版

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