融合学科的大学教和学

随着机器辅助智能和机器辅助劳动的发展,以后,人类的吃饭问题(基本需求)是容易被满足的——躺着就可以吃饭,生下来就可以开始等死。例如,昨天我和心儿就说起来,以后你的身边都会有一个小助手,可以随时帮你完成各种计算,求解各种已经知道如何求解的题,但是,不会自己提出来合适的问题。比如说,只要问“2+3等于几”,就会给出来答案“5”,并且这样的问题在这个助手看起来并没有比“15的质因数是什么”更复杂。那么,这个时候,心儿的任务就是找到合适的问题来问,把一个问题分解成助手能够解决的问题来问。例如,针对什么样的情况来才真的来问前面的两个问题。也就是说,做有方向性的思考,做分解,做未知的问题和已知的问题的联系,才是人类要完成的事情。如果为了提出(新)问题和解决问题,那么,人类的学习到底怎么学?

今天,我们来主要关注大学,在这个背景下,怎么教和学。其实小学也一样需要考虑这个问题,一样要做翻天覆地的变化。不过,小学这个公众号已经有比较多的讨论。今天,我们主要集中在大学上。

面对的实际问题是不分学科的。一个实际问题的解决可能需要用到很多各不同的学科知识和思维方式、分析方法。于是,相应的学生的学习也应该没有学科的边界。当然,没准通过来自于多个学科的专家的合作,也可以解决很多问题。但是,让每一个学生都学成四不像(当然,这个四不像也可以实际上很像一个传统数学家、传统物理学家),也是很好的选择,具有很大的解决问题的潜力。再说,这些各自不同的四不像也可以合作起来提出和解决问题啊。

但是,四不像,并不是任意生长。要成为四不像,才需要更好地把握一般知识和技能和专业知识和技能的边界,以及这些边界的融合。也就是说,需要放弃把学科作为边界,要融合掉学科的边界(关于这个“融合掉”,一会回来这个主题),但是,要注意一般性知识技能和专业性知识技能的区别和融合。在展开这个讨论之前,先回到学科的边界和融合的问题。

每一个学科都关注自然和社会的一方面,用某个角度来观测和思考自然和社会。每一个学科都有自己的典型研究对象、典型问题、典型分析方法、典型思维方式,以及这个学科和世界以及其他学科的关系。我称这些东西为这个学科的大图景。当然,这个大图景是可以随着学科的发展而有所变化的。但是,没有一个学科特定的思维方式,也就是看待世界的角度,是不可能成为一个学科的。那么,当我们要来学习一个学科的时候,我们首先要把握的就是这个学科的大图景,把这个学科和其他学科,还有和这个世界的混沌状态(各个学科还没有分开的状态)区别开来。于是,学科的边界是非常有必要的,不分开学科就是永远沉浸于混沌之中。

可是,如果仅仅关注在各个学科里面,则,前面提到了,实际问题总是没有学科的限制的。你拿着一把把来自于各个学科的分开的刀子,来解剖世界这个牛,只有逼迫自己学会各种刀,或者组建一个很好的掌握各种刀子的团队才行。但是,在这样的团队里面,那个把问题分解成每一个不同的刀手能够解决的子问题的人就非常非常的重要。其他人都是刀子,都是“机器人助手”,而这个人,需要提出问题、分解问题的人,只能是“人”,具有高度创造性的人。至少迄今为止如此。将来是不是机器智能能够提高到这个程度,不知道。

于是,我们发现,尊重学科边界,学好各自的学习之外,还有一个融合多个学科的必要性。

这个时候,怎么办?简单粗暴的办法就是让每一个人都成为多学科的专家。例如物理学家就是这么悲催,或者幸运:我们当然要学好物理,但是自然界的语言是数学思维的语言也是数学(从思考到模型到计算都是数学),所以我们不得不具有水平相当过得去的数学;解析计算很多时候在实际问题中不够用另外把事物抽象成对象(拥有内部状态变量和外部接口)甚至把问题分解成每一个小小的步骤来完成也是物理学的典型思维方式,所以我们也不得不或者很自然地具有水平相当过得去的计算机科学;物理学还经常自以为自己是自然科学的老大,所以就经常思考一些基于具体科学但是超过具体科学的问题,甚至由于这种学科带来的傲慢(我从来没说这是坏事啊)不得不成为一个很好的传物理学的道的人。那,是不是真的就得要求没一个物理学家都得学会怎么多东西呢?或者反过来,要求每一个研究者,先成为一个物理学家呢?因此,简单粗暴的办法是真的不行的。

那么,能不能在不这么简单粗暴地要求一个学习者什么都学的条件下,还能够达到融合学科边界的效果呢?这就是需要要做好一般性知识技能和专业性知识技能的区别和融合。也就是说,把一部分知识和技能抽取出来当做人人都要学习的来自于多个学科的东西,把另一部分知识和技能当做领域专家才需要学习的东西,并且,在每一个阶段,不断地推进这个一般性和专业性的边界。这也是那个叫做“通识教育”的精神。于是,通识教育的第一步,就是按照一定的原则,把知识和技能分成一般性和专业性,以及相应的阶段。相应的阶段的意思是,例如在高中阶段大约这些知识和技能可以当做一般性的,而在大学本科阶段则更多的知识和技能可以当做一般性的,类似地在研究生、博士、终身学习的不同阶段有一个大概的一般性和专业性的边界。

