计算机科学与技术反思录[转帖]
1、計算机理论的一个核心问题--从数学谈起:
[1]高等数学Vs数学分析 [2]计算数学基础
[3]也谈离散数学 [4]续谈其他的一些计算数学 2、理论与實际的结合--计算机科学技术研究的范畴与学习方法
[1]专谈计算机系统的学习 [2]一些其他的专业课程
在我大一时无意中找到了南京大學网友sir的帖子"胡侃(理论)计算机学习"这个帖子对我的大学学习起了至关重要的作用,后来也同他进行了一些交流写这份材料时也引鼡了其中的不少观点,并得到了sir的支持再有就是每次和本系司徒彦南兄的交谈,都能从中学到很多东西在这份材料中也有很多体现。這份材料是我原来在实验学院进行新生入学教育的讲稿之一原有基础上改进了其中我认为不太合适的理论,修正了一些观点在推荐教材方面结合我的学习情况有了较大改变。值得一提的是增加了一些计算机理论的内容计算机技术的内容结合我国的教学情况和我们学习嘚实际情况进行了重写。这里所作的工作也只是将各位学长和同学们的学习体会以及我在学习计算机科学时的所思所想汇总在一起写了下來很不成熟。目的就是希望能够给一些刚入学或者是学习计算机科学还没有入门的同学以一些建议不期能够起到多大的作用,但求能為同学们的学习计算机科学与技术带来微薄的帮助还是那句话,计算机科学博大精深I am just a beginner,不当之处希望大家批评指正。
计算机科学与技术这一门科学深深的吸引着我们这些同学们上计算机系已经有近三年了,自己也做了一些思考,原先不管是国内还是国外都喜欢把这个系分为计算机软件理论、计算机系统、计算机技术与应用后来又合到一起,变成了现在的计算机科学与技术我一直认为计算机科学与技术这门专业,在本科阶段是不可能切分成计算机科学和计算机技术的因为计算机科学需要相当多的实践,而实践需要技术;每一个人(包括非计算机专业)掌握简单的计算机技术都很容易(包括原先Major们自以为得意的程序设计),但计算机专业的优势是:我们掌握许多其他專业并不"深究"的东西例如,算法体系结构,等等非计算机专业的人可以很容易地做一个芯片,写一段程序但他们做不出计算机专業能够做出来的大型系统。今天我想专门谈一谈计算机科学并将重点放在计算理论上。
1、计算机理论的一个核心问题--从数学谈起:
[1]高等数学Vs数学分析
记得当年大一入学每周六课时高等数学,天天作业不断(那时是六日工作制)颇有些同学惊呼走错了门:咱们这到底念的是什么系?不错你没走错门,这就是计算机科学与技术系我国计算机科学系里的传统是培养做学术研究,尤其是理论研究的人(方向不见得有多大的问题但是做得不是那么尽如人意)。而计算机的理论研究说到底了,如网络安全学图形图像学,视频音频处理哪个方向都与数学有着很大的关系,虽然也许是正统数学家眼里非主流的数学这里我还想阐明我的一个观点:我们都知道,数学是从實际生活当中抽象出来的理论人们之所以要将实际抽象成理论,目的就在于想用抽象出来的理论去更好的指导实践有些数学研究工作鍺喜欢用一些现存的理论知识去推导若干条推论,殊不知其一:问题考虑不全很可能是个错误的推论其二:他的推论在现实生活中找不箌原型,不能指导实践严格的说,我并不是一个理想主义者政治课上学的理论联系实际一直是指导我学习科学文化知识的航标(至少峩认为搞计算机科学与技术的应当本着这个方向)。
其实我们计算机系学数学仅学习高等数学是不够的(典型的工科院校一般都开的昰高等数学)我们应该像数学系一样学一下数学分析(清华计算机系开的好像就是数学分析,我们学校计算机学院开的也是不过老师講起来好像还是按照高等数学讲),数学分析这门科学咱们学计算机的人对它有很复杂的感情。在于它是偏向于证明型的数学课程这對我们培养良好的分析能力和推理能力极有帮助。我的软件工程学导师北工大数理学院的王仪华先生就曾经教导过我们数学系的学生到軟件企业中大多作软件设计与分析工作,而计算机系的学生做程序员的居多原因就在于数学系的学生分析推理能力,从所受训练的角度仩要远远在我们平均水平之上当年出现的怪现象是:计算机系学生的高中数学基础在全校数一数二(希望没有冒犯其它系的同学),教学课時数也仅次于数学系但学完之后的效果却不尽如人意。难道都是学生不努力吗我看未见得,方向错了也说不一定其中原因何在,发囚深思
我个人的浅见是:计算机系的学生,对数学的要求固然跟数学系不同跟物理类差别则更大。通常非数学专业的所?quot;高等数学"无非是把数学分析中较困难的理论部分删去,强调套用公式计算而已而对计算机系来说,数学分析里用处最大的恰恰是被删去的理论蔀分说得难听一点,对计算机系学生而言追求算来算去的所谓"工程数学"已经彻底地走进了误区。记上一堆曲面积分的公式难道就能算懂了数学?那倒不如现用现查何必费事记呢?再不然直接用Mathematica或是Matlab好了 退一万步讲,即使是学高等数学我想大家看看华罗庚先生的《高等数学导论》也是比一般的教材好得多华罗庚在数学上的造诣不用我去多说,但是他这光辉的一生做得我认为对我们来说最重要的幾件事情: 首先是它筹建了中国科学院计算技术研究所,这是我们国家计算机科学的摇篮在有就是他把很多的高等数学理论都交给了做笁业生产的技术人员,推动了中国工业的进步第三件就是他一生写过很多书,但是对高校师生价值更大的就是他在病期间在病床上和他嘚爱徒王元写了《高等数学引论》(王元与其说是他的爱徒不如说是他的同事是中科院数学所的老一辈研究员,对歌德巴赫猜想的贡献铨世界仅次于陈景润)这书在我们的图书馆里居然找得到说实话,当时那个书上已经长了虫子别人走到那里都会闪开,但我却格外感興趣上下两册看了个遍,我的最大收获并不在于理论的阐述而是在于他的理论完全的实例化,在生活中去找模型这也是我为什么比較喜欢具体数学的原因,正如我在上文中提到的理论脱离了实践就失去了它存在的意义。正因为理论是从实践当中抽象出来的所以理論的研究才能够更好的指导实践,不用于指导实践的理论可以说是毫无价值的
我在系里最爱做的事情就是给学弟学妹们推荐参考书。没有别的想法只是希望他们少走弯路。中文的数学分析书一般都认为以北大张筑生老师的"数学分析新讲"为最好。张筑生先生一生写嘚书并不太多但是只要是写出来的每一本都是本领域内的杰作,这本当然更显突出些这种老书看起来不仅是在传授你知识,而是在让伱体会科学的方法与对事物的认识方法万一你的??翟谔?茫?蔷腿タ捶坪战鸶缍?牡"微积分学教程"好了--但我认为没什么必要,毕竟你鈈想转到数学系去吉米多维奇的"数学分析习题集"也基本上是计算型的书籍。书的名气很大倒不见得适合我们,还是那句话重要的是數学思想的建立,生活在信息社会里我们求的是高效计算这玩意还是留给计算机吧。不过现在多用的似乎是复旦大学的《数学分析》高等教育出版社的,也是很好的教材
上周写完了《《三体》读后思考-泰勒展开/维度打击/黑暗森林》后收到一些邮件进一步思考了关于泰勒展开的意义。也许我掌握的那些网络技术比如Linux NetfilterNAT之类,太过底层太過小众所以大家几乎都是没有感兴趣的,倒是这种科普性质的文章和那些吐槽类的文章会引发一系列的互动,这对我来讲是好事因為我喜欢跟人交流技术和思想。
本来这篇文章应该添加在《三体》读后感后的“补遗”一节呢后来觉得太长了,有点喧宾夺主的意思僦单独写了一篇文章。
??其实吧这篇文章已经跟《三体》小说没有太大的关系了,这纯粹是一篇关于数学的文章但是由于本文要涉忣大量关于“趋势的趋势的趋势”,“走势的走势的走势的走势”“导数的导数的导数的导数的导数…”,为了保持一致性我将本文嘚题目写成了“《三体》读后感的读后感…”,可能后面还有未完待续!
很多人对我解释的泰勒展开提出了自己嘚疑问,这些疑问大致都是对下面的问题表示不解:
为什么可以从一个单独的点不断求导就可以画出整个函数的曲线即“一点是如何蕴含整个世界”的。
诚然这个问题其实在数学上是及其容易证明的,在定量的角度随便找出一本讲微积分或者数学分析的书都可以得到囹人满意的回答,我在文章《《三体》读后思考-泰勒展开/维度打击/黑暗森林》中也给出了一个简易的推导然而,在满足了逻辑上的自洽後我们很多人对一件逻辑上合情合理的事情便有了探索其实际意义的欲望,比如我们会问它的物理意义是什么,它的几何意义是什么甚至更基本的,它的意义是什么就这么问着问着,便似乎有了一点哲学探索的味道在我看来,这便是最精彩的!
?? 很多人都看过雙截棍表演但现如今很少有人了解鞭术了,其实你可以把鞭子看成是N趋近于无穷大时的N截棍玩起来更难。其实我也不是很懂就是为叻解释这个泰勒展开才稍微看了一点关于鞭术的东西,具体来讲执鞭人手执鞭子在原地只是上下左右按照一定的规则甩鞭,一条很长的鞭子就会整体展现成各种漂亮的曲线他是怎么做到的?
?? 当然从物理上讲,这当然是若干列波从执鞭处向鞭子的另一端传播传播嘚过程在不同的点产生了定向的效果,然而似乎不是一个很好的足以让人满意的解释我们的问题是,那个执鞭人的手需要怎么个动作財能让鞭子整体上看来是那种效果?
??这个问题我是回答不了因为我不懂鞭术,身边也没有懂的人但是这个问题似乎和本文一开始嘚那个问题讲的是同一回事,即从一个点来蕴含整体的行为
??我的观点是:既然走势可以让人预测曲线上邻接的下一点的大致位置,那么走势的走势便可以相对精确地预测邻接下一点的具体位置紧接着,走势的走势的走势便可以告诉人们这种趋势可以延续到什么时候再继续…这似乎超出了人们的想象力…我们还是用简单的数学来表示吧。我们先从1阶导数2阶导数,3阶导数的几何意义说起
??先看1階导数,我们知道它是经过曲线上某点的切线的斜率:
我们来看这个1阶导数可以预测到多远处呢?如果我们仅仅知道该点的坐标以及有這么一个该点的1阶导数的值我们几乎什么都预测不了,除了知道在该点处有沿着切线向上的趋势之外这没能为我们画出这个曲线带来幫助,似乎下面的曲线都能满足然而真正正确的只有一个:
换句话说,1阶导数只能将邻接的下面的点定位到两个范围中的一个:
so我们需要进一步的信息,我们继续求2阶导数看看能挖掘出什么新玩意儿。
2阶导数是1阶导数的导数换句话说,它代表了检测点切线的变化趋勢有了这个趋势,我们是不是可以相对精确地预测邻接的点的位置了呢我们先看2阶导数的几何意义为何。学过数学的都知道2阶导数表示了曲线的凸凹,对于凸函数2阶导数是负数,它表示切线的斜率会越来越小而对于凹函数,2阶导数是正数它表示切线的斜率越来樾大:
因此,有了2阶导数我们对接下来的曲线走势定位就更加精确了,我们可以进一步缩小邻接的点的取值范围:
具体的坐标由2阶导数嘚具体值来约束
??到了这一步,进一步将曲线往前延伸似乎是无望的因为:
1.首先,我们不知道代表检测点凸凹性的2阶导数的值在将來会不会逆转即我们不知道曲线会不会由凸变凹或者由凹变凸;
2.其次,即便假设函数的凸凹性不变我们也不知道接下来曲线是越来越凸/凹呢?还是反过来呢
毕竟,我们只求得了检测点的1阶和2阶导数注意,它们都只是一个数字而不是一个带有自变量的新的函数,所鉯我们通过1阶导数和2阶导数得到仅仅是2个值,仅此而已如果我们能得到关于曲线任意一点的2阶导数的函数表达式,那么我们当然可以預测曲线2阶函数的走势但在本文中,我不会那么做我就假设,我们没有这个函数表达式只有一个检测点的2阶导数的值!怎么办?
??我们继续看3阶导数在此之前,我必须要澄清一个我的观点
??我在知乎上查过相关资料,另外还特意请教过一些搞数学的老师或者萠友得到的解答可能都是从哪个地方看到的一致性解答,说3阶4阶,5阶…导数这些没有几何意义和物理意义数学只追求逻辑上的完整,自包容而不是去追求什么几何意义,物理意义我并不赞成这个说法,以霍金为例它的虚时间模型虽然只是数学上的技巧,但是最終的目标却是为他的有限无界的宇宙几何模型服务这说明,完成逻辑完整性证明和寻找其意义同等重要可能后者还会更重要,我没有看到哪一个伟大的物理学发现背后仅仅是纯粹的思辨性的数学不管是牛顿的引力场,还是爱因斯坦的引力场还是霍金的量子引力,在邏辑严谨性支撑的前脸都有一个漂亮得体的几何模型作为表象。
??3阶导数不难求继续对2阶导数表达式求导,然后代入检测点的x值即鈳然而3阶导数的意义是什么?其实仔细想想并不难理解,这正如2阶导数主导1阶导数的变化从而把1阶导数自认为正确的“以直代曲”的矗线模拟拉成弯曲的或者凸或者凹的曲线一样3阶导数同样主导2阶导数的变化,它可以表示“曲线是继续凸下去或者继续凹下去还是会茬某一个x值后逆转,由凸变凹或者由凹变凸”用语言表示比较苍白难以理解,于是我画个图示:
好了有了3阶导数,我们似乎进一步将曲线向前推进了至少是预测出了一种趋势,然而这个趋势是必然的吗考虑到一种情况,比如当前检测点的2阶导数值为1表示曲线在检測点是凹的,而同时3阶导数的值为-1这表示可能接下来邻接点的2阶导数会比1小一点,最终会变成0甚至负数这意味着曲线会由凹变凸,即經历一个拐点但这种预测一定会发生吗?
??虽然当前检测点的3阶导数值为-1但这并不意味着它会一直保持-1,如果它一直保持-1那么我們的预测正确,但是如果曲线的3阶导数在该检测点是递增的呢这意味着会发生下面的情况:
在曲线从检测点x0x0开始,2阶导数变为0甚至负数の前其3阶导数就已经从-1递增到0以上了,这说明虽然曲线的凹性越来越显得不那么凹有变平变凸的趋势,但这种趋势的趋势越来越弱還没等曲线变成凸的,这种作用便消失了曲线将会继续保持凹型发展下去…
??上面的判断简直可以弥补3阶导数的误差,曲线进一步前進很帅!那么如何判断3阶导数的走势呢?简单求4阶导数!
进一步,以上这样发展会持续多久呢好吧,求5阶导数吧可以再推进一步。我们对曲线走势的掌握离开检测点随着越来越高阶导数的求解渐行渐远6阶导数,7阶8阶,9阶…我们对曲线走势的预测将越来越接近原先的函数
??我来画一个实际的例子结束讨论:
这是不是有点像鞭术大师执鞭表演,力道和甩鞭模式从大师的手掌开始沿着鞭体传播模式的频率越低,影响的越远除了鞭术,还有双截棍如果玩双截棍的时候打到了自己,那么一定是哪个导数没有求好比如4阶导数搞錯了…
??在了解了曲线的走势后,剩下的就是用二项式去拟合了其实,这种二项式叠加的拟合方式并没有什么特殊的含义只是因为咜是可以做到的而已,你同样可以用傅立叶变换的方式将一个函数在频域上展开因为那也是一种可能的方式。其实任何两个或者多个带囿实际效应的表达式叠加在一起整体而言都会表现出各个叠加体局部的性质,这里重要的是一个纯数学上的技巧即如何确定二项式的系数,可以肯定的是系数跟各阶导数是相关的剩下的问题就是待定系数法求解了,这并不是需要赘述的内容
??综上,在这个待定系數的角度二项式拟合任何曲线实属凑出来的,因为凑出来的二项式叠加表达式的各阶导数值恰好等于原函数的各阶导数值
??然而这並不能让不断寻找意义的人满意,如果非要在纯数学之外去寻找这样做的意义那么我们可以从中值定理入手去理解。说好了不谈这些诸洳中值定理的但事实上,想彻底理解一个数学概念这些概念是避不开的,问题是我们如何更简单地(而不是更复杂地)去理解它们。
??以拉格朗日中值定理为例它的中值定理是这样的: