算法世界

清醒疯子 发布于 2015年08月23日
tinyfool 等1人欣赏。

:)算法是另一个世界。算法世界里别怕死。

如果你赶时间,直接看小铁兄的回帖: http://ourcoders.com/thread/show/6605/

然后你可以看看小铁兄的博客:http://xiaotie.cnblogs.com

如果还是赶时间,可以先看以下五篇小铁兄的博文,是我花一晚上遍历小铁兄博客后挑出来的:

工作中任务管理的四个原则和四个技能

http://www.cnblogs.com/xiaotie/p/4427464.html

如何自学图像编程

http://www.cnblogs.com/xiaotie/archive/2012/03/25/2416267.html

只学一点点:我的技术学习策略

http://www.cnblogs.com/xiaotie/archive/2011/12/10/2283384.html

在家赚钱,威客网站的使用方法

http://www.cnblogs.com/xiaotie/archive/2011/04/15/2016873.html

自学资源推荐

http://www.cnblogs.com/xiaotie/archive/2010/04/23/1718997.html

下面,我们来讲讲此文题目。

算法,是程序员的浪漫。

退一步讲,程序大军的不断扩张,第三方库横行,将使得逃离苦逼大众的路上越来越依赖算法。只因算法的优化,还是只能依赖人。

@xiaotie : 算法是对工程问题的形式化解决方案。

形式化就是把模拟过程离散化,把模糊的概念标准化。

在算法世界中,不同层次的人做着不同的工作。

1、发明新算法。

这是数学家干的活。或者数学底子好,不妨试试。如果基础差,先跟着小铁兄给出的书目把数学补起来吧。

2、解决世界未解决的问题。

此类问题,就算把最新的论文找来,还是不会有现成的解决方案,也是所有算法活里最赚钱的部分。但算法学习对这部分工作的帮助并不大。主要依赖对业务领域的理解,对边界条件的把握。这是@xiaotie 兄努力布局,马上要进入的层面。

张五常是在经济学里通过局限的边界变化来解析世事的高手,大家有兴趣不妨看看:

http://blog.sina.com.cn/zhangwuchang

3、优化、移值算法。

算法优化和移值,是一般人努力可以达到的。在这个层面好好干就能完成满足生活一般所需。这是@xiaotie 兄现在所处的层面。

4、改算法边界条件,化通用为专用。

根据企业的特殊需要,把学术上的通用算法改造成企业专用的算法。这是算法工程师最广泛的基础一线。

5、熟悉现有数据结构算法,直接套用。

一般高级程序员在开发过程通过选择更适合的数据结构和算法提升程序性能。非算法工程师不妨多看看算法方面的书,从了解、试用、理解,把半只脚踏进算法界。

从@xiaotie 兄的分享里,还有很多程序开发的一般经验,比如:

通过扎扎实实地手写算法,不用第三方库。目的在于更理解算法的边界条件,快速调整到符合需求所要。

数学的学习可以按这样的顺序:平面几何、线性代数、概率统计、机器学习、数学分析。

这次算是对算法对一个最基本的认识,还想问3个问题:

1、算法从PC到移动,是只需要换个语言写一遍吗?还是有很多其它的事情要做呢?

2、一个算法卡壳很久,是继续一直强攻呢?还是告诉客户一时半会解决不了,放一放呢?

3、业界算法论文,是接单后再去看呢?还是平时就每天抽点时间看?

后记(下面以聊家常为主,没时间没兴趣的朋友请直接忽略): 昨天跟沈兄约了一面。沈兄是一个非常有趣的人,性格、经历、爱好都很有趣。然后突然发现自己已经变得无趣得很,除了代码、阅读、健身外,对其它事情越业越不感兴趣。

三天前收到@柴茝 对《拆分代码与泛型》http://www.jianshu.com/p/05f1273a7129 的打赏,非常感谢啊:) 我还在继续用“递减原则”改造我自己的方法论:疯子一般深入系统。已经用“递减原则”改了5版。

共7条回复
xiaotie 回复于 2015年08月23日

写了很多,还是删了

xiaotie 回复于 2015年08月23日

这几年还做了一件事情,就是打通视频编辑、通讯和分析整个环节。算法是分析阶段的核心。通讯这一块还在等待 webrtc 的风口。编辑这一块这一两年也出了几款产品。看这网撒的多远 。。。。。现在的网络是文字和数字的网络,未来就不是了。俺这完全是以十年为单位撒的。

清醒疯子 回复于 2015年08月23日

1楼 @xiaotie

谢谢小铁兄,你发帖的第一时间,我已经在手机上看过了:)

小苹果 回复于 2015年08月23日