那么,这样区分的原则是什么,谁来做这个区分,区分的结果大概怎样?这个原则又需要回到学科的边界和融合的问题,回到学科大图景。我先给出来一个区分完了的答案,一会再讨论区分的原则等其他问题:比较基础的学科的大图景属于早期层次的一般性技能,更加专门的学科的大图景属于稍微晚点的阶段的一般性技能;同时,任何的知识,如果不是为了体现一般性技能,则永远都属于专业性知识。

为什么这样来区分?前面提到了,具体如何用刀子,具体如何计算“2+3”都是有“机器辅助(可以实际上就是人)”帮你完成的,只有提出问题和拆分问题把问题转化成操作,才是真的需要具有创造性的人来完成的。因此,一个学习者真的需要理解的就是没把刀子的各自的特点,而且是深刻地体会到这个特点,也就是深刻地体会到每一个学科的大图景——研究什么对象、什么问题、如何分析、思考模式或者说学科精神,以及这个学科如何服务于其他学科和这个世界。从小学到博士的教育,都要帮助学习者体会好这个学科大图景。当然,没有具体研究工作、理论体系、具体知识当做媒介,学习者是不可能体会好这个学科的大图景的。因此,具体知识还需要按照如何体现学科大图景的方式来组织好。例如,在物理学里面要从做具体的实验中来学会用实验的方式来探索世界,甚至和数学将结合来体会如何运用数学结构来描述这个世界。具体的例子和具体的知识的选择万万种,但是,都是为了体现物理学的典型思维方式的。

每一个学科都需要这样来做好知识的重新梳理,一切围绕着学科大图景来组织。

顺便,更多的关于物理学的学科大图景、数学的学科大图景可以去翻翻“吴金闪的书们”上面的那些书——《系统科学》、《量子力学》、《教的更少》、《小学数学》。

一旦做好了这个不同层次的区分,有什么用?以此为基础,在学习的不同阶段,开展内容不同但是原则相同的通识教育。每一个阶段,我们都是为了学生更好地理解一系列学科的学科大图景,只不过所领会的大图景的层次可能不一样,所要求的学科可能不一样,所用的当做媒介的具体知识可能不一样,但是,原则和目的是一模一样的。

至于前面提到的问题,谁来做,就不好回答了。我在我所教过的所有的课程里面,都在做这个实践。我还在尽量地影响我周围的人来做这个实践。但是,真的,真个可能需要有组织地来实现,而不是通过我这个个人的经验和魅力。

更具体一点,我来举个例子:把这样的——以“学科大图景”为目标的通识教育——体系用于系统科学、物理学这个学科或者其中的一门课的建设。其实,用于其他学科和其他课程也是一样的。

首先,我们要把这两个学科的大图景精炼好。例如,系统科学就是用相互联系的视角去分析具有系统性的问题。具体的什么是相互联系的视角、什么是系统性的问题、这样来分析的话典型方法是什么,我就暂时不展开了,以后没准可以展开,或者请去看《系统科学导引》和《量子力学》。精练好了之后,我们把学科的知识和研究工作的例子,都围绕着这些典型对象、问题、分析方法、思维方式组织好。接着,我们再来看 ,其中的哪一些大图景和例子是可以并且值得放到前期来让学习者体会的,哪一些应该放在后期的。例如,我们会发现,力学的世界观(事物状态的描述、状态的变化、状态变化的原因)、用数学结构来描述世界(例如用矢量来描述位置和速度)、用实验来促进和检验思考这些物理学的大图景和相应的知识和例子,是值得并且能够在很早的阶段,例如小学就可以渗透的,时空观以及对时空观还有时空和物体状态的关系的思考没准需要稍微晚一点,高中或者大学。有了这样的对学科的大图景和知识的分析,才能够真的做好通识教育。于是,物理学这个学科的一部分大图景和知识就应该成为比较早起并且比较普适的学习内容,不管你将来想学什么学科。

顺便,通识教育不是肤浅教育,不是了解性教育,不是不需要思考只需要听故事的教育,而是不以具体学科的高深知识为目的,但是以必要的学科的大图景为目的的,为了学生来了解这些个学科而开设的,需要做大量的更加深刻的思考的教育。

有了内容上的梳理,实际课程的开设怎么办?这里,我的讨论主要集中在本科和以上阶段。在大学本科阶段,或者本科前两年,要做好普适性大的学科的通识教育,例如数学、物理学、学习方法、分析性阅读和写作、计算机科学(典型编程思想例如从现实到对象的抽象和过程变成的具体化步骤化思考、算法、具体编程实现的技能)等。注意,这个阶段的数学可能知识内容还是和现有的课程一样——微积分和矩阵,但是学习的目的不是这些知识而是数学学科的大图景。同样,物理没准也还是力学,但是目的不是Newton定律这些知识,而是物理学的学科大图景。

