感谢图灵社区的电子书阅读奖励计划。
算法在日常开发中有什么用,这或许是许多非专科出身的程序员会遇到的疑问。
这也和算法如何学习有关系吧,感觉上就非常难学,给的例子又是非常理想化或者平常工作中遇不到的情况,自然而然就没有了学习的东西。
如果平常的工作比较偏「业务」,简单说就是 API Caller,调用一个 API,然后使用 React 将数据渲染到页面上,处理下点击按钮,发下一个请求。
如果是这种工作,可以说绝大部分情况下对算法的精通并不能帮助你加快开发效率,也不能增加项目的可维护性。
当然也会遇到「感觉需要算法」的情况,比如后端返回的数据结构是一棵树,需要对这个数据进行处理,或者是过滤或者是合并,感觉上是算法了。当然这实际也是,大部分情况下我们会认为算法就是用来处理数据的,无论什么类型的算法教程,都是对数据的处理。
但是,如果个人工作偏业务,将更多时间花在代码上会更好,无论是如何写出更好更易懂的代码,还是在业务的层面对代码进行组织,都是比算法要更值得花时间,或者说投入产出比更大。
算法很少用到,可代码却一直要写,在哪方面花时间更值得非常明显了。
所以算法不用学习了吗?大部分情况是的,但仍需要「了解」算法,这可以帮助你判断遇到的问题是否是算法问题。
为什么会有算法?
这个答案其实很简单,因为要解决问题,并且是「更好地」解决问题。
假设你现在在书桌前,想要去客厅倒杯水,顺便到卫生间洗手,最后再从客厅拿点零食。你肯定不会先去倒水,回到书桌前,然后再去洗手,又回到书桌前,然后又去到客厅拿零食,你肯定会先洗手,然后倒水 and 拿零食,当然反过来也可以。
总之就是你不会像开始描述的那样做。
常用的对象也是算法?
作为一个前端,对象是非常非常频繁使用的一种数据结构,我们会用来保存数据,用来作为缓存,用来表示「对象」。频繁到我们不会去考虑对象是怎么工作的,这对我们来说已经是如同呼吸般的日常。
那么问题来了,对象是如何实现的呢?为什么给出key
总是能返回相同的value
呢?
有用的算法
本书最后给出了一些「常用」算法,很容易发现这些绝大部分都是「后端」会常遇到的问题,作为一个前端,只是处理数据渲染或者交换的话,真的很难有感同身受。
网友评论