整本《集异璧之大成》一共分成上下两篇,上篇是集异壁GEB,而下篇是异集璧EGB。这两个不同的名字来自哪里呢?来自于侯世达专门为这本书设计的一个 logo——木头雕刻的立方体,上面是G、E、B三个大写字母三合一:也就是说这个木雕立方体的每一个面都是一个大写的G、E、B字母。这个图标出现在书本的封面,也有专门的一副摄影图。侯世达做了两个这样的模型然后用光线打在这两个木雕上面,光线透过两个木雕的缝隙,分别从对角的两面墙上面映射出来。从图里面可以看到,三维空间内分别出现了两串字母,最后聚焦在位于木雕正下方的大写字母“B”上面——左边是GEB,而另一边是EGB。
而实际上这两串字母的意义并不仅仅只有这些,因为这两者同时也是这本书主题和副标题的首字母缩写:GEB 自然是 Gödel(哥德尔),Escher(艾舍尔),Bach(巴赫)三位名字的首字母缩写;EGB 则是副标题:“anEternalGoldemBraid.”(一条永恒的黄金辫带)这句话的首字母缩写。在这本书的前言里面有提到过,“Braid”这个英文多义词在这里不仅具有着双关语的意义,同时也作为数学名词暗示了“GEB”和“EGB”这三个首字母大写在正题和副题上的次序对应。这个照应关系也暗喻了这本书本身的写作形式以及表述内容在诸多形式当中所表现出的对应关系。
这个标题本身也为了表现了这本书论述的一个核心主题——“自指”。(这本书的标题自身就是自指的,而正副题首字母缩写的对应也暗示了书中关于“递归结构”的内容)。不用担心这是过度解读,因为作者在前言里面已经试图提醒读者自己试图表达的东西了。
这篇对话的标题《前奏曲》取自巴赫作品集《平均律钢琴曲集》的曲目标题——《前奏曲和赋格》,从题目上可以看出来,这篇对话并没有结束,它和后面一篇对话《蚂蚁赋格》是连着的(至少剧情上和形式上就是连着的,至于内容之间的关联,可以尝试把两篇对话连起来看)。在这篇对话里引入了一个新的人物——食蚁兽,这些对话篇章的风格就和爱丽丝漫游仙境一样,除了阿基里斯和乌龟等几个主要人物之外,会有形形色色的各色怪异人物登场丰富对话场景的内容。
这一篇的内容就如标题所说——前奏曲,它是一个引子,为后面的篇章将要引入的论题铺垫一下。这一片对话主要探讨的内容是在前面曾今提到过的“层次”问题,这个问题可以涉及到方方面面。不论是事物、系统、规则、理论等等,它们都具有着“层次”,同时它们自身也可以作为穿越“层次”的通道,利用它们帮助解构和穿越其它事物的“层次”。最重要的问题有两个(而且看起来有些矛盾):其一:如果要观察事物的“层次”那么到底存在有多少中间层次?(是否会像递归那样产生无穷回溯?那就是说中间有无限多个“层次”我们数不完。)
其二:或者说是否真的有这种层次存在?(各部分的总和是否等于一个整体?)
这两个问题的探讨为后面一个篇章的主题——整体论与简化论之争作下了重要的铺垫。
按照惯例,在每一篇相关的对话形式上,侯世达都非常精巧的尝试模仿巴赫的音乐作品,而这一篇对话所以引用的巴赫作品来头不小。几乎大部分人都听说过“十二平均律”,这个说法其实具有两重含义,第一重含义是指乐理当中关于调律的“十二平均律”。第二重含义是指音乐作品集,其中大部分时候所指的就是巴赫的《平均律钢琴曲集》(实际上类似的作品不止巴赫一个人写过,前苏联组曲家肖斯塔科维奇也写过一套,但是巴赫的作品毫无疑问是影响力最大的,任何一个学过钢琴的人都必然会学到巴赫的平均律钢琴曲集。)
人们常常会把这两者之间的关系混淆起来,虽然这两重含义之间也确实存在着非常紧密的关联。十二平均律的早在14世纪就已经被人们发现了,但一直到18世纪,音乐技法的大规模发展;尤其是转调的发展和调性范围的普遍扩大,人们才开始把平均律运用到各种键盘乐器当中去(使用键盘乐器的器乐曲和声乐曲也同样需要)。巴赫在1722年创作的《平均律钢琴曲集》第一卷的时候运用到了全部的大小调来创作前奏曲和赋格,显然是为了用实践证明平均律的优点。
当然现在的研究又有了新的认知,有学者相信巴赫使用的是一种还不是很确定的“优质平均律”来创作,而不是我们现在所知道的十二平均律,由于巴赫的作品使用了全部大小调并且可以自由的转换12个大小调,所以被后世误以为巴赫使用的是十二平均律。这个问题目前来说还没有定论(后面会稍微详细说一下),而且对于普通非专业的人来说这个问题可能不是太重要。但是关于这个后面会提到为什么音乐专家们会比较专注这个问题,那是因为和普通人比起来音乐学家们看待问题的“层次”是不同的(比如同音异名的情况下,普通人听着觉得一样,而音乐专家则会因为不同的音名而听出不同的调来)。——这和后面要讨论的主题很有关系。
如果要问巴赫的这部作品有多大的影响力的话,看看音乐界给这部作品的称号就知道了。巴赫的《平均律钢琴曲集》被誉为音乐界的《圣经·旧约全书》,而《新约全书》则是贝多芬的《三十二首钢琴奏鸣曲集》。
《平均律钢琴曲集》一共有两卷,第一卷作于1722年,供“有意学习弹奏的青年用,也可供已学会弹奏的人自娱用。”第二卷作于1744年。前者是为了实践“平均律”在实际音乐作品中的运用。后者则是编纂多于创作。有些乐曲以前是用别的调演奏的,有些则像是改编曲。这部作品集的名字应该是受到J·K·F·费舍尔在1700年出版的《阿里阿德涅新风琴音乐》的二十四首前奏曲与赋格的影响。
这部作品完全是为了键盘乐器所创作,原文中“Clavier”为键盘弦乐器的总称,可以是羽管键琴、也可以是楔槌键琴。(今天大多是用钢琴来演奏,巴赫那个时代钢琴还没有被发明出来,键盘乐器主要是管风琴、羽管键琴、楔槌键琴)。
要说到数学和音乐之间的关联有多么紧密,那么来看看乐理就会一目了然。乐理当中所体现出来的数学魅力有可能会让数学家们都为之惊叹(所以很多数学大师或者热爱数学的人,也许会对音乐有一种深层次的感受能力)。
音乐中的律学是音乐理论中最重要的一部分,因为它几乎等同于音乐的根基。调律帮助我们把音乐组织起来,并且确定了乐音和噪音的差别(最主要是音高、音分、音差、音频,这些数据在通过计算调律时获得,对于音乐来说是非常重要的)。没有了调律可能世界上就不存在音乐了。——所以可以尝试把调律看成一种形式系统。(比如生律就是推导规则、基础音是公理,后续推导出来的音则是定理。这么看比较符合这本书的基调~~笑)。
实际上除了乐律之外,要举出数学和音乐之间关联的例子还有很多:比如说欧几里得最早提出的——辗转相除法,这个在数学上最早使用来求得最大公约数的,后来被引用到更多的数学领域。而在音乐当中,辗转相除法可以用来生成所有传统音乐当中的节奏。
音乐当中目前主要使用的音律有:纯律、五度相生律、十二平均律三种体系。但除此之外还有一些比较特殊的,中国音乐有自己特有的十二律(三分损益律)。巴洛克时期出现过一种混搭的“平均律”(Well Temperament)和与之相对的中庸律(中庸全音律)。
这里按照时间的发展来说说这些音律系统的诞生,首先根据时间上来说,最早诞生的三种音律分别是纯律、五度相生律和中国的三分损益律(十二律)。前两者据说诞生自希腊先哲时代,又毕达哥拉毕达哥拉斯学派整理归纳出来(这个学派相信数学是万物之本,这里就可以看得出来音乐和数学之间的关系有多么紧密了)。
在根据物理规律建立起来的体系(比如说毕达哥拉斯体系)中,音程和弦线的依次分段振动是完全一致的。可以说纯律是按照纯正的“自然”音程确定的,它通过大三度和纯五度的组合变化来确定音阶中各个音的音高。在这种音阶中,主音和其它音的关系都是纯音程关系。理论上可由人声演唱或由弓弦乐器演奏,人耳听起来效果显得非常和谐。但是纯律并不能适用于固定音高或有限键盘的乐器。
纯律的原理是:按照大三和弦关系,依次产生音序(五音、七音、十二音)的生律方式。比如说:纯五度加大三度组成大七度;纯五度减去大三度组成小三度。(关于音程的内容在前面的笔记里已经详细说过了,这里就不过多赘述了)。
纯律中任何两个音的频率都成整数比,它生成的十二音可以得到这样一个数列:“1、16/15(或256/243)、9/8、6/5(或32/27)、5/4(或81/64)、4/3、7/5(或45/32、64/45)、3/2、8/5(或128/81)、5/3(或27/16)、7/4(或16/9)、15/8(或243/128)、2”(这些比值是后续音的音频和基准音音频的比值)
如果把中间这些分数换成小数,我们会发现这些数字都有着相当的规律——从1开始,后面的数字在小数点后面逐渐的增大,而且很有规律,一直到变成数字2,数列结束。(这个对于现在的普通人来说可能感觉没什么了不起,但是对于那个时代的毕达哥拉斯学派来说,他们的发现就好比是天主教徒证明了上帝的存在一样,虽然只是从理论上,但这如何不让他们欣喜若狂呢)。
与纯律差不多同一时间诞生的还有五度相生律,它同样诞生自毕达哥拉斯学派的整理和研究(目前学术上的假定),同时五度相生律的诞生也可能和弦乐器的应用实践有关系。
五度相生律和纯律都是基于自然泛音音程诞生出来的,但是五度相生律和纯律产生的音阶有着细微的差异。纯律的原理如上所说,而五度相生律正如其名,其原理是:按照自然泛音的纯五度关系依次产生音序(五音、七音、十二音)的生律方式:
“取一基准音,在此以C为例,将其频率f乘上3/2,即升高完全五度得下一音G。
再将G升高完全五度得下一音D,此时D之频为(3f/2)*(3/2)=9f/4,高于原基准音之倍频,故将其除二,即降八度得9f/8。
再将D升高完全五度得下一音A,此时A之频为(9f/8)*(3/2)=27f/16。
再将A升高完全五度得下一音E,此时E之频为(27f/16)*(3/2)=81f/32,高于原基准音之倍频,故将其降八度得81f/64。
再将E升高完全五度得下一音B,此时B之频为(81f/64)*(3/2)=243f/128。
假设有一音升高完全五度再降八度后为基准音C,可得此音之频为4f/3,此即为F。
——摘自维基百科”
我们同样来看看五度相生律得到的七声音阶和基准音频的比值:
“1、9/8、81/64、4/3、3/2、27/16、243/128、2”这个数列似乎包含在上面纯律的那个数列里面——括号里面,可以说五度相生律是纯律的一部分。(两种音律基于同样的自然泛音)。纯律的五度音和五度相生律是一样的,但是在三度音上面有很大差别,大三度音程偏小,小三度音程偏大,即大调的第三级音明显偏低,这种现象在铜管乐器上有很明显的体现。
实际上五度相生律在中国也有出现,比如很有名的曾侯乙编钟当中就发现了五度相生律的影子,因为在曾侯乙编钟当中的音高生成规律是符合五度相生律的。(过去一直认为中国的音律一直只有三分损益律,而现在看来似乎同时存在两种音律——但是中国音乐史的内容由于各种原因,现在很多都很难一下子说清楚……唉)。
在中国传统音乐当中,三分损益律(也可以叫十二律)一直是非常重要的,它不仅仅在音乐方面起着很重要的作用,甚至影响到了历法的定制。三分损益律是中国传统音乐主要使用的音律,后来随着历史变迁,逐渐的传入到了其他东南亚国家:如朝鲜、日本、越南等地。中文当中十二律的“律”本来是指用来定音的竹管,古人用12各不同长度的竹管,吹出12个不同高度标准的音高,用以定出音节的高低,所以这十二个标准音高也就叫做十二律。这12根竹管的长度是以“三分损益法”来确定长度的,所以也把十二律叫做“三分损益律”。
“黄钟-大吕-太簇-夹钟-姑冼-仲吕-蕤宾-林钟-夷则-南吕-无射-应钟。”
我们知道阴阳学说在中国文化发展当中的影响力,十二律自然也受影响。古人把十二律分为阴阳两类:奇数六律为阳律叫做“六律”,偶数六律被叫做阴吕,成为六律,这两种分类合称为“律吕”。一般中国传统音乐中所说的六律是包括了阴阳各六律的十二律。
在司马迁的《史记》“律书第三”中写到:“……九九八十一以为宫。三分去一,五十四以为徵。三分益一,七十二以为商。三分去一,四十八以为羽。三分益一,六十四以为角。”
意思是取一根用来定音的竹管,长为81单位,定为“宫音”。然后将81乘上2/3,就得到54单位,定为“徵音”。将徵音的竹管长度54乘上4/3,得到72单位,定为“商音”。将商音72乘2/3,得48单位,为“羽音”。羽音48乘4/3,得64单位,为“角音”。而这宫、商、角、徵、羽五个音高,被称为中国的五音。
中国音乐中用来定音律的“三分损益法”的确立是考“中声”而量之以制。儒家的“中声”指音高、速度适中的有节制的音乐,“琴瑟尚宫,锺尚羽,石尚角,匏竹利制,大不逾宫,细不过羽”[1],要舍却弹奏中的“烦手”(复杂多变)。《左传》有鲜明排斥过度追求音响、速度变化的“淫声”、以能使人保持平和“中声”为美的思想[2]。 “毕氏学派”中的“五度相生律”与三分损益法相似,但是五度相生律不考虑生律次数误差,使得各调的五声缺少了三分损益法高度符合人声的精髓。同时还把间音4和7笼统地和五声等同视之进行生律转调,造成整个音程关系的混乱,产生误差。
前面说过,十二律的影响不仅仅只在音乐方面,由于十二律的数字十二,于古代历法确定一年中的月份十二正好一样。于是上古时代人们把十二律和月份联系起来,叫做:十二月律。依照《礼礼记·月令》上的文献记载,对应如下:
孟春之月,律中太簇;
仲春之月,律中夹钟;
季春之月,律中姑洗;
孟夏之月,律中仲吕;
仲夏之月,律中蕤宾;
季夏之月,律中林钟;
孟秋之月,律中夷则;
仲秋之月,律中南吕;
季秋之月,律中无射;
孟冬之月,律中应钟;
仲冬之月,律中黄钟;
季冬之月,律中大吕。
十二这个数字在中国古代具有着特殊的意义,中国古代使用天干地支,以六十年为一甲子(一个周期),而60当中包含有12这个公约数(一共包含的公约数有:2、3、4、5、6、10、12、15、30、60等)注意当中的数字,五行学说的系统也是以数理为契机和天干地支系统融合起来的(最早这两个学说是分开来的,后来被合并了起来)。所以不同时期规律出现的天象,会在60年内集中重复,这些看似奇异的现象实际上是可以用数理逻辑解释清楚的。
这里插句嘴多说一些:之前笔记当中提到形式系统和阴阳八卦的连接的时候,马上就有人说这玩意说的太玄乎。很可惜的是,实际上最早时候的阴阳八卦、相数、易理的研究,这些学说实际上都是上古时代中国科学发展的启蒙。很可惜由于历史原因——“罢黜百家独尊儒术”之后开始,儒学占了统治地位。以儒学“以人为本”的核心观念,这些其它的学问很难得到发展。最后都渐渐式微,或者被融合到儒家当中去。相数易理的研究还有天文星占等等,这些学科原本是对于大自然的研究探索,但是被儒学所迫不得不转而把目光专注于人文社会方面,久而久之得不到发展、糟粕丛生才变成了如今的面貌。尤其我们看到今天,基本上一谈到和这个相关的内容,基本上不外乎两个情况——要么往玄之又玄的方向上瞎扯、要么就是斥责为迷信愚昧一竿子全打死,一点也不接受。
继续回到音乐发展史来看看,随着乐器的逐步发展(不仅仅只有管弦乐器,键盘乐器开始出现和发展),音乐体裁的不断发展也包括音乐技巧的不断发展。已有的调律系统越来越不能满足与需求,尤其是到后来。半音的引用逐渐频繁,渐渐的不能与自然音律相适应,于是人们发展出了调律用来解决这一矛盾。
在文艺复兴后期一直到巴洛克时期,当时的人们尚未应用到十二平均律(虽然在理论上已经出现了)。当时为了满足需求主要有两类音律系统被使用,分别是中庸律和Well Tempermant(这个词目前没有比较好的译法,它是一类音律的总称,根据字面意思可以理解为“好律”、“完美调律”、“平均律”。巴赫的平均律钢琴曲集实际上可能采用的是这种音律系统而不是后来的十二平均律)。
大约是在1500年后,中庸全音律被普遍用来满足键盘乐器的应用,这个音律足以应付调式和声的正规和弦以及不超过两个升降号的调。它的发展是由前面的五度相生律作为基础的,比如说以五度相生律做个例子,取一个音E,按照五度相生律得到C-G-D-A-E,可是有一个问题,这样获得的E和C不协和。用其他的音作为底音生律的结果也是一样,一直存在不协和的音差在其中。为了解决这个问题,诞生了中庸全音律,简称中全律。
中全律的方式有很多种,比较普及的有四分之一音差中全律,这个方式被普遍应用于巴洛克时期前后的音乐当中。四分之一音差中全律为了确保大三度音程的和谐,把纯五度音程略为缩小,并且把大全音(8/9)和小全音(9/10)折中了。四分之一音差中全律的11个纯五度比纯正的纯五度少了1/4的普遍音差。(中庸律基本上全是这个方式只不过音差的比例有所不同),四分之一音差中全律的音程大小关系基本上和五度相生律正好是反着的。
除了四分之一音差中全律之外,1558年约瑟夫·扎利诺提出了另一个方式,把普通音差分为7份,纯五度减少2份音差的方法,获得了七分之二音差中全律,这个音律的大小三度都要比纯律的小1/7音差。弗朗西斯科·德·萨利纳斯在1577年记录了一个三分之一音差中全律,获得了小三度的协和。
中庸全音律在当时主要是为了刚开始大规模发展的键盘乐器服务的,然而随着发展,人们很快就意识到了中全律在应用上的缺陷:比如和弦中的大三度需要包含升G、升D或升A,的时候,就只好分用两个和弦作为权宜之计。在中全律当中如果变音记号较多,调子听起来就会不准。
中全律的思路其实为后面的十二平均律的应用铺垫下了基础,如果使用减少1/12最大音差的五度,就可以获得所有五度相等,这就等同于十二平均律了。
在中全律使用的同时,还有另外一种音律也在使用也就是目前还不明确的Well Temperament(也可以叫做“好律”)也就是巴赫创作平均律钢琴曲集的时候所采用的音律。这种音律可以任意转换12个大小调,所以被后世误以为是是十二平均律。目前知道的这类音律有两种:威克麦斯特音律和基恩贝格音律。
威克麦斯特音律:是德国管风琴演奏家兼音乐理论家安德鲁斯·威克麦斯特在1691年出版的《音乐音律论》上发表的。这种音律巧妙的混合了五度相生律的五度和略小于四分之一音差中全律的五度。虽然大三度比纯律略大,但在听觉上完全能接受。
基恩贝格音律是约翰·菲利普·基恩贝格发表的一种不规则音律。这种音律巧妙的混合五度相生律的五度和二分之一音差中全律的五度。获得的大三度与纯律相同,五度则接近平均律。
——摘自维基百科
以上这两个是其中的两个例子,实际上还存在着很多混用的调律。现代学者认为,由于十二平均律作为键盘乐器的标准调律是在1850年之后了,加上巴赫自己在谱子当中的暗示。当时巴赫创作的《平均律钢琴曲集》使用的应该是某种五度相生律和中庸全音律混合型的音律。(这么说来叫做平均律也不算错,因为这种混合调式追求的目的确实是想接近十二平均律)。
前面已经说过,十二平均律一直到1850年之后才作为键盘乐器的标准调律普及开来。而实际上十二平均律诞生的时间却要早得多,它最早在公元四百年左右,被数学发现并获得(说音乐诞生于数学不算过分,甚至于说艺术诞生于数学可能也是对的,想想绘画的各种比例,美学……)
十二平均律的这个平均律实际上应该是接近平均的调律,它的方法是把一个八度音平均分成十二分,每等分称为半音。音高八度在音的频率上正好是二倍频率。八度音的频率分为十二等分,也就是分为了十二个等比级数。在十二平均律当中,每个音的频率都是前一个音的2的12次根方。
公元400年左右,中国南朝数学家何承天提出世界历史上最早有记载的十二平均律数列 900 849 802 758 715 677 638 601 570 536 509.5 479 450(原文:……黄钟长九寸,太簇长八寸二厘,林钟长六寸一厘,应钟长四寸七分九厘强)。
意大利的物理学家伽利略·伽利莱的父亲伽利略·文森佐曾试图解决十二平均率问题,但他用的倍率是 18:17 而不是2的12次根方,因此自乘12次后只得 1.98556,不是2,八度走了音,他的系统只可算近似十二音阶平均律。
1605年荷兰数学家西蒙·斯特芬在一篇未完成的手稿“Van de Spiegheling der singconst”提出用二分之一的12次根方计算十二平均律,但因计算精度不够,他算出的弦长数字,有些偏离正确数字一至二单位之多。
——摘自维基百科
中国明代音乐家朱载堉于万历十二年(1584年)首次提出“新法密率”,他通过科学实验和精密计算,得出了以比率为2的12次根方将八度音等分为十二等分的算法,并制造出了十二平均律律管及律准,是世界上最早的十二平均律乐器,他用九九八十一位算盘计算出来的“新法密率”准确到小数点后25位。
16世纪末叶中外交通方兴未艾,1580年开始,明朝广东承宣布政使司每两年在广州举办一次为时数周的交易会,届时东西商人和传教士交流货物和思想;朱载堉刊行十二平均律学说之时,正值耶稣会意大利传教士利马窦来华之时,朱载堉的十二平均律学书,极有可能在此时通过传教士传向西方。事实上利马窦在其私人日记里提到朱载堉的历法新理论,利马窦本人又是精通天文学和数学,很可能知道朱载堉用2的12次根方来解决春分与夏至三个月之间的比率:无独有偶,利马窦还是法国位居高位的科学家马兰·梅森 (Pere Marin Mersenne)的朋友,他们有共同的学术兴趣,在他们交往过程中,利马窦必将朱载堉获得的2的12次根方=1.059463094359295264561825 传达给梅森。1638年梅森出版《和谐音概论》,书中在西方世界第一次出现1.059463 这个数字,在此之前西方无人知道这个数字。因此现今世界乐坛通行的十二平均律,其发明权非朱载堉莫属。十九世纪德国物理学家赫尔曼·冯·亥姆霍兹在所著的论音感一书中写道:‘中国有一位王子名叫载堉,力排众议,创导七声音阶。而将八度分成十二个半音的方法,也是这个富有天才和智巧的国家发明的’。
1890年布鲁塞尔皇家音乐博物馆馆长 Victor Charles Mahillon 按朱载堉十二平均律律管数据,复制了一套律管,经过测试之后,他写道:“关于乐管的管径,我们毫无所知,中国人比我们知道的多得多。我们按王子载堉的数据复制了一套律管,测试结果表明他的理论的准确性。”
——摘自中文维基百科;十二平均律词条
很可惜的是朱载堉的研究成果在自己的本土却未能见诸实行。他显然是历史上最先获得100音分的十二平均律;半世纪之后德国数学家Johann Faulhaber也获100音分。
17世纪的西方键盘乐器首先要求应用能为听觉所容忍的平均律,然后随着键盘乐器和音乐创作技法——特别是转调和调性范围的发展,键盘乐器开始对平均律产生实际需求。一直到1845年左右十二平均律才被引进英国,1850年成为键盘乐器的调律标准。(可见发展都是缓慢积累,然后逐步变化的,尤其是理论方面,这和之前笔记里说的关于数学概念的发展几乎一样)。
——关于音律的部分就说到这里吧,虽然笔者已经尽力去繁就简了,如果摊开来说,很可能这部分内容比GEB的整本书还厚(真的,不夸张)。
再来说说对话标题的“前奏曲”,前奏曲最早并不是作为一种单独的音乐体裁,而是作为一种其它音乐体裁的序幕性质的乐章。比如说组曲(几首短乐曲——主要是舞曲,拼起来的一种音乐体裁),音乐家往往会在演奏之前即兴演奏一小段。在15、16世纪为管风琴、琉特琴和维吉那琴写作的前奏曲均为即兴风格的自由曲。(在意大利,这类琉特琴被叫做“tastar”意为“触动”的意思)
在巴洛克时代,组曲当中的前奏曲沿袭了这一自由风格,当时路易·库勃兰写作的前奏曲原稿不标节奏,拉莫和亨德尔写作的羽管键琴集均有这一习惯。除此之外其他前奏曲作品则采用比较规则和扩展形式,比如巴赫的《英国组曲》。同时前奏曲经常也作为赋格曲的前奏,和赋格曲组合在一起演奏。最具代表性的自然是巴赫的《平均律钢琴曲集》。
后来到了浪漫主义时期,前奏曲这一音乐体裁渐渐的被独立了出来,成为了单独的音乐作品。肖邦写作《二十四首前奏曲》是其中的典型代表,虽然肖邦的前奏曲已经属于浪漫主义时期的音乐风格,然而其中依然可以看到巴赫音乐的影响(巴赫被人叫做音乐之父不是白叫的,据说肖邦每次演奏前都喜欢弹一段巴赫的音乐来活动手):比如都采用了单主题作法,整套作品用遍了二十四个大小调。到了后期,比如拉赫玛尼诺夫、德彪西以及肖斯塔科维奇他们的前奏曲作品,虽然不再使用相同的调性顺序,但是在大体的布局上基本相同。
除了演变成单独题材之外,前奏曲在另一个音乐体裁——歌剧当中也逐渐得到了广泛的应用。前奏曲在功能上可以代替歌剧的“序曲”,最早的时候前奏曲可以作为歌剧开幕之前的垫场,在歌剧开始之前演奏前奏曲为人们做宣传。到17世纪中期开始,作曲家们开始更多地写作前奏曲来代替序曲。因为前奏曲的音乐相对简短,音乐素材可以直接取自歌剧本身。功能上来说,前奏曲比歌剧序曲的泛用性更强——因为歌剧序曲必须作为第一幕之前的开场,不能用在其它地方(现在在器乐演奏会上则可以单独拿来做收场曲目,最经典的《地狱中的奥菲欧》,康康舞估计大家耳熟能详)。而前奏曲可以用在歌剧每一幕的开场之前,音乐素材也可以直接从后面的音乐里面直接拿来用,非常的方便。——相关的例子有很多,比如瓦格纳的《罗恩格林》、《特里斯坦与伊索尔德》以及威尔第的《茶花女》等。
对位法是音乐作曲当中(尤其是复调音乐最重要的)创作技法。
对位是指:两个或者两个以上独立声部在和谐的织体中的结合。各个声部在旋律和节奏上都有独立性,在节奏上的独立性尤为重要;但从另一个方面来说,没有旋律性格的节奏上的独立性也不足以构成对位。这是复调音乐风格的来源。对位法最早诞生在9世纪末,但当时的音乐中,既没有节奏独立性,也几乎没有任何旋律的独立性。一个声部中的各音由另一声部的单音伴唱,旋律线或全部平行,或在很多地方平行。(可以想象这种音乐对于现代的人来说,已经单调到可以催眠的程度了……)到了中世纪初,旋律和节奏相继独立,音乐开始逐渐完善。一直到13世纪,对位艺术趋于成熟。
对位当中要求两条或两条以上的旋律线的结合形成一系列相互连接的和弦。每个和弦中的各音之间的关系以及和弦与和弦之间的关系构成和声。因此对位与和声密不可分(当然,在现代的作曲课里面,这两个是分开来教的。更有甚者,在音乐理论的范畴里甚至把这两者对立了起来……);但是既然可以写出一系列和弦,其中每个声部在旋律上和节奏上都没有独立性,那么和声还是可以脱离对位法单独存在的。
另一方面和声的传统规律从历史上来说是对位的产物,亦即对位写作的某些规律造成了习见的和声关系,使它们定型而具有独立存在的意义。因此可以说,和声正是对位的结晶。
对位法主要有两种,分为严格对位和自由对位。历史上对位的大部分时间都是以严格对位为主,从13世纪以后的对位发展史不过是在一确立的原则基础上进一步发展。14世纪的时候,节奏上进一步的获得了自由(放弃了节奏调性);15实际时候模仿的应用越来越多(卡农就是典型的例子),一直到16世纪它成为了音乐创作中不可或缺的部分(对位法得到了系统化)。对位法一直到17世纪形成了赋格诞生的基础。到18世纪,调性(可以叫做调的关系;大小调、转调啥的)作为乐曲结构中必不可少的要素对对位法产生了影响,但是并没有减弱其基本原则。19世纪的音乐也基本如此,没有什么大的变化。到了现代,很多传统规则被打破,人们自然更加倾向于使用自由对位,不再依赖于传统和声,允许各个声部独立发展,这就创造了新的规则和新的关系。(虽说笔者自己对于现代音乐在一定程度上持保留意见)。
这里再插播一段:笔者作为音乐学徒所见,有一个特别有意思的现象。当然这个现象是泛指的,一些特例肯定存在。但是大体上来说似乎直接学习作曲的音乐学生会更倾向于现代音乐的规则和理论,而如果是先学的器乐然后转而进入作曲的音乐学生,则会更加偏向于传统的音乐规则和理论。——这挺有意思的。ps:笔者自己是个咸鱼,不够资格当例子23333。
这里详细介绍对位法,是因为,复调音乐的形成正是依赖于对位法的不断应用和发展。复调音乐(德语:Mehrstimmigkeit)意为:“多层次的音”,这正好就是这一章节以及为后面论题铺垫的绝好例子。这就是为什么巴赫会被侯世达选择拿来当例子,通过前面看到调律的发展以及对位法的介绍。我们发现音乐和数学、逻辑之间似乎有着天然的纽带(音乐形成的逻辑就一个——好听,但是这个好听就天然的符合了数学和逻辑的标准),这就是为什么巴赫虽然不是哲学家或者数学家,可是大家都喜欢把他拿到这方面来讨论。
按照复调音乐的讲法来看待这篇对话的话,这篇对话一共有四个“声部”——换个说法也就是这篇对话有四个角色。他们分别是:阿基里斯、乌龟、螃蟹和食蚁兽。对话开场非常简单,阿基里斯和乌龟经常一块出现,于是他们一起去拜访乌龟的好朋友螃蟹,然后螃蟹给阿基里斯和乌龟介绍了一位新朋友——食蚁兽。
螃蟹之前出场的重头戏就是关于它和乌龟争论关于“完美唱机”的事情,我们知道关于唱机的的争论是影射了哥德尔不完备性定理。而螃蟹和乌龟争论的代价是报废了好几台唱机——螃蟹倒是不往心里去……关于这个唱机的争论实际上在这篇对话里还有提及。
阿基里斯和乌龟一块去拜访了螃蟹,然后几句礼貌地客套之后,乌龟和阿基里斯拿出了上门拜访送给螃蟹的小礼物——两张唱片。螃蟹问乌龟这又是送给自己的“特殊小礼物”吗?看样子上次关于唱机的争论让螃蟹有了心理阴影。这里稍微回顾一下,在之前的一对话里,乌龟向阿基里斯提及了它和螃蟹关于完美唱机的争论(完美唱机是指可以播放出一切唱片的唱机)。乌龟为了反驳螃蟹,特别送了螃蟹几个特制的“唱片”。那些特质唱片一旦播放就会导致唱机自毁,这就支持了乌龟的理论——不存在完美唱机。
乌龟表示这次的这个唱片不是这么回事,它让阿基里斯给帮忙介绍一下这个唱片。可能是因为太复杂了,阿基里斯不得不拿个小纸片出来开始朗读(这里提一句,食蚁兽也在一边旁听以及参与讨论)。然后阿基里斯开始介绍,这个送给螃蟹的唱片来自于一个受人瞩目的数学结果——关于费马定理的证明。随后阿基里斯给在场的诸位科普了一下“费马定理”的问题(这里就先不想详细说了,留到后面单独说)。
阿基里斯说“费马定理”这么多年来一直都没有被完全证明,食蚁兽说:这就应该归类为“猜想”,而不而不叫“定理”。(类似哥德巴赫猜想)。而阿基里斯说,这个问题后来被乌龟给证明了。但是比较遗憾的是,阿基里斯把那个证明的纸给忘了。
乌龟表示:“可我觉得比结果本身更重要的是它直接导致的实际应用。”
而螃蟹却说:“我正盼着知道有什么应用呢,因为我一直觉得数论是数学的王后——数学中最纯的分支——数学中没有应用的一个分支!”(螃蟹的这句话来自高斯对数论的名言:“数学是科学的皇后,而数论是数学的皇后。”)
阿基里斯说乌龟这个对于费马定理的证明被实际应用在了音响恢复领域中,摈弃给取得了突破性的结果。然后食蚁兽问阿基里斯:什么是音响恢复领域?
阿基里斯告诉食蚁兽:“这个名称就解释了它的全部内容:从极其复杂的信息中恢复出音响信息。音响恢复的一项典型任务是,当一块石头投入湖水中之后,从湖面上散开的波纹中恢复出石头如水时的声音。”螃蟹说这是不可能的吧。
阿基里斯回答:“这很像一个人的大脑所做的事:当另一个人的声带发出某种声音后,这个人的耳鼓将振动传送到耳涡中的神经纤维,他的大脑就据此恢复出那种声音。”
螃蟹问阿基里斯,那么在这个工作当中,是怎么会涉及到数论的?阿基里斯告诉螃蟹,这其中涉及到一些丢番图方程的解(关于丢番图方程后面单独列出来说),乌龟这么多年来一直在做这个工作。食蚁兽觉得这是不可能的,声音都已经消散了怎么能找回来呢?阿基里斯反驳说,不知道的人才会这么觉得,而还原这些音乐的关键就在费马大定理当中。
简而言之,乌龟通过研究费马大定理发现了数学上形式与内容之间的关联性,这里引用一下原文的叙述:
“阿基里斯:刚才没说完,我说的是‘只要或者存在一个解,或者证明没有解!’于是,龟兄谨慎地开始了工作,从问题的两个方面同时入手。结果是,反例的发现是找出证明的关键组成部分,因此得到一个结果后直接就导致另一个结果。
乌龟:是这样:我指出了费马最后定理的任何一种证明——假如有这么个证明——其结构的组织可以用一个漂亮的公式描述,而这个公式凑巧有赖于某个方程的解的值。我惊异的发现后一个方程原来就是费马方程。这是形式与内容之间关系的一个有趣的巧合。所以我找到反例后,要做的不过是从这个数出发构造出那个方程没有解的证明。想想看,出奇的简单。我难以想象为什么以前从未有人发现这个结果。”
乌龟和阿基里斯的这一段介绍,可能一上来会看不懂。这一段叙述的内容实际上是影射了当年证明费马大定理的历史过程,这个定理一直到1995年才被完全证明出来。关于这段历史的内容会在后面详细讲述。
总之是借用这个原理,乌龟成功的完成了音响恢复领域的工作,然后从大气中获得了全套的巴赫《平均律钢琴曲集》刻录在两张唱片上面送给螃蟹(这里的音响恢复领域的玩意就不用太当回事了,就是接着这个说法来比喻费马定理的证明,就和前面用唱机比喻哥德尔不完备定理一个性质)。
然后螃蟹开始播放唱片,阿基里斯、乌龟、食蚁兽和螃蟹一边喝着茶吃着点心一边开始欣赏音乐。听着听着他们接着聊了下去——围绕着巴赫平均律。
螃蟹说自己有一份巴赫《平均律钢琴曲集》的总谱,是他的一位老师给它的,并且这位老师在这份谱子里用文字构成了许多复杂的插图。说着螃蟹就把这份总谱取了出来和大家一起看。
食蚁兽和阿基里斯这会还在认真的听音乐,然后食蚁兽指出:“你们注意没有,在这些曲子中前奏曲总是为继后的赋格恰到好处地确定了基调。”
然后螃蟹说:“是的。虽然很难用语言说清楚,那两个曲子之间的确总是有着某种微妙的关系。即使前奏曲与其赋格没有共同的旋律主题,仍然会有某种两者都具有的无形的抽象特性,把它们紧密的联在一起。”其实这种联系对于学过音乐或者乐理的人来说特别简单——因为前奏曲和赋格使用的是同一个大调或者小调。因为在调性这个层次上其实是一样的,所以在听觉上会觉得二者有某种说不出来的联系。
乌龟跟着赞叹:“前奏曲与赋格之间短暂的休止是极富于戏剧性的——在这里,单音的赋格主题即将奏出,稍后,这个主题与自己交织,形成越来越复杂的奇异优美的和声层次。”乌龟这里的一段描述其实值得注意一下,有必要强调的是,在之前第二篇笔记的时候就解释过关于赋格的结构:“主题的不同声部重复对位。”
按照书里面说的:赋格就是音乐主题的“自调用”——也就是“递归”生成的。一个单一的单声部音乐主题通过自我复制和稍微的变化,在不同的声部出现然后交织在一起构成一首完整而美妙精巧的赋格曲。——这个过程中侯世达应该是看出来了一点什么,从后面的内容看,侯世达认为这可以作为一个形式系统跨入智能的可能性的例子(当然关于这个看法仅限于侯世达当时写这本书的时候)。
之后螃蟹忽然开始感慨起来,它说自己似乎遗失了早年对于音乐美妙之处的热情,因为越来越熟悉之后,这种热情就消退了。不过这也有收获,随着热情地失去,螃蟹获得了对于音乐的深度,他发现了巴赫在《平均律钢琴曲集》音乐下面埋藏的美妙奇迹。阿基里斯说自己有和螃蟹类似的感受,他也失去了热情为此有些失落。螃蟹安慰他说不用担心,因为那种热情的痴迷不会真正消失。每当那热情快要消失的时候,就会因为发现了深度的美妙而重新唤起那种热情。
螃蟹是这样说的:“比如说通过另一个人的耳朵来听,对于这另一个人来说听这支曲子是一次全新的体验——比如说这另一个是你,阿基。兴趣不知怎么传了过来,我就又一次感到激动了。”
阿基里斯:“这可真有意思。那激动在你身体里休眠了,而你自己却无法从你的潜意识中把它勾出来。”
螃蟹说:“正是这样。在我的大脑结构中,那种激动的潜在的复苏以某种未知的方式‘编了码’,我无法随意唤醒它,必须等着偶然的环境来触发。”(这可以体现出欧美科学范畴内对于人体“机械论”的看法,很多领域的科学家,甚至于神经学、生物学等等领域的专家都习惯于把人的身体——包括大脑思维、心理机制以机械论来概括。笔者对此持反对意见——机械原理模仿我们的自然生理,而不是我们的自然生理去照着机械原理生长的,这种看法和认知完全本末倒置了)。
说到这里的时候阿基里斯问起了一个关于《平均律钢琴曲集》的问题,阿基里斯把这个问题比喻成类似于艾舍尔的《魔带和立方架》那幅版画所表现的——当你把那幅画里“魔带”上的部分当作“气泡”的时候,它却开始显得像“凹坑”,或者反之。
乌龟解释道:“……那些小泡泡总是随着你看它们的角度而在凸与凹之间变来变去。没办法把它们同时看成凸的和凹的——人的大脑不知怎么不允许那样。在人们看那些泡泡时,有两种互相排斥的方式。”
阿基里斯说他对于赋格的那个问题也类似这样:他没有办法一直听着一个声部或者从头到尾听和声的整体效果。总是一个声部听着听着变成了整体的和声效果,或者反过来听着整体的和声效果,但是其中的声部却越来越明显。——阿基里斯的这个问题就是这张要讨论的核心主题了。
听了阿基里斯的话,乌龟、螃蟹、食蚁兽纷纷发表了自己的看法:
乌龟:“……我发现我也是在两种方式之间换来换去,虽然并没有下意识地努力控制哪种方式应该占上风。我不知道在座的哪位是否也有类似的体验。”
螃蟹:“当然有。这是个很撩人的现象,这使你觉得那赋格的本质在你周围飘来飘去,你无法全都把握住,因为你不能让自己同时使用两个方式。”
食蚁兽:“赋格就是这么有趣,它的每个声部自身都是一首乐曲,因而一支赋格可以被当作同时演奏的、建立在同一个主题上的几支不同乐曲的总合。怎么听取决于听众(或他的下意识),或者当作一个整体,或者当作彼此独立并且彼此和谐的几个部分。”——这里的说法让笔者联想到了那些在网上流传很广的视觉误差图——有些被拿来当心理测试的例子(我们知道那是胡扯的2333)。
他们讨论的问题显现在了那份《平均律钢琴曲集》的总谱上面。
(乌龟把那本书传给大家。每个人都以自己的特有方式看着那幅图——这个离得远远的,那个凑到近前,每个人都这样或那样地歪着脑袋,困惑不解。最后,又传回到乌龟手里,他全神贯注地看着。)
然后阿基里斯说出了点出主题的问题:“以什么方式去听赋格是正确的——作为一个整体,还是部分的总合?”——整体论VS简化论。
对话停止在了前奏曲结束,赋格尚未开始之前。(下一篇对话就是他们在赋格播放的时候进行的内容)。
这篇对话的篇幅不小,当中还涉及到了好几个数学领域内非常重要的部分。而且整篇对话必须是建立在对于这方面有所了解的基础之上,才会看起来通顺的(否则会觉得不知所云,然后看不下去的)。这里就尝试以考据的态度挖掘一下其中的一些内容吧。(笔者水平实在有限,不能保证准确性和足够详细~)
首先是关于丢番图算术,它算是一个铺垫性质的内容,因为它和后面启发了费马发现出费马大定理有很重要的关系,所以把丢番图也拉过来一起介绍一下。
丢番图其人生平不详,他具体的生卒年代不确定大概是公元200~214至284~298年这段时间里面。据说在罗马时代,他居住在埃及的亚历山大港。历史学家对他究竟是哪里人一直争论不休,说他可能是:希腊人、非希腊人、受希腊文化熏陶的埃及人、受希腊文化熏陶的巴比伦人、迦勒底人(不是南极那个啊!!)或者犹太人。他流传于世的文献资料非常少,只有一个来自于5世纪的希腊文集《希腊诗文选》和他的一部著作《算术》流传下来。
丢番图在现代数学中有“代数之父”的称号,他是第一个承认分数是一种“数”的“希腊数学家”——联想到之前提到过的:毕达哥拉斯学派对于数的定义。丢番图允许方程中的系数和解为有理数,这个概念在数学历史上具有着极大的开创性。
同时丢番图也对数学符号的发展和运用做出了重大的贡献:因为他也是第一个把符号引入代数的数学家。早期的希腊时代数学,毕达哥拉斯学派一直主导着数学的研究。早期的严谨论证命题以几何方式为主,毕达哥拉斯学派认为只有经过几何论证的命题才是可靠的。而丢番图认为以代数的方法比几何的演绎陈述更加适用于解决问题。丢番图对问题的研究中引入了未知数,创建符号表示未知数,并对未知数加以运算——这已经具有了现代方程的雏形(虽然形式上还不是)。
丢番图的《算术》一书据说一共有13卷,到了15世纪的时候发现了希腊文本但是残存仅剩6卷。1973年伊朗境内的马什哈德又发现了4卷阿拉伯文版,这样加起来,现存的《算术》总共有10卷,里面一共有290个问题。在如今的数学中,尤其是在数论领域经常会看见他的名字:丢番图方程、丢番图几何、丢番图逼近、丢番图猜想等都是非常重要的研究领域。
关于丢番图还有一个趣闻是他的墓志铭;他的墓志铭上刻着他一生的历程,以一道代数题的形式:“过路的人!这儿埋葬着丢番图。请计算下列数目,便可知他一生经过了多少寒暑。他一生的六分之一是幸福的童年,十二分之一是无忧无虑的少年。再过去七分之一的年程,他建立了幸福的家庭。五年后儿子出生,不料儿子竟先其父四年而终,只活到父亲岁数的一半。晚年丧子老人真可怜,悲痛之中度过了风烛残年。请你算一算,丢番图活到多大,才和死神见面?”(有好几个翻译的版本,但大概意思都差不多)。这道题目,其实现在的人来解就特别简单了,基本上就是假设丢番图X岁:“解:设丢番图x岁。
(1)1/6x+1/12x+1/7x+5+1/2x+4=x
(2)84×(1/6+1/12+1/7)+5=38(岁)
答:丢番图的寿命为84岁,丢番图当爸爸是38岁,儿子死时丢番图80岁。”
为什么要介绍丢番图,是因为费马猜想——(在1995年被证明之后就叫”费马大定理“了)正是依靠丢番图的《算术》启发而来。从这里就可以过渡到费马大定理的部分了。在前面的笔记里面曾经有所提及,但是这里打算详细介绍一下。
皮埃尔·德·费马生卒:1601年8月17日—1665年1月12日。法国律师、业余数学家。虽然费马并不是职业的数学家,但是他在数学上的成就却足以载入数学史册。他主要对数论最有兴趣,也对现代微积分的建立做出了一定的贡献。费马一生中和众多著名数学家有所交集皮埃尔·德·卡克维、马兰·梅森、勒奈·笛卡尔等,他们经常用书信交流,费马的不少数学成就都是从这些书信当中诞生的,他生前不常正式发表他的研究,一直到死后,他的儿子才将他的研究整理成书出版。
费马对于微积分的贡献来自于他的”费马引理“,该定理给出了一个求出可微函数的最大值和最小值的方法。因此这就把求函数极值的问题化为了解方程的问题。
费马通过研究古希腊几何学家阿波罗尼奥斯的几何分析,想到用代数方法来重新建立几何分析,开创出了解析几何之路。现代所知道的解析几何创始人是笛卡尔,费马的解析几何系统和笛卡尔的稍有不同。后世之所以以笛卡尔为解析几何的创始人,是因为费马在生前并没有把他的解析几何研究公之于众。
1654年—1656年,费马和帕斯卡来往的书信中,确立了概率论的开端。之后他和概率论的正式创立者克里斯蒂安·惠更斯交流,让后者增加了对概率论的兴趣。可以说费马在一定程度上启发了概率论的发明。
16世纪时候出版了一本希腊文——拉丁文对照的翻译版本的丢番图《算术》,这本书成为了费马走向近代数论的引导,费马在这本书上面写了许多的批注,其中就包括了著名的费马大定理。之后费马的儿子把这些批注全都插入正文,在费马去世之后的1670年再版。
费马大定理在被证明之前被叫做”费马猜想“(因为还没证明嘛~~),它最初出现在费马关于丢番图《算术》的页边笔记里面,那段笔记的内容如下:
”将一个立方数分成两个立方数之和,或一个四次幂分成两个四次幂之和,或者一般地将一个高于二次的幂分成两个同次幂之和,这是不可能的。关于此,我确信我发现了一种美妙的证法,可惜这里的空白处太小,写不下。 “可惜的是费马自己并没有写下这个证明。
费马猜想的内容是:”当整数n > 2时,关于x,y,z的不定方程 x^n + y^n = z^n 无正整数解。“这个表达式看似简单,但是要想证明则非常的困难。(注意:当设整数n=2的时候,这个方程就变成了我们非常熟悉的毕达哥拉斯定理——也就是勾股定理。)
对于这个猜想的证明前后持续了将近三百年,在此期间,证明过程引发了一连串的连锁反应,引起了很多数学家对于这个猜想的兴趣,让他们丰富了数论的内容,推动了数论的发展。
这一猜想的证明,在前两百年对于很多不同的特定的n已经有了证明:比如说费马自己就证明了”n=4“的时候,费马定理被证明。
1770年,数学家欧拉证明了n=3的时候,费马大定理成立。
十九世纪初的时候,法国自学成才的女数学家热尔曼证明了当n和2n+1都是素数时费马大定理的反例x,y,z至少有一个是n整倍数。在此基础上,
1825年德国数学家狄利克雷和法国数学家勒让德分别独立证明费马大定理在n=5时成立,用的是欧拉所用方法的延伸,但避开了唯一因子分解定理。
1839年的时候n=14的时候,费马大定理被证明。
1839年,法国数学家拉梅对热尔曼方法作了进一步改进,并证明了n=7,但是在证明到n=11的时候进展受阻。于是他又在1847年提出了“分圆整数”法来证明,但这个方法没有成功。
1844年,德国数学家库默尔(他是高斯的学生)提出了“理想数”概念:他认为唯一因子分解是否成立是欧拉、热尔曼创立的企图证明费马大定理的方法关键。他创立了一种“理想数环”理论,据说这一思想也受其老师高斯启发,高斯表面上声称对费马大定理不感兴趣,实际上对n=7久思不解。
库默尔证明了:100以内除37、59、67以外的所有奇数费马大定理成立,对这一证明的研究至此获得了第一次重大突破性。但对于一般情况下,“费马猜想”仍然没有获得证明。
库默尔之后近半个世纪,费马大定理证明都停滞不前。当时著名数学家拉梅和柯西分别宣称自己证明了“费马猜想”,然而最后发现都错了。直到二十世纪前期大数学家勒贝格向巴黎科学院提交了一个费马大定理的证明论稿,由于勒贝格当时的权威声望,大家都以为这下问题解决了,但经过广泛传阅其证明稿件,人们遗憾地发现大数学家的分析证明还是错的。
十九世纪数学家试图证明费马大定理时遇到的主要阻碍是:代数整数在加法、减法与乘法下构成一个环,但整数的许多性质并不能推广到一般数域里的代数整数上,其中一个例子是素约数分解的唯一性(又称算术基本定理)。
1908年,德国富豪佛尔夫斯克宣布以10万马克作为奖金奖给在他逝世后一百年内,第一个证明该定理的人,吸引了不少人尝试并递交他们的“证明”。从此世界毎年都会有成千上万人宣称证明了费马大定理,但全部都是错的,一些数学权威机构,不得不预写证明否定书。在一战之后,马克大幅贬值,该奖金的吸引力也大幅下降。
二战后随着计算机的出现,大量的计算已不再成为问题。借助计算机的帮助,数学家们对500以内,然后在1000以内,再是10000以内的值证明了费马大定理,到80年代,这个范围提高到25000,然后是400万以内。
1955年,日本数学家谷山丰首先猜测椭圆曲线与另一类数学家们了解更多的曲线——模曲线之间存在着某种联系;谷山的猜测后经韦依和志村五郎进一步精确化而形成了所谓“谷山—志村猜想”。“谷山-志村定理”建立了椭圆曲线(代数几何的对象)和模形式(数论中用到的某种周期性全纯函数)之间的重要联系,这是对于费马大定理的证明的至关重要的一步。
1983年,德国数学家法尔廷斯证明了莫德尔猜想,为费马大定理的研究翻开了新篇章。
1986年,格哈德·弗赖(Gerhard Frey)提出了“ε-猜想”他的猜想随即被加州大学的肯·里贝特教授证实。格哈德·弗赖的猜想被证明了:“谷山-志村猜想”(当时尚未证明)应该蕴含了“费马猜想”
椭圆方程与模形式是一一对应的,每个椭圆方程都可以用模形式表达出来。同时费马猜想可以通过转换变成椭圆方程。这个猜想的思路是使用反证法:确定费马大定理和谷山-志村猜想是共存关系。如果费马大定理成立则谷山-志村猜想也成立,反之亦然。那么只需要证明出特例,就可以证明猜想。
1995年,安德鲁·怀尔斯和理查·泰勒在一特例范围内证明了“谷山—志村猜想”,弗赖的椭圆曲线刚好在这一特例范围内,从而证明了费马大定理。
这篇对话里面虽然并没有提到莫比乌斯环,但是却给了一张艾舍尔的著名作品《莫比乌斯环II》的插图——就是蚂蚁爬莫比乌斯环的那个经典图画,估计很多人都在什么别的地方看到过。所以这里打算稍微介绍一下:莫比乌斯环。
莫比乌斯环也可以叫莫比乌斯带,是三维欧几里得空间中的一种奇特的二维单面环状结构,它是一种非常重要的拓扑学解构。由德国数学家、天文学家莫比乌斯和约翰·李斯丁在1858年独立发现。这个结构可以很简单的制作出来:用一个纸带旋转半圈再把两端连接起来之后就做出来了。
“事实上有两种不同的莫比乌斯带镜像,他们相互对称。如果把纸带顺时针旋转再粘贴,就会形成一个右手性的莫比乌斯带,反之亦类似。
莫比乌斯带本身具有很多奇妙的性质。如果从中间剪开一个莫比乌斯带,不会得到两个窄的带子,而是会形成一个把纸带的端头扭转了两次再结合的环(并不是梅比斯环),再把刚刚做出那个把纸带的端头扭转了两次再结合的环从中间剪开,则变成两个环。如果你把带子的宽度分为三分,并沿着分割线剪开的话,会得到两个环,一个是窄一些的莫比乌斯带,另一个则是一个旋转了两次再结合的环。另外一个有趣的特性是将纸带旋转多次再粘贴末端而产生的。比如旋转三个半圈的带子再剪开后会形成一个三叶结。剪开带子之后再进行旋转,然后重新粘贴则会变成数个Paradromic。 ——by:维基百科:莫比乌斯带词条。”
莫比乌斯可以用方程的方式表现出来,它的结构在几何学和拓扑学当中具有着非常重要的意义:“莫比乌斯带是一个二维的紧致流形(即一个有边界的面),可以嵌入到三维或更高维的流形中。它是一个不可定向的的标准范例,可以看作RP^2 # RP^2。同时也是数学上描绘纤维丛的例子之一。特别地,它是一个有一纤维单位区间,I = [0,1]的圆S^1上的非平凡丛。仅从莫比乌斯带的边缘看去给出S^1上一个非平凡的两个点(或Z2)的从。——by:维基百科。”
在网上流传着一个关于莫比乌斯带的数学冷笑话:“一个青年去问老和尚,自己想要女朋友只有优点没有缺点应该怎么办?老和尚说你能找出来一张只有一个面的纸吗?青年掏出了一个莫比乌斯带……”
“莫比乌斯带”可以算是进入拓扑学(由几何学与集合论里发展出来的学科,主要研究空间内,在连续变化下维持不变的性质;涉及到空间、维度与变换等概念)的一个桥梁,因为物理学、生物学、计算机科学等都是要涉及到这个领域的,这里就当作一个铺垫简单的先说一说吧。
这本书的每一章论述都会拆分成若干个小标题,而且拆分的非常的细。因为每一个篇章涉及到的论题都不止一个,加上还要举例说明,内容非常的多。这次这一部分的论述讨论了音乐欣赏、图画观测、棋盘以及计算机系统的各种层次问题。对于同一事物进行不同层次的观察可以获得什么样的不同结果,通过这些例子,侯世达深入的解析了关于计算机系统的各种层次:机器语言、汇编语言、编译语言、操作系统——这五个粗略的分类由下往上从最基础的到最上层的。
然后通过计算机的层次作为例子,转而描述其它类型的复合系统,以此作为一个对照。比如说人体的不同层次:基因层面、细胞层面、器官层面、肢体层面。社会系统:个人层面、组织层面、制度层面、国家层面(这个例子在前面的笔记里提到过一次,书里侯世达是用运动队作为比喻的)。
实际上关于“层次”的问题,早在第五篇笔记讨论“递归”的时候就提到过了。“递归结构”就涉及到不同的层次,我们在其中来回穿越,有时候能够意识到我们进入了不同的层次,有时候意识不到。关于这个在后面给出了具体的例子,前面也说到过:对待某一个专业,专业人员和非专业人员能够观测到的“层次”是不同的。一般来说越是专业的人士观测到的越是“基本的层次”(或者我说他们具有更灵敏的“穿越层次”的能力),而普通人往往只能看到表面的层次(“穿越层次”的能力比较迟钝甚至于没有)。(这个“层次”是只针对于单一“专业”而言)。
然而问题并不能就这样解决,这样的分层依然只能看到问题的一部分。比如说我们的身体:就算把我们拆解到了基因层次,也无法解释我们自身的全部。而这些问题如果以我们作为一个整体来看的话,反而有能够解释的通了,但是这样看来矛盾性就产生了——所以这预示了后一个章节整体论和简化论之间的争论。(因为作为逻辑的严谨,我们不能轻而易举的打破系统的一致性,所以当我们面对这种矛盾的时候,我们不得不重新审视最基本的问题)。
其实有连着看笔记或者直接阅读过原文的读者就会发现,这里的论述主题其实早就作为例子在前一章节里面被提到过了:(上一篇笔记里关于——统一科学和跨领域的那段)。
这就是为什么侯世达把这个章节当作一个铺垫,一首《前奏曲》(说实话这个前奏曲可不短)。这一章的核心就是想要讨论:“问题在于存在有多少中间层次——或者说是否真有这种层次存在。”
“哥德尔串G和巴赫的赋格曲都有这样的一个性质:能在不同的层次上被理解。”(先要注解一下:这里说到的哥德尔串G就是上一篇笔记讨论的,那个进行了哥德尔配数之后的TNT形式系统。)
简而言之就是哥德尔串G同时存在着多个层次:作为哥德尔配数的符号系统、TNT系统、数论化的命题演算。就如同之前解构过“信息”一样,我们从“框架信息”、“翻译信息”到“信息本体”也穿越了三个层次。当时说过,对于信息层次的三层解构是非常笼统地,现在我们正在细化这些中间层次,看看当中到底有多少。
然后侯世达就给除了第一个例子:人体。 人体的不同层次:基因层面、细胞层面、器官层面、肢体层面。作为我们自身,我们是以一个整体在行动的,然而我们同时又可以意识到我们自身所包含的这些层次。我们甚至可以把自身拆解到分子水平进行描述——“分子生物学”,但这似乎对我们没有任何的影响(该过日子还过日子)。
然后侯世达举出了医生和普通人之间的对比,医生观察人体的层次就要低于普通人;这里可以补充一下,有趣的地方在于存在这样一个对应关系:作为医生的专业水平越是深入他们看见的人体层次就越低。这里试着列举一下:
普通人:只能看见表面层次(肢体层次)作为一个整体的人体(哪怕生病了也只是大概说出哪里不舒服)。
普通人(医学爱好者,非专业但是了解过一定医学基础的人):比普通人深入一些,可以观察到器官层面的人体情况,但是有时候不是很清晰、细化,会非常的笼统。(没受过专业训练)。
专业医生:微小器官甚至于细胞级别的人体层面,这要取决于是普通的诊疗医生还是专家医生(这里就是个大概的比喻啊,不要去对号入座)。
医学最前沿的专业人员:他们基本上最少也是在细胞层面观察人体,甚至于到了基因水平对人体进行低层次的观察。(是指他们的工作中的状态)。
分子生物学专家(医学最高权威):也许在他们眼里人体就是一个会动的“分子团”加一系列化学物理反应。(开玩笑的)。
“我们似乎调和了这样一些关于我们自身的极不相同的图像,其实我们只不过是不把它们联系在一起。我们几乎无法把关于我们自身的围观描述和我们的自我感觉联系起来,因此我们很可能是把关于我们自身的不同表示存储在我们心智的不同‘格子’中了。我们几乎从不在这些概念之间转来转去,纳闷‘这两种完全不同的东西怎么可能是同一个我呢?’
在看电视的时候,屏幕上一连串画面显示着卓别林在跑来跑去,这时,我们知道事实上我们看到的不是一个人,而是在一个平面的一片闪烁的光点。我们知道这一点,但这是埋藏在思想深处的。关于屏幕上的东西,我们有两个尖锐对立的表示,但这不会给我们造成麻烦。我们可以对其中之一置之不理,而去注意另一个——这是我们大家都用的办法。哪一个‘更真实些’?这取决于你是一个人,还是一只猫、一台计算机、或一架电视机。”
总结起来来说,人类智能的最重要一点:具有穿越不同“层次”的能力而不引起自我矛盾。这将是人工智能最重要的一个问题(尤其是对于现在分类的“强人工智能”来说):“如何构造一个系统,使它可以接收一个层次上的描述,然后从中生成另一个层次上的描述。”
实际上存在不同“层次”并不是多么困难的事情,同一个系统也确实可以允许对应不同层次上的多种描述(按照之前的例子,配上不同的“解释器”就能做到。还记得乌龟给阿基里斯介绍过的一个可以在同一张“唱片”上播放出不同音乐的唱机吗?)。
困难在于,之前解释过不同的“层次”之所以能够跨越是因为,它们具有至少一部分上面的“同构”。前面反复强调过“同构”会造成混淆问题——就连我们的智能都经常容易产生混淆给我们造成麻烦,就更不提让一个系统能够分清楚了。而且这种混淆体现在方方面面,从平时的生活中,到我们思考的一些高层次方面:
“毫无疑问,这种情况会发生。在我们考虑我们自己的心理的时候——例如,当我们试图理解人们从事各种活动的动机时——就是如此。在人的心智结构中有许多层次——当然对这个系统我们还没有很好地理解。但是,仍有上百种相互竞争的理论在说明人类行为的原因。每种理论都基于某种潜在的假设,关系到在寻找各种心理的‘力’时,应当深入到这种层次解构的哪一层。由于目前我们差不多是用同一种语言描述所有的心智层次,这显然就造成了大量的层次混淆和许多错误的理论。例如,我们谈论‘驱力’——但不知道这些驱力在人的心智结构中出自何处。我不想就此进一步讨论,只想说明我们进行自我认识时的混乱与下述事实有关:我们是由许多层次构成的,同时我们用重叠的语言在所有这些层次上描述我们自己。”
侯世达说计算机系统在这方面,和我们有着类似的情况(是指用同一种语言描述不同层次)。上面也给出过了例子:计算机系统可以分成这样几个语言层次——机器语言、汇编语言、编译语言、操作界面、外部执行……
书里在这里非常详细的讲解了计算机系统的最低层次的构成:
“我们来简述一下从最低层看计算机系统是什么样的……这里要谈到的是我们所愿意考虑的最低层。
计算机的基本成分有‘存储器’、‘中央处理器’(CPU)以及一些‘输入输出(I/O)设备’。首先我们来谈谈存储器。存储器被分为若干称为‘字’的物理学上分离的单元。为了描述得具体一些,我们假设存储器共有65536个字(这是个特殊的数,2的16次方)。一个字可以进一步分为我们当作计算机科学的原子的东西——‘位’一个典型的字中大概有36位左右。”注意:这里的“位”就是“二进制位”我们比较熟悉的说法是“比特”(bit)。而字是用于表示计算机的自然的数据单位的术语,在特定计算机中,字是用来一次性处理事务的一个固定长度的位(bit)组。一个字的位组是计算机系统结构中的一个重要的特性。
现代计算机的字长通常为16、32、64位其他曾经使用过的字长有:8、9、12、18、24、36、39、40、48、46、60位——这里侯世达说一个字含有36位,考虑到这本书的出版年代,当时的计算机和我们现在的肯定是不同的(字符的尺寸对于字长的选择也有影响。20世纪60年代中期以前,字符大部分以6位存储;这样最多允许64个字符,因此不能有大写字符。由于将字长定义成字符尺寸的倍数在处理时间和存储空间上都比较划算,所以这个时期字长也就被定义为6位(在二进制机器上)的倍数。通常的选择是36位字长,这也是适合于浮点数格式的一个长度。)。而且某些最早期的计算机还是使用十进制而不是二进制的,甚至还有些早期计算机根本没有固定字长。
“存储器中的一个字应当如何理解,这完全取决于这个字在程序中所扮演的角色。当然,它也可能扮演多种角色——像卡农曲中的一个音符一样。”目前,根据计算机的结构情况,字长单位可以被应用到很多不同的地方:整数、浮点数、地址、寄存器、存储器—处理器传送、编址单位、指令。(所有这些架构的长度都是以字长或字长的倍数作为基本单位)在计算机设计的时候,“字长”是非常重要的基本单位,早期的计算机设计中,一个单一字长的核心作用在计算机架构中非常的重要。到了现在随着计算机设计的日益复杂,硬件有能力支持更宽的数据类型。在一个新计算机架构的设计中除了自身的核心字长之外,也要求具有向后兼容性——原始机型的字长。所以现在“字”已经不再是一个单一的基本单位,而渐渐的构成了一个“字长家族”。
从上面的应用就可以看到,字同时可以作为“数据”和“指令”,在它被应用到不同地方的时候。比如在别的地方“字长”可以被当作数据存储的基本单位,而在CPU(中央处理器)的时候,“字长”则可以作为指令被发出去。——把计算机比喻成一个城市的话,这些“字”就可以理解为住在城里的人。它们住在各自不同的地方各司其职,维持着整个城市的运作。所以在不同的工作单位,它们有着不同的性质。
侯世达把计算机系统的这个层面叫做“机器语言”,其实这里算是“软件层面”的最低层次,因为再往下,更基本的“层次”就是硬件了(晶体管、集成电路、超大集成电路啥的)。
“上面所说的只是‘机器语言’的一个粗略框架。在这种语言中,所能执行的操作类型构成了一个不可扩展的有限集合。因此所有的程序,不管多大、多复杂,都必须用这几种类型的指令构成。看一个用机器语言写成的程序,差不多可以和一个原子一个原子地看一个DNA分子相比!……想想每个核苷酸都包含了二三十个原子——再想像一下为一个微小的病毒(更不要说为人了!)一个原子一个原子地写出DNA——你就会体会到,用机器语言写一个复杂的程序是什么滋味,你也会体会到,在只能与程序的机器语言描述打交道的条件下去掌握程序的进展情况,那是一种什么滋味。
但必须提到的是,在计算机刚出现的时候,程序设计是在比机器语言更低的层次上(还有更低的层次!)完成的——即把导线彼此联接,因此恰当的操作都是通过‘硬性联接’而实现的。者用现代标准来看简直原始得可怕,甚至想象一下都觉得苦不堪言。但毫无疑问,初次进行这种尝试的人们一定和现代计算机的先驱者们一样曾经刚到非常振奋……”
不论什么例子来看,当分解到“最低层次”(可能是相对而言)的时候,往往那东西就会变得太过于复杂、繁琐,甚至于让人没有办法理解了。但是在面对这些问题的时候,实际上并不需要我们必须以最低层次的眼光去看待这些。我们只需要从相对的低层次来看待这些问题,它们就会显得简单易懂。同样还是那计算机系统来做例子——“汇编语言”。
汇编语言相当于简单易懂一些的机器语言,它在一定程度上对机器语言的种种指令等等进行了“组块化”。但是二者之间依旧保持着一一对应的关系。这样一来编写和操作相对要比机器语言更简单易懂。
“可以把用机器语言写的程序比作以晦涩的哥德尔配数法写成的一个TNT推导,而把用汇编语言写的同一程序比作以原始的TNT表示法写成的与之同构的TNT推导,后者当然比前者易懂多了。或者,回到关于DNA的想象上来,我们可以把机器语言和汇编语言之间的差别比作下面两种方法间的差别:一种是麻烦地一个原子一个原子地说明每个核苷酸,另一种是在说明一个核苷酸时仅仅给出它的名字(即‘A’、‘G’、‘C’、‘T’)。通过这种非常简单的‘组块化’操作可以节约大量的劳动,虽然观念上并没有很大的改变。”
解构到最低“层次”上面之后,要描述起来有多麻烦,看上面的例子就已经体现出来了。而且问题就在于不论什么“系统”,以最低层次的眼光来看它的运作是效率极其低下的。用下象棋来比喻的话,就好比只知道所有棋子的走棋规则而不懂什么布局路数,这种情况下的棋手下棋虽说不会犯规,但肯定赢不了(或者同一个层次上的菜鸡互啄)。
书中借由象棋(侯世达说的估计是国际象棋,中文版翻译估计改成了中国象棋)这个例子来说明我们如果从低下往高层次去的时候会出现的情况——“组块化”。书里先给出了早年,人机博弈的初期阶段的一些情况(以书出版年代的主要情况为例子,那会“深蓝”都还没下赢国际象棋):
“以前人们认为——在50年代和60年代——让机器下一手好棋的关键,是使它在可能的着法序列构成的分支网络上,比任何棋术大师所能超前搜索的步数都多。可是,当这一目标逐渐达到后,计算机的棋艺并没有突飞猛进,超过人类高手的水平。事实上,一个高手在和当今最好的下棋程序对局时仍可以稳操胜券。”(其实就算是在今天,单机版本的“阿尔法狗”的围棋水平也不过是达到了职业的一定段位,下赢李世石和后面下赢柯洁的那两个版本可不是区区单机版可以比的。关于这部分之后笔者可能会单独写一篇文章,这里就不多说了。)
“这种现象的原因实际上已讨论了许多年。在40年代,荷兰心理学家阿德里安·德·格鲁特就研究了下棋时新手和大师是怎样感知一个棋局的。用那些刻板的术语来说,他的研究结果指出大师们是以‘组块’来感知棋子的分布的。有一种比直接描述每处棋子的位置层次更高的棋局描述,而大师就是以某种方式生成了这样的一个棋局的心智表象。这一点已被下述事实所证实:两个人都用五秒钟审视棋盘之后,大师能很快地重新摆出一盘实际对局中的某个局面,而新手则要慢得多。
结论是这样的:在正常的对局过程中,会有某种多次再现的局面——也就是某种模式——而大师正是对这种高层次的模式十分敏感。他和新手在不同的层次上思考,他们的概念集是不同的。几乎出乎所有人意料的发现是,大师在超前搜索时很少比新手走得更远……”
象棋大师这个‘组块化’的思路应该是来自于背棋谱和解局摆局,我们知道专业棋手背棋谱是基本功。中国象棋的一整局棋一般会被拆分为三个部分:开局、中局、残局。在这种模式下,局面涉及到的是整盘棋的多个棋子的摆放位置和组合效果(一个局面里面少说,至少三四个能动的棋子吧,还不算对面的)。而新手一般能考虑其实同样有四五个可以动的棋子,然而仅限于单独棋子的下一步动作,而非全局的联动组合。(笔者算是稍微有点下象棋的经验,但也就是个业余的臭棋篓子,不值一提)。
“仅仅依赖于超前搜索的计算机下棋程序还没有被教会在一个更高的层次上思考,它的战略只是凭着一股蛮劲进行超前搜索,企图压倒各种类型的对手。但这种办法并不灵。也许有一天,一个蛮劲足够大的超前搜索程序确实战胜了人类最好的棋手——但那也只是一个很小的智慧之果。因为我们已经揭示出了:智能紧密地依赖于为复杂的对象——如棋盘、电视屏幕、书页或画面——构造高层描述的能力。”
回到计算机上面来看,前面提到了汇编语言相当于机器语言的一个“组块化”产物。
“也许,汇编语言的主要意义不在于它与机器语言间并不显著的差别,而是这样一个关键的想法:程序完全可以在不同的层次上编制!”
从系统运行的方面来看,“组块化”的最明显的效果是提高了“运行效率”。比如说在音乐方面,音乐家弹奏了“E—G—B”三个音,我们说他弹奏了“E三和弦”。我们知道这其实是一回事,但是在记述方面(不论是音乐理论还是乐曲创作)我们省下很多力气。换一个角度来看:命名可能也算一种“组块化”的方式;一个人、一个动物、一件事物等等,我们用“名字”来高度概括关于这一事物或概念的方方面面。值得注意的是“组块化”并不是说随随便便的就可以做到,它似乎也要遵循一定的规律。
“50年代初,人们用汇编语言编了几年程序之后,就认识到了一些有特点的结构往往反复出现在各种程序中。正像下棋一样,似乎存在某些基本的‘定势’,它们会自然地出现在人们想要构造‘算法’的时候——所谓‘算法’是指人们对所要完成的操作过程的精确描述。换句话说,算法似乎有某些高层次的成分,用它们来描述操作过程,比用局限性很大的机器语言或汇编语言要容易得多,也漂亮得多。在典型情况下,一个算法的高层成分不只包含一两条机器语言指令,而是包含整整一组,并且这些指令在存储器中也不一定是相邻的。这样的一个成分可以在一个更高层的语言中用单个的项来表示——这就是一个组块。”
“组块化”的特点会出现在各个方面,尤其是那些复合系统当中,并且那些系统和构成系统的基本单位之间具有着天文数字级别的巨大差距。海量的基本单位被分组合并,不断地进入更高层次,整个系统可以操作的复杂程度也就不断地提高了。这是“组块化”的另一个特点,而且很明显的“组块化”虽然进入了一个更高的层次,但是一些基本的特性也被传导到了更高的层次。——所以“组块化”虽然可以让程序做更复杂的事情,但是依然会受制于基层的“基本单位”。
这么看“组块化”的性质和“递归”的概念很像,“组块化”可以不止一次,而是在“组块化”的基础上进一步“组块化”。从这里可以看得出来“基本单位”的概念在这里并不是绝对的,而是一个相对概念。而且经过多次“组块化”之后,基本单位原本做不到的事情开始能够做到了:以计算机程序为例,机器语言指令所能做到的操作非常有限,而当我们以更高级的编译程序进行操作的时候,机器语言无法做到的事情就变得轻而易举了。这里最明显的变化是从表述上面来看的,汇编语言指令只是一种进行了概括的机器语言指令。但是经过层层堆积之后——用我们的一句老话来说:“量变到质变”。
“除去标准组块——即新发现的哪些可以构成所有算法的成分——之外,人们还认识到几乎所有的程序都包括有更大的组块——或者叫超组块。不同的程序有不同的超组块,这取决于程序要完成那些高层次的任务。我们在第五章里已经讨论过超组块,用的是它们通常的称呼:‘子程序’和‘过程’。显而易见,对任何程序设计语言的一个强有力的扩充就是赋予它们下述能力:用已知的实体定义新的高层实体,然后用名字调用它们。这就把形成组块的运算直接建立在语言之中了。这样,就不再有一组固定的指令,要求所有的程序都直接用这组指令来编制,而是使程序员能构造自己的模块,每个模块都有自己的名字,而且可被用在程序内的任何地方,就像它们本来就是这种语言的成分一样。当然,这并没有超出下述事实:下到机器语言层,所有的事情仍是被同一组已有的机器语言指令所完成,但它们对于处在高层的程序员来说不是明显可见的,它们是隐含的。”
实际上“组块化”的概念对于人工智能的发展,尤其是今天的“人工神经网络”的研发都是非常重要的。目前“人工神经网络”可能可以算是人工智能研发的前沿(虽然在理论上同时还存在着其他方向,而且神经网络的发展也不是最近几年突然就有的,它的概念实际上早在二十世纪前半叶就已经提出来了)。
“人工神经网络”由大量的人工神经元联结进行计算,这是一种模仿生物神经网络的结构和功能的数学模型或者计算机模型,其核心概念来自于神经科学中的赫布理论。这一理论由唐纳德·赫布于1949年提出,又被称为赫布定理(假说)、细胞集结理论。
该理论是这样说的:“我们可以假定,反射活动的持续与重复会导致神经元稳定性的持久性提升……当神经元A的轴突与神经元B很近并参与了对B的重复持续的兴奋时,这两个神经元或其中一个便会发生某些生长过程或代谢变化,致使A作为能使B兴奋的细胞之一,它的效能增强了。”
赫布理论阐明了细胞的形态和功能:“两个神经元或者神经元系统,如果总是同时被激发,就会形成一种‘组合’,其中一个神经元的激发会促进另一个的激发。”赫布同时写道:“如果一个神经元持续激活另一个神经元,前者的轴突将会生长出突触小体(如果已有,则会继续长大)和后者的胞体相连接。”
美国心理学家高尔顿·威拉德·奥尔波特根据自联想的思路,进一步提出了关于细胞集群的作用,以及它们在形成记忆痕迹中所扮演的角色:“如果系统的输入会导致同样的模式重复出现,那么组成这个模式的元素之间的相互关联性将会大大增强。这意味着,其中任何一个元素都会倾向于触发同组的其他元素,同时(以减少权重的方式)抑制组外其他不相关元素。另一个角度来看,这个模式作为一个整体实现了“自联想”。我们可以把一个学习了(自联想)的模式称为记忆痕迹。”
在此基础之上,人工神经网络中模仿神经元突触间传递作用的变化就被当作是(被映射成)神经元网络中人工节点的相应权重的变化。如果两个人工神经元同步激发,则它们之间的权重增加;如果单独激发,则权重减少。(这个权重值有一个判定,由节点获得的输入信息经过函数计算之后进行判定。)
这种变化就相当于“人工神经网络”可以在内部进行结构变化,当然这个变化的前提是要收到外界信息的刺激,以此为基础对内部进行结构调整(人工节点的输出权重出现了变动)。所以“人工神经网络”是一种自适应系统,通俗的说就是具备“学习能力”。
“组块化”概念在这里起着同样的重要的作用,我们看到在人工神经网络里面,最基本的单元结构是人工神经元,但是它仅仅是可以做到是输入和输出以及一个简单的函数判定。而在“网络”这个高层面上,“组块化”的人工节点形成的系统具有了一定的“判断识别”能力。
到目前为止人工智能的研究历史有着三个重大阶段:“推理”、“知识”、“学习”。侯世达所遵循的是最早期的也是最经典的“逻辑学推理演算”型人工智能的研究道路,而目前最新的“人工神经网络”的发展则是倚重于“学习”型的人工智能研究道路。但是不论偏向于哪一个方向,很多部分依然是互相重叠的,甚至于一些基本规则两边都要遵守。(不论从哪一点来看,现在人工智能所能达到的程度,与人类的大脑相比依然还有极大的差距——这里说的是智能而非计算能力)。
实际上这也是很正常的,因为“组块化”这个概念实际上并不是计算机科学发明出来的东西,通过侯世达在书中的例子来看,这种通向更高层次的结构特点实际上早就被蕴含在了自然当中——我们的身体、整个自然环境系统(书里给出了这个例子:一个地区的天气状况,在同一个纬度联结起来成为一个气候带,而更大规模的气候“组块”最后覆盖了全球)。我们的科学成果依然还是在向大自然学习模仿得来的,而不是纯粹的无中生有。
在了解到了“层次”之间的关系之后,程序就可以在不同的层次上被编制出来。但是中间的过程实际上并没有省略掉,只是可以被分工开(在前面的硬件设计部分,或者模块化部分就已经把“转录”的工作完成了,把理论上的高低层次之间的对应关系投入实际应用),让程序员只需要负责更高级的部分就可以了。
“下到机器语言层,所有的事情仍是被同一组已有的机器语言指令所完成,但它们对于处在高层的程序员来说不是明显可见的,它们是隐含的。”
在我们进行研究的时候,我们可以跳出来看见各个层次,然而要想进入实际应用,我们仍然需要回到层次当中去。“分层”的感觉不那么明显了,但是我们还是在用。
“基于这种想法的新语言被称为‘编译语言’。其中一种很早也很漂亮的叫做‘Algol’,是‘算法语言’的英文缩写。和汇编语言的情况不同,Algol的语句和机器语言的指令之间不再有直接的一一对应。无疑,仍然有一种从Algol到机器语言的映射关系,但这要比汇编语言和机器语言间的关系‘杂乱’得得多。粗略地说,把Algol程序翻译成机器语言,有点像根据初等代数课本上的一些应用题列出方程式。(事实上,从应用题转换到方程式需要复杂得多,但这一比喻有助于体会把高级语言翻译成低级语言的过程中所必须完成的那些‘清理’工作。)在50年代中期,成为‘编译程序’的一些成功的程序被编制出来了,其功能就是完成从高级语言到机器语言的翻译。”
这里说到的编译程序其实现在叫做“编译器”。早期的计算机软件都是用汇编语言直接编写的,这种状况持续了几年。当人们发现为不同类型的中央处理器(CPU)编写可反复使用软件的开销要明显高于编写编译器时,人们发明了高级编程语言。由于早期的计算机的内存很小,当大家实现编译器时,遇到了许多技术难题。(内存不够无法运行) 大约在20世纪50年代末期,与机器无关的编程语言被首次提出。随后,人们开发了几种实验性质的编译器。
实际上编译器正是一个转换“层次”的通道,它将用编程语言写成的源代码(原始语言),转换成另一种编程语言(目标语言)。现代编译器的工作流程是这样的:源代码→ 预处理器→ 编译器→ 汇编程序→ 目标代码→ 链接器→ 可执行文件。最后打包好的文件就可以给计算机去判读运行了。
“第一个编译器是由美国女性计算机科学家葛丽丝·霍普于1952年为A-0 系统编写的。但是1957年由任职于IBM的美国计算机科学家约翰·巴科斯领导的FORTRAN则是第一个被实现出具备完整功能的编译器。1960年,COBOL成为一种较早的能在多种架构下被编译的语言。
高级语言在许多领域流行起来。由于新的编程语言支持的功能越来越多,计算机的架构越来越复杂,这使得编译器也越来越复杂。
早期的编译器是用汇编语言编写的。首个能编译自己源程序的编译器是在1962年由麻省理工学院的Hart和Levin制作的。从20世纪70年代起,实现能编译自己源程序的编译器变得越来越可行,不过还是用Pascal和C语言来实现编译器更加流行。制作某种语言的第一个能编译器,要么需要用其它语言来编写,要么就像Hart和Levin制作Lisp编译器那样,用解释器来运行编译器。——编译器历史:摘自维基百科。 ”
书里在之后就提到了这个Lisp编译器(Lisp是“表处理”的英文缩写),书里把它叫做“解释程序”(现在的叫法是:解释器),它与前面提到的“编译程序”在实质上是一样的:把高级语言翻译成机器语言。只不过之前的编译器都是一口气翻译全部的语句,而解释器则是逐条翻译。这让程序员不需要等到程序写完之后在使用解释程序来检验,而是可以一边进行编写一边逐条检验。所以相对来说解释器运行程序的速度要比编译器慢。
“解释程序的基本想法如下:每次新的一行Lisp语句输入,解释程序就设法处理它。这就是说解释程序开始工作,而且其中某些(机器语言的指令)被执行。当然,确切地说,执行哪一行指令,是取决于这个输入的Lisp语句的。在解释程序中有许多JUMP(转移)指令,因此新的一行Lisp可能使控制权以一种复杂的方式四处传递——向前,向后,再向前,等等。这样,每个Lisp语句都在解释程序中被转换成一条‘路径’,沿着这条路径走就能得到所需的结果。”
在解释器上运行程序比直接运行编译过的代码来得慢,这是因为解释器每次都必须去分析并翻译它所运行到的程序行,而编译过的程序就只是直接运行。这个在运行时的分析被称为"解释式的成本"。在解释器中,变量的访问也是比较慢的,因为每次要访问变量的时候它都必须找出该变量实际存储的位置,而不像编译过的程序在编译的时候就决定好了变量的位置了。
解释器运行程序的方法有三种: 1直接运行高级编程语言。2转换高级编程语言码到一些有效率的字节码,并运行这些字节码。3以解释器包含的编译器对高级语言编译,并指示处理器运行编译后的程序。
前面说过使用解释器来运行程序会比直接运行编译过的机器代码来得慢,但是相对的这个解释的行为会比编译的再运行来得快。这在程序开发的初期阶段和只是撰写试验性的代码时尤其来得重要,因为这个“编辑-解释-调试”的循环通常比“编辑-编译-运行-调试”的循环来得省时许多。
总结来说:解释器的好处在于它消除了编译整个程序的负担,让程序可以拆分成多个模块化,虽然由于是逐条翻译,这让程序运行时的效率打了折扣。但是另外解释器的可携性佳,解释式程序相较于编译式程序有较佳的可携性,可以容易的在不同软硬件平台上运行。而编译式程序经过编译后的程序则只限定于运行在开发环境平台。 书里面也说在Lisp被发明出来之后,很快就在人工智能研究人员中广泛的流行开了。
在使用解释器来达到较快的开发速度和使用编译器来达到较快的运行进度之间是有许多妥协的。有些系统(例如有一些LISP)允许解释和编译的代码互相调用并共享变量。这意味着一旦一个子程序在解释器中被测试并调试过之后,它就可以被编译以获得较快的运行进度。许多解释器并不像其名称所说的那样运行原始代码,反而是把原始代码转换成更压缩的内部格式。举例来说,有些BASIC的解释器会把保留字取代成可以用来在转移表中找出相对应指令的单一字节符号。解释器也可以使用如同编译器一般的文字分析器和语法分析器然后再翻译产生出来的抽象语法树。
“当然,编译程序自身也是个程序,也必须用某种语言来书写。第一个编译程序是用汇编语言来书写的,而不是用机器语言,这样就可以充分利用已经建立在机器语言之上的初步成果。
随着复杂性的增长,人们认识到,一个部分完成了的编译程序可用于对其它部分进行编译。换句话说,一旦编译程序的核心部分写成了,这个小编译程序就能把一个大一点的编译程序译成机器语言——依此办理就能翻译一个更大的编译程序,直到最后得出整个所期望的编译程序。这个过程有个形象生动的名字:‘自举’——其缘由是显然的(想象一个抓住鞋带想把自己举起来的人就行了)。这有点象一个刚刚能顺利使用自己母语的幼儿,从那时开始,他的词汇量和流畅程度将飞速增长,因为他可以利用语言来取得新的语言。”
除了编译器和解释器,这里还提到了汇编语言。汇编语言是一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。在不同的设备中,汇编语言对应着不同的机器语言指令集。一种汇编语言专用于某种计算机系统结构,而不像许多高级语言,可以在不同系统平台之间移植。 使用汇编语言编写的源代码,然后通过相应的汇编程序将它们转换成可执行的机器代码。这一过程被称为汇编过程。
以“层次”来划分,通过上面的内容我们能够看出来,在计算机程序的过程中存在复数个“中间层次”的编程语言。简单概括来说,在计算机的编程语言中也可以分出三个“层次”框架,分别是:低级程序语言、中间语言、高级程序语言。
低级程序语言之所以被称为低级,是因为它很少提供或不提供计算机的指令集体系结构——也就是语言映射中与处理器指令紧密相关的指令或函数。“低级”一词是指其和机器语言之间很少或根本不存在一定程度的抽象,因此低级语言有时被描述为“接近硬件”。用低级语言编写的程序往往是相对不可移植的。
中间语言它设计的目的,是用来帮助我们分析计算机程序。这个术语源自于编译器,在编译器将源代码编译为目的码的过程中,会先将源代码转换为一个或多个的中间表述,以方便编译器进行最佳化,并产生出目的机器的机器语言。
中间语言也同时用来代称一些作为中间层的语言:有些高级语言不会输出为机器语言,它们仅会输出这种中间语言,而这些中间语言则会像一般语言一样,提交给编译器,然后编译为机器语言。这通常被用于让优化的过程更简单,也被用于增进可移植性的能力,改进移植的方式是利用中间语言的编译器,可以编译出许多中央处理器及操作系统可使用的机器码,例如C语言。中间语言的复杂度,通常介于高阶语言及低级语言之间,例如汇编语言。
高级程序语言与低级语言相对,可以看作是高度封装里的编程语言。它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示,有较高的可读性,以方便对计算机认知较浅的人亦可以大概明白其内容。由于早期计算机业的发展主要在美国,因此一般的高级语言都是以英语为蓝本。在1980年代,当东亚地区开始使用计算机时,在日本、台湾及中国大陆都曾尝试开发用各自地方语言编写的高级语言,当中主要都是改编BASIC或专用于数据库数据访问的语言,但是随着编程者的外语能力提升,现时的有关开发很少。
“程序正常运行时,你怎么描述它或想像它的活动都没有太大关系。只有在出了毛病时,能够在不同的层次上思考才变得重要起来。例如,如果程序在某时要执行除法指令,而除数是零,程序将暂停运行,并把问题通知使用者,报告程序中出错的位置。但是,给出说明的层次往往低于程序员书写改程序的层次。下面是对一个戛然而止的程序的三个平行的描述:
机器语言层:‘程序执行停止于1110010101110111位置’;
汇编语言层:‘程序执行停止于遇到DIV(除)指令时’;
编译语言层:‘程序执行停止于为代数表达式‘(A+B)/Z’赋值的过程中。’
对于系统程序员(指那些编写编译程序、解释程序、汇编程序和其它一些供大家使用的程序的人)来说,最大的问题之一就是想办法编写查错子程序,以便给那些程序出错的用户提供高层而非底层的问题描述信息。一个有趣的颠倒是,如果一个遗传‘程序’出毛病,(即出现一个突变),这时‘错误’只能在高层次上显示给人们——即出现于表现型层次,而非遗传型层次。实际上,现代生物学把突变作为了解遗传过程的主要窗口之一,原因就是对这些过程可以在多个层次上进行搜索。”这里发现了遗传生物学上的结构和计算机结构上的对应,多少可以看得出来为什么生物神经网络可以启发我们研发出人工神经网络。从透析“层次”的角度来看待,我们会发现那么多截然不同的事物和领域,万事万物之间具有着这么紧密的关连性,这真是即美妙,又令人困惑。书中认为,“层次”概念的存在意义,是方便我们,并且保护“系统”的运行。
“一个复杂的计算机系统中的许多层次,具有一种为用户提供‘缓冲’的综合效用,使他可以不考虑许多低层活动。这些活动往往与他毫不相干。一个飞机乘客通常不想了解油箱里还有多少燃料、风速是多少、需要准备多少份饭、目的地附近的空中交通情况如何——这些事情已被交给航空公司系统中处于不同层次此的工作人员来处理,而乘客只要求从一处到达另一处。同样,只有当出了什么毛病——比如他的行李没到,乘客才会意识到他以前不知道的那个使人迷乱的层次系统。”
计算机的计算能力远非人力所能及(这是理所当然的,拳头要是比榔头硬,要榔头有什么意义?),然而计算能力强并不代表灵活。虽然计算机在有一些方面表现出了很大的灵活性(或者说反应快),那么计算机是过于灵活还是过于刻板?说语言是思考的基础之一(也许并非唯一,但是少不了语言),计算机语言于人类自然语言之间的差别也许是回答这个问题的一个重要参考。
“让人尽可能自然地和计算机进行通讯,这一直是促使人们提高层次的主要目标之一。当然,和用机器语言写成的低层结构相比,用编译语言写成的高层结构更接近于人一般思考时所用的概念。但是,在这种使通讯更加容易的努力过程中,‘自然’这个要求的一个方面被完全漠视了。例如,在寻找最好的表达方式时,我们常常说出无意义的句子片段;我们可能再说一句话的中间咳嗽;我们彼此打断对方的话,我们使用摸棱两可的描述和‘不规范’的句型;我们杜撰词组,歪曲意义——但我们的大部分信息一般仍能传递过去。用程序设计语言,一般说来是有着非常严格的句法的,你必须每时每刻遵守,而且没有摸棱两可的词或结构。”
计算机的这方面的“死板”换来的是它的高精密性和正确性,这对于让计算机完成任务来说是必然的。以“死板”这方面来谴责计算机是完全没有意义的,从服务育人的角度来说,这也是必然的特性。虽然在我们关于人工智能的探讨当中,往往一些问题的角度和立场都被模糊了。
可是灵活性也是一个非常必要的“特性”,虽然有时候它代表着失误、误差。而且在这么多的“层次”中,一个低层次的简单误差很有可能扩散到其它“层次”,然后误差会随之扩张(和癌细胞一样)最后把整个程序卡死。
但是反过来来说,如果把这些“失误”纳入程序语言的规范里面去,那么它就不叫“失误”。它可以在高层语言当中表现出“失误”的效果(让交流看起来更自然灵活一些,而不显得那么刻板),但是“失误”不会毁掉程序本身。这和我们平时人与人之间交流的一些情况有点类似,我们在用自然语言交流的时候,有一些“语病”、“口误”是故意的(说反话、嘲讽),为了强化表达效果。在人机交流的时候,这种方法恐怕不太妥当。正因为计算机的严密性,使得它不仅自身不能如此表达,也无法接受我们这种过于灵活的自然语言表达方式。前面提到的扩展,其实就是让计算机在交流方面可以在一定范围内获得“灵活性”(理解自然语言的一些“特殊”表达方式,但这种“灵活性”是有极限的)。如果用户不知道程序的低层次情况的话,程序对于用户来说会变得不可预测。用户就不知道程序会怎么理解他编入的语言。
“目前,在人工智能的研究中,主要的领域之一就是‘自动程序设计’。这涉及到更高层次语言的开发——这些语言的翻译程序极其复杂,它们能做一些非常不容易的工作,例如:对例子进行概括、纠正某些笔误或语法错误,设法弄懂有歧义的描述的意思、利用一个基本用户模型来猜出用户的意意图、对不清楚的事情进行提问、直接使用自然语言等等。我们希望在可靠性和灵活性之间走钢丝。”现在的人工神经网络也在尝试攻破这些问题(学习型系统),不过值得注意的是,虽然人工神经网络是目前人工智能研究的前沿,但是那不代表仅仅只有这一条路可走。
我们看到现有的计算机已经有了那么复杂的“分层”,从硬件层面到软件层面,而计算机的语言距离我们自由使用自然语言的程度之间,还有着虽然看不见但是却很明显可以感觉到的巨大鸿沟。书中摘录了一个“分层图”,是关于人工智能程序的分层结构,以机器元件(比如晶体管)为底,智能程序为顶。这幅图来自帕特里克·亨利·温斯顿所著的《人工智能》一书,侯世达觉得这本书中对于智能程序的分层还是太过简单。要想从硬件层次达到智能程序的层次,而且每一层都要基于下面一层次,并且在下一层次的基础上扩展了灵活性。这要多少中间层次,依然是一个位置的问题。(这个问题现在感觉就和阿基里斯追乌龟的那个悖论一样,说不定当中有无限多个层次,如果真的是这样的话,那么我们永远达到不了真正的“强人工智能”,而只能无限接近,设置到这个临界点在哪里?)
“软件和硬件之间的界限:人们还常常会被某些层次上的灵活性和另一些层次上的刻板性给搞糊涂……和计算机打交道久了,人常常被宠坏了,总觉得什么事情都能编程序解决:打印机不该刻板得只有一种或有限的几种字符集——字形应当是可以由用户指定的!但是一旦达到了这种灵活性,人们又会因打印机不能使用多种颜色的墨水而烦恼,或指责它不能接受任何形状和大小的纸张,或抱怨它不能再被打碎后再把自己装起来……
麻烦的事情在于,用第五章的话来说,所有这些灵活性都必须有个‘终了’。在所有灵活性的下面必须是一个硬件层,而它是没有灵活性的。它可以藏得很深,上面的各个层次有提供了大量的灵活性,以至于没有多少用户能感到硬件的限制——但这种限制的存在是不可避免的。”
类似地软硬件分层的看法,可以带入到我们自身,用通俗点的话来说:“人是有极限的……”我们的思维(比如无限的想象力)受限于我们身体的“硬件”。这实际上算是西方主流学术界对于人的看法,把人看成“计算机”,把我们的所有生理和心理理解为“机械化”和“化学物理”的运作原理。而一些非主流的和东方文化中有些看法则不同,实际上我们对于人的“软硬件”分层只限于假说。我们还有太多不知道的部分,和一些少见的但是确实的超常现象。(这部分就不多说了)现在在探索的道路上我们依然只是摸着石头过河,而且我们知道就算这样类比,当今的智能计算机还是比人差远了。
实际上计算机与人的另一个不同在于,计算机虽然包含了“层次”,并且遵循层次结构来运行,但是很显然计算机没有办法靠自己来回穿越层次——各个层次之间的对应其实早就设定好了。对于计算机来说,各个层次之间的连接更像是支柱。而对于人来说,似乎有些不同,层次之间的分割没那么死,而且相邻的“层次”之间还有“渗漏”。书里利用科学不同领域间的“层次”做了一个比喻。
“在科学的层次结构中,层次间总是有些‘渗漏’的,因此化学家无法完全不考虑低层的物理学,生物学家也无法完全不考虑化学,但是,两个相距较远的层次间几乎是没有渗漏的。这就解释了为什么人们可以直觉地理解别人,而无须懂的夸克模型、原子核结构……一个人所需的一切不过是一个关于最高层活动方式的模型。众所周知,这样的模型是非常实际也非常有效的。”
书里写到这里的时候,侯世达试着想反驳一句话:“计算机只能做你告诉它去做的事。”这句话出自洛芙莱斯命妇在她的回忆录中首先提出来的,这个观点在之后的流传里被联系到了另一个观点上面:“计算机不能思维。”很显然侯世达试图反驳这样的论断,关于这个问题在后面的篇章里会特别论述。因为关于这个问题的讨论涉及到《GEB》这本书的写作初衷,所以也是这本书的核心之一论题了。
侯世达的反驳意见简单来说,通过上面长篇大论分析出来关于“分层”的问题:层次越多,两个层次之间的差距就越大。当我们从表层对计算机程序下达指令的时候,经过下面层层的翻译,可能由于太过复杂,我们不知道程序最后会干出什么来。在这里侯世达想要强调的是,计算机是一种复合系统,分别由稳定系统(硬件)和变化系统(软件)结合而成,当达到一定复杂程度的时候在复杂系统当中存在着某种不可预测性。
从今天来看,侯世达似乎对计算机的这个看法有所改变,而他在这本书里下的这个结论也暂时还不能下判定。因为在侯世达书中的结论里,包含着的是对于计算机未来发展的某种期盼。
这篇文章终于突破了之前的记录,成为目前篇幅最长的笔记——三万四千多字。全书上下内容一共有二十个章节,笔记也会有二十篇,现在已经完成了一半多了。
在写“费马大定理”这部分的时候,查询相关资料看的头都晕了——因为笔者并非数学专业,只能祈祷自己大概没写出什么问题来。就像费马大定理的证明一样,很多看似简单定理背后是非常艰深庞大的数学理论作为基础的!非常的深奥,而且像数论、高等数学这些内容,没有基础的非专业人士很难理解。——ps:笔者都没有系统的学过高等数学~~汗颜~~
同时笔者建议在百度”费马大定理“的时候,相关的一些词条就不用去看了:比如”费马大定理是骗局吗?“这种的,或者后面的一些词条。因为笔者点进去之后就跨入了”民科“领域的神奇世界!各种奇谈怪论看了一下午,差点没有笑断气……(各种号称自己证明了哥德巴赫猜想、或者推翻了相对论的、或者号称自己打破了力学规则发明了永动机的……关键他们不是开玩笑,而是真的很狂热……为什么不去写小说呢——脑洞是真的精彩)。
“民科”最大的问题并不单纯的是没有专业知识眼高手低,而是特别严重的偏执(都快可以类比精神病的程度了,网上尤其严重),这和“迷信”还真有点异曲同工之妙(“民哲”有一部分基本上快和邪教一样了23333)——无知的两个不同极端表现。
得补充一下,这里说的“民科”实际上应该换一种说法;一般网上的“民科”实际上有两个意思:1民间科学爱好者。2“伪科学”(笔者觉得这么说比较合适,这个例子记得哪一期电台里好像还提到过)。前者并不是贬义的,而后者是。网上说到的“民科”实际上更多的是第二个意思。这些人没有专业基础,只是凭着一厢情愿胡乱地看了一大堆乱七八糟东拼西凑的东西放到一块,然后就跑到大家面前来做自己的“美梦”了,而且人们对于传统文化:阴阳、道学、中医等等的负面印象可能多多少少也有他们一份功劳。
(PS:当然笔者可能没什么资格说他们,毕竟笔者自己也不是什么数学领域或者计算机科学领域的从业者,连业余都轮不上却也在这里大言炎炎2333)
上面这一段算是一个小插曲吧,最后感谢机核!祝愿2019核聚变顺利,大家玩的开心!
评论区
共 13 条评论热门最新