对于系统科学这样的交叉科学,就可以允许学生去选择来自于数学系的数学,来自于物理系的物理学。可以是数学专业的数学分析,也可以是给外专业的大学数学,让学生自己选,只要这些课程是为了理解数学的学科大图景的,仅仅在知识要求上不一样。可以是物理专业的力学,也可以是给外专业的大学物理,让学生自己选,只要这些课程是为了理解物理学的学科大图景的,仅仅在知识要求上不一样。

有了这个大约五六门以学科大图景为目标的普适基础课,有了学会学习和思考,有了分析性阅读和写作,有了计算机,就可以开设各自学科的学科核心课程和学科方向导论课。例如,物理学自己,也要在前面的基础上面开设类似于现在四大力学的学科核心基础课,同样也是强调学科大图景,只不过具体的知识和计算,可以稍微复杂一点点了而已。在系统科学而言,就需要开始《系统科学概论》这个层次的课程了。这样的学科核心基础课,也要按照通识课程的理念,主要为了帮助学习者体会学科大图景。在这个基础上的学科方向导论课,则可以在一个比较小的子领域内来做这个子领域的大图景——典型对象、问题、分析方法、思维方式、在整个学科甚至整个世界中的地位。

这个体系下面,各个专业,在普适基础课的基础上,只不过需要建设几门学科核心基础课,几门学科方向导论课。其课程数量是非常少的。但是,其实,建设任务是相当重的,一切需要围绕这各自阶段的学科大图景,重新来梳理和选择具体知识。

类似地,在研究生教育甚至终身学习阶段,一方面,在本身学科上,还需要有更深刻的例子来体现学科大图景;另一方面,可以考虑在其他学科上,也有一些对这些学科的大图景的了解。同时,随着研究工作的开展,在本身学科(或者其他学科)的具体知识和具体分析计算上,也会有更深刻的体会,从而促进更好地理解学科大图景。

这个帖子实在长又长,总结一下:学习每一个学科都要充分体会到这个学科的大图景搞清楚这个学科和其他学科的边界;但是,同时在清楚边界之后,要融合这些边界,还是通过以学科大图景为学习目标的方式;按照学科大图景的原则把学科和学科知识技能分成适合不同学习阶段的普适性基础课程、学科基础课程和学科方向导论课,开展真正的不肤浅的通识教育;学科教育也将变成各专业一起建设的普适性基础、极少量的学科核心基础课、一些学科方向导论课。

更进一步,实际上,课程都是一个没有必要有的概念,只要一堆紧密结合在一起的概念,通过概念之间的关系相互联系在一起,就可以了。

顺便,这样的把每一个东西做拆分,搞清楚这些东西各自的特点之后,重新在整合起来的思想,就是系统科学的思想。不是说,整体论比还原论高明,而是,拆分也就是还原,需要和整合,不断地分别展开和再次结合,交替进行。没有还原的整体论是伪科学,没有整合的还原论则会丧失方向,看不到大图景。先分开,则融合才是真融合,不分开就融合那就混沌。

因此,在这里,也再一次推荐人人都来学一学系统科学,例如通过我的《系统科学导引》课程或者教材。还推荐来学习一下我的《学会学习和思考》课程,或者书《教的更少,学得更多》

《系统科学导引》序——方福康

以下是方老师给《系统科学导引》写的序。非常值得看看,想想,有除了本书序之外的价值。提前拿出来跟大家分享。

《系统科学导引》序

方福康

看到吴金闪教授这本“系统科学导引”,明显地感觉到与众不同的地方:书名不叫导论,也没有用引言这一类标题,而是用了“导引”这样一种开放性的提法。这个提法明白地告诉读者,本书要通过学习引导你考虑一些系统科学的基本问题,告诉你在哪些科学知识的基础上去思考,如何去思考。从本书的内容和结构来看,很明显的存在着三条主线,即系统科学的发展进程以及其主要内容和成就,然后就是用去本书大量的篇幅论述作为一门科学其发展的理论基础,特别是数学和物理在建立一个理论体系中的作用,再者就是对如何进一步发展系统科学的思考。其实,这一部分发展系统科学的思想是贯穿全书的,因为“导引”的目的就是要引发读者的思考,特别是面对系统科学这一新兴学科所涉及的未知世界。

在一本篇幅有限的教材里,要完成这三项任务是困难的。这里显出吴金闪教授与众不同的地方,他志存高远,宣称要用最少的语言、用最核心的概念来阐明问题。这是一项挑战,考验的是吴金闪教授对系统科学这一学科产生和发展理解的深度,考验的是对于系统科学赖以发展的科学基本理论掌握的程度和高度概括的能力。当我们阅读其力学和量子力学的二章,可以明显地感到吴教授为实现他的诺言所做的努力。至于系统科学的展开和后续发展的内容,则由于这门学科发展的迅速,内容十分广泛,不同学者会有他本人的取向和偏爱,只要把系统科学的特点予以说明就可以了,尽管会具有浓厚的个人色彩。所以,对于吴金闪教授这本“导引”教材,如果仔细体会,无论对于系统科学发展的历程,发展这门学科所需要的理论储备以及如何去发展这门学科,都会受益匪浅,而对于初涉系统科学的青年学子来说,更是能启迪他们的思维,更快更好地进入到系统科学这一广阔的领域。

作为一篇序言,也是对应吴金闪教授“导引”二字的提法,下面,沿着序言中所提出的三个问题,提出一些看法,作为一种意见参与讨论,也可以算作序言的一个延伸部分。

(一)

在 2015 年北京大学的毕业典礼上,有一个著名的演讲,当时身为生命科学学院院长的饶毅教授,代表学校教师向毕业生致词。总共 1500 多字的讲话,获得了多次热烈的掌声。对于我这个读者来说,看重是演讲中的二句话,“从物理学来说,无机的原子逆热力学第二定律出现生物是奇迹”,“从生物学来说,按进化规律产生遗传信息指导组装人类是奇迹”。

一位生物学家,能够对科学的前沿作如此的概括,确实能使人感受到他的功力。实际上,所谈到的第一个奇迹涉及到的是现代系统科学实质性的开始。这里的要点是逆热力学第二定律的提法,当学者们认识到在逆热力学第二定律的后面,还存在着一幅崭新的画卷,此时一个新的科学世界的历程就开始了。在这里有二个学者是需要提到的,一位是 N. Wiener,他最早对逆热力学第二定律的世界有清晰的理念。他指出“我们所做的是在奔向无序的巨流中努力逆流而上,否则它将一切最终陷于热力学第二定律所描绘的平衡和同质的热寂之中……我们的主要使命就是建立起一块块具有秩序和体系的独立领地……我们只有全力奔跑,才能留在原地”[1] 。另一位要提到的学者是 I. Prigogine,他给出了逆热力学第二定律的物理内容和数学形式。这就是耗散结构理论。这个理论冲破了热力学第二定律的限制,指出对于开放系统,在远离平衡的条件下,能够形成一种相对稳定的结构,称之为耗散结构。Prigogine 先是用实验确切地在流体、化学反应二个系统中让世人看到了这个相对稳定的耗散结构。再者,他证明了在热平衡的线性区是不可能出现这种结构的,一定在远离平衡的非线性区,才会有相对稳定的,称之为耗散结构的出现。然后,在论证和讨论了耗散结构的各种性质特点之后,Prigogine 和他的 Brussels 学派,发展了一套数学理论,来定量地描述耗散结构形成的过程、性质和特点,并将其应用到各具体系统和领域,特别是出现了被称为奇迹的生物。耗散结构的出现,包括实验和他的理论体系,使得突破热力学第二定律的想法从议论变为科学。

在此之后到现在的 40 年间,无论从研究的领域,和理论计算的方法都有很大的发展。研究的领域,从最初 80 年代由 Science 提到的 7 个方向,发展到 21世纪初,由 Hoker 的归纳,有了 12 大门类,28 个学科领域,涵盖了生命、神经、人类学、社会、经济、军事、管理等一切方面。研究的方法,也从原初的数理方程,展开到应用计算机、网络、大数据等现代信息工具。面对着系统科学这样一个庞大的体系,包括这门学科的兴起、发展的历程、多种数学工具的运用、涵盖内容众多的学科体系、以及这门学科仍在迅猛发展的势头,要在一本篇幅有限的著作里,要诠释这样一件科学事件是不容易的。但在,吴金闪教授这部著作中,可以看到,他以自己独特的风格完成了一个很有特色的答案。

然而系统科学或复杂性研究目前的进展并不令人满意。虽然有众多研究领域的展开,在研究工具上,网络和计算机发挥了强大的威力,应用于各种具体系统也取得令人欣喜的结果,但是对复杂系统基本规律的探索并没有取得实质性的进展,各个研究领域,各种研究结果,还是停留在己有的理论基础上,只是在外延上获得发展和展开。像饶毅教授提出的生物学奇迹的探索,涉及到进化规律、遗传信息、组装人类这样一些实际上是复杂性研究核心理论问题的研究,并没有获得理论上的突破,还有待于系统科学的未来。

(二)

吴金闪教授这本“导引”著作的另一个显著特点是认认真真的讨论了系统科学所涉及的科学基础。系统科学作为 21 世纪的前沿学科,讨论的完全是一堆全新的复杂系统对象,从数理学科的角度来观察,是从未系统地处理过的。而从耗散结构理论开始,复杂系统的研究显然已经进入到了一个新的阶段,即用数理科学的工具和方法,来获得科学的定量化的结果。这样的研究,与早期的系统科学研究如一般系统论那样定性的讨论是完全不同,在这里需要的是实实在在的科学理论概念和处理实际问题的数理方法。因此在教学内容的选择上,既要照顾到在科学历史上那些行之有效,有成功经验的数理科学方法,又要适当地介绍,随着复杂性研究工作的进展,在近些年来新发展起来的工具和方法。这二方面都有丰富的内容,而要在一个篇幅有限的教材中完成这二项硬任务是考验吴教授的理论基础和学术功力。吴金闪教授没有迴避这个矛盾,他宣称要用最少的文字语言来介绍这些最经典的理论,而实际上他是很出色地完成了这个任务。在理论物理学的经典科学库存中,吴教授选择了力学、量子力学、和统计物理三门课程。其中量子力学是最能体现业务实力的,我们可以从吴金闪教授用最少语言的描述中,看看他是如何处理量子力学这门学科的。

