每个工程师都应该了解的:大数据时代的算法。
白板理论认为:婴儿是一块白板,可以通过后天学习和训练来提高智力。AI
的先驱图灵认为,只要能用机器制造一个类似于小孩的 AI
,然后加以训练,就能得到一个近似成人智力,甚至超越人类智力的 AI
。
自学成才的 AlphaGo Zero
最大的突破在于实现了“白板理论”。
算法比所谓的计算或数据量更为重要。一个合格的程序员,必须掌握算法。
学习算法的用处
-
算法是面试的敲门砖。
算法要熟悉到能够现场短时间内写出正解。
-
编程时用到的更多时算法思想,而不是写具体的算法。
实际工作中真正需要使用算法的机会,应该在 10% 左右。
更多的是对业务逻辑的理解,对程序语言各种特性的熟练使用,对代码风格和模式的把握,各种同步异步的处理,包括代码测色、系统不是是否正规化等等。
但是熟悉基本算法的好处在于:如果工作需要读的一段代码中包含一些基本算法思想,会比不懂算法的人更快理解代码含义。读到一段烂代码的时候,知道为什么烂、烂在哪、如何去优化。
当真的需要在程序中设计算法的时候,熟悉算法会给出一个更为完备的方案,对程序中出现的算法或比较复杂的时间复杂度问题会更敏感。
熟悉算法还可以成为一个更优秀的面试官,和别的工程师聊天是不被鄙视。
-
不精通算法的工程师永远不是好工程师。
我们每天接触到的各种技术中,算法无处不在。
对算法本身的理解和把握,永远是深入了解系统不可或缺的一环。
小结
- 在大数据时代,数据和算法同等重要,甚至算法比计算能力或数据更为重要。
- 如何学习算法:读经典著作、做题,然后在实践中阅读和使用算法。
- 算法是面试的敲门砖,有助于得到一份自己喜欢的工作。
- 写程序中用到的更多是算法思想,而不是写具体的算法。
- 只有对各种相关算法有详尽理解,才有可能做出最优的方案。