学习理论的实用意义

82 篇文章 4 订阅
55 篇文章 9 订阅

为什么要学CS理论呢?成天研究MSO=MSO0一类的问题对一个程序员的职业发展到底有什么好处呢?知道Ranked Tree Automata和Unranked Tree Automata的互换又怎么样呢? 不知不觉学习形式化方法一年多了,学了一大堆数理逻辑和自动机理论,可计算性和复杂性理论也多学了不少。 这些理论除了有趣,有没有什么实用的价值呢?我不过是一小小程序员,没有能力也没有打算在CS理论方面一展身手。既然这样,难道这一年多来在工作之余狂读论文不过是出于个人兴趣?我好像还没有那么纯洁吧?  还好,随着学习的逐渐深入,我好像悟到了一些理论的现实意义:

1。学习理论能拓展我们总结一般规律的能力。一个优美的理论总能用很少的元素涵盖广泛的现象,包括理论产生时还没有出现的情况(实际上,合格的理论必须有预见能力)。比如虽然Lambda Calculus只有7条公理,但它的表达能力和图灵机等价。换句话说,实现了Lambda Calculus的编程语言(比如LISP)尽管句法简单,却能和基于图灵机的语言(比如C++)一样强大。而在程序设计方面,一个好的设计也应该能处理一般情况,而不是一堆特例。比如如果一个程序里有大量分散而臃肿的case..switch或者if..else,这个程序多半有问题。进一步说,理论学习能训练我们抽象的能力。关于抽象能力和理论的关系,这篇文章说得很清楚。

2。学习理论能训练我们洞察不同事物间联系的能力。很多时候,我们编程的目的无非是把一种形式的信息转化为另一种形式的信息,而且这种转换往往受到计算资源的限制。理论恰恰关注事物间的联系。比如讨论树的时候,能不能只讨论二叉树,或者NFA是否很DFA等价。

3。学习理论让我们能迅速掌握计算机的前沿动态。没办法,现在发表的论文往往用形式化的方法表达研究结果。没有一定的理论只是,还真看不懂,更不用说和论文的作者讨论了。别告诉我看论文不重要。要开发出别人开发不出的软件,广看Dr. Dobb's Journal 是远远不够的。

嗯,能想到就这么多了。哪位高人来指点一下迷津就好了。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值