“程序就是算法加数据结构”这句话对于 iOS 开发来说有效吗

2014-09-07 16:56:45 +08:00
 dopcn
在开发 iOS 程序的过程中你用到了多少数据结构和算法的知识?
8237 次点击
所在节点    iDev
23 条回复
dopcn
2014-09-09 21:35:42 +08:00
@Ricepig 我觉得不止一点,而且提升空间难觅
golang83
2019-09-03 16:41:34 +08:00
人家说这话的人是大神,那么这句话的意思就是开发一个有价值的软件(程序),那么这样的程序一定是数据结构+算法,何为有价值的程序??比如 Excel,财务人员通过使用它可以进行简单的数据录入、统计、分析。光是数据的展示就是一个二维表,那么你要将一个二维表的数据进行各种运算已满足前面说的录入、统计、分析,请问没有数据结构与算法的基础支撑,你可以完成吗? 一个二维表又起码涉及到了线性表这种数据结构。再列举一个简单的例子:什么时候使用数组,什么时候使用链表,作为一个开发者,这个要不知道的话,开发个毛线程序呀?光是用库和框架,那和工地搬砖有啥区别?工地的建筑工人也是建筑行业,建筑师也是建筑行业,谁的社会价值更大?你让文科生去参与桥梁设计,海底隧道设计,估计他能让这个设计变得更有文化气息???呵呵...
前面有人说游戏开发的人来说,那我就说说,一个栈结构可以表示武器的弹夹,FILO 嘛,特性符合吧,假如子弹不是早期 CS 那种游戏,而是要参与物理计算的,那起码也是一个 Object 吧,早期的 CS 的游戏地图名称就叫 BSP,实际上 HalfLife 引擎来自与 id software 的 quake2 (如果我么没记错的话)的引擎,而 BSP 就是一种二叉树,用于解决游戏中的空间分割(二叉空间分割树),我记得没错就是卡尔马克大神搞出来的吧。再后来,室外大型场景场景渲染,LOD 多层次细节的使用,我们又用到了八叉树,哪怕是个 2D 的 MMORPG 游戏,只要联网,我不可能每个玩家的坐标都要向其他玩家进行广播吧?哪怕在一个地图,但不在一个屏幕,还有你看不到的 NPC 我也要把其坐标给你玩家?碰撞检测在一个 5000 人的服务器,我怎么做到哪些数据通知到哪些玩家,哪些数据不用通知某些玩家?网络 IO、服务器的算力资源如何节约?没有数据结构与算法的基础,这个事情就不用想了... 大端序转小端序要不要算法?如何编写一个不使用递归调用来进行遍历的二叉树?为什么需要这样一种二叉树?这涉及到早起的计算机栈空间很少,win2000 和 xp 我记得就 1024kb 吧。那么如果深度太深,也许就栈溢出了,所以可以尝试使用链栈来配合二叉树结构,从学习的角度,也可以对系统的栈空间有更深的理解,也达到了了解两种数据结构使用上的配合,以及线性表与树结构之间的关系...
golang83
2019-09-03 16:51:34 +08:00
看着最近几年的的这些程序员,会用个某某框架、使用一种结构化的标签描述语言,搞出点页面,使用框架中的 API 完成点数据处理、和与后端的 http 协议程序进行点数据收发,就美其名曰前端开发工程师,看着那些使用 spring 全家桶,使用了一些消息引擎,搞点 nginx 和 docker 就美其名曰微服务,高级后端开发工程师。然后还有人得出前端比后端简单的结论,严格来说,前端程序可以复杂到让这些所谓的后端程序员做不出来,有些做 web 后端的居然页脚服务器端开发....... 看看 BAT 的校招中的笔试题吧... 实时证明,数据结构与算法合格的程序员才是程序员.... 程序员不是会用个框架堆积木才叫程序员!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/132210

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX