麻省理工学院公开课:算法导论 观后感 —— 性能是一种货币

作为程序员,性能两个字一直围绕着大家的工作和学习,各种技术推陈出新,各种思想不断涌现几乎都是为了性能,因为人类本质就有着对速度的追求,所以最火爆的体育项目是足球,篮球而不是围棋。代码是人写的,自然也不例外,同样一个功能我的耗时比你短,那我自然就在行业里占据了先机,而为了提升性能,五花八门琳琅满目的解决方案层出不穷,除去升级硬件带来的性能提升,程序员更关心的应该就是算法层面的性能提升了。而最近正在网易公开课上看麻省理工学院公开课:算法导论,刚看完第一节课就被其中一些内容深深吸引了,特此总结出来分享给大家。

课程中教授提出了这么一个问题,各位可以先想一想:

在程序设计方面,什么是比性能更重要的呢?

其实在工作中经常遇到这样的情况,线上某个模块响应时间长,然后我们才会去排查问题,去优化。也就是说往往是等到出现了性能问题,我们才会去试图提升性能,而不是从写第一行代码开始就去思考,这行代码还能不能更快?这也是反映了虽然性能很重要,但其实有很多比性能更重要的东西,视频课程中教授和学生们说出了许多方面,我总结出供大家参考:

正确性,简洁性,可维护性,成本,稳定性,功能性,安全性,用户友好

既然这么多方面都可能是优先于性能去考虑的,那性能到底是重要还是不重要呢?教授给出了一个让我非常印象深刻的举例:算法或者说性能其实是处于最底层的东西,它就相当于是钱一样,仔细想想对于一个人来说,食物,水,衣服,房子都比钱重要,可是我们为什么最关心的是挣钱呢?因为那些东西都需要用钱去支付,你愿意为食物支付钱,你也愿意攒钱去买房,这就是为什么我们关心如何挣钱。而在一个程序中,你需要用性能作为支付其他东西的货币,上述的任何一方面都有可能会消耗性能,但是当你需要保证你程序的正确性时,你可能愿意降低性能来换取数据的准确,当你的程序需要安全性时,你肯定也愿意多加两层验证,并为此消耗一些性能,所以当我们在做优化提升性能的时候就像是我们在挣钱,只有挣钱了你才有能力去选择你想要的东西,只能性能提升后才能考虑扩展业务规模。

这里不得不感叹大神的思想,虽然自己在工作中也做过优化,也在学习中了解过优化技巧,但是从没有把这些知识和其他方面结合起来过,只是很片面的工作和学习,看来和真正的大神还真是有不小的差距啊。

你可能感兴趣的:(算法)