2025年1月7日 10:48 周二第三篇 阅读不同读物的方法
第十三章 如何阅读实用型的书
#
在任何艺术或实务的领域中,有些规则太通用这一点是很令人扫兴的。越通用的规则就越少,这算是一个好处。而越通用的规则,也越容易理解—容易学会与使用这些规则。但是,说实在的,当你置身错综复杂的实际情况,想要援用一些规则的时候,你也会发现越通用的规则离题越远。
我们前面谈过分析阅读的规则,一般来说是适用于论说性的作品—也就是说任何一种传达知识的书。但是你不能只用一般通用的方法来读任何一本书。你可能读这本书那本书,或是任何一种特殊主题的书,可能是历史、数学、政治论文或科学研究,或是哲学及神学理论,因此,在运用以下这些规则时,你一定要有弹性,并能随时调整。幸运的是,当你开始运用这些规则时,你会慢慢感觉到这些规则是如何在不同的读物上发挥作用。
要特别提醒的是,在第十一章结尾时所说明的十五个阅读规则并不适用于阅读小说或诗集。一本虚构作品的纲要架构,与论说性的作品是完全不同的。小说、戏剧与诗并不是照着共识、主旨、论述来发展的。换句话说,这些作品的基本内容没有逻辑可言,要评论这些作品也要有不同的前提才行。然而,如果你认为阅读富有想像力的作品毫无规则可言,那也是错的。事实上,下一章我们会讨论到阅读那种作品的另一套应用规则。那些规则一方面本身就很有效,另一方面如果能检验这些规则和阅读论说性作品规则的不同之处,还可以帮助你对阅读论说性作品的规则多一层认识。
你用不着担心又要学一整套十五个或更多的阅读小说与诗的规则。你会很容易了解到这两种规则之间的关联性。其中也包括了我们一再强调的事实,你在阅读时一定要能提出问题来,尤其是四个最特殊的问题,不论在阅读什么样的书时都要能提出来。这四个问题与任何一本书都有关,不论是虚构或非虚构,不论是诗、历史、科学或哲学。我们已经知道阅读论说性作品的规则如何互相连贯,又是如何从这四个问题中发展出来的。同样的,阅读富有想像力作品的规则也是来自这四个问题,只不过这两类作品的题材不同,会造成规则上的部分差异。
因此,在这一篇里,比起阅读的规则,我们会谈更多有关这几个问题的话题。我们会偶尔提一个新规则,也会重新调整某一个旧的规则。不过大多数时候,既然我们谈的是阅读不同读物的方法,我们会强调基本要问的不同问题,以及会获得什么样的不同的回答。
在论说性作品的部分,我们谈过基本上要区分出实用性与理论性,两种作品—前者是有关行动的问题,后者只和要传递的知识有关。我们也说过,理论性的作品可以进一步划分为历史、科学(与数学)、哲学。实用性作品则没有任何界限,因此我们要进一步分析这类书的特质,并提供一些阅读时的建议指南与方法。
1.两种实用性的书
#
关于实用性的书有一件事要牢记在心:任何实用性的书都不能解决该书所关心的实际问题。一本理论性的作品可以解决自己提出的问题。但是实际的问题却只能靠行动来解决。当你的实际问题是如何赚钱谋生时,一本教你如何交朋友或影响别人的书,虽然可能建议你很多事,但却不能替你解决问题。没有任何捷径能解决这个问题,只能靠你自己去赚钱谋生才能解决。
以本书为例。这是一本实用的书,如果你对这本书的实用性(当然也可能只是理论性)感兴趣,那你就是想要解决学习阅读的问题。但除非你真的学到了,你不可能认为那些问题都解决,消失不见了。本书没法为你解决那些问题,只能帮助你而已。你必须自己进行有活力的阅读过程,不只是读这本书,还要读很多其他的书。这也是为什么老话说:只有行动能解决问题。行动只能在现世发生,而不是在书本中发生。
每个行动发生时都有特殊情况,都发生在不同的时间、地点与特殊环境中。你没法照一般的反应来行动。要立即采取行动的特殊判断力,更是极为特别。这可以用文字来表达,却几乎没见过。你很难在书中找到这样的说明,因为实用书的作者不能亲身体验读者在面临的特殊状况时,必须采取的行动。他可能试着想要帮忙,但他不能提供现场的实际建议。只有另一个置身一模一样情况的人,才能帮得上忙。
然而,实用性的书多少还是可以提供一些可以应用在同类型特殊状况中的通用规则。任何人想要使用这样的书,一定要把这些规则运用在特殊的状况下,因此一定要练习特殊的判断力才行。换句话说,读者一定要能加上一点自己的想法,才能运用在实际的状况中。他要能更了解实际状况,更有判断力,知道如何将规则应用在这样的状况中。
任何书里包含了规则—原理、准则或任何一种一般的指导—你都要认定是一本实用性的书。但是一本实用性的书所包含的不只是规则而已。它可能会说明规则底下的原理,使之浅显易懂.譬如在这本与阅读有关的特殊主题的书中,我们不断地简要阐释文法、修辞与逻辑原理,来解说阅读规则。规则底下的原理通常都很科学,换言之,属于理论性的知识。规则与原理的结合,就是事物的理论。因此,我们谈造桥的理论,也谈打桥牌的理论。我们的意思是,理论性的原则会归纳出出色的行事规则。
实用性的书因此可分为两种类型。其中一种,就像本书一样,或是烹饪书、驾驶指南,基本上都是在说明规则的。无论其中谈论到什么问题,都是为了说明规则而来的。这类书很少有伟大的作品。另一类的 实用书主要是在阐述形成规则的原理。许多伟大的经济、政治、道德巨著就属于这一类。
这样的区分并不是绝对的。在一本书中,同时可以找到原理与规 则。重点在特别强调其中哪一项。要将这两种类型区分出来并不困 难。不管是在什么领域中,谈规则的书都可以立刻认出来是实用性的。 一本谈实用原理的书,乍看之下会以为是理论性的书。从某个程度来说,的确没错。它所讨论的是一种特殊状况中的理论。无论如何,你还是看得出来它是实用性的书。它要处理的那些问题的本质会露底。这样的书所谈的总是人类行为领域中,怎样可能做得更好或更糟。
在阅读一本以规则为主的书时,要找寻的主旨当然是那些规则。 阐述这些规则通常是用命令句,而不是叙述句。那是一种命令。譬如说:“及时一针,胜过事后九针。”这样的规则也可以改为叙述式的说法:“如果你及时补上一针,就省下后来要补的九针。”两个句子都是在提示 争取时间的价值,命令式的语句比较强烈,但却不见得就比较容易记住。
无论是叙述句或命令句,你总是能认出一个规则来,因为它在建议你某件事是值得做的,而且一定会有收获。因此,要你与作者达成共识的那条命令式的阅读规则,也可以改成建议式的说法:“成功的阅读牵涉到读者与作者达成共识。”“成功”这两个字就说明了一切,意味着这种阅读是值得去做的一件事。
这类实用书的论述都是在向你表示:它们所说的规则都是确切可 行的。作者可能会用原理来说明这些规则的可信度,或是告诉你一些实例,证明这些规则是可行的。看看这两种论述,诉诸原理的论述通常比较没有说服力,但却有一个好处。比起举实例的方法,诉诸原理的论述比较能将规则的理由说明得清楚一些。
在另一种实用性书中,主要谈的是规则背后的原理。当然,其中的主旨与论述看起来就跟纯理论性的书一模一样。其中的主旨是在说明某件事的状态,而论述就是在强调真的是如此。
但是阅读这样的一本书,与阅读纯理论的书还是有很大的不同。因为要解决的问题终究是实用的问题—行动的问题,人类在什么状态下可以做得更好或更糟的问题—所以当聪明的读者看到“实用原理”这样的书时,总是能读出言外之意。他可能会看出那些虽然没有明说,但却可以由原理衍生出来的规则。他还会更进一步,找出这些规则应该如何实际应用。
除非这样阅读,否则一本实用的书便没有被实用地阅读。无法让一本实用的书被实用地阅读,就是失败的阅读。你其实并不了解这本书,当然也不可能正确地评论这本书了。如果在原理中能找到可以理解的规则,那么也就可以在由原理引导出来的规则或建议的行动中,找到实用原理的意义。
这些是你要了解任何一种实用性书籍,或是在作某种批评时的最高原则。在纯理论性的书中,相同或反对的意见是与书中所谈的真理有关。但是现实的真理与理论的真理不同。行为规则要谈得上是真理,有两种情况:一是真的有效;二是这样做能带引你到正确的结果,达到你的期望。
假设作者认为你应该寻求的正确结果,你并不以为然,那么就算他的建议听起来很完整,由于那个目标的缘故,你可能还是不会同意他的观点。你会因此而判断他的书到底实不实用。如果你不认同仔细、头脑清楚地阅读是件值得做的事情,那么纵使本书的规则真的有效,这本书对你来说还是没什么实用性。
注意这段话的意义。在评断一本理论性的书时,读者必须观察他自己与作者之间的原理与假设的一致性或差异性。在评断一本实用性的书时,所有的事都与结果及目标有关。如果你不能分享马克思对经济价值的狂热,他的经济教条与改革措施对你来说就有点虚假或无关197痛痒。譬如你可能和埃德蒙·柏克(Edmund Burke)一样,认为维持现状就是最好的策略,而且在全面考量过后,你相信还有比改变资本不平等更重要的事。你的判断主要是与结果达成共识,而非方法。就算 方法非常真实有用,如果所达到的目的是我们不关心或不期望的结果, 我们也不会有半点兴趣的。
2.说服的角色
#
以上的简单讨论,可以给你一些线索。当你在阅读任何一种实用书时,一定要问你自己两个主要的问题。第一:作者的目的是什么?第二:他建议用什么方法达到这个目的?以原理为主的书要比以规则 为主的书还要难回答这两个问题。在这些书中,目的与方法可能都不很明显。但如果你想要了解与评论实用性的书,就必须回答这两个问题。
还要提醒你的是,前面我们讨论过的实用作品的写作问题。每一本实用的书中都混杂着雄辩或宣传。我们还没读过一本政治哲学的书—无论是多理论性的,无论谈的是多么“深奥”的原理—是不是想说服读者有关“最好的政府形态”的道理。相同的,道德理论的书也想 要说服读者有关“美好生活”的道理,同时建议一些达到目标的方法。我们也一直试着要说服你照某种特定的方式来阅读一本书,以达到你可能想要追求的理解力。
你可以知道为什么实用书的作者多少都是个雄辩家或宣传家。因为你对他作品最终的评断是来自你是否接受他的结论.与他提议的方法。这完全要看作者能不能将你引导到他的结论上。要这么做,他讨论的方法必须要能打动你的心智。他可能必须激起你的情绪反应,左右你的意志。
这并没有错,也没有恶意。这正是实用书的特性,一个人必须要被 说服,以采取特定的思想与行动。实际的思考与行动除了需要理智以 外,情感也是重要的因素。没有人可以没有受到感动,却认真采取实际 评论或行动的。如果可以的话,这个世界可能会比较美好,但一定是个不同的世界。一本实用书的作者认知不到这一点,就不算成功。一位读者如果认知不到这一点,就像买了一堆货物,却不知道自己买了些什么。
不想被宣传所困惑,就得了解宣传的内容是什么。难以察觉的隐藏式雄辩是最狡猾的。那会直接打动你的心,而不经过你的头脑,就像是从背后吓你一跳,把你吓得魂不附体一样。这样的宣传手法就像是你吞了一颗药,自己却完全不知道。宣传的影响力是很神秘的,事后你并不知道自己为什么会那样感觉与思考。
一个人如果真正读懂了一本实用的书,他知道这本书的基本共识、主旨、论述是什么,就能觉察出作者的雄辩。他会觉察到某一段话是“情绪用字”。他知道自己是被说服的对象,他有办法处理这些诉求的重点。他对推销有抵抗力,但并不是百分之百的需要。对推销有抵抗力是好的,能帮你避免在匆忙又欠考虑的情况下买东西。但是,一个读者如果完全不接受所有内容的诉求,那就不必阅读实用性的书了。
另外还有一个重点。因为实用问题的特性,也因为所有实用作品中都混杂了雄辩,作者的“性格”在实用书中就比理论书中还要来得重要。你在读一本数学用书时,用不着知道作者是谁。他的理论不是好就是坏,这跟他的人格怎样一点关系也没有。但是为了要了解与评断一本道德的论述、政治论文或经济论著,你就要了解一点作者的人格、生活与时代背景。譬如在读亚里士多德的《政治学》之前,就非常需要知道希腊的社会背景是奴隶制的。同样的,在读《君主论》之前,就要知道马基雅维里当时意大利的政治情况,与他跟美第奇家族的关系。因此,在读霍布斯的《利维坦》一书时,就要了解他生活在英国的内战时期,社会中充满暴力与混乱,使整个时代都沉浸在悲哀的病态之中。
3.赞同实用书之后
#
我们确定你已经看出来了,你在读一本书时要提出的四个问题,到了读实用性的书时有了一点变化。我们就来说明一下这些变化。
第一个问题:这本书是在谈些什么?并没有改变多少。因为一本实用的书是论说性的,仍然有必要回答这个问题,并作出这本书的大纲架构。
然而,虽然读任何书都得想办法找出一个作者的问题是什么(规则四涵盖这一点),不过在读实用性的书时,格外是一个决定性的关键。我们说过,你一定要了解作者的目的是什么。换句话说,你一定要知道他想解决的问题是什么。你一定要知道他想要做些什么—因为,在实用性的书中,知道他要做的是什么,就等于是知道他想要你做的是什么。这当然是非常重要的事了。
第二个问题的变化也不大。为了要能回答关于这本书的意义或内容,你仍然要能够找出作者的共识、主旨与论述。但是,这虽然是第二阶段最后的阅读工作(规则八),现在却显得更重要了。你还记得规则八要你说出哪些是作者已经解决的问题,哪些是还没有解决的问题。在阅读实用性的书籍时,这个规则就有变化了。你要发现并了解作者所建议的、达到他目标的方法。换句话说,在阅读实用性书时,如果规则四调整为:“找出作者想要你做什么。”规则八就该调整为:“了解他要你这么做的目的。”
第三个问题:内容真实吗?比前两个改变得更多了。在理论性作品中,当你根据自己的知识来比较作者对事物的描绘与说明时,这个问题的答案便出来了。如果这本书所描述的大致与你个人的体验相似时,你就必须承认那是真实的,或至少部分是真实的。实用性的书,虽然也会与真实作比较,但最主要的却是你能不能接受作者的宗旨—他最终的目标,加上他建议的达成目标的方法—这要看你认为追求的是什么,以及什么才是最好的追求方法而定。
第四个问题:这本书与我何干?可说全部改变了。如果在阅读一本理论性的书之后,你对那个主题的观点多少有点变化了,你对一般事物的看法也就会多少有些调整。(如果你并不觉得需要调整,可能你并没有从那本书中学到什么。)但是这样的调整并不是惊天动地的改变,毕竟,这些调整并不一定需要你探取行动。
赞同一本实用性的书,却确实需要你采取行动。如果你被作者说服了,他所提议的结论是有价值的,甚至进一步相信他的方法真的能达到目的,那就很难拒绝作者对你的要求了。你会照着作者希望你做的方式来行动。
当然,我们知道这种情形并不一定会发生。但我们希望你了解的是,如果你不这样做的话,到底代表什么意思。那就表示虽然这个读者表面上同意了作者的结论,也接受了他提出来的方法,但是实际上并没有同意,也没有接受。如果他真的都同意也接受了,他没有理由不采取行动。
我们用一个例子来说明一下。如果读完本书的第二部分,你(1)同意分析阅读是值得做的。(2)接受这些阅读规则,当作是达到目标的基本要件,你会像我们现在所说的一样,开始照着阅读起来。如果你没有这么做,可能并不是你偷懒或太累了,而是你并不真的同意(1)或(2)。
在这个论述中有一个明显的例外。譬如你读了一篇文章,是关于如何做巧克力慕斯的。你喜欢巧克力慕斯,也赞同这个作者的结论是对的。你也接受了这个作者所建议的达到目标的方法—他的食谱。但你是男性读者,从不进厨房,也没做过慕斯。在这样的情况中,我们的观点是否就不成立了?
并不尽然。这正好显示出我们应该要提到的,区分各种类型实用书的重要性。某些作者提出的结论是很通用或一般性的—可供所有的人类使用—另外一些作者的结论却只有少数人能运用。如果结论是通用的—譬如像本书,所谈的是使所有人都能阅读得更好,而不是只有少数人—那么我们所讨论的便适用于每位读者。如果结论是经过筛选的,只适用于某个阶层的人,那么读者便要决定他是否属于那个阶层了。如果他属于那个阶层,这些内容就适合他应用,他多少也有义务照作者的建议采取行动。如果他不属于这个阶层,他可能就没有这样的义务。
...
2025年1月7日 10:48 周二第二篇 阅读的第三个层次:分析阅读
第六章 一本书的分类
#
在本书的一开头,我们就已经说过了,这些阅读的规则适用于任何你必须读或想要读的读物。然而,在说明分析阅读,也就是这第二篇的内容中,我们却似乎要忽略这个原则。我们所谈的阅读,就算不全是,也经常只是指“书”而言。为什么呢?
答案很简单。阅读一整本书,特别是又长又难读的一本书,要面对的是一般读者很难想像,极为艰困的问题。阅读一篇短篇故事,总比读一本小说来得容易。阅读一篇文章,总比读一整本同一个主题的书籍来得轻松。但是如果你能读一本史诗或小说,你就能读一篇抒情诗或短篇故事。如果你能读一本理论的书—一本历史、哲学论述或科学理论—你就可以读同一个领域中的一篇文章或摘要。
因此,我们现在要说的阅读技巧,也可以应用在其他类型的读物上。你要了解的是,当我们提到读书的时候,所说明的阅读规则也同样适用于其他比较易于阅读的资料。虽然这些规则程度不尽相当,应用在后者身上时,有时候作用不尽相同,但是只要你拥有这些技巧,懂得应用,总可以比较轻松。
1.书籍分类的重要性
#
分析阅读的第一个规则可以这么说:规则一,你一定要知道自己在读的是哪一类书,而且要越早知道越好。最好早在你开始阅读之前就先知道。
譬如,你一定要知道,在读的到底是虚构的作品—小说、戏剧、史诗、抒情诗—还是某种论说性的书籍?几乎每个读者在看到一本虚构的小说时都会认出来,所以就会认为要分辨这些并不困难—其实不然。像《波特诺的牢骚》(Portnoy’s、Complaint),是小说还是心理分析的论著?《裸体午宴)(Naked Lunch)是小说,还是反对药物泛滥的劝导手册,像那些描述酒精的可怕,以帮助读者戒酒之类的书?《飘》(Gone With The Wind)是爱情小说,还是美国内战时期的南方历史?《大街》(Main Street)与《愤怒的葡萄))(The Grapes o f Wrath),一本都会经验,一本农村生活,到底是纯文学,还是社会学的论著?
当然,这些书都是小说,在畅销书排行榜上,都是排在小说类的。但是问这些问题并不荒谬。光是凭书名,像《大街》或《米德尔顿》,很难猜出其中写的是小说,还是社会科学论述。在当代的许多小说中,有太多社会科学的观点,而社会科学的论著中也有很多小说的影子,实在很难将二者区别开来。但是还有另一些科学—譬如物理及化学—出现在像是科幻小说《安珠玛特病毒》(The Andromeda Strain),或是罗伯特·海莱因(Robert Heinlein)、亚瑟·克拉克(Arthur C. Clarke)的书中。而像《宇宙与爱因斯坦博士》(The Universe and Dr. Einstein)这本书,明明不是小说,却几乎跟有“可读性”的小说一模一样。或许就像福克纳(William Faulkner)所说的,这样的书比其他的小说还更有可读性。
一本论说性的书的主要目的是在传达知识。“知识”在这样的书中被广泛地解说着。任何一本书,如果主要的内容是由一些观点、理论、假设、推断所组成,并且作者多少表示了这些主张是有根据的,有道理的,那这种传达知识的书,就是一本论说性(expository)的书。就跟小说一样,大多数人看到论说性的书也一眼就能辨识出来。然而,就像要分辨小说与非小说很困难一样,要区别出如此多样化的论说性书籍也并非易事。我们要知道的不只是哪一类的书带给我们指导,还要知道是用什么方法指导。历史类的书与哲学类的书,所提供的知识与启发方式就截然不同。在物理学或伦理学上,处理同一个问题的方法可能也不尽相同。更别提各个不同作者在处理这么多不同问题时所应用的各种不同方法了。
因此,分析阅读的第一个规则,虽然适用于所有的书籍,却特别适合用来阅读非小说,论说性的书。你要如何运用这个规则呢?尤其是这个规则的最后那句话?
之前我们已经建议过,一开始时,你要先检视这本书—用检视阅读先浏览一遍。你读读书名、副标题、目录,然后最少要看看作者的序言、摘要介绍及索引。如果这本书有书衣,要看看出版者的宣传文案。这些都是作者在向你传递讯号,让你知道风朝哪个方向吹。如果你不肯停、看、听,那也不是他的错。
2.从一本书的书名中你能学到什么
#
对于作者所提出的讯号视而不见的读者,比你想像中还要多得多。我们跟学生在一起,就已经一再感觉如此了。我们问他们这本书在说些什么?我们要他们用最简单的通常用语,告诉我们这本书是哪一类的书。这是很好的,也是要开始讨论一本书几乎必要的方式。但是,我们的问题,却总是很难得到任何答案。
我们举一两个这种让人困扰的例子吧!1859年,达尔文(CharlesDarwin)出版了一本很有名的书。一个世纪之后,所有的英语国家都在庆贺这本书的诞生。这本书引起无止境的争论,不论是从中学到一点东西,还是没学到多少东西的评论者,一致肯定其影响力。这本书谈论的是人类的进化,书名中有个“种"(species)字。到底这个书名在说些什么?
或许你会说那是《物种起源))(The Origin of Species),这样说你就对了。但是你也可能不会这样说,你可能会说那是《人种起源》(TheOrigin of the Species).最近我们问了一些年纪在25岁左右,受过良好教育的年轻人,到底达尔文写的是哪一本书,结果有一半以上的人说是《人种起源》。出这样的错是很明显的,他们可能从来没有读过那本书,只是猜想那是一本谈论人类种族起源的书。事实上,这本书跟这个主题只有一点点关联,甚至与此毫无关系。达尔文是在后来才又写了一本与此有关的书《人类始祖》(The Descent of Man)。《物种起源》,就像书名所说的一样,书中谈的是自然世界中,大量的植物、动物一开始是从少量的族群繁衍出来的,因此他声明了“物竞天择”的原理。我们会指出这个普遍的错误,是因为许多人以为他们知道这本书的书名,而事实上只有少之又少的人真的用心读过书名,也想过其中的含意。
再举一个例子。在这个例子中,我们不要你记住书名,但去想想其中的含意。吉朋写了一本很有名的书,而且还出名地长,是一本有关罗马帝国的书,他称这本书为《罗马帝国衰亡史》。几乎每个人拿到那本书都会认得这个书名,还有很多人即使没看到书,也知道这个书名。事实上,“衰亡”已经变成一个家喻户晓的用语了。虽然如此,当我们问到同样一批二十五岁左右,受过良好教育的年轻人,为什么第一章要叫做:《安东尼时代的帝国版图与武力》时,他们却毫无头绪。他们并没有看出整本书的书名既然叫作“衰亡史”,叙事者当然就应该从罗马帝国极盛时期开始写,一直到帝国衰亡为止。他们无意识地将“衰亡”两个字转换成“兴亡”了。他们很困惑于书中并没有提到罗马共和国,那个在安东尼之前一个半世纪就结束的时代。如果他们将标题看清楚一点,就算以前不知道,他们也可以推断安东尼时代就是罗马帝国的巅峰时期。阅读书名,换句话说,可以让阅读者在开始阅读之前,获得一些基本的资讯。但是他们不这么做,甚至更多人连不太熟悉的书也不肯看一下书名。
许多人会忽略书名或序言的原因之一是,他们认为要将手边阅读的这本书做分类是毫无必要的。他们并没有跟着分析阅读的第一个规则走。如果他们试着跟随这个规则,那就会很感激作者的帮忙。显然,作者认为,让读者知道他在写的是哪一类的书是很重要的。这也是为什么他会花那么多精神,不怕麻烦地在前言中做说明,通常也试着想要让他的书名—至少副标题—是让人能理解的。因此,爱因斯坦与英费尔德(Infeld)在他们所写的《物理之演进(The Evolution o fPhysics)一书的前言中告诉读者,他们写的是一本“科学的书,虽然很受欢迎,但却不能用读小说的方法来读”。他们还列出内容的分析表,提醒读者进一步了解他们概念中的细节。总之,列在一本书前面那些章节的标题,可以进一步放大书名的意义。
如果读者忽略了这一切,却答不出“这是一本什么样的书”的问题,那他只该责怪自己了。事实上,他只会变得越来越困惑。如果他不能回答这个问题,如果他从没问过自己这个问题,他根本就不可能回答随之而来的,关于这本书的其他问题。
阅读书名很重要,但还不够。除非你能在心中有一个分类的标准,否则世上再清楚的书名,再详尽的目录、前言,对你也没什么帮助。
如果你不知道心理学与几何学都是科学,或者,如果你不知道这两本书书名上的“原理”与“原则”是大致相同的意思(虽然一般而言不尽相同),你就不知道欧几里得(Euclid)的《几何原理》(Elements of Geometry)与威廉·詹姆斯(William James)的《心理学原理》(Principlesof Psychology)是属于同一种类的书—此外,除非你知道这两本书是不同类型的科学,否则就也无法进一步区分其间的差异性。相同的,以亚里士多德的《政治学))(The Politics)与亚当·斯密的《国富论》为例,除非你了解一个现实的问题是什么,以及到底有多少不同的现实问题,否则你就无法说出这两本书相似与相异之处。
书名有时会让书籍的分类变得比较容易一些。任何人都会知道欧几里得的《几何原理》、笛卡尔的《几何学》(Geometry)与希尔伯特(HilBert)的《几何基础)(Foundations of Geometry)都是数学的书,彼此多少和同一个主题相关。但这不是百试百中。光是从书名,也可能并不容易看出奥古斯丁的《上帝之城》(The City of God)、霍布斯的《利维坦》(Leviathan)与卢梭的《社会契约论》(Social Contract)都是政治的论述—虽然,如果仔细地阅读这三本书的章名,会发现它们都想探讨的一些共同问题。
...
2025年1月5日 08:42 周日第16章 MySQL用户工具
MySQL服务器发行包中并没有包含针对许多常用任务的工具,例如监控服务器或比较不同服务器间数据的工具。幸运的是,Oracle的商业版提供了一些扩展工具,并且MySQL活跃的开源社区和第三方公司也提供了一系列的工具,降低了自己“重复发明轮子”的需要。
16.1 接口工具
#
接口工具可以帮助运行查询,创建表和用户,以及执行其他日常任务等。本节将简单介绍一些用于此用途的最流行的工具。一般可以用SQL查询或命令做所有这些或其中大部分的工作——我们这里讨论的工具只是更为方便,可帮助避免错误和加快工作。
MySQL Workbench
MySQL Workbench是一个一站式的工具,可以完成例如管理服务器、写查询、开发存储过程,以及Schema设计图相关的工作。可以通过一个插件接口来编写自己的工具并集成到这个工作平台上,有一些Python脚本和库就使用了这个插件接口。MySQL Workbench有社区版和商业版两个版本,商业版只是增加了其他的一些高级特性。免费版对于大部分需要早已足够了。在
http://www.mysql.com/products/workbench/可以学到更多相关的内容。
SQLyog
SQLyog是MySQL最流行的可视化工具之一,有许多很好的特性。它与MySQL Workbench是同级别的工具,但两个工具都有一些对方没有的特性。SQLyog只能在微软的Windows下使用,拥有全部特性的版本需要付费,但有限制功能的免费版本。关于SQLyog的更多信息可以参考
http://www.webyog.com。
phpMyAdmin
phpMyAdmin是一个流行的管理工具,运行在Web服务器上,并且提供基于浏览器的MySQL服务器访问接口。尽管基于浏览器的访问有时很好,但phpMyAdmin是个大而复杂的工具,曾被指责有许多安全问题。对此要格外小心。我们建议不要安装在任何可以从互联网访问的地方。更多信息请参考
http://sourceforge.net/projects/phpmyadmin/。
Adminer
Adminer是个基于浏览器的安全的轻量级管理工具,它与phpMyAdmin同类。其开发者将其定位为phpMyAdmin的更好的替代品。尽管它看起来更安全,但我们仍建议安装在任何可公开访问的地方时要谨慎。更多详情可参考
http://www.adminer.org。
16.2 命令行工具集
#
MySQL包含了一些命令行工具集,例如mysqladmin和mysqlcheck。这些在MySQL手册上都有提及和记录。MySQL社区同样创建了大量高质量的工具包,并有很好的文档支撑这些实用工具集。
Percona Toolkit
Percona Toolkit是MySQL管理员必备的工具包。它源自Baron早期的工具包Maatkit和Aspersa,很多人认为这两个工具应该是正式的MySQL部署必须强制要求使用的。Percona Toolkit包括许多针对类似日志分析、复制完整性检测、数据同步、模式和索引分析、查询建议和数据归档目的的工具。如果刚开始接触MySQL,我们建议首先学习这些关键的工具:pt-mysql-summary、pt-table-checksum、pt-table-sync和pt-query-digest。更多信息可参考
http://www.percona.com/software/。
Maatkit and Aspersa
这两个工具约从2006年以某种形式出现,两者都被认为是MySQL用户的基本工具。它们现在已经并入 Percona Toolkit。
The openark kit
Shlomi Noach的openark kit(
http://code.openark.org/forge/openark-kit)包含了可以用来做一系列管理任务的Python脚本。
MySQL Workbench工具集
MySQL Workbench工具集中的某些工具可以作为单独的Python脚本使用。可参考 https://launchpad.net/mysql-utilities。
除了这些工具外,还有其他一系列没有太正式包装和维护的工具。许多杰出的MySQL社区成员时不时地贡献工具,其中大多数托管在他们自己的网站或MySQL Forge(http:// forge.mysql.com)上。可以通过不时地查看Planet MySQL博客聚合器获取大量的信息(
http://planet.mysql.com),但不幸的是这些工具没有一个集中的目录。
16.3 SQL实用集
#
服务器本身也内置有一系列免费的附加组件和实用集可以使用;其中一些确实相当强大。
common_schema
Shlomi Noach的common_schema项目(
http://code.openark.org/forge/common_schema)是一套针对服务器脚本化和管理的强大的代码和视图。common_schema对于MySQL好比jQuery对于JavaScript。
mysql-sr-lib
Giuseppe Maxia为MySQL创建了一个存储过程的代码库,可以在*
http://www.nongnu.org/mysql-sr-lib/*找到。
MySQL UDF仓库
Roland Bouman建立了一个MySQL自定义函数的收藏馆,可以在 http://www. mysqludf.org获取。
MySQL Forge
在MySQL Forge上(
http://forge.mysql.com),可以找到上百个社区贡献的程序、脚本、代码片断、实用集和技巧及陷阱。
...
2025年1月5日 08:42 周日第15章 备份与恢复
如果没有提前做好备份规划,也许以后会发现已经错失了一些最佳的选择。例如,在服务器已经配置好以后,才想起应该使用LVM,以便可以获取文件系统的快照——但这时已经太迟了。在为备份配置系统参数时,可能没有注意到某些系统配置对性能有着重要影响。如果没有计划做定期的恢复演练,当真的需要恢复时,就会发现并没有那么顺利。
相对于本书的第一版和第二版来说,我们在此假设大部分用户主要使用InnoDB而不是MyISAM。在本章中,我们不会涵盖一个精心设计的备份和恢复解决方案的所有部分——而仅涉及与MySQL相关的部分。我们不打算包括的话题如下:
- 安全(访问备份,恢复数据的权限,文件是否需要加密)。
- 备份存储在哪里,包括它们应该离源数据多远(在一块不同的盘上,一台不同的服务器上,或离线存储),以及如何将数据从源头移动到目的地。
- 保留策略、审计、法律要求,以及相关的条款。
- 存储解决方案和介质,压缩,以及增量备份。
- 存储的格式。
- 对备份的监控和报告。
- 存储层内置备份功能,或者其他专用设备,例如预制式文件服务器。
像这样的话题已经在许多书中涉及,例如W. Curtis Preston的Backup& Recouery ( O’Reilly)。
在开始本章之前,让我们先澄清几个核心术语。首先,经常可以听到所谓的热备份、暖备份和冷备份。人们经常使用这些词来表示一个备份的影响:例如,“热”备份不需要任何的服务停机时间。问题是对这些术语的理解因人而异。有些工具虽然在名字中使用了“热备份”,但实际上并不是我们所认为的那样。我们尽量避开这些术语,而直接说明某个特别的技术或工具对服务器的影响。
另外两个让人困惑的词是还原和恢复。在本章中它们有其特定的含义。还原意味着从备份文件中获取数据,可以加载这些文件到MySQL里,也可以将这些文件放置到MySQL期望的路径中。恢复一般意味着当某些异常发生后对一个系统或其部分的拯救。包括从备份中还原数据,以及使服务器完全恢复功能的所有必要步骤,例如重启MySQL、改变配置和预热服务器的缓存等。
在很多人的概念中,恢复仅意味着修复崩溃后损坏的表。这与恢复一个完整的服务器是不同的。存储引擎的崩溃恢复要求数据和日志文件一致。要确保数据文件中只包含已经提交的事务所做的修改,恢复操作会将日志中还没有应用到数据文件的事务重新执行。这也许是恢复过程的一部分,甚至是备份的一部分。然而,这和一个意外的DROP TABLE事故后需要做的事是不一样的。
15.1 为什么要备份
#
下面是备份非常重要的几个理由:
灾难恢复
灾难恢复是下列场景下需要做的事情:硬件故障、一个不经意的Bug导致数据损坏,或者服务器及其数据由于某些原因不可获取或无法使用等。你需要准备好应付很多问题:某人偶然连错服务器执行了一个ALTER TABLE(1)的操作,机房大楼被烧毁,恶意的黑客攻击或MySQL的Bug等。尽管遭受任何一个特殊的灾难的几率都非常低,但所有的风险叠加在一起就很有可能会碰到。
人们改变想法
不必惊讶,很多人经常会在删除某些数据后又想要恢复这些数据。
审计
有时候需要知道数据或Schema在过去的某个时间点是什么样的。例如,你也许被卷入一场法律官司,或发现了应用的一个Bug,想知道这段代码之前干了什么(有时候,仅仅依靠代码的版本控制还不够)。
测试
一个最简单的基于实际数据来测试的方法是,定期用最新的生产环境数据更新测试服务器。如果使用备份的方案就非常简单:只要把备份文件还原到测试服务器上即可。检查你的假设。例如,你认为共享虚拟主机供应商会提供MySQL服务器的备份?许多主机供应商根本不备份MySQL服务器,另外一些也仅仅在服务器运行时复制文件,这可能会创建一个损坏的没有用处的备份。
15.2 定义恢复需求
#
如果一切正常,那么永远也不需要考虑恢复。但是,一旦需要恢复,只有世界上最好的备份系统是没用的,还需要一个强大的恢复系统。
不幸的是,让备份系统平滑工作比构造良好的恢复过程和工具更容易。原因如下:
- 备份在先。只有已经做了备份才可能恢复,因此在构建系统时,注意力自然会集中在备份上。
- 备份由脚本和任务自动完成。经常不经意地,我们会花些时间调优备份过程。花5分钟来对备份过程做小的调整看起来并不重要,但是你是否天天同样地重视恢复呢?
- 备份是日常任务,但恢复常常发生在危急情形下。
- 因为安全的需要,如果正在做异地备份,可能需要对备份数据进行加密,或采取其他措施来进行保护。安全性往往只关注数据被盗用的后果,但是有没有人想过,如果没有人能对用来恢复数据的加密卷解锁,或需要从一个整块的加密文件中抽取单个文件时,损害又是多大?
- 只有一个人来规划、设计和实施备份。当灾难袭来时,那个人可能不在。因此需要培养几个人并有计划地互为备份,这样就不会要求一个不合格的人来恢复数据。
这里有一个我们看到的真实例子:一个客户报告说当mysqldump加上-d选项后,备份变得像闪电一般快,他想知道为什么没有一个人提出该选项可以如此快地加速备份过程。如果这个客户已经尝试还原这些备份,就不难发现其原因:使用-d选项将不会备份数据!这个客户关注备份,却没有关注恢复,因此完全没有意识到这个问题。
规划备份和恢复策略时,有两个重要的需求可以帮助思考:恢复点目标(PRO)和恢复时间目标(RTO)。它们定义了可以容忍丢失多少数据,以及需要等待多久将数据恢复。在定义RPO和RTO时,先尝试回答下面几类问题:
- 在不导致严重后果的情况下,可以容忍丢失多少数据?需要故障恢复,还是可以接受自从上次日常备份后所有的工作全部丢失?是否有法律法规的要求?
- 恢复需要在多长时间内完成?哪种类型的宕机是可接受的?哪种影响(例如,部分服务不可用)是应用和用户可以接受的?当那些场景发生时,又该如何持续服务?
- 需要恢复什么?常见的需求是恢复整个服务器,单个数据库,单个表,或仅仅是特定的事务或语句。
建议将上面这些问题的答案明确地用文档记录下来,同时还应该明确备份策略,以及备份过程。
备份误区1:“复制就是备份”
这是我们经常碰到的一个误区。复制不是备份,当然使用RAID阵列也不是备份。为什么这么说?可以考虑一下,如果意外地在生产库上执行了DROP DATABASE,它们是否可以帮你恢复所有的数据?RAID和复制连这个简单的测试都没法通过。它们不是备份,也不是备份的替代品。只有备份才能满足备份的要求。
15.3 设计MySQL备份方案
#
备份MySQL比看起来难。最基本的,备份仅是数据的一个副本,但是受限于应用程序的要求、MySQL的存储引擎架构,以及系统配置等因素,会让复制一份数据都变得很困难。
在深入所有选项细节之前,先来看一下我们的建议:
- 在生产实践中,对于大数据库来说,物理备份是必需的:逻辑备份太慢并受到资源限制,从逻辑备份中恢复需要很长时间。基于快照的备份,例如Percona XtraBackup和MySQL Enterprise Backup是最好的选择。对于较小的数据库,逻辑备份可以很好地胜任。
- 保留多个备份集。
- 定期从逻辑备份(或者物理备份)中抽取数据进行恢复测试。
- 保存二进制日志以用于基于故障时间点的恢复。expire_logs_days参数应该设置得足够长,至少可以从最近两次物理备份中做基于时间点的恢复,这样就可以在保持主库运行且不应用任何二进制日志的情况下创建一个备库。备份二进制日志与过期设置无关,二进制日志备份需要保存足够长的时间,以便能从最近的逻辑备份进行恢复。
- 完全不借助备份工具本身来监控备份和备份的过程。需要另外验证备份是否正常。
- 通过演练整个恢复过程来测试备份和恢复。测算恢复所需要的资源(CPU、磁盘空间、实际时间,以及网络带宽等)。
- 对安全性要仔细考虑。如果有人能接触生产服务器,他是否也能访问备份服务器?反过来呢?
弄清楚RPO和RTO可以指导备份策略。是需要基于故障时间点的恢复能力,还是从昨晚的备份中恢复但会丢失此后的所有数据就足够了?如果需要基于故障时间点的恢复,可能要建立日常备份并保证所需要的二进制日志是有效的,这样才能从备份中还原,并通过重放二进制日志来恢复到想要的时间点。
...
2025年1月5日 08:42 周日第14章 应用层优化
如果在提高MySQL的性能上花费太多时间,容易使视野局限于MySQL本身,而忽略了用户体验。回过头来看,也许可以意识到,或许MySQL已经足够优化,对于用户看到的响应时间而言,其所占的比重已经非常之小,此时应该关注下其他部分了。这是个很不错的观点,尤其是对DBA而言,这是很值得去做的正确的事。但如果不是MySQL,那又是什么导致了问题呢?使用第3章提到的技术,通过测量可以快速而准确地给出答案。如果能顺着应用的逻辑过程从头到尾来剖析,那么找到问题的源头一般来说并不困难。有时,尽管问题在MySQL上,也很容易在系统的另一部分得到解决。
无论问题出在哪里,都至少可以找到一个靠谱的工具来帮助进行分析,而且通常是免费的。例如,如果有JavaScript或者页面渲染的问题,可以使用包括Firefox浏览器的Firebug插件在内的调优工具,或者使用Yahoo!的YSlow工具。我们在第3章提到了几个应用层工具。一些工具甚至可以剖析整个堆栈:New Relic是一个很好的例子,它可以剖析Web应用的前端、应用以及后端。
14.1 常见问题
#
我们在应用中反复看到一些相同的问题,经常是因为人们使用了缺乏设计的现成系统或者简单开发的流行框架。虽然有时候可以通过这些框架更快更简单地构建系统,但是如果不清楚这些框架背后做了什么操作,反而会增加系统的风险。
下面是我们经常会碰到的问题清单,通过这些过程可以激发你的思维。
- 什么东西在消耗系统中每台主机的CPU、磁盘、网络,以及内存资源?这些值是否合理?如果不合理,对应用程序做基本的检查,看什么占用了资源。配置文件通常是解决问题最简单的方式。例如,如果Apache因为创建1000个需要50MB内存的工作进程而导致内存溢出,就可以配置应用程序少使用一些Apache工作进程。也可以配置每个进程少使用一些内存。
- 应用真的需要所有获取到的数据吗?获取1000行数据但只显示10行,而丢弃剩下的990行,这是常见的错误。(如果应用程序缓存了另外的990行备用,这也许是有意的优化。)
- 应用在处理本应由数据库处理的事情吗,或者反过来?这里有两个例子,从表中获取所有的行在应用中进行统计计数,或者在数据库中执行复杂的字符串操作。数据库擅长统计计数,而应用擅长正则表达式。要善于使用正确的工具来完成任务。
- 应用执行了太多的查询?ORM宣称的把程序员从写SQL中解放出来的语句接口通常是罪魁祸首。数据库服务器为从多个表匹配数据做了很多优化,因此应用程序完全可以删掉多余的嵌套循环,而使用数据库的关联来代替。
- 应用执行的查询太少了?好吧,上面只说了执行太多SQL可能成为问题。但是,有时候让应用来做“手工关联”以及类似的操作也可能是个好主意。因为它们允许更细的粒度控制和更有效的使用缓存,以及更少的锁争用,甚至有时应用代码里模拟的哈希关联会更快(MySQL的嵌套循环的关联方法并不总是高效的)。
- 应用创建了没必要的MySQL连接吗?如果可以从缓存中获得数据,就不要再连接数据库。
- 应用对一个MySQL实例创建连接的次数太多了吗(也许因为应用的不同部分打开了它们自己的连接)?通常来说更好的办法是重用相同的连接。
- 应用做了太多的“垃圾”查询?一个常见的例子是发送查询前先发送一个ping命令看数据库是否存活,或者每次执行SQL前选择需要的数据库。总是连接到一个特定的数据库并使用完整的表名也许是更好的方法。(这也使得从日志或者通过SHOW PROCESSLIST看SQL更容易了,因为执行日志中的SQL语句的时候不用再切换到特定的数据库,数据库名已经包含在SQL语句中了。)“预备(Preparing)”连接是另一个常见问题。Java驱动在预备期间会做大量的操作,其中大部分可以禁用。另一个常见的垃圾查询是SET NAMES UTF8,这是一个错误的方法(它不会改变客户端库的字符集,只会影响服务器的设置)。如果应用在大部分情况使用特定的字符集工作,可以修改配置文件把特定字符集设为默认值,而不需要在每次执行时去做修改。
- 应用使用了连接池吗?这既可能是好事,也可能是坏事。连接池可以帮助限制总的连接数,有大量SQL执行的时候效果不错(Ajax应用是一个典型的例子)。然而,连接池也可能有一些副作用,比如说应用的事务、临时表、连接相关的配置项,以及用户自定义变量之间相互干扰等。
- 应用是否使用长连接?这可能导致太多连接。通常来说长连接不是个好主意,除非网络环境很慢导致创建连接的开销很大,或者连接只被一或两个很快的SQL使用,或者连接频率很高导致客户端本地端口不够用。如果MySQL的配置正确,也许就不需要长连接了。比如使用skip-name-resolve来避免DNS反向查询,确保 thread_cache足够大,并且增加back_log。可以参考第8章和第9章得到更多的细节。
- 应用是否在不使用的时候还保持连接打开?如果是这样,尤其是连接到很多服务器时,可能会过多地消耗其他进程所需要的连接。例如,假设你连接到10个MySQL服务器。从一个Apache进程中获取10个连接不是问题,但是任意时刻其中只有1个在真正工作。其他9个大部分时间都处于Sleep状态。如果其中一台服务器变慢了,或者有一个很长的网络请求,其他的服务器就可能因为连接数过多受到影响。解决方案是控制应用怎么使用连接。例如,可以将操作批量地依次发送到每个MySQL实例,并且在下一次执行SQL前关闭每个连接。如果执行的是比较消耗时间的操作,例如调用Web服务接口,甚至可以先关闭MySQL连接,执行耗时的工作,再重新打开MySQL连接继续在数据库上工作。
长连接和连接池的区别可能使人困惑。长连接可能跟连接池有同样的副作用,因为重用的连接在这两种情况下都是有状态的。
然而,连接池通常不会导致服务器连接过多,因为它们会在进程间排队和共享连接。另一方面,长连接是在每个进程基础上创建,不会在进程间共享。
连接池也比共享连接的方式对连接策略有更强的控制力。连接池可以配置为自动扩展,但是通常的实践经验是,当遇到连接池完全占满时,应该将连接请求进行排队而不是扩展连接池。这样做可以在应用服务器上进行排队等待,而不是将压力传递到MySQL数据库服务器上导致连接数太多而过载。
有很多方法可以使得查询和连接更快,但是一般的规则是,如果能够直接避免进行查询和连接,肯定比努力提升查询和连接的性能能获得更好的优化结果。
14.2 Web服务器问题
#
Apache是最流行的Web应用服务器软件。它在许多情况下都运行良好,但如果使用不当也会消耗大量的资源。最常见的问题是保持它的进程的存活(alive)时间过长,或者在各种不同的用途下混合使用,而不是分别对不同类型的工作进行优化。
Apache通常是通过prefork配置来使用mod_php、mod_perl和mod_python模块的。prefork模式会为每个请求预分配进程。因为PHP、Perl和Python脚本是可以定制化的,每个进程使用50MB或100MB内存的情况并不少见。当一个请求完成后,会释放大部分内存给操作系统,但并不是全部。Apache会保持进程处于打开状态以备后来的请求重用。这意味着,如果下一个请求是请求静态文件,比如一个CSS文件或者一张图片,就会出现用一个占用内存很多的进程来为一个很小的请求服务的情况。这就是使用Apache作为通用Web服务器很危险的原因。它的确是为通用目的而设计的,但如果能够有针对性地使用其长处,会获得更好的性能。
另一个主要的问题是,如果开启了Keep-Alive设置,进程可能很长时间处于繁忙状态。当然,即使没有开启Keep-Alive,某些进程也可能存活很久,“填鸭式”地将内容传给客户端可能导致获取数据很慢(1)。
人们常犯的另外一个错误,就是保持那些Apache默认开启的模块不动。
最好能够精简Apache的模块,移除掉那些不需要的。这很简单:只需要检查Apache的配置文件,注释掉不想要的模块,然后重启Apache就行。也可以在php.ini文件中删除不使用的PHP模块。
最差情况是,如果用一个通用目的的Apache配置直接用于Web服务,最后很可能产生很多重量级的Apache进程。这将浪费Web服务器的资源。它们还可能保持大量MySQL连接,浪费MySQL的资源。下面是一些可以降低服务器负载的方法(2)。
不要使用Apache来做静态内容服务,或者至少和动态服务使用不同的Apache实例。流行的替代品有Nginx(
http://www.nginx.com)和lighttpd (
http://www.lighttpd.net)。
- 使用缓存代理服务器,比如Squid或者Varnish,防止所有的请求都到达Web服务器。这个层面即使不能缓存所有页面,也可以缓存大部分页面,并且使用像ESI(Edge Side Includes,参见
http://www.esi.org)这样的技术来将部分页面中的小块的动态内容嵌入到静态缓存部分。
- 对动态和静态资源都设置过期策略。可以使用Squid这样的缓存代理显式地使内容过期。维基百科就使用了这个技术来清理缓存中变更过的文章。
有时也许还需要修改应用程序,以便得到更长的过期时间。例如,如果你告诉浏览器永久缓存CSS和JavaScript文件,然后对站点的HTML做了一个修改,这个页面渲染将会出问题。这种情况可以为文件的每个版本设定唯一的文件名。例如,你可以定制网站的发布脚本,复制CSS文件到*/css/123_frontpage.css*,这里的123就是版本管理器中的版本号。对图片文件的文件名也可以这么做——永不重用文件名,这样页面就不会在升级时出问题,浏览器缓存多久的文件都没问题。
- 不要让Apache填鸭式地服务客户端,这不仅仅会导致慢,也会导致DDoS攻击变得简单。硬件负载均衡器通常可以做缓冲,所以Apache可以快速地完成,让负载均衡器通过缓存响应客户端的请求,也可以在应用服务器前端使用Nginx、Squid或者事件驱动模式下的Apache。
- 打开gzip压缩。对于现在的CPU而言这样做的代价很小,但是可以节省大部分流量。如果想节省CPU周期,可以使用缓存,或者诸如Nginx这样的轻量级服务器保存压缩过的页面版本。
- 不要为用于长距离连接的Apache配置启用Keep-Alive选项,因为这会使得重量级的Apache进程存活很长时间。可以用服务器端的代理来处理保持连接的工作,从而防止Apache被客户端拖垮。配置Apache到代理之间的连接使用Keep-Alive是可以的,因为代理只会使用很少的Apache连接去获取数据。图14-1展示了这个区别。
图14-1:代理可以使Apache不被长连接拖垮,产生更少的Apache工作进程。
这些策略可以使Apache进程存活时间变得很短,所以会有比实际需求更多的进程。无论如何,有些操作依然可能导致Apache进程存活时间太长,并且占用大量资源。举个例子,一个请求查询延时非常大的外部资源,例如远程的Web服务,就会出现Apache进程存活时间太长的问题。这种问题通常是无解的。
14.2.1 寻找最优并发度
#
每个Web服务器都有一个最佳并发度——就是说,让进程处理请求尽可能快,并且不超过系统负载的最优的并发连接数。这就是我们在第11章说的最大系统容量。进行一个简单的测量和建模,或者只是反复试验,就可以找到这个“神奇的数”,为此花一些时间是值得的。
对于大流量的网站,Web服务器同一时刻处理上千个连接是很常见的。然而,只有一小部分连接需要进程实时处理。其他的可能是读请求,处理文件上传,填鸭式服务内容,或者只是等待客户端的下一步请求。
随着并发的增加,服务器会逐渐到达它的最大吞吐量。在这之后,吞吐量通常开始降低。更重要的是,响应时间(延迟)也会因为排队而开始增加。
为什么会这样呢?试想,如果服务器只有一个CPU,同时接收到了100个请求,会发生什么事情呢?假设CPU每秒能够处理一个请求。即便理想情况下操作系统没有调度的开销,也没有上下文切换的成本,那100个请求也需要CPU花费整整100s才能完成。
处理请求的最好方法是什么?可以将其一个个地排到队列中,也可以并行地执行并在不同请求之间切换,每次切换都给每个请求相同的服务时间。在这两种情况下,吞吐量都是每秒处理一个请求。然而,如果使用队列(并发=1),平均延时是50s,如果是并发执行(并发=100)则是100s。在实践中,并发执行会使平均延时更高,主要是因为上下文切换的代价。
对于CPU密集型工作负载,最佳并发度等于CPU数量(或者CPU核数)。然而,进程并不总是处于可运行状态的,因为会有一些阻塞式请求,例如I/O、数据库查询,以及网络请求。因此,最佳并发度通常会比CPU数量高一些。
可以预测最优并发度,但是这需要精确的分析。尝试不同的并发值,看看在不增加响应时间的情况下的最大吞吐量是多少,或者测量真正的工作负载并且进行分析,这通常更容易。Percona Toolkit的pt-tcp-model工具可以帮助从TCP转储中测量和建模分析系统的可扩展性和性能特性。
14.3 缓存
#
缓存对高负载应用来说是至关重要的。一个典型的Web应用程序会提供大量的内容,直接生成这些内容的成本比采用缓存要高得多(包含检查和缓存超时的开销),所以采用缓存通常可以获得数量级的性能提升。诀窍是找到正确的粒度和缓存过期策略组合。另外也需要决定哪些内容适合缓存,缓存在哪里。
...
2025年1月4日 16:42 周六附录
#
西周金文“初吉”之研究
#
一、传统解说难于否定
西周行用朔望月历制,朔与望至关重要。朔称初吉、月吉,或称吉,又叫既死霸(取全是背光面之义,死霸指背光面),或叫朔月。这种种名称,反映了周人对月相的重视以及朔日在历制中的特殊地位。
传统的解说,初吉即朔。
《诗·小明》“正月初吉”,毛传:初吉,朔日也。
《国语·周语》“自今至于初吉”,韦昭注初吉:二月朔日也。
《周礼》“月吉则属民而读邦法”,郑注月吉:每月朔日也。
《论语》“吉月必朝服而朝”,孔曰:吉月,月朔也。
《诗·十月之交》“朔月辛卯”,唐石经作“朔日辛卯”。
《礼记·祭义》:“朔月月半,君巡牲。”
《礼记·玉藻》“朔月大牢”,陈澔《礼记集说》:朔月,月朔也。
日本竹添光鸿《毛诗会笺》云:古人朔日称朔月。《仪礼》《礼记》皆有朔月之文。《尚书》或称元日、上日而不曰朔日。即望亦但曰月几望或既望而不曰望日,故知经文定当以朔月为是也。凡月朔皆称朔月。《论语》亦以月吉为吉月。古人多倒语,犹《书》之“月正元日”乃正月元日也。
《周礼》“正月之吉”,郑注:吉谓朔日。
《周礼》“及四时之孟月吉日”,郑注:四孟之月朔日。
郑玄作为两汉经学之集大成者,对朔为吉日的认识是十分明确的,或称月吉,或称吉日,或称吉,都肯定了朔为吉日这一点。
朔即月初一,故称初吉,亦属自然,这与望为吉日亦相对应。朔望月历制,朔为吉日,望亦为吉日。《易·归妹》“月几望,吉”可证。
毛传释初吉为朔日,韦昭注《国语》“初吉”为朔日,反映古人对“初吉”的正确认识。
尤其当注意的是,初吉为朔的解说,两千年来没有任何一位严肃的学者持有异议。
我们没有理由不尊重文献。应当说,传统对于初吉的解说是难于否定的,是不容否定的。
二、朔望月历制
西周是明白无误的朔望月历制,绝对不是什么“朏为月首”。
我们从载籍文字中可以找到若干证据:
《周礼·大史》“掌建邦之六典,以逆邦国之治。……正岁年以序事,颁之于官府及都鄙。(郑注:中数曰岁,朔数曰年。中朔大小不齐,正之以闰若今时历日矣。定四时,以次序授民时之事。)颁告朔于邦国。(郑注:天子班朔于诸侯,诸侯藏之于祖庙。至朔,朝于庙,告而受行之。郑司农云,以十二月朔布告天下诸侯。)”
这里的告朔之制,当然也包括西周一代。依郑玄说,岁指回归年长度(阳历),年指十二个朔望月长度(阴历),两者不一致,添加闰月来协调,这就是周代的阴阳合历体制。
西周一代,“保章氏掌天星以志星辰日月之变动”,强调天象的观察与记录;“冯相氏掌十有二岁,十有二月,十有二辰”(《周礼》),侧重在历术的推求。
《礼记·玉藻》:“天子听朔于南门之外。闰月则阖门左扉,立于其中。”陈澔《集说》引“方氏曰:天子听朔于南门,示受之于天。诸侯听朔于太庙,示受之于祖。原其所自也”。
历术是皇权的象征,掌握在周天子手中,天子于南门从冯相氏得每年十二个月朔的安排,然后颁朔于诸侯,诸侯藏之祖庙。至朔,朝于庙(即“听朔于太庙”),告而受行之。历术推求的依据是天象,所以“示受之于天”,“原其所自也”。
《逸周书·史记解》“朔望以闻”,是记周穆王时事。朔望月历制是明明白白的。
《礼记·祭义》“朔月月半,君巡牲”,这当然是说,初一与十五,人君巡视之。这难道不是朔望月的明证?
《吕氏春秋》保存了先秦的若干旧说,上至三皇五帝,史料价值不可忽视。《贵因》载:“夫审天者,察列星而知四时,因也。推历者视月行而知晦朔,因也。”
视月行,就是月相的观察。干什么?确定晦朔而已。很明白,观察月相就是为了确定一年十二个月朔的干支,以“颁告朔于邦国”。
《逸周书·宝典解》“维王三祀二月丙辰朔”,历日清清楚楚。过去说此篇是记武王的。事实上,历日唯合成王亲政三年,《宝典解》反映了西周初期朔望月历制。《逸周书》成书于西周以后,而这个历日当是前朝的实录,绝不是后人的伪造或推加。这是“朏为月首”说无法作出解释的。
《汉书·世经》云:“古文《月采》篇曰‘三日曰朏’。”师古注:《月采》,说月之光采,其书则亡。——这也许是记录月相的专著,可惜我们已不能见到了。刘歆是见过的,他持定点说当有充分依据。《月采》明确朏是初三。“朏为月首”是没有依据的。
大量出土的西周器物证实,西周历制是朔望月而不是“朏为月首”。
《作册令方彝》:隹八月辰在甲申……丁亥……;隹十月月吉癸未……甲申……乙酉……”“辰在××”是周人表达朔日的一种固定格式,出土器物已有二十余例,校比天象无一不是朔日。推比历朔知:八月甲申朔,初四丁亥;九月甲寅朔(或癸丑朔);十月癸未朔,甲申初二,乙酉初三。“月吉癸未”即朔日癸未,与文献记载亦相吻合。《令方彝》的八月、十月,中间无闰月可插,一个月就只有一个朔日即一个月吉,这怎么能“说明西周时代每个月都可能有若干个吉日”呢?
西周金文记载初吉尤多,初吉即朔,也只能证明西周是朔望月制而不是“朏为月首”。
常识告诉我们,历术是关于年月日的协调。日因于太阳出没,白昼黑夜,是计时的基本单位;年以太阳的回归年长度为依据,表现为寒来暑往,草木荣枯,《尧典》“期三百有六旬有六日,以闰月定四时成岁”;而月亮的隐现圆缺,只能靠肉眼观察。西周制历,尚未找到年月日的调配规律,只能随时观察随时置闰,一年十二个月朔的确定也靠“观月行”。这就是西周人频频记录月相的缘由。
日与年易于感知,观象授时的主要内容是观察月相,两望之间必朔,两朔之间必望,朔望月也是不难掌握的。何况司历专职,勤劬观察,不会将初一说成初二,更不会说成初三。肉眼观察的失朔限度也只在半日之内。
董作宾先生以为,知道日食就会知道朔,知道月食就会知道望。朔望月历制当追溯到殷商。
持“朏为月首”说者以为,“朔”字在西周后期才出现,猜想西周前期当是“朏为月首”。殊不知,殷商后期以来,朔望的概念十分明确,表达朔日的词语甚多,初吉为朔,既死霸为朔,月吉(吉月)为朔,“辰在××”为朔,并非一定要用“朔”字不可。
西周一代,未找到协调年月日的规律,月相的观察就显得特别重要,文献以及出土器物有关月相的记载也就特别的多。到了春秋中期以后,十九年七闰已很明确,连大月设置也逐渐有了规律,朔日的推演已不为难事。所以,鲁文公“四不视朔”,“子贡欲去告朔之饩羊”,不仅证实西周以来的告朔礼制已经走向衰败没落,还反映出四分术的推演已为司历者大体掌握。历术已由观象授时上升到推步制历,已从室外观月步入室内推算。这样,月相的观察与记录自然就不那么重要了。这就是春秋以后,作为月相的“既死霸”“既生霸”“既望”在金文中基本消失的原因。
三、初吉即朔
西周金文大量使用“初吉”,凡可考知的,无一不是朔日。
有的器铭,年、月、月相、日干支俱全,校比天象,十分方便。利用张培瑜先生《中国先秦史历表》,便可一目了然。
例1,攸从鼎:隹卅又一年三月初吉壬辰。(郭沫若:《两周金文辞大系图录考释》,下简称《大系录》,118)
校比公元前848年厉王三十一年天象,丑正,三月壬辰朔。
例2,无其簋:隹十又三年正月初吉壬寅。(《大系录》107)
校比公元前829年共和十三年天象,丑正,正月壬寅朔。
例3,虢季子白盘:隹王十有二年,正月初吉丁亥。(《大系录》88)
校比公元前816年宣王十二年天象,子正,正月丁亥朔(定朔戊子03h49m,合朔在后半夜,失朔不到四小时)。
例4,叔尃父:隹王元年六月初吉丁亥。(《考古》65.9)
校比公元前770年平王元年天象,丑正六月丁亥朔(定朔戊子02h01m,失朔仅两小时)。
厉王以前的若干铜器,因王年尚无共识的结论,仅举几例说明。
例5,谏簋:隹五年三月初吉庚寅。(《大系录》101)
校比公元前889年夷王五年天象,丑正,三月庚寅朔。
例6,王臣簋:隹二年三月初吉庚寅。(《文物》80.5)
校比公元前915年懿王二年天象,丑正,三月庚寅朔。
例7,柞钟:隹王三年四月初吉甲寅。(《文物》61.7)
校比公元前914年懿王三年天象,丑正,四月甲寅朔。此器与王臣簋历日前后连贯,丝毫不乱,列为同一王世之器,更可证初吉即朔。
总之,初吉即朔,这是金文历日明确记载的,绝不是泛指某月中的任何一日。
四、关于静簋
刘雨先生在《再论金文“初吉”》(《中国文物报》,1997-04-20)中把静簋历日作为立论的主要依据,以此否定初吉为朔,这就有必要重点讨论了。
刘先生说:西周金文中……只有静簋记有两个“初吉”,而且相距不到三个月,没有历律和年代等未知因素干扰,是西周金文中最能说明“初吉”性质的珍贵资料。——这就是他为什么特别重视静簋的原因。
过去我将静簋视为厉王三十五年器,“六月初吉丁卯”合公元前844年天象,“八月初吉庚寅”合公元前843年天象,两个初吉间隔一年,与何幼琦先生的认识暗合。刘雨先生此文给我以启发,两初吉确实当为一年之内的两初吉,不必间隔一年。不过,两初吉的解说都当指朔日,而不是泛指某月中任何一日。
排比静簋历朔知:六月丁卯朔,七月当丙申朔(或丁酉朔),八月丙寅朔。
...
2025年1月4日 16:42 周六第六讲四分历的应用
#
四分历法是观象授时高度发展的产物,古人制定四分历法就是为了取代观象授时,服务于人类社会的生产和生活,这是毫无疑义的。因此,年代学的基础课题就是掌握四分历法,用它来推算上古历点,为解决有关的学术问题服务。特别是近代,出土文物越来越多,古史古事的考订,都需要我们确定其年代及月日。我们依据四分历法仍可以求得密近的实际天象,解决其中的疑难。这正是文史工作者学习古天文历法的目的之一。
一、应用四分历的原则
#
明确了殷历甲寅元(即《历术甲子篇》)创制于公元前427年,就可以将四分历在实际考证中普遍应用,推算古代典籍及出土的地下器物所载的历点,并在推算中验证殷历甲寅元的正确性。
四分历是战国初期创制并行用,大体到三国时期的蜀汉废止。如果将四分历广泛应用,必须明确几个问题。
第一,殷历甲寅元一经创制行用,就成为中华民族的共同财富,通行于当时各国。战国纷争,诸侯力征,不统于王,各国用历也标新立异,所以后人总认为“战国时代各国历法不同”。这只看到了问题的表象。四分历于战国初期行用,这一法则在当时就是不可改变的了。各国用历虽花样繁多,名号各殊,或岁首不同,或建正有异,都只能在四分历法则内改头换面,实质不变也变不了。我们用四分历推算有关历点,是掌握了一个普遍的原则,所得结果自然不会有误。
战国时代,各国是否一致行用四分历法呢?
不难明白,历法不是产生于某国某君某人之手,而是历代星历家血汗的结晶。可能经过某些君王(比如魏文侯)的提倡归功于某些星历家(比如楚人甘德、魏人石申)的勤劬。但历法一旦创制就不可能为某国某君所垄断,必然普施于华夏人民足迹之所至。谁会舍先进的历法不用而去吃观象授时的苦头?且战国初期,朝秦暮楚的士大夫比比皆是,历法一经行用自然不受国界的约束。因此四分历必能普施于战国时期各诸侯国。
再说,经商周至战国初年,干支纪年已千百年不紊,各国都使用一个共同的干支日历,月球的朔望又人人可见,日与月的一致自不待言。有这样一个共同的月历、日历作为基础,历法普施于战国才有可能。
从现有文献资料看,《孟子》所记时令与《楚辞》所记,仅只是岁首不同而已。据《孟子》载:“七八月之间雨集,沟浍皆盈”(《孟子·离娄下》);又“七八月之间旱则苗槁矣,天油然作云沛然下雨,则苗浡然兴之矣”(《孟子·梁惠王上》)。讲的是下暴雨。我国山东一带下暴雨的时间,当是夏历五、六月。因《孟子》一书的用历是取建子为正,所以与建寅为正的夏历有两月之差,究其实则是指同一天象,《孟子》用的也是四分历。
据《楚辞·怀沙》载:“滔滔孟夏兮,草木莽莽。”孟夏即四月,草木繁茂,与建寅为正的夏历合。又《楚辞·抽思》:“望孟夏之短夜兮,何晦明之若岁。”讲初夏昼长夜短明显起来,正合夏历。
秦用四分历,从《史记·秦本纪》中也有反映:“(昭襄王)四十八年十月韩献垣雍。……正月兵罢复守上党,其十月五大夫陵攻赵邯郸。又四十九年正月益发卒佐陵。陵战不善,免,王龁代将,其十月将军张唐攻魏。”此两处,先记秦十月、正月,再记“其十月”(它的十月)。因为兵入赵魏之地,故用赵魏之月序记。足证秦与赵魏同用四分历,只不过秦以十月为岁首,三晋用夏正罢了。
燕国僻远,用历无考,以理推之,密近三晋。一句话,《历术甲子篇》通用于七国,战国时代实际全用四分历。
由于齐鲁建子为正,秦历又建亥为首,与楚、晋各异,似乎战国有多种历法了,这便给“三正论”者以生事的机会,造成后世的惑乱。
战国用历原本四分术,然而为什么名目如此繁多呢?
首先,列强出于政治斗争的需要,在用历上往往变换一些手法,以示与周王朝分庭抗礼,尽管都用四分历却有意标新立异,独树一帜。
其次,自封为王,欲兼天下,必然要利用“君权神授”的观念,这就是历志上“改正朔,易服色”的记载,用以表明“受命于天”,从而威天下而揽民心。
再次,托古作伪以自重,也是列强君王惯用的手法。四分历创制之初,就曾伪称“成汤用事十三年”把创立之功归于前代圣王。秦历托名“颛顼”,也同样出于托古自重。战国时代所谓“周历”“夏历”,莫不如此。汉代有“古六历”之说(黄帝历、颛顼历、夏历、殷历、周历、鲁历),那虽是后人的附会,实际也可见托古作伪的痕迹。
战国用历从表现形式看,或建正不同(齐鲁建子为正,秦楚三晋建寅为正),或岁首不同(齐以子月为岁首,楚三晋以寅月为岁首,秦以十月为岁首),或历名不同(秦称颛顼历,以别于殷历),如此而已。而其所宗之“法”,也都为四分术。在当时的条件下四分历的周密与完整是无法取代的。
这种种名目,却给“三正论”制造者以可乘之机。按照“三正论”者对“周正建子、殷正建丑、夏正建寅”的解释,夏、商、周三代使用了不同的历法,即夏代之历以寅月为正,殷代之历以丑月为正,周朝之历以子月为正。夏商周三朝迭相替代,故“改正朔”以示“受命于天”。秦王迷于“三正论”,继周之后以十月为岁首,也有绍续前朝,秉天所命之意。实际上,四分历产生之前,还只是观象授时,根本不存在完整的行用于夏时之夏历,行用于殷商时代之殷历,行用于西周之周历,所谓夏历、殷历、周历,纯然是后人的概念。
懂得了战国用历的实质,排除“三正论”的干扰,就可以运用四分历进行具体历点的推算。
第二,四分历取岁实36514日,与实际回归年长度必有误差,307年盈一日。如果将一日化为940分,940÷307=3.06(分/年),即每年有3.06分的误差。这样,以公元前427年四分历行用之时为基点,在它以后的年份每年有+3.06分的误差,在它以前的年份,每年有-3.06分的误差。因此,在推算实际天象时,公元前427年之前的年份,每年要加3.06分;公元前427年之后的年份,每年要减3.06分。这就是前加后减的原则。只有这样,才能得出密近的实际天象。3.06分就是推求实际天象的改正值。
在四分历行用的年代,由于时人不了解这个误差,自然不可能将误差计算进去。所以,典籍中总有历法与天象不符的记载,汉初“日食在晦”的文字就属此类。我们在考究战国至汉末这段时期的历点时,除了顾及朝代交接和改历等重大问题外,应用四分历进行推算时,不必使用“前加后减”的原则。因为追求实际天象除了验证朔望,反而与实际用历相违。实际用历还不知道这个3.06分。
第三,公元前427年之前的年份,仍可用四分历推算月日。公元前427年之前,未行用四分历法,还是观象授时阶段。但月相在天,有目共睹,干支纪日从殷商时代已延续不断,人皆遵用。这就构成了历法推算的基础。前代学者依据《春秋》所载月日干支,编制出春秋时代的历谱。张汝舟先生《西周经朔谱》《春秋经朔谱》就立足于殷历的朔闰,取密近的实际天象,将古代文献所记这两个时期的年、月、日一一归队入谱,贯穿解说,对前人之误见逐次加以澄清。因此,“两谱”既是对两周文献纪日的研究成果,也是广大文史工作者研究两周文史的极好工具。
要之,编定历谱或考释历点,都得以《历术甲子篇》为依据,将四分历普遍地应用于文史研究工作中。
二、失闰与失朔
#
年、月、日能够有规律地进行调配的真正历法(四分历)产生于战国初期,有历法之前都还是观象授时。观象授时就是制历。制历的主要内容就是告朔和置闰两件大事。告朔是定每月朔日的干支,朔日干支一经确定,其余日序自有干支。置闰是定节气,一年之气,冬至最要紧。冬至一经确定,闰与不闰及全年月序就自然清楚。
在观象授时阶段,告朔就全凭月相。古人凭月相告朔,承大月二日朏,月牙初见,承小月三日朏,月牙初见(见《说文》)。同理,承大月十五日望,月满圆,承小月十六日望,月满圆。月相分明,只在一天。
在观象授时阶段,置闰须观斗柄所指方位,观二十八宿中天位置,验之气象、物象,加以土圭测影。随着长年的经验积累,观测仪器的精当,测定气节的准确程度必然逐有提高。前已述及,到春秋中期,十九年七闰的规律就已完全掌握了。
四分历的回归年长度定为36514日,且使用平朔、平气,所以失闰,特别是失朔还不能完全避免。更何况春秋、西周还处在观象授时的时代,失闰与失朔当是屡见不鲜的。比如,实际是乙丑朔,因为分数小,司历定为甲子朔。如果乙丑分数大,司历定为丙寅朔。这叫失朔。
失闰,说得确切些,就是失气。实际是子月初冬至,司历错到亥月末,亥月就成了岁首(建亥)。冬至若在下旬,司历错到丑月,丑月就成了岁首(建丑)。失闰由失气而起,我们还叫失闰。
失朔,失闰,《春秋》有宝贵资料。例如,昭公十五年经朔:
子月大,己未623分合朔
丑月小,己丑182分合朔
寅月大,戊午681分合朔
卯月大,戊子240分合朔
辰月大,丁巳740分合朔
……
《春秋》载:“二月癸酉,有事于武宫。”“六月丁巳朔,日有食之。”以此二条验谱,己未朔,癸酉乃十五日,子月实《春秋》所书“二月”。“六月丁巳朔”正合辰月。这一年必是建亥为正,子月顺次定为“二月”,辰月顺次定为“六月”,全合。大量材料证实,春秋后期建子为正,现在正月到了亥月,这就是失闰之铁证。
将一部《春秋》进行研究,可以发现:
隐、桓、庄、闵共63年49年建丑,8年建寅,6年建子;
僖、文、宣、成共87年58年建子,16年建丑,13年建亥。
这说明,前四公,即春秋前期,建丑为正,建子、建寅都算失闰,而没有建亥的。后四公,即春秋后期,建子为正,建亥、建丑都算失闰,而没有建寅的。这又说明,失闰不会超过一个月。按平气计算,一般失闰都在半月之内,只有周幽王六年失闰十七天(据《诗经·十月之交》所给历点推算)。
《春秋》记37次日食,有5个书月日不书朔。《左传》认为“史失之”,未免武断。因为食不在朔,所以《公羊传》云“或失之前,或失之后”,是正确的。失朔一般在半天之内,只有鲁文公元年“二月癸亥,日有食之”,失朔508分,超过半天(一日940分)。
为什么要掌握一个失闰限、失朔限呢?这是应用四分历推演经朔考订古籍古器历点必须遵循的准则。如果历点与实际天象所确定的朔、闰相差甚远,失闰超过一月,失朔超过一天,就宁可存疑也断不可硬套,去企求得出一个相合的结论。如果没有一个失闰、失朔限,古器物上的历点就可左右逢源,安在哪一年都会大致相符。记有历点的出土文物,一到专家的手里,考证出的结论往往大相径庭,其道理就在这里。可见,确定失闰限、失朔限是多么重要。它提醒你,要严谨,不可信口雌黄。
有没有“再失闰”的情况?古籍中确有记载。《汉书·律历志》载,襄公二十七年“九月乙亥朔,是建申之月也。鲁史书:‘十二月乙亥朔,日有食之。’传曰:‘冬十一月乙亥朔,日有食之,於是辰在申,司历过也,再失闰矣。’言时实行以为十一月也,不察其建,不考之于天也”。
《春秋》经文杜注:“今长历推为十一月朔,非十二月。传曰辰在申,再失闰。若是十二月,则为三失闰,故知经误。”
《左传》杜注:“谓斗建指申,周十一月今之九月,斗当建戌而在申,故知再失闰也。文十一年三月甲子至今七十一岁应有二十六闰,今长历推得二十四闰,通计少再闰。释例言之详矣。”
杜预这两条注,将《春秋》经传所记,辨析明白,断定经误传是。传文“再失闰”是可信的。杜以自编《经传长历》验证,确为“再失闰”。《汉书·律历志》解释说,当时是记为十一月的,这种“再失闰”是不观察斗柄所指,不考之于天象的原因。可见,观象授时阶段失闰是不足为怪的,但已不可能在春秋时代出现“再失闰”的怪现象。
如果用《历术甲子篇》推演,襄公二十七年(公元前546年)朔闰如次。
是年入辛卯蔀(蔀余27)第三十四年。
太初三十四年:前大余四十八,小余五百五十二先天+364分
子月朔己卯552分916己卯十五
丑月朔己酉111分475己酉 四十五
寅月朔戊寅610分34 己卯 十五
卯月朔戊申169分533戊申 四十四
辰月朔丁丑668分92 戊寅 十四
巳月朔丁未227分591丁未 四十三
...
2025年1月4日 16:42 周六第四讲二十四节气
#
古代劳动人民在认识自然、改造自然的过程中,创造了先进的耕作制度,形成了精耕细作的优良传统,推动了农业生产不断发展。在漫长的岁月中,对与农业生产紧密相关的农业气象条件,进行过精细的观察、深入的研究,逐步形成了二十四节气,概括了黄河中下游地区农业气候特征。它利用简要的两个字,把这一地区的日地关系、气候特点以及相应的农事活动恰当地表达出来。可以说,二十四节气是古代天文、气候和农业生产实践最成功的结合,从古到今都起着一种简明而又切合农业生产需要的农事历的作用。
二十四节气一旦形成,劳动人民就因时、因地加以发展,它的应用就不仅仅局限于黄河中下游地区了,而是逐步推广到全国各地,几乎渗透到我们这个农业大国的各个领域,甚至涉及人们的衣食住行。所以,对依据古代天文而形成的这样一部农事历——二十四节气进行一番研究,就是很有必要的了。
一、先民定时令
#
有了年、月、日的时间概念,并不等于就能得心应手地安排好时令。汉枚乘诗:“野人无历日,鸟啼知四时。”讲的是当时的“野人”,亦可想见先民的时令观念。《后汉书·乌桓鲜卑传》云“见鸟兽孳乳,以别四节”,道理亦同。《魏书》卷一百一讲到宕昌羌族“俗无文字,但候草木荣枯,记其岁时”。宋代洪皓《松漠纪闻》亦云:“女真……其民皆不知记年,问之则曰我见草青几度矣。盖以草青为一岁也。”据此推知,先民的时令,最早主要是靠物象——动植物的表象来确定的。
《山海经》记载了先民观察太阳升落位置以定季节的材料。《大荒东经》上记有六座日出之山:
东海之外,大荒之中,有山名曰大言,日月所出。
大荒之中,有山名曰合虚,日月所出。
大荒之中,有山名曰明星,日月所出。
大荒之中,有山名曰鞠陵,于天东极离瞀,日月所出。
大荒之中,有山名曰猗天苏门,日月所出。
大荒之中,有山名曰壑明俊疾,日月所出。
《大荒西经》上记有六座日入之山:
西海之外,大荒之中,有方山者,上有青树,名曰柜格之松,日月所出入也。
大荒之中,有山名曰丰沮玉门,日月所入。
大荒之中,有龙山,日月所入。
大荒之中,有山名曰日月山,天枢也。吴姖天门,日月所入。
大荒之中,有山名曰鏖鏊钜,日月所入者。
大荒之中,有山名曰常阳之山,日月所入。
大荒之中,有山名曰大荒之山,日月所入。
这是在不同季节、不同月份,观察到的太阳出山入山的不同位置。这种观察方法同观察鸟啼、鸟兽孳乳、草木荣枯的方法一样,是凭着经验,凭着目睹耳闻的感受,其粗疏是自不待言的。因为观察者的地域毕竟狭小,局限性很大,以此定季节势必误差很大。
观察太阳运行的另一种方法是观察日影长度的变化。最早当是利用自然的影长,进一步发展就是人为的立竿测影。
太阳视运动的轨迹无法在天空中标示,反映到地面上就是事物的投影。高山、土阜、树木、房舍,晴日白昼都会留下或长或短的影子。《吕氏春秋》“审堂下之阴,而知日月之行,阴阳之变”,就是这个意思。根据这些影子的长短可以判明时间的早晚,有经验的老人往往判断得十分精确,这无疑是依靠长期的经验积累。
如果要有意测影以确定时令,这得人为地在平地上立一根规定长度的竿子,把它的影子在地面上标示出来。这根竿子就是“表”,《周髀算经》中称之为“髀”。“表”的影子,古字写作“景”。这就是土圭测景。
从出土的甲骨文中考察殷商文化,可以明白地看到,殷商时代测定方向、时刻都已比较准确。卜辞中将一天的时刻分为:明(旦)、大采、大食、中日、昃、小食、小采、暮等时间段落。甲骨文中的“昃”字,就是人侧影的象形。作为时段,日侧之时为昃。发掘出的殷代宫殿基址是南北方向的,其方向所指与今天的指南针方向无异。这种方向的确定及中日、昃等时刻的测定,显然和观测日影紧密相关。
这都说明,殷商时代已有了早期的圭表。实践证明,通过长期测日影的实践就会认识到冬至、夏至、春分、秋分。甲骨卜辞中,有一些文字很可能就是至日的记录。
有了圭表,就能够比较准确地确定分、至,就可以对闰月的设置(闰在岁末)加以规律化的安排。所以,推知殷商之历应该比较规整,岁首应该比较固定,误差不会大于一个月。有人统计了记有月名的“今何月雨”“田”,其他农事季节及其他天文气象卜辞,证明了殷代月名和季节基本上已有了固定关系。《尧典》“期三百有六旬有六日,以闰月定四时成岁”的记载,大体符合这个时代的情况。
二、土圭测景
#
日影的长短与寒暑变化有关,这是先民积累的生活常识。要准确地测量寒来暑往的季节变化,很自然地就产生了立竿测影的方法。这是用最简易的天文仪器来研究历法、确定时令,是天文学发展的一次飞跃。
立竿测影又称土圭测景、圭表测景。表是直立的竿子,圭是平放在地上的玉版。《说文》云:“圭,瑞玉也。上圆下方。”日影长短就从平放的圭上显示出来。土,度也,测量的意思。土圭,就是度圭,测量圭上日影的长短以定时令。远在周代,“表”就规定为八尺,已有了长度标准。《周礼·考工记》云:“土圭尺有五寸,以致日,以土地。”致是推算义,土是量度义。土圭长一尺五,来推算节气日期,量度土地远近。《周礼·夏官司马》云:“土方氏,掌土圭之法以致日景。以土地相宅而建邦国都鄙。”注曰:土方氏,主四方邦国之土地。可见,周代已有人家来掌管土圭测景了。
《周礼·地官大司徒》云:“日至之影,尺有五寸。”这是说,夏至时,圭上影子有一尺五寸长。这样看来,圭长一尺五寸就远远不够了。《周礼·春官冯相氏》郑玄注云:“冬至,日在牵牛,景丈三尺;夏至,日在东井,景尺五寸。此长短之极,极则气至。冬无潜阳,夏无伏阴。春分,日在娄;秋分,日在角;而月弦于牵牛东井,亦以其景知气至不。春秋冬夏气皆至,则是四时之叙正矣。”圭有多长?当在一丈三尺以上。
根据《史记》记载,圭表测景当更早在传说中的黄帝时代。《史记·历书》“索隐”说:“黄帝使羲和占日,常仪占月,臾区占星气,伶纶造律品,大挠造甲子,隶首作算数,容成综此六术而著调历也。”不仅有专门测定日影的专家,并在测量日、月、星有关数据的基础上,利用甲子推算,创制时历。《尚书·尧典》“期三百有六旬有六日,以闰月定四时成岁”,可看作是远古时代测量日、月、星而后制历的发展。这就是以岁实366日为基本数据的我国有文字记载的最早的阴阳历。
制历调历是一件神圣的工作,《尧典》说“允厘百工,庶绩咸熙”,起到一个信治百官、兴起众功的作用。正因为这样,圭表测景就不可能是民间百姓的事,只能在天子或君王旨意下由专职官员负责进行。周代的测景遗址——周公测景台还保留在今天河南登封告成镇(古称阳城)这个地方。
阳城地处中原,物产丰富,文化发达。周公想迁都中原,视阳城为“地中”,居天下九州中心的意思。《周礼·地官大司徒》云:“以土圭之法测土深,正日景,以求地中。日南则景短,多暑。日北则景长,多寒。日东则景夕,多风。日西则景朝,多阴。日至之景,尺有五寸,谓之地中。天地之所和也,四时之所交也,风雨之所会也,阴阳之所合也。然则百物阜安,乃建王国焉。”如此详细地叙述求地中的方法,“地中”地理位置如此重要,占尽地理之便。这就是周公为迁都造下的舆论。实际上,所谓地中,是指当时国土南北的中心线而已。
告成镇的周公测景台,有一个高耸的测量台,相当于一个坚固的“表”,平铺于地面的是“量天尺”,也就是一个放大了的石“圭”。现今遗留的测景台,元代初建,明代重修。重修的测景台是正南正北走向,高出圭面8.5米,下面的圭长30.3米。
从周公在这里主持测景后,历代都在这里进行过测量,至今还有公元724年唐代所立的石“表”,上面刻有“周公测景台”五字。
三、冬至点的测定
#
我国古代以冬至作为一个天文年度的起算点,冬至的时刻确定得准不准,关系着全年节气的预报。古代天文学家的一项重要任务就是测定准确的冬至时刻。测出两次冬至时刻,就能得到一年的时间长度。这样定出的年,就是回归年,古代称为“岁实”。《后汉书·律历志》说:“日发其端,周而为岁,然其景不复。四周,千四百六十一日而景复初,是则日行之终。以周除日,得三百六十五四分日之一,为岁之日数。”四分历的岁实36514日就是这样测出来的,这是利用冬至日正午日影长度四年之后变化一周这一实测得出的数据。这样的数据,四年之后误差积累才有0.0312日,即不到45分钟。这已是测得很精确的了。可以认为,过四年后,冬至日正午影长大体复回到最初的长度。
下面介绍祖冲之测刘宋武帝(刘骏)大明五年(公元461年)十一月冬至时刻的方法。文载《宋书·历志》。
十月十日影一丈七寸七分半
十月十日影长10.7750尺
十一月二十五日一丈八寸一分太
十一月二十五日影长10.8175尺
二十六日一丈七寸五分强
二十六日影长10.7508尺
折取其中,则中天冬至
冬至应在十月十日与十一月二十五日之间
应在十一月三日
正中那一天,即十一月三日
求其早晚
求冬至时刻在早晚什么时候
令后二日影相减,则一日差率也
一日差率=10.8175-10.7508=0.0667
倍之为法
法=0.0667×2=0.1334
前二日减,以百刻乘之为实
实=(10.8175-10.7750)×100刻=4.25刻
以法除实,得冬至加时,在夜半后三十一刻
冬至时刻=实÷法=4.25÷0.1334=31.86
因为十月十日和十一月二十五日正午之间的中点是在十一月三日的子夜,冬至时刻从子夜起算。又,古历计算中通常不进位,故31.86刻记为31刻。又,“太”即34;“强”即112。
不难看出,在只有圭表测影的时代,祖冲之测定冬至时刻的方法确实是大大进步了。
前已提到,冬至点是指冬至时太阳在恒星间的位置,现代天文学是以赤经、赤纬来表示,我国古代是以距离二十八宿距星的赤经差(称入宿度)来表示。四分历明确记载,冬至点在牵牛初度。冬至点这个数据如何测定,没有留下任何文字记录。《左传》上有两次“日南至”的记载:一是僖公五年“春王正月辛亥朔,日南至”;一是昭公二十年“春王二月己丑,日南至”。说明鲁僖公时代有过日南至的观测,可是没有留下如何观测的记录。唐代僧一行(张遂)在《大衍历议·日度议》提到,古代测定太阳位置的方法是测定昏旦时刻的中星,由此可以推算出夜半时刻中星的位置,在它相对的地方就是夜半时刻太阳的位置。这是间接推求冬至点的方法。《大衍历议》也提到,后来采用直接测量夜半时刻中星的办法。这就要求漏刻(计时工具)有比较稳定的精确度。利用太阳日行一度的规律,求出某日夜半时刻太阳在星空间的位置,就不难求得冬至时刻太阳所在位置,即冬至点的位置。
...
2025年1月4日 16:42 周六- 这是一个测试阿克斯酱豆腐卡就是看到房价看就ask发
- 上的飞机啊看的风景开始打飞机看就卡机刷卡附件按实际付款金卡上空的飞机爱看就喀什觉得反馈解开
第一讲为什么要了解古天文历法
#
我国是世界上文明古国之一,先民出于农事需要,积累了丰富的天文学知识。随着文明的进化,这些丰富的天文学知识,必然反映到记载古代文化的书籍典册之中,遗留于后世。出土的殷商时代甲骨刻辞早就有了某些星宿名称和日食、月食记载。《周易》《尚书》《诗经》《春秋》《国语》《左传》《吕氏春秋》《礼记》《尔雅》《淮南子》等书更有大量的详略不同的星宿记载和天象叙述。《史记·天官书》《汉书·天文志》更是古天文学的专门之作。文史工作者随时接触古代典籍,势必常与古代天文历法打交道。如果对此一知半解或不甚了了,很难谈得上进行深入的研究。就是一般爱好文史的青年,有一定的古天文学知识,对阅读古书也是大有帮助的。
常识告诉我们,一切与古代典籍有关的学科,无不与时间的记载,也就是古代天文历法有关。清人汪日桢说:“读史而考及于月日干支,小事也,然亦难事也。欲知月日,必求朔闰;欲求朔闰,必明推步……盖其事甚小,为之则难。不知推步者,欲为之而不能为;知推步者,能为之而不屑为也。”(见《历代长术辑要》载《二十四史月日考序目》)可见,古人深知“推步”的重要和“推步”的甘苦。白寿彝教授也指出:“关于时间的记载,是历史记载必要的构成部分,年代学的研究是历史文献学研究的主要课题。”(《人民日报》,1980年12月30日)
当今的现状是,有关古天文之学众说纷纭,头绪繁杂,令人不知从何下手,欲读不能。一般著述往往博大疏浅,叙史而已,或者演算繁难,玄秘莫测,“不把金针度与人”。读者终书,竟无法找到打开古天文历法大门的钥匙,未免望之兴叹,视为畏途。此篇以基本的天文常识入手,依据本师张汝舟先生星历观点,深入浅出,意欲将古籍中需要涉及的古天文学问题,逐一展开讨论,希望能对校读古籍有所助益,且能由一般文史工作者自行独立推演年月日时,掌握一套基本的“推步”技术,为深入的研究打下扎实的基础。
一、时间与天文历法
#
中国古代,合天文历法为一事,历法以天象为依据,历法属于实用天文学的重要内容。所以,中国古代文学与年、月、日、时这些时间观念紧密相依。学习古代天文学,就从认识“时间”这个概念开头吧!
中央人民广播电台每日整点都发出“嘟——嘟——”的时间讯号,以此统一全国民用时间。全国各行各业都按这个统一的标准时间学习和工作。没有统一的时间观念,一切工作都无法正常进行,社会将发生混乱。可知,人类社会对于时间的首要要求,就是有统一的计量标准,不能各自为政,自行其是。远古时代,人类分为若干互不交往的群体,各有自己的一套计时方法。随着社会的进步,交流的频繁,彼此认识到生活在地球这个大家庭里,还必须有统一的国际标准时间来协调全人类的活动,才能促进社会的更大发展。
在古代,人们对于时间的精确度要求不高,最早是把一天分为朝、午、昏、夜四个时段,后来又分为十个时段、十二个时段,也就大体够用了。随着生产力的发展,要求时间的精确度越来越高。现代科学技术,更要求计量时间不能有一秒的误差。测定人造卫星的位置,如果误差1秒,就有7~8公里的差距。精密的电子工业,无线电技术,运输通讯,卫星、导弹的发射,要求的精确度都很高。因此,现代生活要求有精确的统一的时间计量标准,指导全人类的生产劳动。
时间不是人的主观臆造。时间是客观存在的与物质运动紧密相连的一种物质存在的形式。人们只能依据物质的运动来规定时间,寻找计时的单位。
我国古代,先民以太阳东升西落确定一天的时间,单位是日;以月亮的隐现圆缺定一月的时间,单位是月;以寒来暑往及草木禾稼的荣枯定一年的时间,单位是年。远古时代人们的时间计量单位之所以仍有作用,今天还在指导着人们的活动,就在于完全符合人类对时间计量方法的基本要求:既承认时间是物质存在的形式,又以有规律的、匀速的、周而复始的运动形式作为计量标准。这种从不间断的、匀速的、重复出现的物质运动形式,在人们的周围是存在着的,这就是日月星辰的出没所组成的若干天文现象。时间计量单位的确定完全以天象为依据,就是这个道理。尽管上古先民长期坚持“地心说”,认为日月星辰都在围绕着地球转动,但这种周而复始的物质运动形式却是古今一致的。
在所有的计时单位中,人们把地球自转一周作为计时的最基本单位——日,古人认为是太阳东升西落绕了地球一圈。月、年是比日更大的计时单位。时辰、小时、刻、分、秒,是比日小的计时单位。时、分是日的分数,古人称为日之余分。
明确了时间的计量单位,还有一个时段和时刻的问题。换句话说,通常所谓“时间”,包含着两个含义:一是指某一瞬间,即古人所谓“时刻”;一是指两个瞬时之间隔,即一个有始有终的长度。从时刻的含义出发,时间有早迟之分。从时段的含义出发,时间有长久与短暂之别。历法中的节气与节气的交替(交节),月亮运行在太阳、地球之间的平面上成一直线的天象(合朔),日与日的交接(夜半0点整)等都应该是指时刻而言,十分确切,具体到某时几分几秒的那一瞬间,毫无含糊。月亮最圆的时间,与合朔时间一样只有那么一瞬时。差一秒还不是最圆,过一秒也不可能最圆。电台报时的“嘟——嘟——”那最后特殊一响,就是时刻概念的具体化。而平常所说的几分、几小时、几日,都是指的一个时段,它必有一个起算时刻。计时的基本单位——日,是从夜半0点起算的,止于24点整。任何一个更长的时段,比如百年、千年,都必须明确它的起算时刻。任何历法都很强调它的起算点,都希望找一个理想的起算时刻作为它的初始,这就是历法之“元”,称“历元”。
我们的先民,十分重视时间,特别是与农事有关的天时,古籍中记载特多。其实,古人的“天时”,是指一年四季包括风、雨、雷、电等直接关系农事活动的自然现象,古人认为这些是上天主宰的,所以称为“天时”。
《孟子》云:“不违农时,谷不可胜食也。”
《荀子》云:“春耕、夏耘、秋收、冬藏,四时不失时,故五谷不绝而百姓有余食也。”
《韩非子》云:“非天时,虽十尧不能冬生一穗。”
《吕氏春秋》有:“夫稼,为之者人也,生之者地也,养之者天也。是故得时之稼兴,失时之稼约。”
《齐民要术》有:“顺天时,量地利,则用力少而成功多,任情返道,劳而无获。”
《农书》有:“力不失时,则食不困。……故知时为上,知土次之。”
这些典籍中所谓“时”“天时”,实际是指关系农事成败的气候。气候的变动,与时令的推移有关,也直接与天象关联着,所以也应视为古代天文历法的内容。
《说文解字》云:“时,四时也。”指的是春夏秋冬四季。据吴泽先生的研究,在殷墟甲骨文中,已出现春夏秋冬四字。春字字形像枝木条达的形状;夏字字形一像草木繁茂之状,一像蝉形,蝉是夏虫,被认为是夏的象征;秋字像果实累累,谷物成熟,正是收获之时;冬字则形如把谷物藏于仓廪之中。这四个字,都与农业有关。春种、夏长、秋收、冬藏,季节、时令都同农事密切相关。
时间,关系到人类社会的政治、生产、生活等各方面的活动。自古以来,我们的祖先就十分重视年、月、日、时的安排,创制了多种多样的历法;对各项活动发生的年、月、日、时也做了大量的准确记录,保存在浩如烟海的典籍之中。古史古事就靠这些年、月、日、时的记载有了一个清晰的脉络,我们据此研究古代人类社会生活的各个方面。如果没有年、月、日、时的记载,众多的典籍史料就成了一堆杂乱无章的文字记录,其价值也就可想而知。中国古代大量珍贵史料就是靠年、月、日、时的记载而保存下来的。我们还可以用后代的历法依据古籍中年、月、日、时的记载推演出当时的实际天象,解决历史上若干悬而未决的年代问题。如果没有关于时间的文字记载,这种推算也就无法进行。
二、天文与历法
#
什么是天文?什么是历法?这是首先应该弄清楚的问题。
《说文》云“文,错画也。象交文”,又说“仰则观象于天”。高诱注《淮南子·天文训》说:“文者象也。天先垂文象日月五星及彗孛,皆谓以谴告一人。故曰天文。”王逸注《楚辞》“象”字云“法也”。《易·系辞》:“天垂象见吉凶,圣人则之。”可见,天文就是天象,就是天法,就是日月星辰在天幕呈现的有规律的运动形式。它不以人的意志为转移,反而影响着支配着人类的各种活动。正因为这样,远古的人就视之为神圣,把天象看成是上帝、上天给人的吉凶预兆,敬若神明。历代君王重视天文,因为它是上天意旨的体现,它直接关系着人类的生产、生活,影响帝王统治权力的基础。
繁体曆法之曆,最早的写法是秝,后写作、厤,再后写作曆。《玉篇》曰:“稀疏秝秝然。”段玉裁以为:“从二禾,禾之疏密有章也。”《说文》释:“厤,治也。”“,和也。”《释诂》释:“厤,数也。”从这些释义看,就是均匀调治之义。从二禾,禾的生长受日月星辰运行的天象支配,即受日月运行所确定的季节的支配,所以秝、厤与天象有关。
秝,古书写作,表示人在有庄稼的地里行走,引申为日月运行及日月运行所确定的季节、时令等时间计量。首先,这种运行是有规律的,“疏密有章”;其次,还需要调治,要均匀地调治,使日月运行的时日彼此协调。所以,秝就是均匀地调治天象所显示的年、月、日、时等计量时间单位的手段。
《史记·历书》以厤为推步学,以象为占验学,把两者的区别说得清清楚楚。占验,当然指天象,指上天通过天象显示给人们的吉凶预兆。推步,就是对日月星辰,主要是日月的运行时间进行计算,使日绕地球一圈所形成的寒暑交替与月绕地球一圈所呈现的圆缺隐现彼此配合得大体一致。这就是制历,也就是推步学。
历是什么,简单说就是计量年、月、日的方法,就是年、月、日的安排。这种安排、计量的依据是天象变化的规律,是依据日月星辰有规律的运行来确定年、月、日、时和四季、节气,或者说推算天象以定岁时。作为一种纪时系统,目的只能是服务于人类的生产生活。
一般将历法之“法”,解释为制历的方法。不对。这个“法”,正如语法之“法”,指法则、规律。远古时代的夏商周,当然有它的年月日安排的方法,虽然还比较粗疏,但还有它那时的“历”以指导人的社会生产活动。这种历是否成“法”呢?如果确定一年为“三百有六旬有六日”(《尧典》),是不可能有规律地调配年月日的,还形不成“法”。只有到春秋中期以后,测量出一回归年为36514日,到战国初期创制、行用四分历,才可能有“法”可依,才称得上有了历法。有历法之前,都是根据天象的观测,调整年月日,随时观测,随时调整,这还是观象授时的时代。到了有“法”可依的时代,就有可能将天象的数据抽象化,就有可能依据日月星辰运行的规律,通过演算,上推千百年,下推千百年,考求、预定年、月、日、时。我国最早的一部历法——四分历,就具备了这种条件。 可见,历与历法不能混为一谈。什么是历法呢?历法就是利用天象的变化规律调配年、月、日、时的一种纪时法则。
历法与天象那么紧密不可分,正是我国古代历法独具的特点。在我国古代,历法就包含在古天文学之中,历法是古代天文学中一个很重要的领域。历法的普遍内容包括节气的安排,一年中月的安排,一月中日的安排以及闰月安插规则,等等。我国古代历法还有关于日食、月食的预报和五大行星运行的推算。总之,离开天文就无所谓历法,历法反映了大量的天文现象,历法中有丰富的天文学内容,历法就是古天文学的一个部分。我国古代合天文、历法为一事,就是这个道理。同样的原因,古人称天文历法为历算、星算、天算、星历……总是将天文、历法合在一起加以表述。
历法的内容,一部分属于实用天文学的范围,另一部分属于理论天文学的范围。测时与制历就是天文学为生产服务的主要工作。我国古代历法重视对天象的推算,不仅反映了对天文学的重视,也常常以此来考核历法的准确性。古代历法史上的多次改革,其直接原因之一就是由于日食等天象的预推出现了差误。从一定程度上来说,我国古代的编历工作,也就是一种编算天文年历的工作。由此可见,我国古代天文学家何等重视实践与理论的结合。
正因为这样,当我们谈到古代天文学,那实际已经包括了古代历法的内容。
三、天文常识
#
人类社会各个民族生活的地域不同,星象与季节的相应关系也不同,但是用天象定岁时都是共同的。古代埃及人重视观测天狼星,因为每年天狼星与太阳一起升起的时候,就预示着尼罗河要泛滥,而尼罗河泛滥带来的肥沃土壤,正是埃及人播种的需要。我国上古的夏朝,重视参宿三星的观察,每年三星昏见西方,就意味着春耕季节的开始,参宿就成了夏族主祭祀的星了。晚起的商族,着重观察黄昏现于东方地平线上的亮星,看中了心宿三星,最亮的心宿二就是“大火”。大火昏见东方,也正是春耕季节播种的日子。大火就成了商族主祭祀的星。所以《公羊传·昭公十七年》载:“大火为大辰,伐为大辰,北极亦为大辰。”何休《公羊解诂》云:“大火谓心星,伐为参星。大火与伐,所以示民时之早晚。”这里所谓“大辰”,就是观察天象的标准星,均指恒星而言。大火为大辰,是就商代而言;伐为大辰,是就夏朝而言;北极亦为大辰,当指以北极星为观察天象的标准的更古时代。于此可见,我国上古对于北极星的认识,起源更早。
现代天文学知识告诉我们,在太阳系里有水星、金星、地球、火星、木星、土星、天王星、海王星共八大行星围绕着太阳,按照各自的轨道和速度运行着。——古人凭肉眼观测,以地球为中心,早就认识了五大行星(金、木、水、火、土)并了解到它们绕地球一圈的时间,掌握了它们的运行规律。
地球绕太阳公转的同时,还在自转。公转一周为365.24219日,自转一周为24小时。由于地球自转轨道与公转轨道有23°26′的倾斜角,地球表面受到太阳照射的程度不同(直射或斜射,斜射还有角度的不同),便有了春夏秋冬四季冷暖的变化。
月球是地球的卫星,它围绕着地球旋转,运行一周为29.53059日,月球本身不发光,人们所见到的月相是月球对太阳光的反射。随着地球、月球与太阳相互位置的变化,月相也周期性变化着。当月亮的背光面对着地球,人们看不到有光的月面,即为朔日(阴历初一);当月亮的受光面全部对着地球,人们看到一轮满月,即为望日(阴历十五)。从朔日到望日,望日到朔日之间还有各种月相。人们根据月相变化和月亮出没时间,便知道阴历的日期。俗话说:“初三初四蛾眉月,初七初八月半边,十五十六月团圆。”这种以月相变化为依据,从朔到朔或从望到望的周期长度,叫朔望月,就是阴历的一个月。
每一个朔望月,月球都要行经地球和太阳之间的空间一次,如果大体在一个平面上,月球遮住了太阳射向地球的光线,就会发生日食;当地球运行到太阳和月球中间(每月有一次机会),如果大体在一个平面上,地球就会挡住太阳射向月球的光线,就要发生月食。因此,日食总是发生在朔日,月食总是发生在望日。古人特别重视日食的记载,认为是上天对君主的警告,是凶兆。古代天文学家还以日食检验历法的准确性,食不在朔,便据以调历。
前人是怎样以地球为中心表述日食、月食这些天象的?我们用曾运乾先生《尚书正读》注文来回答这个问题,至少可以给我们一些启发。注云:当朔而日为月所掩,是为日食。当望而月为日所冲,是为月食。又说,古人制字,“朔”“望”“有”均从月得义。朔字从月从屰(屰,不顺也)。月与日同经度而不同纬度,则相屰而为合朔。若同经度而又同纬度,则相屰而为日食。望,为月食专字。从月从壬(壬,朝廷也),取日月相对望也。从亡,遇食则有亡象焉。有,为日食专字。从月,月光蔽其明也。从又,一指蔽前,泰山不见也。则知日月食之由于蔽也。《说文》:“有,不宜有也。春秋传曰,日月又食之。从月又声。”段氏注云:“谓本是不当有而有之称,引申遂为凡有之称。”
古代先民只是直观地以地球为中心来观测天体的运行,这就是西方科学未传入中国之前我国古代长期行用的地心说。日月星辰的东升西落,实际是因为地球从西向东在转动。这种地心说并非全无道理。比如上和下,是一种比较的说法。在地球上的上与下,其实都是在和地球中心比较,拿地球中心做标准来比较是有道理的。舍此,就无所谓上与下。同样,国际通用的标准时自有好处,而各个地方时更为各地的使用者称便。道理都一样,地心说对观测者似更方便。古人想象,地球四周被巨大的天球包围着,所有的日月星辰都在天球上运行。太阳系八大行星,古人凭肉眼观测,以地球为中心,只能见到金、木、水、火、土五大行星,并掌握了它们各自绕地球一圈的时间及运行规律,记之甚详。古代典籍关于天象的记载,立足于地心说。古代星图、天球仪之类也据此成象。阅读古籍者不可不知。
四、历的种类
#
人类对天象进行观测以确定计时标准,其中观测的主要对象是日、月的运行,依据日、月的运行周期以制定各自的历法。迄今为止,世界上的历法可分为三类:太阴历、太阳历和阴阳合历。
甲,太阴历。它是以月球受光面的圆缺晦明变动为基础,利用月球运行周期(朔望月)为标准制定的历法。月亮运行的周期是29.53日,太阴历就用大月(30日)、小月(29日)相间,一大一小来调整。因为每两月有0.06日盈余,还需要配置连大月才能保证月初必朔,月中必望。太阴历以十二个朔望月为一年计算,共354日或355日。它把月相与日期固定地联系在一起,见月相而知日期,知日期亦知月相。这在上古,无疑给人们的生产和生活带来方便。其致命的弱点是,十二个朔望月(平年354日)与太阳的运行周期(即回归年长度365.2422日)不相吻合,太阴历每年与回归年有11日多的时差,积三年就相差34日。这就必将搅乱月份与回归年长度确定的春夏秋冬四季的关系,冷暖四季与月份的关系错乱,又会给人们的生产、生活带来困难。
从古代历史记载得知,世界上最早制历的国家都首先使用过太阴历,因为月球的盈亏变化对人类而言较为明显而又亲切。上古时代,日苦其短,年嫌其长,月的周期最能适应宗教仪式的需要,朔望月自然就占有了重要的地位。
伊斯兰教用于祭祀节日的回回历就是现存的唯一纯太阴历。回历以公元622年7月16日,即穆罕默德避难麦加的次日为元年元日,以朔望月计,十二月为一年,每月以月牙初见为第一日,单月30日,双月29日,大月小月相间,全年354日,不置闰月。由于十二个朔望月共354日8时48分34秒,每年多出8小时有余,积三年就多出一天有余。所以,回历每三十年共置十一个闰日。在三十年中,第2、5、7、10、13、16、18、21、24、26、29年为闰年,每年355日,闰日放在十二月。
由于太阴历和回归年的日差,回历的岁首和节日(如肉孜节、古尔邦节)寒暑不定,便是可以理解的了。
陈垣先生《二十史朔闰表》附有回历与公元历、阴历的日期对照,便于检查。
乙,太阳历。它是以太阳的回归年周期为基本数据制定的历法。欧洲太阳历是古罗马恺撒在公元前46年请埃及天文学家索西琴尼斯协助制定的,世称“儒略历”或“旧太阳历”。当时测得的回归年长度为36514日。因此,儒略历规定,每四年中前三年为平年365日,第四年为闰年366日,即逢四或逢四的倍数的年份为闰年。一年十二个月,单月为大月31天,双月为小月30天。起自3月,终于2月,与月相完全无关。因为罗马帝国每年2月(年终)处决犯人,视为不吉,所以减去一日,平年只有29日,闰年为30日。又因为恺撒养子屋大维(奥古斯都)生于8月(小月),又从2月减一日加到8月,变8月小为8月大(31日)。这样,2月即为28日(闰年为29日)。为了避免由于2月小、8月大而造成的7月、8月、9月三个月连大,又改为7月、8月连大,9月、11月为小月,10月、12月为大月。这都是人为的规定。
公元325年,罗马帝国召开宗教会议,决定统一采用儒略历,并依据当时的天文观测,定3月21日为春分日。
回归年长度为365.24219日,即365日5时48分46秒。而儒略历是以36514日,即365日6时为数据制定的。两者有11分14秒之差,长期积累就会形成明显误差(128年差1日),这在当时并不为人所知。到公元1582年,人们发现春分点竟在3月11日,与公元325年的春分点相差十日之多,即1258年间(325—1582)间差十日,相当于每400年误差3日。为此,罗马教皇格里高利十三世只好召集学者研究,改革儒略历,采取每400年取消3闰(即400年97闰)的方法,规定把1582年10月4日以后的一天算为1582年10月15日,所有百位数以上的年数能被400除尽者才能算闰年(如1600年,2000年)。这样,一方面纠正了儒略历的误差,另一方面又提高了太阳历的精度。改革以后的儒略历称为格里历,其精确度很高:
365×400+97=146097(日)
146097÷400=365.2425(日)
格里历这个回归年长度365.2425日比现代实测回归年长度只有0.0003日(即近26秒)之差,积累3320年才会有一日的误差。这对日用历来说,已是十分精确的了。
我国元代郭守敬至元十八年(公元1281年)制定的“授时历”,其回归年长度已达到365.2425日的精确度,比格里历早了三百年。
当今世界通用公元纪年,共同使用的就是格里历。而公元纪年并不开始于公元元年,而是开始于公元532年(据说基督就诞生在公元532年之前,532年正是我国南朝梁武帝中大通四年)。这是出于宗教的考虑。因为532这个数字正是星期日数7、闰年周期4和所谓月周(即一定历日的时间地球上看到月面形状变化的周期)19(年)的最小公倍数。每过532年,基督教的节日(比如复活节)又会是同一日期、星期和月相。因此,公元532年之前的公元纪年都是后来逆推而定的。
太阳历以回归年周期为依据,四季与月份的关系稳定。中国古历形成的二十四节气就比较固定地配合在太阳历的一些日子里。
...
2025年1月4日 16:42 周六版权信息
#
图书在版编目(CIP)数据
古代天文历法讲座/张闻玉著.—2版.—桂林: 广西师范大学出版社,2017.10 (中华优秀传统文化名家讲座) ISBN 978-7-5495-9716-1
Ⅰ.①古… Ⅱ.①张… Ⅲ.①古历法-基本知识- 中国 Ⅳ.①P194.3
中国版本图书馆CIP数据核字(2017)第106428号
广西师范大学出版社出版发行( 广西桂林市中华路22号 邮政编码:541001 )
出版人:张艺兵
全国新华书店经销
开本:700 mm × 970 mm 1/16
印张:23 字数:280千字
2017年10月第2版 2017年10月第1次印刷
印数:0 001~4 000册 定价:59. 80元
目录
版权信息
《古代天文历法讲座》新版序
序
前言
第一讲为什么要了解古天文历法
一、时间与天文历法
二、天文与历法
三、天文常识
四、历的种类
五、古天文学与星占
六、古代天文学在阅读古籍中的作用
七、怎样学好古天文历法
第二讲纪时系统
一、纪年法
二、纪月法
三、纪日法
四、纪时法
第三讲观象授时
一、地平方位
二、三垣二十八宿
三、《尧典》及四仲中星
四、《礼记·月令》的昏旦中星
五、北极与北斗
六、分野
七、五星运行
八、《诗·七月》的用历
九、观象授时要籍对照表
第四讲二十四节气
一、先民定时令
二、土圭测景
三、冬至点的测定
四、岁差
五、节气的产生
六、二十四节气的意义
七、节气的分类
...