吴 名 岗
(滨州学院,山东 滨州 266603)
司马迁生年已争论了百年, “前145年说” 和“前135年说”仍不能取一说而定论。要取得定论,必须在已有共识的基础上,以令人信服的科学方法论证出真实的司马迁生年,才能结束这场争论。今以排比行年法、数学求解法、原文解读法共证司马迁生于公元前135年,以告白于关心此问题的广大读者。
百年来,司马迁生年已有多次大的争论,争论各执己见,十分激烈。但有时忘记了共识,有的甚至口头上承认共识,在实际论述时又违背共识。我们务必尊重客观事实,务必尊重《太史公自序》,务必真正遵循达成的共识,才能求得司马迁的实际生年。
总结以往的争论,在如下五点上,两说是有共识的:
(1)“依据现有史料,特别是司马迁自己写的行年资料,可以推定他的生年。”[1]699
(2)选择司马迁自叙的、确凿的、两说公认的,明了的时间点为已知坐标点去推求司马迁的生年。
(3)推求司马迁生年的正确方法务必是“以已知求未知”,而绝不能以未知求未知。
(4)根据上述原则,我们选择:“年十岁则颂古文”,“二十而南游江,淮”,元鼎六年“奉使西征巴、蜀以南”,元封元年父亲司马谈“发愤且卒”,为基准点。
(5)公认的“行年关节点,只有第(7)项、‘还报命,是岁天子始建汉家之封’有准确的时间点,即元封元年,公元前110年”[1]700,一切推算必须从这里开始,排列行年也必须是从这里开始。
我们的论述,排比行年的结果,最终结论都要依此五条来检验,以判定正误,决定取舍。
张大可先生在《司马迁生年十年之差百年争论述评》一文中说:“排比行年是考证司马迁生年唯一正确的方法”[1]697。其实并非“唯一”,可以用三种方法共证司马迁生于公元前135年。笔者赞同张先生“最可靠的方法找出司马迁行年的几个坐标点,进行行年排比,看哪一个生年最合理”[1]692,这几个坐标点必须是已知的。所以我们选择司马迁自叙的,两说公认的四个时间点为坐标去求证司马迁的生年。这四个时间点是:“年十岁则颂古文”,“二十而南游江,淮”,元鼎六年“奉使西征巴、蜀以南”,元封元年父亲司马谈“发愤且卒”,这4个基准点。
确定已知点后,再由“已知推未知,切忌用未知的假设推未知”[1]698的推理方法,用“司马迁自己写的行年资料”[1]699推定他的生年。还要用已知的这四个点去验证排比的结果,只有与这四个点完全相符合的,符合人情事理的,才是正确的。
假设的生年正确,推排的过程合乎逻辑,结果合乎情理的,假设成立;假设的生年错误,推排出的结果荒谬,不合乎情理的,不能成立。
我们先看表1《司马迁行年表(王国维、郭沫若两说对照)》中有三个明显的错误,须先指出:
第一,算错了司马迁的年龄。《司马迁行年表》是以王国维说为据排列的。表中第二栏:“前135,武帝建元六年,王说:10岁;郭说:1岁。”[1]707按王说司马迁生于公元前145年,建元六年即前135年,司马迁11岁,而非表中的10岁。王说10岁那年是建元五年,前136年。推郭说,建元五年司马迁尚未出生。
第二,表中没列郭说的司马迁“二十而南游江淮”这一重要时间点。在前117年即元狩六年,郭说司马迁19岁这年与前112年即元鼎五年,郭说24岁这年中间没有内容。表中没有列出司马迁“二十而南游江淮”之元鼎元年的这一重要事迹。
第三,“以未知的假设推未知”。张先生在“排比司马迁行年的考证原则”时说:“由已知推未知,切忌用未知的假设推未知。”[1]689事实上张先生又是怎么做的呢?他说:
还有八项行年关节点,要一一做考证,尽可能找出更多的行年关节点的准确年代,作为已知的“因”,用以推论司马迁生年,就可以一步一步逼近司马迁确切的生年即所要求证的“果”。第(1)项迁生龙门,这一行年关节点即司马迁生年,是所要求证的“果”,不是推论的“因”,但与第(2)项“耕牧河山之阳”与第(10)项“家徙茂陵”串联,就可以考证出“家徙茂陵”确切的司马迁行年时间段,即“耕牧河山之阳”的时间段,所以考证第(10)项“‘家徙茂陵’是一个重要的时间关节点”[1]701。
张先生自己说“迁生龙门”“是所要考证的‘果’”。又以“迁生龙门”“与第(2)项‘耕牧河山之阳’与第(10)项‘家徙茂陵’串联,就可以考证出‘家徙茂陵’确切的司马迁行年时间段,即‘耕牧河山之阳’的时间段。”这是典型的“用未知的假设推未知”。把诸如“前128年,耕牧河山之阳”,“前127年,迁家徙茂陵”,“前91年,《报任安书》作于是年”等许多未知的假设列入《司马迁行年表》,使此表十分混乱。
张先生指着《司马迁行年表》说:“前135年说之司马迁,年十岁前蒙童耕牧,十八岁前问学于孔安国、董仲舒,二十五岁奉使为钦差大臣,就这几个坐标点都是荒诞的,不合情理,不能成立。”[1]706但他没说“司马迁1岁颂古文,10岁南游江淮”是“荒诞的,不合情理,不能成立”,更没说“司马迁没出生”就“颂古文”是荒谬的。但此表以王国维说推出的最荒谬之处就是司马迁没出生就“颂古文”。
但这证明的不是“郭说”之荒谬,而是“王说”之错误。因为没出生或“一岁”“颂古文”并非“郭说”,而是根据“王说”推出来的。
《司马迁行年表》恰如归谬法,推出的结果是荒谬的,以此可以认定“前145年说”是不能成立的。但作者至此仍不认识自己的错误,反倒说这是“前135年说”之荒谬!
表1 司马迁行年表(王国维、郭沫若两说对照)
续表1
纪年王说郭说大事记考据备注前108元封三年38岁28岁迁为太史令《索隐》注引《博物志》所载《茂陵中书》前104太初元年42岁32岁迁议历法;正式定稿《史记》《正义》按:迁年42岁前99天汉二年47岁37岁李陵降匈奴,迁为辩说武帝纳迁言,派公孙敖迎李陵前98天汉三年48岁38岁是年冬李陵家被族,迁受腐刑武帝误听传言族李陵家,迁株连受祸前96太始元年50岁40岁迁出狱为中书令前93太始四年53岁43岁作《报任安书》内有:会东从上来/涉荀月,迫季冬,仆又薄从上雍是年武帝春三月幸泰山,冬十二月行幸雍与《报任安书》合前91征和二年55岁45岁清赵翼系《报任安书》作于是年史无可考,而为新说所据前90征和三年56岁春夏之交刘屈氂被腰斩任安应死于是年六月前87后元二年59岁武帝卒太史公记事尽于孝武之事褚少孙说前86昭帝始元元年60岁《外戚世家》等多篇有“武帝”二字,留下史公修订《史记》的痕迹前81始元六年“盐铁会议”桑弘羊引用《货殖列传》称“司马子言”,是对已故学问家的敬称。此是司马迁死于昭帝之初的铁证
《司马迁行年表》为什么推出的结果是荒谬的?因为司马迁生于前145年说,是以《茂陵中书》错讹为基石排比出来的。
《司马迁自叙生于建元年间》是以《太史公自序》为准绳,验证《茂陵中书》是可靠的,进而推算出司马迁生于公元前135年的。
而“前145年说”者是以“迁生年的十年之差,乃《索隐》在流传中数字三十八讹为二十八,此王氏立论基石”[1]707,此说的基石是以《茂陵中书》流传有误为据。怎么知道《索隐》所据《茂陵中书》错误,以张守节《正义》为据。说白了“前145年说”者立论是依张守节的太初元年“迁年四十二岁”为唯一依据的。
以张守节太初元年“迁年四十二岁”检验《茂陵中书》,证明《茂陵中书》是错误的,相差了10年,“前145年说”者本应抛弃《茂陵中书》,可却偏偏要以错讹的《茂陵中书》为据。原因是《茂陵中书》资料的可信性。又要利用其可信性,又要把它说成是错讹的,这就是王氏们的立论基石和方法。张先生是以张守节的《史记正义》为基石,排比以《太史公自序》为主要内容的司马迁行年的。
张守节的《正义》晚于司马贞的《索隐》二十年,他如果认为《索隐》有错,本应给予辩驳之后再推出自己的“迁年四十二岁”之说。张没有任何考据就加按语“迁年四十二岁”,却深受处处以“考据”自居者的后学推崇。据载,张守节也曾引用过《茂陵中书》,并没做任何考辨。如果他是以《茂陵中书》推算太初元年司马迁的年龄,当为32岁,42岁是张守节弄错,或后人弄错。持“前145年说”者,不以《太史公自序》为据验证张守节的是否正确,却固执的要以毫无依据的张守节说太初元年42岁为据,推定司马迁生于前145年,哪能不错呢?
共识第4条中的“年十岁则颂古文”,“二十而南游江,淮”,因为是共识,所以结果必须符合这两点。以此可以看出“前145年说”实质是背离了这两点,也就是说背离了他们所承认的共识,自相矛盾。“前145年说”比“前135年说”认为司马迁生年早了10年,以“前145年说”为据推司马迁“二十而南游江淮”是元朔三年,就成了郭说“10岁”而南游江淮。这正是“前145年说”所无法掩盖的差错。依次,司马迁“年十岁颂古文”也成了未出生“颂古文”。谁人说过司马迁未出生“颂古文”呢?《司马迁行年表》为了掩饰“未出生”就“颂古文”这一荒唐,以错算司马迁的岁数改为“前135年,王说10岁,郭说1岁”填入表中,且在《述评》中极力淡化“年十岁颂古文”这一考证司马迁行年的重要时间点。
“前145年说”者,既说司马迁生于“景帝中元五年”,又坚持“二十而南游江淮”,这两者之间的矛盾是无法解决的。《司马迁行年表》是以张守节太初元年四十二岁推排出来的,它的结果是司马迁在没出生之前就“颂古文”,10岁南游江淮。结果荒谬,假设不能成立,证实“前145年说”错误,反证“前135年说”正确。
以“王说”为据排比《司马迁行年表》,推出的“郭说”荒谬不可信,所以王说不能成立。
我们借助《司马迁行年表》,只要把“郭说”的“二十而南游江淮”(前116年)填入表中,与“王说”对比,就可以看出,王说是“三十”而南游江淮。这从情理上是成立的,也是“前145年说”者们自己所主张的。
“前145年说”者可能说,我们何时说过司马迁30岁南游江淮?王说诸家确实没有直接说过司马迁30岁南游江淮,连表中都有意漏掉这重要的内容。但《司马迁行年表》是包含了司马迁30岁南游江淮这项内容的。表中前110年栏:王说:36岁,郭说:26岁,父谈卒;前111年栏:王说:35岁,郭说:25岁,奉使西征巴蜀;前112年栏:王说:34岁,郭说:24岁,从武帝西登空桐;前117年栏:王说:29岁,郭说:19岁,推迁为博士弟子。所以,它包含了前116年栏:王说:30岁,郭说:20岁,二十而南游江、淮。而“三十”而南游江淮与《自序》不符,所以说“前145年说”是错误的。
以“郭说”排比《司马迁行年表》,推出的“王说”合情理,有依据,所以“王说”成立,证明司马迁生于公元前135年。
对于司马迁自叙“二十而南游江、淮”这件事,无论何说者都没有任何异议,因为这是客观事实,这是我们确定的4个坐标点之一。可是《司马迁行年表》却列为“郭说:10岁,二十而南游江淮,见《太史公自序》”,不知制表者依据郭沫若的哪篇文章说司马迁“10岁”“南游江淮”?哪位“前135年说”者说过司马迁10岁南游江淮?把这样根本没有的事,不能成立的东西强加给不同观点的人,难道造表者自己不觉得可笑吗?
《司马迁行年表》应当在第8栏下面列出而没有列的一栏是“郭说”的司马迁20岁那年,笔者予以补出,无碍于原表:“前116,元鼎元年,王说:30岁,郭说:20岁,二十而南游江淮,见《太史公自序》。”
依据“前135年说”,司马迁“二十而南游江淮”发生在元鼎元年、前116年。这不仅符合司马迁自己说的“二十而南游江淮”,而且也符合“前145年说”者说的司马迁30岁南游江、淮,所以是正确的,所以《司马迁行年表》证实了司马迁生于公元前135年。推理要合乎逻辑,事情要合乎情理,符合历史事实的才是经得起任何检验的真理。
总之,《司马迁行年表》实际证实了“前145年说”是不符合事实、不符合《太史公自序的》的,同时证明了“前135年说”是正确的。无须多费口舌,只要读懂《司马迁行年表》就会明白:司马迁生于公元前135年。
没有对司马迁生年进行研究的读者,可以不用“排比行年法”,只要把《太史公自序》中那段司马迁自叙行年的文章编成一道简单的代数题,并以客观事实验证其解就明白了。
所谓“数学求解法”就是根据我们所述五点共识第4条中的4个已知时间点,去求解未知的司马迁20岁到元鼎六年的年数,然后再验证“解”是否有效。
已知:“(司马迁)年十岁则颂古文。二十而南游江、淮……奉使西征巴、蜀以南(元鼎六年),……是岁天子始建汉家之封,而太史公留滞周南,不得与从事,故发愤且卒(元封元年)。”[2]3293-3295
未知:司马迁20岁到元鼎六年的年数,父亲司马谈卒时司马迁年龄。
我们可以从求得“自二十南游到奉使西征的年数”这个未知数加上已知的司马迁20岁南游江淮,再加上从“西征巴蜀”到“父卒”的一年,就是司马迁元封元年的岁数。
即:20+X+1=司马谈卒时司马迁之年龄
代入“前135年说”的假设年龄26,即20+X+1=26,解方程得X等于5。
代入“前145年说”的假设年龄36,即20+X+1=36,解方程得X等于15。
验证两解对错:
在“前135年说”26岁这个年龄之下,有2个整数年龄,即20岁、10岁。10岁游江淮不成立,唯一的解是20岁。其对应的年份是元鼎元年,公元前116年。依此“前145年说”的元鼎元年司马迁30岁,情理上是可以游江淮的。两说可以达成一致。所以司马迁生于公元前135年是合乎已知的司马迁“二十而南游江淮”和元封元年司马谈“发愤且卒”时司马迁26岁的。
在“前145年说”36岁这个年龄之下,有3个整数年龄,即30岁、20岁、10岁。10岁游江淮不成立,30岁、20岁游江淮在情理上都成立,30岁对应的年份是元鼎元年,公元前116年,20岁对应的年份是元朔三年,公元前226年。在30与20中只能有一个符合实际的年数,只有一个与“前135年说”能在“二十而南游江淮”相一致。“前145年说”的20岁年份是元朔三年,“前135年说”的这年是10岁,10岁游江淮不能成立,因此不能与郭说在“二十而南游江淮”上相一致,所以不可取。现在就只剩下30岁这个年龄了,“前145年说”的30岁与“前135年说”的20岁在同一年份,即元鼎元年,前116年,在情理上能成立,但不符合“二十而南游江淮”这个条件,所以亦不能成立。“前145年说”没有一个年龄是既符合司马迁“二十而南游江淮”又能从情理上成立,所以是虚假的,不存在的。
虽然“排比行年法”和“数学求解法”都已证明司马迁生于公元前135年,但我们最好还是回到司马迁的原文《太史公自序》,用另一种方法,从司马迁自身的角度验证司马迁生于公元前135年是否正确,再最终确定。
所谓“原文解读法”就是主要以对《太史公自序》的解读来寻求司马迁的生年,在原文中直接寻找答案。这是符合以《太史公自序》为依据求证司马迁生年的,它可以避开一些纠缠不清的考据。对《太史公自序》原文的解读,主要是下面这段文章。
太史公仕于建元元封之间,愍学者之不达其意而师悖,乃论六家之要指曰……太史公既掌天官,不治民。有子曰迁。迁生龙门,耕牧河山之阳。年十岁则颂古文。二十而南游江、淮,上会稽,探禹穴,窥九疑,浮于沅、湘;北涉汶、泗,讲业齐、鲁之都,观孔子之遗风,乡射邹、峄;厄困鄱、薛、彭城,过梁楚以归。于是迁仕为郎中,奉使西征巴、蜀以南,南略邛、笮,昆明,还报命。是岁天子始建汉家之封,而太史公留滞周南,不得与从事,故发愤且卒。[2]3288-3295
据笔者理解:“太史公仕于建元元封之间”是个总述,自此以下到“发愤且卒”,是依次叙述司马谈父子建元年到元封年之事。叙事没有超出建元元年到元封元年这30年的时间范围。这里有如下时间点:建元元年;太史公出仕;太史公既掌天官(之年);有子曰迁,迁生龙门(司马迁生年);年十岁则颂古文;二十而南游江、淮;奉使西征巴、蜀以南;最后以“是岁”与“元封”相呼应。所述之事不超“元封”年,不出建元年。
再从“二十而南游江、淮”往后看,没有出现“三十”或三十之后的任何痕迹,而前面“十岁”“二十”这些表整数年龄的字眼是明显的。据此,笔者认定:到元封元年,司马迁不超过30岁。
据上段文章,笔者做出两个判断:司马迁生年在建元年之后,到司马谈卒年司马迁不足30岁。以此验证“前145年说”司马迁生于景帝中元五年,元封元年36岁,生年在建元之前,元封年超过了30岁,不符合我对《太史公自序》的解读,所以笔者不能同意“前145年说”。再以自己的判断验证“前135年说”,司马迁生于建元六年符合生在建元年后的判断,元封元年26岁也符合不满30岁的判断,所以认为“前135年说”是正确的,因为他符合笔者对《太史公自序》的理解。
这里有两个问题需澄清:一是这段文章中有没有写到司马迁的生年;二是这段文章是按顺序写的,还是“倒叙”?
对刊于《史记研究》第一辑的笔者拙稿《司马迁自叙生于建元年间——兼论张守节〈史记正义〉不可尽信》,张大可先生评论说:“立说依据是司马迁《自序》按时间顺序记事,‘迁生龙门’写在‘太史公仕于建元元封之间’的后面,因此,司马谈先做官后生子。司马谈既然出仕在建元年间,后生的儿子不可能在建元年间之前,所以生于建元六年。看起来很有逻辑,其实是一个伪命题。”[1]705
所谓“伪命题”,就是虚假的命题。一位专家听从编委会“指示:要立场鲜明地写出驳论”写出了《〈太史公自序〉中没有记载司马迁生年——兼与吴名岗先生等商榷》[3]425-435的文章。张先生说《司马迁自叙生于建元年间》为“伪命题”是说《自序》没有写司马迁的生年,而拙稿立论的主要依据则是“‘有子曰迁’之‘有’,生也。《词源》‘有’的第二个义项是‘发生’的意思,并以《左传》为例。‘有子曰迁’即‘生子曰迁’。从上下文看‘有子曰迁’也是‘生子曰迁’之意。接下来说:‘迁生龙门’正是‘有’为‘生’意之连贯。”[4]
张先生认为《自序》没有写司马迁的生年,但他没有对上述重要论点进行评述。那么在张先生的《司马迁行年表》中“前145年,迁生龙门,一岁”[1]707是什么意思?“迁生龙门”出自《自序》,是司马迁原文,正是这一句记载司马迁生地的话,以及前一句“有子曰迁”,记述了司马迁的生年。笔者以此为据说《司马迁自叙生于建元年间》。张先生在《述评》中说:“这两段话(指《自序》“迁生龙门……是岁天子始建汉家之封”及《报任安书》“仆赖先人绪业,得待罪辇毂下二十余年矣”两段),提供了九个行年关节点,即(1):迁生龙门……”[1]699这不是说“迁生龙门”之年吗?不然,怎谓“行年关节点”?怎说“迁生龙门,一岁”?接下来,张先生又说:“第(1项)迁生龙门,这一行年关节点即司马迁生年,是所要求证的‘果’,不是推论的‘因’”。[1]701尽管张先生说的“迁生龙门”是所要求证的“生年”,不是已知的生年,不是可以用于“推论的‘因’”,但却是司马迁自叙的生年无疑。难道只有可做推论的生年是生年,被推论的生年就不是生年吗?如果迁生龙门是可以“推论的‘因’”的话,哪里还用得着百年争论呢?哪里还用得着在此问题上做学问呢?从张先生的上述话来看,他自己认为《太史公自序》中是有生年的,不然,他的话则无法被人理解。
在《自序》中有无生年这个问题上,笔者从张先生的一些具体论述看,认为我们可以取得共识,那就是《自序》中司马迁确实写了自己的生年,具体的话语是“有子曰迁,迁生龙门”。两说真正的分歧是司马迁生于哪一年,笔者认为,司马迁生于建元元年之后,张先生认为“迁生龙门”在景帝年间。
“太史公仕于建元元封之间”这段文章是按时间顺序写的还是“倒叙”?
笔者认为这段文章是严格按时间顺序写的,是从建元年依次写到“是岁”即元封元年的。张先生说:“再看‘太史公仕于建元元封之间’这一句话写了司马谈一生为官三十年,然后倒回来记述司马谈三件大事,皆与作史有关联:一是发表《论六家要指》;二是培养司马迁;三是临终遗命司马迁。”[1]696即使按张先生的说法,“太史公仕于建元元封之间”也只是总写了司马谈为官30年,然后顺次写下,难道这叫“倒叙”吗?依张先生的三件大事说,这段文章只是写司马谈的,如果如此理解,那王国维的《司马迁行年考》还考什么?其实这段文章主要是写司马迁在父死之前的事迹的,而司马迁的行年是严格按时间顺序写下来的,绝无什么“倒回来记述”。
根据《太史公自序》原文就可以判定司马迁不是生于景帝年间,不是生于公元前145年,而是生于建元六年,亦即公元前135年,这就是命题为《司马迁自叙生于建元年间》之因由。
用排比行年法,数学求解法,原文解读法共同得出了司马迁生于公元前135年的结论。司马迁的生年是一个具体而重要的历史问题,用各种不同的方法求证未知的司马迁生年,可以从不同的角度对所得结果进行验证,可以确信不同方法所发现的共同本质问题。每一位研究者都应虚心听取和思考不同意见,换位思考,吸取不同意见的正确之处,勇于放弃自己不合实际的错误认识,才有可能取得科学的共识。“前145年说”者,苦心孤诣的造出《太史公行年表》,其方法是可取的。司马迁生于“前135年说”之进一步证实,包含了“前145年说者”的大量心血。科学是不讲情面的,吾爱吾师,更爱真理,是每个追求真理的历史研究者的本性。笔者相信,经过上述三法的简要论证,司马迁生于公元前135年是会被研究者和广大读者理解的。
[1] 张大可.史记论丛:第十三辑[M].北京:中国文史出版社,2016.
[2] 司马迁.史记[M].北京:中华书局,1959.
[3] 杨共乐.史记研究[M].北京:商务印书馆,2016.
[4] 吴名岗.司马迁自叙生于建元年间[J].渭南师范学院学报,2016(21):32-37.
【责任编辑朱正平】