主要的原因有三个:
一是唐代以来,新帝继位后改历逐渐成为常态,这可以被视为是宋朝频繁改历的根本原因。
二是由于精度问题,旧历在运行一段时间之后精度下降,是改历的客观原因。
三是宋代不禁私历,技术上也取得了一些进步,也使得大家比较有修改历法的动力。
咱们一条条的来说。
由于历法这玩意跟天象密切相关,而观星占卜吉凶这事又直接关系到王朝统治,所以大多数的朝代都是严禁民间研究天文历法的——不然今天有人观荧惑无常主灾兵之难,明天大星落于西南宰辅恐有性命之忧,后天星星已经对齐旧日支配者即将苏醒,你说皇帝要怎么办?听还是不听?这就很尴尬
初,知星者言,上象变,不利大臣,请攘之。光庭曰‘使祸可攘而去,则福可祝而来也!’论者以为知命。卒,年五十八,赠太师。——新唐书·卷一零八·裴光庭传
所以干脆,这东西由官方统一负责,你们民间也别研究这玩意了,谁碰谁死
太平真君五年春正月戊申诏日:愚民无识,信惑妖邪,私养师巫,挟藏谛记、阴阳、图论、方技之书,又沙门之徒假西戎虚诞生致妖孽,非所以壹齐政,化布淳德于天下也,自王公以下至于庶人有私养沙门师巫及金银工巧之人在其家者,皆诣官曹,不得容匿,限今年二月十五日,过期不出,师巫沙门身死,主人门诛。明相宣告,’咸使闻知。——魏书·太武帝本纪
永平四年夏五月诏禁天文之学——魏书·宣武帝本纪
开皇十三年春二月丁酉制私家不得隐藏纬候图谶。——隋书·文帝本纪
除此之外,汉朝以来罢黜百家独尊儒术,而儒家认为历法这东西上体天心,乃是天人感应之正道。正所谓“昼诵书传,夜观星宿,是为儒生职业”,然而尴尬的地方在于,咱们都知道天文学其实也是相当专业的一门学科,没点专业本事你是玩不转的。所以这么搞下去的后果就是汉代以来历法从儒家的领域里被分了出去,由专门的历法人员来负责,而大儒们对相关学界前沿了解的越来越少,却偏偏要把历法当成正朔的大事。所以唐代以前汉朝是东汉一个太初历,西汉一个三统历,这是汉历,也是王朝正朔的权威象征,马虎不得。
结果东汉末年分三国,三国之后又是南北朝,朝代一个比一个短,顺便出了祖冲之等一票数学家,这就造成了两个后果:一是历法推算的技术进步了;二是少数民族南下以后这等蛮夷之人缺乏儒家思想熏陶,一朝一历的习惯竟然逐渐被废除了,比如说北魏前后改历三次、隋朝改历两次,所以到了大唐的时候,大家已经习惯改历了。
唐终始二百九十余年,而历八改。初曰《戊寅元历》,曰《麟德甲子元历》,曰《开元大衍历》,曰《宝应五纪历》,曰《建中正元历》,曰《元和观象历》,曰《长庆宣明历》,曰《景福崇玄历》而止矣。——新唐书·卷二十五·历一
所以说,唐代以来,一朝改历逐渐成为常态,这是宋朝频繁改历的根本原因。
既然改历已经不是问题了,那么显然历法出了差错就可以改。考虑到技术的进步,宋代时期的定朔算法已经相当成熟了——日月黄经相同的时刻称为“朔“,定朔,就是确定真正的日月黄经相同的时刻。考虑到古人没有精准的经纬度跟地轴偏角的概念,他们想要搞明白这玩意还是比较困难的。不过好在古人也不傻——我多观察观察,然后拟合不就完事了嘛?然而这种拟合没有先进的数学工具作为基础,多半是有误差的,而且时间越长,误差越大,所以这就是客观上的改历需要。
显德《钦天历》亦朴所制也,宋初用之。建隆二年,以推验稍疏,诏王处讷等别造新历。四年,历成,赐名《应天》,未几,气候渐差。太平兴国四年,行《乾元历》,未几,气候又差。继作者曰《仪天》,曰《崇天》,曰《明天》,曰《奉元》,曰《观天》,曰《纪元》,迨靖康丙午,百六十余年,而八改历。南渡之后,曰《统元》,曰《乾道》,曰《淳熙》,曰《会元》,曰《统天》,曰《开禧》,曰《会天》,曰《成天》,至德祐丙子,又百五十年,复八改历。使其初而立法吻合天道,则千岁日至可坐而致,奚必数数更法,以求幸合玄象哉!盖必有任其责者矣。
然而在儒家眼中,你这频繁改历说明你们水平不行啊!你看我大汉就不瞎改!于是大家开始频繁发牢骚,纷纷指责这届编历的不行。修历的表示你说我不行,你行你上啊!大家又表示我要是行还用你?
“刘洪历四十五年差一度,梁武帝历百八十六年差一度。“以前人历术之精,犹不免此,况贱工之草创者乎?大抵唐以后律历之法不传,士大夫无所从受。——建炎以来朝野杂记·乙集·卷五·总论应天至统十四历
这里咱们就必须提到前面说的第三点了,实际上,汉代以来历法的发展已经进步了许多,以至于士大夫们按照儒家经典得到的那些理论基本已经不可能用于指导历法编制了——这就好像是牛顿那个年代,随便拎出来一个科学家都是精通数学、物理学、化学等各种自然科学的杂家,不过今天就隔行如隔山一样。然而偏偏这个历法的发展不仅关系到王朝正朔,还有华夷之辩:南北朝一堆蛮夷就罢了,后来天竺跟西域地区的立法计算方法也开始被引进国内,这简直就是国将不国啊!
不过你就算把天说破,也碍不住人家算得准……所以到最后官方一套“大历“、民间还有”小历“,而官方人员碍于士大夫议论,表面用大历,私下用小历也成为了常态。沈括曾经表示:你们这些儒家食古不化整天瞎指挥,搞得大家当面一套背后一套很辛苦有木有!
《史记·律书》所论二十八舍、十二律,多皆臆配,殊无义理。至于言数,亦多差舛。……其日月五星行次,皆只据小历所算躔度誊奏,不曾占候,有司但备员安禄而已。熙宁中,予领太史,尝按发其欺,免官者六人。未几,其弊復如故。——梦溪笔谈·卷八·象数二
那么把话说回来,古历真的精度就很高么?当然不是了。对汉朝来说,碍于改历这事是个忌讳而导致眼睁睁的看着它出错而改不了,才是最痛苦的事情……
自太初元年始用《三统历》,施行百有余年,历稍后天,朔先于历,朔或在晦,月或朔见。考其行,日有退无进,月有进无退。建武八年中,太仆朱浮、太中大夫许淑等数上书,言历朔不正,宜当改更。时分度觉差尚微,上以天下初定,未遑考正。
至元和二年,《太初》失天益远,日、月宿度相觉浸多,而候者皆知冬至之日日在斗二十一度,未至牵牛五度,而以为牵牛中星,后天四分日之三,晦朔弦望差天一日,宿差五度。章帝知其谬错,以问史官,虽知不合,而不能易。后汉书·卷九十二·律历中
所以综上所述,技术进步、修正误差、观念改变这三者共同作用下,导致了宋代的频繁改历。
怎么没人提《圣斗士星矢》啊?
这个系列作品的特色不就是回回都是一部的戏就半天时间么?
黄道十二宫篇:纱织中了天箭座的箭,必须12小时内突破圣域十二宫。
北欧篇:奥丁代言者希露达被海皇戒指蛊惑令冰川融化,纱织代替希露达阻止冰川融化但是只能坚持12小时,必须在时限内摘下希露达的戒指。
海皇篇:纱织代替人类承受波塞冬的洪水,应该也是只能支撑一天之内的时间。
冥王十二宫篇:被哈迪斯复活的圣斗士要在12小时内取下雅典娜的首级,实际目的则是为了雅典娜去冥界并且唤醒女神圣衣,12小时候被复活的圣斗士们就消失了。
冥界篇:记不清打了多长时间,但从纱织被塞到缸里抽血开始到解决应该也是一天之内。
黄金魂:在本篇剧情里有好几天,但对应到冥界篇时间仅仅发生在冥界篇12黄金击破叹息之墙到打死神之间。
火星篇:马尔斯获得阿丽娅的权杖后建立起巴别塔吸引火星,会在12小时内毁灭地球,主角们必须在12小时内突破新十二宫。
土星篇:这篇好像打了很多天……
这个故事里面,没有一个人是正确的。
这个问题下面,每个人都在讨论对错,互相甩锅。
然而这个社会上,没有任何一个角色的人,可以帮到这个家庭。
没有人可以帮助孩子,也没有人可以帮助父母。
人们反对语言暴力,反对肢体暴力,反对禁闭管教,
人们几乎反对所有“极端方案”,却没有人任何人给出正确的解决方案。
这个案例里,父母的行为,已经做到了一个正常父母,甚至高素质父母能做到的一切。这个故事在一次“长记性”的暴力殴打之后得到了控制。
然而如果这样都控制不住呢?
比如打过之后,依然没用,女儿开始逃学,抽烟,夜不归宿;家里人没有办法,把她锁在家里关禁闭,她用床单当绳索从3楼爬出去,离家出走几天不回家。家长该怎么办?
这其实不是一个假设,
这是豫章书院事件中,那个“只是有点早恋”的当事人,在接受我的采访时口诉的故事。
实际上不管是送去杨永信还是送去豫章的孩子,他们的故事和这个新闻都类似,甚至有过之而不及。
在从爱的感动,到灵魂交流,再到科学教育法,最后到心理咨询师;
当“正确”的方法都无效之后,还有谁能帮助这些人?
这些人是少数,可能只有千分之一;
同时也不是少数,千万人口的城市,儿童近百万,千分之一就意味着数千家庭需要面对这种极端情况。
在豫章书院之后,我也在试图寻找这件事的答案。
我对话了豫章书院当事人sona的心理咨询师,她告诉我sona不该送去那样的地方,但同时也认为有些人需要在那里管教。
我找了浙大的儿童心理学教授,他告诉我心理辅导和更好的教育可以解决大部分问题,但是解决不了所有问题。我们的讨论中,出现“驯服人类的方法”这样极限的闭门话题。
一位在工读学校工作了14年的高级教师,他给出的答案更令我惊悚。靠”管“能解决的问题不会送来工读学校。工读学校的作用是把这帮人关到18岁,等他们出去了就能判刑了。
这段时间我看了大量教育学的书籍。但我发现,整个社会对正常儿童的教育信息非常丰富;对于异常儿童和家庭的帮助方案近乎于玄学;而对极端状况的研究,几乎是一片空白。
回到主题,
如何看待这个问题?
这件事的背后,是整个社会对叛逆少年研究和帮助的空白。我们有海量的关于对错的讨论,有海量政治正确的讨论,却没有任何一个方案禁得起“如果这样做无效呢?”的反问。
父母无处求助,孩子无处管教。声称能给出帮助方案的机构,全部诉诸暴力而被网友围剿。
如果学术上不解决这个问题,社会角色不能良好的补位,这样的悲剧永远不会是最后一次。
而这个问题下,现在所有的争论其实都毫无意义。
从大学到现在,我使用Java已经将近20年,日常也带实习生,还在公司内部做training,所以可以分享下我的经验,希望对你有用。
因为是在工作中培训,就必然有两个约束:实用、时间紧,因此就不能像大学那样,把所有的知识点都面面俱到的讲到。而只能挑基础的,实用的,难理解的讲。至于其他边边角角的知识,就一笔带过。一则没有时间,二则不常用,再则既使讲了,学生印象也不深刻。总之一句话:“好钢用在刀刃上”。
下面,就根据我的实践,具体谈下学习过程:
1.基础知识
我学习java的时候,先是通读了《Java编程思想》,然后是《Java核心技术》。当时这两本书还不像现在这么厚,而刚才我把案头的《Java核心技术》第9版翻了翻,上下两册已经1700多页了,可想而知,如果要把它通读一遍,且不说把所有的代码都调通,就是当小说读,估计也需要些时间。
但我现在教学依然首推《Java核心技术》,主要是体系完整,实例多,可操作性强。但对初学者,我一般是只讲前6章,也就是下面的内容:
就《Java核心技术》第9版来说,也就是到250页为止,加把劲,1个月拿下完全没问题。
因为你是自学,所以建议你一定要把其中的代码都调通,课后的作业尽量去做。除此之外,还有两点特别重要:
#.学习笔记
因为你是自学,不像在企业中学了就能够实践,印象自然特别深刻。而自学因为没有实践的及时反馈,所以记笔记就显得特别重要。因为记笔记就像写作一样,是整理思路的绝佳方法。同时学习笔记也是你以后开发,面试的绝好资料。
学习编程,人跟人是不一样的,别人觉得难理解的东西,对你却不一定;而你觉得难理解的东西,别人可能又会觉得特简单。而学习笔记就是自己专有的“难点手册”,有点像高考时的“错题本”,以后无论是在面试前,还是在日常工作中,随时都可以翻出来看看,自是获益匪浅。
#.分门别类保存demo
学习笔记是很好的文字资料,但编程界有句话说的特别好,所谓“no code, no text”,意思就是说:千言万语都没有一段代码来的实在。
以我的经验,在你在学习的过程中,就某个知识点,无论当时理解的多透彻,调试的多棒,只要时间一长,等到了实用的时候,肯定会碰到各种各样的问题,一些看似简单的东西,此时死活就是调不通,正所谓人到事中迷。这个时候,如果你手头恰有运行良好的demo,打开参考一下(甚至直接拷贝过来),问题自然迎刃而解。而且因为这些demo都是你亲手调试出来,印象自然特别深刻,一碰到问题,在脑子中自会立刻涌现。
所以说,在学习的过程,一定要善待你调通的demo,千万不要用完了就扔,等后来碰到困难,想要用时却找不到,追愧莫及。正确的做法就是把所有调通的demo,分门别类的保存起来,到时候查起来自是得心应手。
人都说“书到用时方恨少”,其实代码也是这样,所谓“demo用时方恨少”。
2.Spring
目前在Java EE开发中,Spring已经成为和Java核心库一样的基础设施,所以说如果想成为一个合格的Java程序员,Spring肯定绕不开。另一方面,如果掌握了Spring体系,Java基本上就算入门了,就有能力进行一些实用级的开发了。
但Spring本身也是日渐复杂,衍生项目越来越多,但最最核心的概念依旧是IOC和AOP,掌握了这两个概念,再把Spring MVC学会,再学习其他的衍生项目就会平滑很多。
同时,因为Spring本身就应用了许多优雅的设计理念,所以学习Spring的过程,也是加强Java基础知识学习的过程。因此等你掌握了Spring,原来很多你理解不透彻的Java特性,此时就会恍然大悟,包括接口、抽象类等。
我学习Spring,读的第一本书是《Spring实战》,坦率的说,书很一般,但市面上比它好的书,我却没有遇到过。还有一本《Spring源码深度解析》也不错,对Spring的设计理念讲的尤其透彻,虽然整本书读起来有些艰涩,但前几章却生动有趣,也是整本书的精华。所以建议你在学习Spring之前,先把该书的前几章通读一下,然后再回过头来学习《Spring实战》会顺利很多。
以我经验,要学透Spring,终极的方法还是阅读源码(我当时就是这么干的),待把Spring的核心源码通读了,人就真的自由了(所谓无真相不自由),不仅是对Spring,而是对整个Java体系。以后再遇到其他框架,大概一眼就能看出其中的脉络,所谓到了“看山不是山”的境界。但这都是后话,可以作为以后你努力的方向。
和学习Java基础知识一样,学习Spring也一定要记笔记,一定要分门别类保存demo。
老实说,Spring对初学者不算简单,因此最好能有个好老师带一下,不用太长时间,2个课时即可,然后就是在你遇到大的困难时,能及时的点拨下。
以我的经验,要初步掌握Spring,大概需要1到1个半月的时间。
3.其他知识
Spring是Java编程的基础设施,但真要进入到实际项目的开发,还有些东西绕不过,包括 MySql,Mybatis,Redis,Servlet等,但如果你经过Spring的洗礼,这些东西相对就简单多了,以我的经验,1个月的时间足够了。
4.实践
学习Java,光学不练肯定是不行的。但因为是自学,所以就没有实际的产品让你练手,但也没有关系,谁大学还没有做过毕业设计呢?以我的经验,大家最爱的“学生管理系统”依旧是个很好的练手系统。
别看“学生管理系统”逻辑简单,但麻雀虽小五脏俱全,其中数据库设计、Mybatis,Spring、SpringMVC,Servlet、Tomcat一个都不缺,绝对的练手好伴侣。
还有,虽然你的学习重点在Java,因为要做一个完整的demo,前端的配合肯定少不了。因此就免少不了要学一些简单的JS、HTML知识,但因为前端本就是个很大的topic,所以一定要控制好边界,千万不要顾此失彼。就“学生管理系统”来说,在前端上,只要实现一个包含table、textbox、button,能发送REST请求到server,能实现学生的“增删改查”的简单页面即可。
作为一个练手项目,目标就是把Java的主要技能点串起来,所以自不求尽善尽美(也不可能),所以1个月时间足够了。
.最后
按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。
学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。
在日常的教学中,我常把下面这句话送给学员们,今天也把它送给你:
“道路是曲折的,前途是光明的!”
祝你好运!
--- 上面是原答案 ---
我把上面的内容作了下整理,画了学习路线图,内容也有些升级,供参考。
因为有朋友,通过留言或私信方式问我:Java中有哪些知识已经过时,不需要再学习了?
回答的多了,就感觉这是一个普遍的问题,因此统一整理了下,作为这篇文章的补充,希望对你有用。