免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: pmerofc
打印 上一主题 下一主题

[其他] "算法+数据结构=程序"过时了吗? [复制链接]

论坛徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龙
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
51 [报告]
发表于 2012-12-03 14:48 |只看该作者
回复 48# JohnBull


    个人非常同意这个观点。Java里面的interface从某种角度来说,不属于算法和数据结构,但引入他的目的就是提供一个清晰的界面。

同样,设计模式的引入也是解决既有的问题。当然,如果将设计模式无限的放大,仍然可以说设计模式本身就是算法,但个人仍然倾向于模式就是模式,

模式要解决的问题跟算法要解决的问题不是一个层面的问题。

数据结构和算法仍然非常重要,不管O的后面还有几个O。

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
52 [报告]
发表于 2012-12-03 15:22 |只看该作者
回复 51# liuiang


    基本同意。


我认为这其实是两个领域的问题,类似计算机软件由CPU指令构成同时又超越了CPU指令一样。


数据结构+算法 实质上是一种基础性的东西。甚至float、integer,你能说它不是数据结构吗?数学协处理器之前,乘除法用移位+加法+补码实现,这能说不是算法?

然后,类的vptr,这些是不是数据结构?vptr的查找/搜索,这些是不是算法?

还有诸如观察者模式对回调的管理、分析xml文件动态加载动态连接库实现插件功能,这些难道不是 数据结构+算法?




差异不过是:在过去,软件规模没那么大的时候,数据结构+算法更多的用来解决业务问题——如排序、查找、变换、显示等等。

现在,软件规模大了,数据结构+算法不得不被应用到软件自身的代码/模块管理上——这就是所谓的面向对象、设计模式。

但,很显然,和排序、查找等一样,代码间关系的管理算法(或者说,设计模式),当然仍然是数据结构+算法——和人工智能仍然是数据结构+算法一样。


当然,同样和人工智能是一门独立学科一样,不能把设计模式硬生生打回去,不允许它“自立门户”。

只是,必须明确一点:面向对象、设计模式是如何组织代码的理论,不是如何完成业务功能的理论。

说面向对象、设计模式一出生就被滥用、错用,以致闹的臭不可闻(设计模式负面影响小得多),就是因为这种“组织代码的理论”被当作“完成业务功能”的理论去推广了,以至于有“根据需求/UML图发现对象”这样的奇葩理论出现(这种理论在小规模时是无害的,因为随便你怎么组织代码都坏不到哪;但应用到大规模复杂项目上就必然要栽跟头)。



当然,组织代码的理论和完成业务功能的理论,在很多地方是类似的、可相互借鉴的。但这种相似,实质上加大了理论错用的可能性和迷惑性。这就是面向对象近年被称为骗局的原因。
——我从不认为面向对象是骗局,也不认为它是有害的。只要别把它当作一个实现业务的理论去用就好。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
53 [报告]
发表于 2012-12-03 18:00 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
54 [报告]
发表于 2012-12-03 18:45 |只看该作者
计算机程序解决问题,解决问题的步骤即为算法。

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
55 [报告]
发表于 2012-12-03 18:46 |只看该作者
回复 53# pmerofc


    确实.

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
56 [报告]
发表于 2012-12-03 18:47 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
57 [报告]
发表于 2012-12-03 19:04 |只看该作者
回复 56# pmerofc


    啊啊, 不好意思.

    提出这个公式的人确实是 Nikiklaus Wirth. 我记错了

    当然Niklaus Wirth[也作Nikiklaus Wirth]也是大师, pascal之父, 同样是图灵碗获得者.

    此书作者之水准和Pascal之父水准相较, 谁更有洞见不言而喻...




论坛徽章:
0
58 [报告]
发表于 2012-12-03 19:06 |只看该作者
coder们,你们不能忽视“人”。一个程序最终是要参与交互的(人-程 或者 程-程)。
一个精妙的程序,用1秒钟计算了1000万位的pi,然后,终止了……他的结果以热的形式输出了……这你会去用它干什么?当作空负载测试CPU功耗吗?

我加上数据呈现(或者叫数据表示,whatever)就是基于此。

一个程序选择以什么方式输入、输出数据,就决定了它的用途和适用人群。看看软件市场上面那些同质化的软件为什么有人能赚钱有人只是给市场凑上一个分母?

论坛徽章:
0
59 [报告]
发表于 2012-12-03 19:08 |只看该作者
好好学习一下习哥精神:“空谈误国,实干兴邦”。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
60 [报告]
发表于 2012-12-03 19:12 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP