为什么拿破仑能横空出世?_风闻
code2Real-有人就有江湖,有code就有bug2021-12-13 10:00
编程曾经有过一个黄金时代,那时,低层编程与高层编程可以泾渭分明。
低层编程负责开发驱动程序、函数库,高层编程主要面向复杂业务。
由于业务比较复杂,所以高层编程需要有较高的抽象能力、建模能力、泛型能力。
在使用高级编程语言一般不需要考虑底层原理,不需要考虑内存分配。
而底层编程不需要复杂的抽象能力,只需要不厌其烦地处理好每一个细节。
以前,有一段时间,用户不需要处理复杂事务,对性能得到比较重,于是大家都拿汇编语言、C语言开发高性能程序。
后来因为硬件以摩尔定律快速升级,计算机性能变得非常富裕,于是人们开始进入深水区,处理越来越复杂的业务。
传统的过程式编程容易形成意大利面条,然后就是结构化编程,再后来有OOP、函数式编程、设计模式、领域编程等等。
以前,内存紧张时,程序员使用内存是锱铢必较,用两位数字表示年,结果出了“千年虫”问题。
一个内存空间表示完一个变量后紧接着又赋给另一个变量,这容易造成并发编程的很多问题。
内存紧张导致纯函数式变量几乎难以有施展空间的舞台,因为在纯函数式编程中,变量一经定义就不再变化。这样做的好处是适合并发编程,尤其在内存空间不受限制的云计算时代更是这样。
总之,你不能鱼肉熊掌皆得,软件架构师经常需要根据实际情况做出取舍。
但是现在情况变了,用户不想做选择题了,想全都要,既要底层的运行性能,又要高层的抽象能力。
于是有人发明了rust。
大家都说rust学习曲线非常陡。
其实, 因为rust几乎集人类编程经验之大成。
rust涉及的知识范围非常广,涵盖了OOP,函数式、泛型、底层内存管理、类型系统、设计模式等知识,从底层到上层抽象,从模式到工程化健壮性,无所不包。
换而言之,这个时代需要那种能打通底层到高层的垂直性人才,或者说是通才。
拿破仑既具有底层军事能力,又具有高层政治能力。
拿破仑晚年这样总结自己的成就:“我的英名并非建立在四十次胜利的战上,也不是 由于我使得万邦臣服。滑铁卢战役就足以抹煞对那么多胜利的回忆;最后的一幕往往令人忘却第一幕呀。永不湮没的是我的法典和参政院的会议纪录,我与大臣 们的通讯……由于条文简明扼要,我的法典远比以往任何法典更可行、更有效。 我所设立的学校,我所采用的教育方法在培育着新一代的人才,在我执政期间,犯罪率减少;而英国的犯罪却很猖獗……“
因此可见,拿破仑不仅擅长军事,更是一位卓越的政治家。《拿破仑法典》为建立资产阶段政权扫清了障碍。
自1789年至1799年这10年间,法国政权几经易手,先后经历君主立宪派,吉伦特派,雅各宾派,热月党督政府的统治。
当时的法国政府对内不能解决社会经济问题,造成政局动荡不定;对外无力抗拒欧洲一些国家对法国的武装干涉和入侵,于是这时的法国资产阶级迫切希望建立一个强有力的政权(哪怕是军事独裁)以稳定秩序并巩固自己的统治。
军事独裁者的出现是由当时特定的历史条件决定的,具有一定偶然性,于是恩格斯才说“法兰西共和国所需要的军事独裁者——这是个偶然的现象”。
但从另一方面来说,由于特定历史条件,独裁者的出现又具有一定必然性,于是恩格斯说:“但是,假如不曾有拿破仑这个人,那么她的角色会由另一个科西嘉人来扮演”。”
通过恩格斯先生的话,很容易看出恩格斯先生强调了历史条件的决定作用,同时又主张应该辩证的看待独裁者。
类似地,中国自1840年鸦片战争以来,对内不能解决社会经济问题,造成政局动荡不安,对外无力抗拒列强的武装干涉和入侵。于是社会迫切需要一个能建立强有力的政权的人出现,以稳定秩序,发展经济。
这样的人才必须一方面能解决底层问题(用军事手段打败国内外敌人),一方面能解决高层问题,重新设计上层建筑,集中力量办大事,解决中国工业化问题。
一方面,时代呼唤这样的强人出现,另一方面,能打通从底层到高层的强人也横空出世。
现在,东西方力量发展进入新的阶段,百年未有之变局已经展现在世人眼前,能打通底层到高层的垂直型人才才有用武之地。