算法还是最重要的
只能好好学习算法了,希望不久的将来能找份好工作~
所以 中国软件落后啊,萧条啊,那些命题的考官都是过时淘汰的人,所以,这次危机淘汰的都是他们,如果你被他们的试卷录取进去,你会跟着他们一起淘汰。
设计模式 领域建模是世界潮流,是软件的本质,是将软件做的更易于维护,这才是软件专业。
至于算法当然重要,但那属于另外一个专业:数学。
这些企业之所以考算法,也可能有其他想法:是想一个人两个专业都做,就象找电工,最好水电都会做。
[该贴被banq于2008-11-27 15:44修改过]
算法和面向对象是两种技术,它们一起改变了我们的世界。但是我觉得计算机的学生应该都学习一下,算法和面向对象都要学习,前些日子看李开复的文章《算法的力量》,使我深有感触,作为一个程序员,算法和面向对象技术应该是内功,都要学,而且都得学好,这样以后解决问题才能游刃有余。
我接触到的很多程序员的OO思想太差劲了,就知道增删改查,根本没有一点点OO思想,算法也很差,所以,哎。。。。
作为两项非常实用的技术,算法和面向对象都要学,不知道banq对此有何更高明的看法,我觉得对于一个计算机的学生,至少要有一个很不错的算法基础,这样以后解决实际问题会更好一些,当然面向对象的思想也要学习的。
程序员需要有算法的思考,但是不能沉迷于此。现在最主要的问题是很多人知道算法的重要但是恰恰忘记了为什么需要算法,应用软件是为了解决现实中的业务过程问题这个才是软件的根本。
当然也有人专心的写算法比如那个SuperPi的计算程序就需要非常好的算法、数据基础,但是那些已经不是我们所说的范围了。
作为应用软件的作者我们时刻需要考虑的核心问题是:我的程序为谁提供了什么方便?
说得太好了,看来不是一个人在这里穷吆喝,还惹得不少人反感我,现实和思想,你到底选择哪个?选择有灵魂的躯体还是混口饭的行尸走肉呢?
软件人就需要一种“俯视”思维方式,从本质上发觉自己的职责和价值。
遗憾的是我连口饭都还没混好呢。
绝对佩服这句话,曾经我使用一些非常华丽的技术做出来的产品没有人使用,竞争对手使用一个个难看的HTML界面却完整描述了客户的业务需求。OO与其他任何技术一样,是服务于业务的。
从前我们用账本或纸张描述业务问题或记录业务数据.
现在我们用电脑,用互联网,我们系统所描述的东西就是现实中存在的业务流程.
现实中的业务流程是用算法描述的吗?
OO之所以提出,不就是让我们运用现实的眼光来看待抽象的系统的吗?
OO不就是让我们用人类自然的语言来和计算机交流吗?
你去找个源代码看看吧,看看我们编写的是什么代码,具有OO思想吗?
看看我们的大学生学了算法、通过程序员考试,编写的却是什么代码?
-
我想中国还是少些您这样的牛人得好,在软件应用领域中。
中国学生包括成人总是很纯洁(大陆文化导致),总是会被来自台湾的这些过气的所谓技术专家忽悠,对此我非常生气,我宁可背着做人很差的名声,再骂骂他们,省得他以为大陆人都是傻冒。
“算法的力量”一文中,支持算法就是力量的最有力证据就是Map and Reduce算法,其实(开源代码Hadoop 已经实现Map and Reduce算法了,那么文中所谓的google核心优势是否没有了呢?google是否就此倒闭了呢?Yahoo用了Hadoop是否就超过google了呢?肯定不是,所以,Map and Reduce算法只是google优势的一种而已,而不是全部。没有一家公司靠自己独特算法秘方取得制胜的力量,这是关键。Google取得王者地位肯定不是完全来自算法,只有李开复这个从算法角度吹嘘的人才会得出google这样所谓算法的力量。
再说了,Map and Reduce算法只是云计算的一种,我在“云计算以及成为现实”一文中已经介绍很多不同架构结合不同算法的云软件技术。总得来说:公司技术核心力量来自:架构+算法,如果这些算法有现成开源,比如Hadoop我们就可以拿来使用,如果没有,我们可以创造它。
但是如果只有算法,没有平台架构,算法怎么会自己跑到计算机里运行呢?架构是一个公司的特点,不可能有两个公司有相同技术架构,因为每个公司业务特点不一样。
我们再来看看,李开复如果实施招聘,肯定处于其算法就是力量的思想出大量算法题目,如果是这样,我不知道他怎么想,难道他想在中国google这样应用前线,培养出Google最资深的计算机科学家Jeff Dean这样的人物?其实一个公司只需要几个象Jeff Dean这样算法大师、架构大师或者需求分析师就可以,可能只要求是创业者或者核心股东人物,根本不需要每个程序员都成为这三个大师的一种。
所以,你招一些只懂皮毛算法的程序员有屁用?能给你李开复再整出个Map and Reduce来?如果算法的创新可以靠人海战术搞出来,中国早就在计算机上显示无穷的力量了,因为中国过去软件教育就是算法教育,结果如何呢?不但算法上不如老外,应用上更加落后。算法同样靠灵感和创新,宣传算法就是力量,和号称全民练钢有什么区别!
举双手同意!!!!!!
在J道的讨论每次都让我受益匪浅啊~~
> 楼主肯能还没搞清楚自己是做什么的.
你不要误解我,我看过很多设计模式的书,领域驱动设计也在我的床头。但是我还是认为一个程序员肯定是要懂算法的,我想banq肯定知道很多算法的。我自己现在这么认为,一个成功的软件应该是OO+算法。我们程序员至少应该懂得一些最基本的算法把,我面过微软,百度,亚马逊等公司,他们不会问你特别深的算法,如果能把《算法导论》看明白,他们的面试应该能过的(现在我正在看)。所以,我认为算法是一定要学的,学算法当然要有好的数学基础,呵呵
>感觉现在都是你用什么做,怎么做都不重要,而重要的是客户说好,行,可以。所以咱做软件开发的感觉都是啊那个啥样的整哦,整出来完事。
唉,这就是中国软件的最大悲哀啊~,有时候明知山有虎,偏向虎山行~
>遗憾的是我连口饭都还没混好呢。
好不容易要毕业了,结果赶上经济危机了,眼泪哇哇地,现在工作还没个着落~~
算法,可以当作一种修为,而对架构和业务的理解,却是深层次的。
给企业做软件,对企业的了解才是最重要的。
今天面试了,帖几个面试问题:
1,你简历上的ORM是什么意思?
2,你认为Java工程师应该具备的基本素质是什么?(这个还稍微是个问题)
3,spring是用来干什么的?
4,你会写oracle的存储过程吗?
5,请比较一下struts和spring (有可比性吗?)
最后一个,也是我永远不会忘记的:Java里面创建对象有几种方式?我说,new和反射,面试官又问,那工厂模式和spring呢?我无语了,但还是答道,它们底层不还是new或者反射吗?面试官是不是都很反感被反问?由此对我非常不爽,后来基本上都是话不投机,我直接闪人了。
也许真的是年少轻狂吧,又或者是在jdon上混过,我现在都不想找工作了,不过也许多面试几次,多被打击几次或者多被这个社会抛弃几次就醒了,醒过来之后继续啃算法导论和数据结构。
最后提一个小小的要求,banq老师,如果你要面试一个人,针对我们应届毕业生,你会问一些什么问题?谢谢!
[该贴被oojdon于2008-11-29 18:30修改过]
有了这些基本功,在学习OO,设计模式和更高深的架构,将使你更加游刃有余。我相信如果学好算法对以后自己解决问题方面还是大有裨益的,所以算法对我们还是很重要的,这就是为什么google,百度,微软都在考算法。