谁说界面开发不需要算法?

移动开发 算法
其实那时候并不知道这些算法有什么用,只知道学编程需要掌握它,包括《数据结构与算法》这本书,也是舍友推荐我读的,因为我本身并非软件专业,也就半路出家自学编程。既然什么都不懂,那就先按部就班学习。

[[146153]]

什么是算法?简单来说,解决一个问题的步骤,就是算法。

 

***次接触算法

 

大学的时候刚开始学C语言,每学一个知识点都会把后面的习题给做了,习题中有些会包含排序,其实那时候还不知道这叫算法,直到后来读了《数据结构与算法》这本书以后,才知道那叫算法

其实那时候并不知道这些算法有什么用,只知道学编程需要掌握它,包括《数据结构与算法》这本书,也是舍友推荐我读的,因为我本身并非软件专业,也就半路出家自学编程。既然什么都不懂,那就先按部就班学习。

除了排序以外,还学习了队列,堆栈,二叉树等概念,平时除了做做习题,基本没有用得到的地方。

 

***次面试

 

果然像舍友说的,面试免不了会考你算法,就算你进去以后用不到,你也得掌握,不然连通过的机会都没有。还好大学时做过一些算法题,面试官问的那些冒泡排序,二分法查找之类的算法,都能答得上。

对那时候的我来说,算法就是一些理论知识,看上去没什么用,就为了找份工作。

 

参加工作以后

 

工作以后,用得最多的算法就是排序,查找,队列控制这些,其他的完全无用武之地,那时候觉得,自己做的是客户端,本身业务上就不需要什么算法,大部分的工作都是跟界面和交互打交道,再加上自己觉得算法过于枯燥,也就没有继续学下去了。久而久之,除了几个常用的算法,其他的连概念都快忘了。

 

对算法态度的变化

 

一次偶然的机会,需要做一些日历相关的功能,那时候需要解决阴阳历转换,以及二十四节气相关的计算。以前压根就没学过这些东西,不知道要怎么做,情急之下在网上找了一些现成的代码来用。之后发现问题很多,例如有些日期的转换出错了。这时候才下决心要学习阴阳历以及二十四节气的计算原理,然后从才能解决这些问题。

这个过程中,先是感叹自然规律的奇妙,闰月,时辰,干支等等都是从数理演变过来的。然后感叹古人的强大,能把传统历法研究得那么精深。研究的过程充满了乐趣,***把问题解决了,还能带来满足感和成就感,原来研究算法也是件有趣的事情。

 

界面开发中也有算法

 

有些人觉得做客户端开发没什么算法可言,拿到数据以后就把界面搭起来,然后就完了,做界面能有什么难度?我自己也最初这么认为,但后来发现其实界面开发也有讲究的地方,也有需要用到算法的地方。

以前玩魔兽争霸时觉得很神奇,为什么他们走路会自动避开障碍,要怎么做才能实现?然后自己就琢磨着做一个自动寻路的demo。那时候还不知道什么叫A寻路,上网查资料后,才发现有种寻路算法叫A,然后参照着算法思路自己实现了一下,发现挺好玩的,无论设置怎样的障碍物,只要有一条可行的路径,它就会找出来,并且是最短的路径。

前段时间做了个弹幕的功能,弹幕要考虑不同的播放速度,要考虑旋转屏幕时的过渡,要考虑内存占用量,以及弹幕视图重用的问题。这些就是算法,假如解决不了这些算法,那就只能做个匀速播放,旋转过程没有过渡,可能还会出现播放断片,然后内存狂飙的弹幕界面。

 

对算法的看法

 

学习算法应该是基于兴趣的,假如只是为了掌握算法而去学习,很可能会产生厌倦,导致学到东西的也丢了。最近读了王晓华的《算法的乐趣》图书样章,比较认同他对算法的定义,以及如何对待算法这个问题。我始终是抱着兴趣与运用的原则来学习算法的,虽然自己掌握的算法不多,而且没有什么高深的算法,但能满足自己,满足业务,那就够了。

 

 

 

责任编辑:chenqingxiang 来源: sunljz简书
相关推荐

2009-11-23 12:45:22

2020-06-15 17:05:46

前端二进制浏览器

2022-02-15 07:26:34

web前端算法题

2013-12-03 14:05:50

2017-03-13 13:54:40

戴尔

2012-08-23 09:50:07

测试测试人员软件测试

2018-01-25 09:28:49

代码开发工具

2015-09-30 09:57:53

天分热情工程师

2024-02-22 09:00:00

LogitMat数据集算法

2013-12-02 09:43:29

字符串编程

2018-01-29 13:18:42

前端JavaScript

2022-09-14 15:10:40

前端架构

2010-11-23 10:55:47

跳槽

2014-01-17 13:09:48

Linux碎片整理

2021-12-12 22:20:47

Docker开发容器

2013-07-18 09:21:32

代码文档

2020-02-18 10:00:15

数据库工具技术

2020-12-20 18:08:31

业务层服务化微服务

2021-10-26 00:12:13

前端算法思路

2023-01-28 13:34:47

Web 3.0区块链互联网
点赞
收藏

51CTO技术栈公众号