量子力学作为微观世界的奠基之作,与相对论一起,被称为 20 世纪巅峰的成就,独领风骚达半个多世纪。但是量子力学的核心内容只不过是少数几条基本原理(常见的提法是 5 条基本原理)。正是在量子力学基本原理的基础上,搭起了处理各类微观客体运动规律的理论框架。不仅如此,在精妙的数学描述下,量子力学的基本内容获得了十分抽象而又十分精确的数学表述。由量子力学的物理内容所揭示的微观粒子的描述,不过是 Hilbert 空间中的一个矢量,或者说是在这个空间中所描述的一个状态,算子作用于矢量,引起状态的变化,而形成运动方程。Hilbert 空间中矢量的变换或描述状态的方式变换,构成了表象理论。用物理语言颇为费力的一些内容,在精巧的数学语言下变得简单、精确。这种深刻的物理思想和精巧的数字语言的结合,正是揭示物质运动基本规律最有力的工具。在吴金闪教授所写的有关量子力学的章节,可以看到他用最少的语言而做的最大的努力,竭力将量子力学的物理抽象和涉及的数学语言传递给读者。类似的,在力学这一部分,在极有限的篇幅中,不仅介绍了牛顿力学,而且要讲到分析力学。综观全书,吴金闪教授始终强调物理观念和数学思想的重要性。这样的强调不仅是为了继承,更是为了发展,为的是建立一个复杂系统所需要的理论,作好必要的理论储备。

(三)

创新,是一门学科成长、壮大、发展的根本之道。系统科学的发展需要创新,而且是不断创新。目前对系统科学最需要的,是对于复杂系统这个未知世界基本规律的掌握,并由此进一步建立起各种运算体系并解决具体课题。吴金闪教授的著作将创新的理念贯彻全书并指出了必须注意的要点,一是要具体化,另一项是联系、联系、再联系。对于具体系统的关注,各家会有所不同,但是总体上的目标是探索和发掘复杂系统这个未知世界的基本规律。

首先会想到的问题,是世间事物的运动形式和发展规律,不应该只停留在物理世界的物质和能量的理论框架内,特别是涉及生命、神经、人类、社会这样一群复杂系统或更确切的说是复杂适应系统。信息在系统演化和发展过程中的作用己十分明显和重要。所以在理论框架上,应该建立起一个物质、能量、信息的三元素世界,在这个更宽的框架内描述他们的状态,发掘其运动规律。但是在我们的科学宝库中,并没有现成的含有物质、能量、信息三元素世界的理论框架,物理学是 20 世纪影响较大的一门学科,涉及了微观领域的各个部门和高速运行的客体等。但是,在物理学中只讨论物质和能量,不涉及信息。另外一门专门讨论信息的学问——信息论,则是专门研究信息传递过程的,从信息源、信道,到信宿,讨论的是信息如何准确传递,如何解决抗干扰。在信息论中,也没有涉及物质和能量的相互关系。所以在现有的科学库存中,信息与物质没有现成的交集,更谈不到信息与物质相互作用的方式与内容。在这个领域内,无论是理论概念,或是计算方法,目前还没有形成被大家所公认的并可被大家接受的理论成果。

尽管信息与物质的相互作用其规律还没有被充分揭示,但已经有很多学者和实际工作者关注和讨论了信息的重要作用,并做出了许多有意义的启示,为进一步解决这个问题提供了准备。早期有生物学家汤佩松,后来钱学森、徐光宪也有过论述,周光召还提出了信息与物质的相互作用,在社会系统中会起主要的作用。之后,随着对信息的研究展开,徐光宪先生提出了人工信息量的概念,并进行了量值的初步的估算。不同于依靠生物自然进化而形成的自然信息量,人工信息量是指人类由于有了语言以后所生成的信息。徐先生的估算人类自然信息量的总量为10的35次方 bit 量级,而全球人工信息总量估算是 10的20 次方 bit 量级,且每年约以30%的速度增长[2]。徐先生的人工信息量的概念实际上是为人类建立了一套完全不同于生物自然进化而形成的信息系统,不妨称之为第二信息系统。这套建立在语言发展基礎上的人类所特有的第二信息系统,在人类的发展壮大和人类社会的形成和进步起到了决定性的作用。首先,由于语言的产生和第二信息系统的形成使人类与动物界彻底分离开来,逐步成为自然界的主宰[3,4]。然后,由于第二信息系统的不断发展与完善,并与物质生产、社会体制相互结合逐步完善,使得人类从一些弱小的种群,发展壮大成为强大的族群,直到形成社会和国家,成为在地球上目前最为强大的生命体。

