“程序就是算法加数据结构”这句话对于 iOS 开发来说有效吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
dopcn
V2EX    iDev

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

  •  
  •   dopcn
    dopcn 2014-09-07 16:56:45 +08:00 8720 次点击
    这是一个创建于 4064 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在开发 iOS 程序的过程中你用到了多少数据结构和算法的知识?
    第 1 条附言    2014-09-09 09:17:32 +08:00
    1. 楼主没打算钻牛角尖,不过内容确实没有描述“精确”,楼主的数据结构和算法是指复杂一些的例如二叉树和考虑各种算法的时间空间复杂度
    2. 作为非科班出身自学 iOS 开发并且在做 iOS 开发的楼主,在看各种面试技术面试题的时候碰到很多算法题,于是有感而发,此是来由
    3. 在网上能发言不代表能发有价值的言,无论是发帖回帖我觉得我们大家在按下提交的时候考虑一下自己要留下的话是否有那么一点点价值更有利于所谓的社区氛围
    23 条回复    2019-09-03 16:51:34 +08:00
    IamI
        1
    IamI  
       2014-09-07 17:08:10 +08:00   1
    我只被 NSDictionary 坑过无数次……
    tonyluj
        2
    tonyluj  
       2014-09-07 17:22:38 +08:00
    以前写 Android 应用、用 Java 开发网站的时候没感觉
    最近在用 C 写个 socks5 代理和 web server + lua 的时候表示非常关键,至关重要,整个程序的灵魂
    akfish
        3
    akfish  
       2014-09-07 17:40:11 +08:00
    lz标题说的是广义的数据结构和算法,只要你写过a+b,a, b就是数据,a+b就是算法。
    lz内容说的是狭义的数据结构和算法,指的是逼格高的,说出来不会被嘲笑的数据结构和算法。
    azuginnen
        4
    azuginnen  
       2014-09-07 17:42:12 +08:00
    在看了代码大全 第18章 表驱动法之后,对这句话的理解上升了一个台阶
    Automan
        5
    Automan  
       2014-09-07 17:43:48 +08:00
    看程序类型。。很多 APP 连美工都会。。
    kisshere
        6
    kisshere  
       2014-09-07 17:44:53 +08:00
    v2开始沦为知乎了
    aszxqw
        7
    aszxqw  
       2014-09-07 17:51:27 +08:00
    小时候你老师没告诉你“成功等于百分之1的聪明加百分之99的努力”吗。
    长大了你还觉得这个说法适用吗
    semicircle21
        8
    semicircle21  
       2014-09-07 23:20:55 +08:00
    坐等游戏开发者前来科普..
    c742435
        9
    c742435  
       2014-09-08 00:17:03 +08:00
    @semicircle21 游戏么,美术+策划+运营,程序根本算不进去
    因为现在的机器性能和人力水平上,基本只要给钱够,程序实现一定能满足性能需求。
    真要是服务器压力过大满足不了了,说明你一定挣了好多钱了,那就花10倍的钱请大牛来重构,然后推出2代。

    以上仅限国产手游
    c742435
        10
    c742435  
       2014-09-08 00:21:28 +08:00
    还有,做游戏前端的时候占用最多代码的是UI。
    然后就是因为修改策划案导致的一层摞一层的补丁。
    真正的核心代码,跟性能有关的部分,其实很少。
    semicircle21
        11
    semicircle21  
       2014-09-08 11:27:14 +08:00
    @c742435 贴主说的iOS端, 那我指的只是客户端了,
    大一点的3D游戏, 比如赛车类的, 不需要各种算法么? 另外手机上的性能, 应该还没有到过剩的程度吧?
    我的意思是, 游戏客户端的复杂程度, 应该是所有类型的App 里, 复杂程度最高的了吧..
    我不在手机上玩游戏, 也不玩国产的, 也不是从业者...纯讨教, 勿喷.
    ac47
        12
    ac47  
       2014-09-08 13:12:13 +08:00
    那啥,你用不到不代表都用不到...客户端本地排个序,动画的各种公式,阀值之类不就数据加算法么。。。
    dopcn
        13
    dopcn  
    OP
       2014-09-09 09:05:48 +08:00
    @IamI 久坑成良debugger……
    dopcn
        14
    dopcn  
    OP
       2014-09-09 09:06:38 +08:00
    @tonyluj 感觉确实服务器端用到的可能性更大
    dopcn
        15
    dopcn  
    OP
       2014-09-09 09:07:19 +08:00
    @azuginnen 去亚马逊买书了~
    dopcn
        16
    dopcn  
    OP
       2014-09-09 09:18:23 +08:00
    @Automan 求美工联系方式……
    dopcn
        17
    dopcn  
    OP
       2014-09-09 09:19:44 +08:00
    @c742435 这个似乎对于一般的客户端程序也是这样 view + controller >> model
    ioth
        18
    ioth  
       2014-09-09 12:34:32 +08:00
    @kisshere 好事?
    Ricepig
        19
    Ricepig  
       2014-09-09 14:24:36 +08:00 via Android
    当然有效,只是现在这些东西都被封装得还行。

    其实你想想,每天编程都是在熟悉和使用别人给你设定好的框架和api,是不是成就感低了那么一点儿?
    lcl22hope
        20
    lcl22hope  
       2014-09-09 16:52:30 +08:00
    @kisshere so V2应该讨论些什么?
    dopcn
        21
    dopcn  
    OP
       2014-09-09 21:35:42 +08:00
    @Ricepig 我觉得不止一点,而且提升空间难觅
    golang83
        22
    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
        23
    golang83  
       2019-09-03 16:51:34 +08:00
    看着最近几年的的这些程序员,会用个某某框架、使用一种结构化的标签描述语言,搞出点页面,使用框架中的 API 完成点数据处理、和与后端的 http 协议程序进行点数据收发,就美其名曰前端开发工程师,看着那些使用 spring 全家桶,使用了一些消息引擎,搞点 nginx 和 docker 就美其名曰微服务,高级后端开发工程师。然后还有人得出前端比后端简单的结论,严格来说,前端程序可以复杂到让这些所谓的后端程序员做不出来,有些做 web 后端的居然页脚服务器端开发....... 看看 BAT 的校招中的笔试题吧... 实时证明,数据结构与算法合格的程序员才是程序员.... 程序员不是会用个框架堆积木才叫程序员!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5212 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 06:57 PVG 14:57 LAX 23:57 JFK 02:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86