关于算法

dadasjd 发布于 2015年02月22日
无人欣赏。

算法应该学到什么程度?目前已经工作一年,但是发现基本用不上算法。

共19条回复
matthew_z 回复于 2015年02月23日

你可以不学, 认识很多高级的开发职位的人也说用不到算法, 但他们基本都是在一些中小公司做游戏之类的, 确实用不上什么算法.

但是技多不压身, 不会算法很难跳到好公司.

算法就像英语, 很多工作都用不着, 但是会英语可以给你的未来带来很多"可能性"

xiaotie 回复于 2015年02月23日

如果你从事的领域不是算法密集的领域,需要时再学也来得及,有这个意识即可。

尼克徐 回复于 2015年02月23日

关键是看你的目标了。

如果做数据库应用方面的项目,增删改查一般的编程,基本上不用算法。

但要是深入到数据存储的底层,还是算法支撑的。可以参见数据库实现原理。从这个角度看,SQL Script无非是对算法的一种封装。

国外有的大学,数据库课程就实现一个数据库,操作系统课程就实现一个操作系统,编译原理课程就实现一个计算机语言。窃以为这才学的扎实。

理解了底层,遇见任何问题都能深入解决。

深入理解一个东西后,做出来的也就不一样。

很久以前,我因兴趣用遗传基因编程的算法做过贪吃蛇的进化,进化若干代后,贪吃蛇能自己找食物吃。

这属于机器学习领域,不懂算法基本上就白瞎。

我做报表引擎时需要表达式解释器,就需要自动机,二叉树递归遍历等算法。

最后作出的引擎能够所见即所得设置,几倍提高编程效率。

最近开始向数据挖掘方向转,不但要看算法,还需要学很多数学。

PS, 算法是面试时非常重要的指标。去刷一刷大公司用的算法题库,就知道算法要学到什么程度了。

dadasjd 回复于 2015年02月23日

1楼 @matthew_z 嗯,谢谢,心里一直对算法打怵。

dadasjd 回复于 2015年02月23日

2楼 @xiaotie 谢谢您的建议😃

xiaotie 回复于 2015年02月23日

算法这玩意的价值和工作量没多大关系,主要拼智商和经验。你写其他代码,往上写,要赚更多的钱,就要更强大的团队或更多的代码。

算法不一样。一天完成的算法,它的价值可能是几千、几万、几十万、几百万或者更多钱。

我的一个不到二百行的算法,在 ourcoders 上卖了7000块钱(没宣传,就是有人需要时回了下)。这个算法过去一年多卖了2万多。除了写了篇博客外,没做其他宣传。最开始要源码的我免费提供,后来500提供,后来2000-5000提供。这是我重复销售的最简单的算法。

算法类的工作就是:要么卡壳卡到死,要么噼里啪啦一会就出来了。

xiaotie 回复于 2015年02月23日

这是我以前发的一篇: http://ourcoders.com/thread/show/3203/

尼克徐 回复于 2015年02月23日

6楼 @xiaotie 很棒!赞一下。

dadasjd 回复于 2015年02月23日

3楼 @尼克徐 我也是看到一家心怡的公司要求算法,自己又不会什么算法,所以来问一下,谢谢您的回复。

dadasjd 回复于 2015年02月23日

6楼 @xiaotie 好强大,,对于我只要能在工作中用到一些算法就很满足了哈哈,谢谢您的回复。

dadasjd 回复于 2015年02月23日

7楼 @xiaotie 谢谢这就去看。😃

soodaowhui 回复于 2015年03月02日

还有很多公司面试的时候会考到很多算法,有些职位确实是用不着的,但是他们总得有些标准来过滤人,考这个就好像高考考数学一样,起码能知道你聪明不聪明,而且说不定还真能用到

syeerzy 回复于 2015年03月02日

计算机基础知识(包括算法,数据结构等)很重要, 决定了你的上限可以到哪里. 而你的经验决定你的下限大约可以到哪里.

因为你只有一年经验,远没到碰到上限的时候,所以暂时觉得算法没多少用. 对有些比较倒霉一辈子做没技术含量的工作的人来说一辈子都没机会摸到上限,对他们算法也没什么用.

结合自身真实情况,跟你举几个例子: 我大约是工作了四五年以后吧第一次遇到需要自己实现一个数据结构的情况. 第一次真正意义上需要把学校教的 "树", A* 之类的东西用上的时候, 而在我使用上这些东西以后, 让一个操作时间从原来的1分钟(不可接受..)到了半秒以内, 付出的代价是内存消耗从80兆增加到三百多兆,但是这是可接受的. 实际上就贯彻了书本教的空间换时间, 集中操作改为分散操作,然后一步一步不断优化下去,最终得到一棵树,每个中间节点上是一个散列表,每个叶子节点是个数组..... 第一次大规模使用算法是开发一套斗地主的机器人(或者叫外挂?), 前后历时差不多两年, 各种补理论,各种看论文......当时我手底下还有3个研究生其中一个是人工智能专业的, 给我的感觉是真正实际动起来以后, 发现很多高级的理论算法离实用很远, 比如神经网络算法的所谓 "很强的自我学习能力" 其实都无法应付这种打牌逻辑, 很多现有算法又弱得让人不想吐槽, 而斗地主这种中国化的东西显然招不到英文资料和老外的论文...市面上当时也根本没存在达到实用意义的斗地主机器人. 所以强度非常大, 有个女研究生在期间因为精神高度紧张差点疯了(每天面对几千副牌例的参数调整和优化...)..... 都是时间磨出来,一年多以后,这个机器人已经几乎无敌了, 在高分区能跟高分段玩家公平对抗保持 40%以上的胜率(无作弊情况下).也许某天你在网上打斗地主,遇到高手.....那可能正是一个机器人. 写过最多次的(但每次都不同)算法,也是大家最常遇到的算法是 图片验证码自动识别.... 其中很有挑战的包括天猫版的验证码和亚马逊版的验证码....(别想用现有的那些开源ocr去对付这些...成功率低得可怜...) 我在面试别人时最常问的通用算法是快速排序(其实只是找个话题...对方答不答得出无所谓, 打不出顺便考察遇到不会的问题时的反应,这对码农很重要的素质)
面试别人时得到最多回答类别的算法是: 给你一百亿篇文章和足够多的时间让你对他们做处理....不借助其他第三方库的情况下,如何在毫秒级从里面找出含有你名字或我名字的文章....很多人的天才回答超出我想象,有各种巧妙的办法....

总的说来,打算做一辈子码农, 对算法有心里阴影是不行的. 你可以用的时候去补具体的算法, 但是基础的算法你要知道, 不然到时候你连应该补哪里你都不知道也没法知道.

dadasjd 回复于 2015年03月03日

12楼 @soodaowhui 恩,有道理,哈哈。感觉算法挺难搞的。不说多深,就基础的。

dadasjd 回复于 2015年03月03日

13楼 @syeerzy 看了您回复,好像补算法。谢谢!

清醒疯子 回复于 2015年03月03日

7楼 @xiaotie

13楼 @syeerzy

哗,我也要学算法:)

dadasjd 回复于 2015年03月03日

16楼 @清醒疯子 哈哈,开启高大上模式。

清醒疯子 回复于 2015年03月03日

17楼 @dadasjd

重新回听Tiny兄的37期,认识到自己水平还处于非常差非常差的超级菜鸟阶段,要更努力多学习才行:)

dadasjd 回复于 2015年03月04日

18楼 @清醒疯子 要更努力!

本帖有19个回复,因为您没有注册或者登录本站,所以,只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。

登录 或者 注册
[顶 楼]
|
|
[底 楼]
|
|
[首 页]