信息与物质相互作用的重要性是清楚的,但是迄今为至还没有一个信息与物质相互作用关系的数学表述形式,需要作一些试探。遵循着达尔文所指出的语言对人类发展的关键作用,最近我们讨论了语言作为信息对人脑这类物质的发展过程。在实验数据的支持下,我们得到了这一类包含信息物质运动的数学表达形式,可以用一个非自治的动力方程来描述,其中信息与物质的相互作用是方程中含时间$t$的驱动项。这样的一个计算结果仅是一个单例。它虽然给出了信息与物质相互作用在这个具体问题中的表达式,但并不一定显示出是一种普适的形式,因为信息与物质相互作用是复杂的,存在多种表现形式,现在我们还未能窥测他的全貌。但无论如何,在这里我们找到了一种具体的信息与物质相互作用的数学表述形式及其所反映的科学内容,希望能成为一个好的开始,在探索复杂系统的基本规律上获得进步。

方福康
2018年4月

参考文献
[1] Norbert Wiener, I Am a Mathematician: The Later Life of a Prodigy, 1964, p.324.
[2] 徐光宪,化学分子信息量的计算和可见宇宙信息量的估,中国科学 B 辑:化学,2007年,第 37 卷, 第 4 期:313-31.
[3] 达尔文,《人类的由来》,第三章,1887.
[4] Martin A. Nowak,Evolutionary Dynamics,Harvard University Press,2006.

《系统科学导引》图书和MOOC课程上线了

经常听到“这是一个系统工程”,什么什么“是一个系统性问题”这样的说法,来形容某件事情或者某个东西比较复杂,有的时候也意味着这个事情或者这个东西应该用某种适合“系统性问题”的方式来解决。如果这个说法有意义,其实就要求我们就必须先有一些这样的解决方法。我们有吗?甚至,我们有什么样的问题是系统性问题的一个比较科学完整的说法或者定义吗?如果这些都没有,那么,当我们说什么什么是“系统工程”是“系统性问题”的时候,也就是“我们无能为力、问题太过复杂”的代名词。

作为科学家,我们显然不能满足于这样的代名词:系统科学就是实在太复杂的我们没有办法的研究对象的代名词。因此,《系统科学导引》MOOC课程和书的最主要的目的就是讨论什么是系统科学,系统科学有哪一些比较有自己学科特点的思维方式和分析方法,有哪一些有特点的研究实例。我们也稍微会回答一下,需要哪些数学物理的知识、思维方式和分析方法的基础。

本课程和书的基础是我在北京师范大学系统科学学院开设的“系统科学概论”和“系统科学数理基础”两门课。为了能够让学生体会到什么是系统科学,并且从欣赏研究实例和做练习中学会一些系统科学的思维方式和研究方法,我必须自己先有一个反映什么是系统科学的概念体系以及相应的研究实例的体系。这各课程和书就是这样一个不断地挑战我自己对系统科学的认知,不断地整理体系的所得到的一个结果,不能算是这个学科的一个完整的整理。经过前人的多年积累以及我自己七年的课程建设,本课程和书就是我抛出来一块“什么是系统科学”的砖,来引出来玉或者更多的砖。

系统科学就是具有系统特点的科学。那么,什么是科学,系统特点又指的是什么?这些就是本课程和书要通过具体研究工作的例子来回答的问题。除了对交叉科学和复杂性研究感兴趣的研究者、教师、学生,以及把物理数学学活的学习者,本课程和书还强烈推荐给对科学感兴趣的一般读者。相信我,你可以看懂的,前半部分“系统科学概论”,完全可以当做科学普及来看。

课程和书的特点:

  1. 从科学而不是哲学和数学的角度来讨论系统科学
    • 批判性思维、系联性思考、可重复性V.S.可证伪性的讨论
    • 科学(物理学、系统科学)和数学的关系
    • 赏析大量的具体科学研究工作来体现什么是系统科学
  2. 系统科学的思维方式和分析方法的提炼总结
    • 系联:从孤立到有联系,从直接到间接,从个体到整体
    • 分析与综合或者说还原论和整体论的结合
    • 交叉性:从具体问题中来,到具体问题中去,留下可能的一般性理论

资源列表:

感谢北京师范大学研究生院、北京师范大学系统科学学院对课程建设和图书出版的支持。感谢课程和图书的编辑们的付出。

从编程序看分析和综合,以及用于写作和做报告

最近,不得不来指导一下学生编程序。除了

  1. 给程序加执行参数(例如linux命令cp后面的文件名就是用来满足适于用任何文件的要求,例如ls后面的-a就是用来显示隐藏文件等等)来增加程序的功能而不是完成非常特定的功能,然后每次不得不去修改程序本身
  2. 运行参数包含测试功能的开关,这样测试起来简单
  3. 程序尽量要做到命令行下可执行,不要依赖于集成环境IDE,可以用makefile
  4. 变量名要有意义
  5. 程序要加上说明,看的出来每一行在做什么
  6. 合适的时候,做一下优化,例如用矩阵代替循环之类的
  7. 一般的编程,以及每一种语言,基本上都会有一些风格习惯,要稍微了解和遵循

