程序员怎样学数学:编程是小菜一碟(3)
When Are Exercises Useful?
练习有啥用处呢?
在做了几年的业余数学爱好者之后,你打算做更多的数学,甚至你从没碰过铅笔和纸.比如, 你会一直看到多项式,所以最后你会耳濡目染的做起多项式的运算.同样的,对数,根,超越数,和其他到处出现的基本数学原理.
我还是得到了一种感觉我要亲手做许多的练习题.我正在寻找一种能够跟着证明步骤的方法,比如使用一种"貌似可信的测试",如果他们的结果看上去或多或少是对的,然后我就会拍拍屁股过去了.但如果我看着的那个说明我从来没听说过,亦或看上去是错的或不可能的情况,我就会挖更多的东西了.
这很像读程序源代码,不是么?当你读某人的代码你不需要手动模拟整个程序状态;如果你知道计算过程大致会发生什么情形,你能理智简单检测出结果.举个例子,如果结果是个列表,他们返回一个标量,可能你会挖的更深一点.但正常情况下你能扫描源代码几乎是以你阅读英文文本的速度(有时仅仅是速度上),并且你自信你理解了全部状态,同时你也许会发现任何真正令你震惊的错误。
我认为那就是数学爱好者(数学家和真正的数学迷)怎样读数学论文的,或者任何包含了许多数学的旧论文.他们做了同样的分类检查,正如在你读代码的时候所做的,但是不只是这些,除非他们不想把作者的观点扳倒.
照那样说法,我还是偶尔做数学练习.如果那些(比如代数和线性代数)又不停的跑过来,然后我就开始做些练习去确定我是真正的理解她了.
但我要强调这点:不要让练习使你分心.如果一个练习(甚或是一篇特别的文章或章节)开始让你烦恼,那就暂时丢一边继续前进.该跑路就坚决跑路.让你的直觉引导你.你会学的更多,更快,你的信心也会随之增长.
这些怎样才能帮到我?
也许不是--不能立刻奏效.但确实能帮助提升你的逻辑推理能力;好比是在体育馆做练习,你整体的能力会提升如果你每天都做一点的话.
对我来说,我已经注意到一些我已经感兴趣的领域(包括人工智能,机器学习,自然语言处理,和模式识别)大量的使用到数学.如我已经挖的有点深度的领域,我已经发现他们使用的数学不再比我在中学的学到的数学还要更难;大部分来说仅仅是不同领域.不是更难了, 并且学习使我能写(或者是在我自己的代码里使用)神经网络,基因算法,贝页斯分类器,集群算法,图像识别,和其他时髦的东西能产生很酷的应用.我常向我的朋友显宝.
我已经渐渐意识到这点,当别人给我看一篇包含了数学符号的文章我不再像突然冒了一身冷汗:组合,微分,真值表,定列式,无限系列,等等.那些数学符号现在变得容易相处了,但(像编程语言的语法)一开始的话多少还是有点让人感到有些怪异.现在我能更好的理解了,当我一点不知道正在说什么时,也不再感到自己是个不懂数学的人了.因为我知道自己是能够弄明白的.