@xiaotie 铁哥,为何不给想进算法坑的年轻人指指路呢?给点合理建议?

xiaotie 回复于 2015年08月24日

4楼 @小苹果

每个人的情况不一样,算法有面试派,打基础派,大公司实战派,小公司实战派等各个派别,我是小公司实战派,很容易误导人的。面试派和打基础派看《算法导论》就行了,要走捷径的话,直接看各个库的源代码。大公司实战派要求掌握领域内的算法和技巧,有的偏硬件,有的偏大数据。小公司实战派要求解决问题,还要求有分辨力,知道哪些问题是你能解决的,哪些是你不能解决的。我跳这个坑的目的是因为算法类事情和地域关系不大,对技术支持要求不高,我在小城市也可以做起来。

我做到目前并不是因为我算法多NB(当然也很NB,但主要精力没在这里),而是很好的迎合了市场上这类需求,很好的和产业升级需求和移动互联网浪潮形成了互补。对于关键环节我都做了大量的功课,以客户为中心做的。在需求环节,可以非常耐心的和甲方沟通,一个功能点可以修改几十甚至上百次,而修改几十次之后,对需求的理解大概能进入另一个层面,同时关注市面上各种各样的需求。在方案环节,不确定性是算法的最大敌人。客户给你一笔钱,你要是做不出来怎么办?算法类和其他类不同,一般情况下,有很大的可能性做不出来,这个谁也不能打包票。因此,很关键的一点就是知道自己能不能在指定时间内做出来,如果做不出来尽快放弃,这样对大家都好,如果做得出来,怎么尽快证明能做出来。这是交易的最关键环节。在这个环节,俺做了非常多非常多的工作,就是为了减少双方的不确定性。接下来的环节是:你做出来了,对方技术人员不会集成怎么办?这就要提供技术支持了。技术支持也是花式花样的。有嵌入式的,有Flash的,有PC的,有Linux的,有Android的,有iOS的,还有Delphi的,俺是全方位的技术支持,都能帮他们集成到现有的业务系统里去。而如果对方没核心技术人员怎么办?OK,我可以帮忙培养技术人员,孵化团队。就这么一件事情,俺是陆海空天,全面着手。

这就是小公司实战派的搞法。可以看出来,对各个关键环节都作了足够的功课,同时因为这些功课,俺也将很多竞争对手排除在外了。一个专业博士,也许在专业算法上牛逼,但是在关键环节上,我都能完爆对手。我会的算法很少,但对每个算法,俺的体会都很深很深,这不仅仅是技术问题,更多的是在给客户修改时体会的,一个算法,我能为客户修改60多次,可以想象功课做到多细微的地步了。俺不能发明新算法(其实也有点小发明了),但在对算法的灵活应用和修改上,已经千锤百炼了。在交易环节,出Demo的速度,俺是别人的N倍(外包过算法,和同行比较过)。在多平台技术支持环节,会那么多语言的很少吧。在孵化环节,为好几家提供了孵化服务了。

这都不是一个单纯技术人员所能够搞定的事情,也不是能够随便借鉴参考的事情,而是经过大量的市场实践,经过无数个日日夜夜的辛劳,经过若干交易磨合才搭建起来的。

俺对自己战斗力的估计是约等于3个顶尖的博士(生产力比较),但至今还在避免跟他们正面战斗。顶尖博士都在大公司,得多脑残才会跟大公司正面战斗啊。已经初步具备了和国内外顶尖团队硬憾的能力了(一个顶尖团队也就3~5个博士),但没他们的资金条件啊。知道哪些事情不能做是很关键的。

俺下一步的目标是对用户的了解和挖掘,核心就是研究用户是怎么花钱的(目标很清晰吧,先是琢磨让客户花钱花得爽,把不爽的环节都给处理掉。接着研究怎么让用户花钱花的爽),研究他们潜在的需求和欲望,让算法在用户这里落地,开拓新应用,绕过和大公司的直面对阵。

并不是不想给建议,而是给建议也没多大用处。做事情无非就是先有目标,然后针对目标去规划去优化。而找这些目标,就花了N年时间啊,整个优化过程,又花了N年时间啊 。。。。。。

你跳这个坑的目的是什么,目标是什么?想清楚这些,自然就知道怎么做了。

尼克徐 回复于 2015年08月24日

5楼 @xiaotie 多谢分享!每篇都是满满干货!

清醒疯子 回复于 2015年08月24日

5楼 @xiaotie

谢谢小铁兄,我会先把算法当爱好。每天坚持看一点。然后把公司项目优化好。功夫都在贴身优化上啊:)

登录 或者 注册