这些基本的要求之外,最重要的是Divide and conquer的思想,也就是分解和综合的思想:把每一个程序分解成合适的步骤,每一步完成特定的功能。甚至在主程序这样的高等级程序里面,完全不应该有具体的计算,只能有每一段应该完成什么的流程;甚至在比较高级的功能性模块里面,也只能由每一段应该完成什么的流程;仅仅在最底层的程序里面才应该有具体计算,核心计算。也就是程序应该长成这样:

main{
   get some run-time parameters #meaning of every parameter
   to do task1 #what is this task, why it is needed here
   to do task2 #what is this task, why it is needed here
   to do task3 #what is this task, why it is needed here
   testcode #activated when the designated run-time parameter is called
   print results #to serve what purpose
}


task1(parameters){
   to do task11 #what is this task, why it is needed here
   to do task12 #what is this task, why it is needed here
   testcode #activated when the designated run-time parameter is called
   return something back to the calling program
}


task11(parameters){
   Realcode, core code #how this task is done
   testcode #activated when the designated run-time parameter is called
   return something back to the calling program
}

这样的程序,尽管初看起来,会云里雾里,发现,每个子程序都没有在干活啊,就是在调用下一级子程序,好像只有搞懂最底层的子程序,才能看懂这个上一级程序。但是,只要稍微习惯一下,改变一下思考问题的方式,就会发现,这样的程序比把核心程序和流程程序放在一起的,要好懂的多好懂的多。关键的思考问题的方式就是分析和综合,或者叫做Divide and conquer,或者WHWM分析方法(What,How,Why,Meaningful)。具体来说,就是,在看上一级程序例如主程序的时候,每一个子程序只要明白在完成什么功能,这个功能和当前程序的目的是什么关系,就行了。不需要取搞清楚子程序是怎么做的。也就是说,What(完成什么功能)是最主要的,然后是Meaningful(起到什么作用),How(怎么做的)和Why(为什么这样做,为什么做这个)是次要的。只有当真的需要的时候才进入下一级子程序,而且就算进入下一级子程序,还是一样,先搞清楚这个子程序下面的流程,也就是每个子子程序的功能以及它们和这个子程序的功能的关系,而不去管这些子子程序是怎么实现的,有没有更好的实现。当然,这样的阅读依赖于程序员的注释,因此,每一个功能模块,都要做好注释,完成什么功能。

记住:很多细节我们都可以不懂,只要我们懂得这个东西做了什么,在整体中起到什么作用。当然,如果我们真的想搞懂整个问题,那么,自然,底下的How和Why也是重要的。

这样来做还有什么好处呢?方便测试,方便协作。测试的时候,可以单独来针对特定的子程序,而且可以设定一个针对这个子程序具有精确解的情况来测试。协作的时候,每一个贡献者可以只管当前任务的细节,而不去管这个任务之上的子程序和之下的整合,当然,在把任务分解准确以后。

只要做好分解,不断地分解——每一次都只有流程直到不得不写下来核心程序,做好注释,做好测试,无论编程水平(例如语言包的熟悉程度、算法的创造性运用)本身多烂,都能够编出来好程序。

同样,写作和阅读的时候,也是如此:首先是整篇文章想说什么主要信息,为什么说这个;接着把整篇文章分解成一个一个的部分,每一部分说了什么主要信息和整篇文章的关系是什么;再接着,还可以把每一个部分再次分成一个一个的部分,每一步分说什么主要信息和它的上一层关系是什么。也就是在每一个层次上,问What和Meaningful的问题,然后依靠在下一层问What和Meaningful的问题来回答上一个层次的How和Why。

同样,做学术报告的时候,更加要如此:首先是整个报告想说什么,为什么说这个;接着,用什么例子或者结论来展开论证和表达这个主要信息,以及反过来,在介绍这些例子和结论的技术细节的之前一定要让你的听众明白,你为什么将这些例子和结论,它们和主要信息的关系是什么;然后,对每一个例子和结论,做同样的事情,先搞清楚需要用哪些进一步的细节来展开这些例子和结论,在具体进入这些进一步的细节的具体技术细节之前,能不能交代清楚这些细节和这些例子和结论的主要信息是什么关系。不断地重复这个分解的过程、明白起到对上一级的内容什么样的支撑作用、然后才是细节的展开。为什么要这样做?因为你的听众基本上不会一下就明白最底层的细节,每一次的封装都能够降低你的听众的记忆和信息处理负担。

当然,有的时候,这个层次会有交叉。这也是为什么要依靠概念地图——整体是层次结构,但是跨越层次的联系是最重要和核心的联系。这也是系统科学,物理学,或者说科学的核心思想之一——分析和综合。除了学习物理学、系统科学,你还可以通过练习编程来体会这个分析和综合,只要完成一个需要300行以上的程序,你就不得不体会到。任何语言都可以,但是,不要直接就是图形界面的例如VB之类的,试试C、Python、Java等,尤其是Java(接口,而不是具体程序)。

