学习理论的实用意义
2005-02-04 14:39
399 查看
为什么要学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 是远远不够的。
嗯,能想到就这么多了。哪位高人来指点一下迷津就好了。
不知不觉学习形式化方法一年多了,学了一大堆数理逻辑和自动机理论,可计算性和复杂性理论也多学了不少。
这些理论除了有趣,有没有什么实用的价值呢?我不过是一小小程序员,没有能力也没有打算在CS理论方面一展身手。既然这样,难道这一年多来在工作之余狂读论文不过是出于个人兴趣?我好像还没有那么纯洁吧?
还好,随着学习的逐渐深入,我好像悟到了一些理论的现实意义:
1。学习理论能拓展我们总结一般规律的能力。一个优美的理论总能用很少的元素涵盖广泛的现象,包括理论产生时还没有出现的情况(实际上,合格的理论必须有预见能力)。比如虽然Lambda Calculus只有7条公理,但它的表达能力和图灵机等价。换句话说,实现了Lambda Calculus的编程语言(比如LISP)尽管句法简单,却能和基于图灵机的语言(比如C++)一样强大。而在程序设计方面,一个好的设计也应该能处理一般情况,而不是一堆特例。比如如果一个程序里有大量分散而臃肿的case..switch或者if..else,这个程序多半有问题。进一步说,理论学习能训练我们抽象的能力。关于抽象能力和理论的关系,这篇文章说得很清楚。
2。学习理论能训练我们洞察不同事物间联系的能力。很多时候,我们编程的目的无非是把一种形式的信息转化为另一种形式的信息,而且这种转换往往受到计算资源的限制。理论恰恰关注事物间的联系。比如讨论树的时候,能不能只讨论二叉树,或者NFA是否很DFA等价。
3。学习理论让我们能迅速掌握计算机的前沿动态。没办法,现在发表的论文往往用形式化的方法表达研究结果。没有一定的理论只是,还真看不懂,更不用说和论文的作者讨论了。别告诉我看论文不重要。要开发出别人开发不出的软件,广看Dr. Dobb's Journal 是远远不够的。
嗯,能想到就这么多了。哪位高人来指点一下迷津就好了。
相关文章推荐
- 补充:学习理论的意义
- sqlldr理论深入学习
- 【svm学习笔记】svm_理论学习图谱_上
- 记一次java socket学习(简单实用多线程,实现多对多群聊)
- 短小精悍:LinuxMint/Ubuntu实用小软件 分类: 软件插件学习 2015-04-30 16:34 68人阅读 评论(0) 收藏
- Android NDK学习 <三> Android.mk实例和NDK实用技巧
- 非常实用的30天学习30种技术
- Andrew Ng's deeplearning Course2Week1 Practical aspects of Deep Learning(深层学习的实用层面)
- Linux学习-关于Linux文件所存放内容的意义
- 使用sklearn进行集成学习——理论
- 机器学习、深度学习的理论与实战入门建议整理
- 终于明白了虚函数、纯虚函数和接口的实用方法和意义
- 机器学习---计算学习理论
- 决策树基本理论学习以及Python代码实现和详细注释
- 系列 《使用sklearn进行集成学习——理论》 《使用sklearn进行集成学习——实践》 目录 1 Random Forest和Gradient Tree Boosting参数详解 2 如何调参?
- Linux学习总结(38)——Linux超实用的30个命令
- Stanford机器学习课程笔记3-学习理论部分
- ABP理论学习之导航(Navigation)
- Linux学习笔记之目录的分类和意义
- 学习实用的技术