光电效应为什么能够证明光的粒子性

光电效应是一个非常著名和有历史意义的实验:在能够真实地用单光子做实验之前,这个实验就逼迫物理学家们用单粒子的视角来看光(当然,后来的进一步研究证明其实把光看成波也能够解释光电效应实验,只需要把电子的部分采用量子力学,可以Wikipedia “光电效应”)。那么,为什么是这样的呢?

这是光电效应的实验装置示意图。两片连着电源的金属板构成一个腔,光照到其中一片金属板上。当光的频率比较合适的时候,就可以测量到电流——意味着有电子从左边的金属板跑到了右边的金属板上。那么,这个电子是从哪里来的呢?这个电流的强度和电压的大小和方向、光的频率和强度有什么关系呢?这样的关系怎么理解呢?
实验发现,对于给定的金属,只有光的频率大于某个值的时候,才会有电流,不管用多强的光来照,也不管什么样的电压。也就是说,单纯改变光的强度或者电压的大小和方向,不会把没有电流的情形变成有电流的情形。如果我们按照经典波来理解光,则光的强度可以看作是介质上振动的幅度的大小。大的强度就意味着大幅度的振动,于是,就会使得电子更容易被从金属中打(激发)出来。为什么改变强度会不起作用呢?

接着,实验还发现,对于能够产生电流的光,如果我们改变电压的大小和方向,则存在着饱和电流和截止电压。饱和电流的意思就是无论我们从正面——也就是帮助电子从一个金属板跑到另一个金属板的情况——怎么加强电压,只要电压大到一定程度,则电流不再增加。在那之前,电流会一直增加。截止电压的意思是,如果我们反过来加电压,也就是阻碍电子从一个金属板跑到另一个,则当电压到达一定大小之后,电流消失。在那之前,电流会逐渐减小。也就是下图的效果。a,b,c对应着不同的光强度。我们先不管。我们仅仅盯住其中一条线来看,例如a。x轴最左边就是截止电压。y轴最上方就是饱和电流。

为什么会出现饱和电流和截止电压呢?饱和电流意味着从金属里面跑出来的电子已经完全都到达对面的金属上面去了,没有浪费。截止电压意味着从金属里面跑出来的电子一个都没有达到对边的金属上面,全都被电压(电场)阻碍了。也就是说,外加电压的改变,不会对跑出来的电子的数量有影响,仅仅改变的是电子是否容易到达对面。

这个时候,我们问,这个截止电压和什么东西有关系呢?给定金属的条件下,截止电压仅仅和光的频率有关系,和光照强度没有关系。实际上,改变光照强度的话,在给定金属和光的频率的条件下,仅仅会改变饱和电流,不能影响截止电压。于是,这个就更加说明了把光的强度看作是振动幅度的大小——这样就会更加容易把电子激发出来,是错的。

当然,正面的解释为什么需要把光子看作是一个个小球才能够理解这个现象是比较难的。不过,顺着这个光的小球的模型来解释这个现象倒是比较容易:光是一个个的小球,其本身的能量状态由其频率所决定,光的不同的强度对于给定频率的光来说表现为单位时间里面通过一个截面的这样的光小球的数量不一样;电子需要依靠从光子那里吸收的能量来从金属里面跑出来。于是,当单个光小球的能量不够让电子跑出来的时候,就没有电流产生。另外,就算小球的能量够,但是,如果加上反响的电压,则电子的能量在运动过程中会逐渐降低,因此,只要反向电压足够大,则其能量在到达另一片金属之前就消耗完毕,则不产生电流。这个足够大的反向电压就是截止电压。相应地,饱和电流的产生,则是因为给定光强度和光频率,单位时间能够产生的电子的总数就是定的,于是,增加正向电压的作用仅仅使得这些电子全都能够跑到另一片金属上,而不能增加跑出来的电子。当然,如果光的强度大,则单位时间内这样的光子多,于是跑出来的电子也会多,于是电流强度大。

这样,通过把光看作是一群小球,每个小球带着一份能量,就解释了光电效应现象,并且还发现,把光看做是介质的振动于是光的强度就是振动的幅度,不能解释光电现象(再一次强调,其实,可以的,只要把电子的运动部分量子话,也就是说,光子量子化电子经典、光经典电子量子化、光和电子都量子化,这三种方式,都可以解释光电效应,但是,光经典电子也经典,这样的模型不能解释光电效应)。

在构造前面的解释的过程中,我们用到了一点电压、电场、电流的知识,但是,更多的是实验和测量(尤其是考察其他因素都不变仅仅变化其中一个因素的时候的实验现象,作对比)、联系和对比、用数学和逻辑来构建想得通的想的明白的模型。很多时候,对科学现象的理解确实依赖于科学知识,但是,最根本的,我们需要的是去问一问为什么,去想一想是不是想得通。