大刘是程序员史观。
什么叫“程序员史观”呢?
比如程序员要写一个程序,目的是从100个数字里选出最大值。
这要怎么搞呢?
1、令MAX等于第一个数字
2、检查第i个数字(i的初始值是2)
2.1、对遇到的每个数字,比较它和MAX的大小
2.1.1、如果数字比MAX小,不做任何操作
2.1.2、如果数字比MAX大,令MAX等于这个数字
3、检查i值;如果i<100,则令i等于i+1,然后重复执行2
这种史观有什么特点呢?
1、它有一个明确的目的
2、达到这个目的有清晰明确的计划,只要手法/步骤正确就一定能成功
3、随意修改手法/步骤,只会导致程序崩溃
4、有时候“开发计划”并不是那么显而易见,需要付出相当的努力去理解去探索
5、哪怕有了计划,这个世界还有10种人,一种会写程序,另一种不会
6、会写程序的每一步都按正确的手法/步骤来
7、不会写程序的就瞎搞什么人文啊关怀啊,然后导致程序崩溃
那么,“程序员史观”有什么弊端呢?
答案就是,“程序员史观”需求太过明确,工程化思想太过严重——总以为只要按照某套既定计划做了,那么“需求”就一定能实现。但是因为一群外行瞎捣乱,定好的开发计划被搅乱了,需求就实现不了了。
但现实世界里,需求含糊不清、甚至连大方向都没有才是家常便饭;需求出来了,开发计划本身也是混沌一片;执行更是乱糟糟的一团……
治心血管病的药成了伟哥;炸毁城市的计划毁于小男孩的一泡尿;子贡赎奴不要回报被孔子骂;子路救了人毫不含糊牵了人家报答他的牛就走,反而匡正了社会风气……
王公贵族的统治,被发明家彻底终结;神学的虔诚信徒,反而因为太虔诚,以本意是荣耀神的研究否决了神的存在(达尔文了解下)……
甚至,就连程序员本身,也还搞出来了遗传算法/神经网络呢。
整体评估的话,“程序员史观”的典型问题是“规模宏大、规则简单、视角狭小”。
1、规模宏大:简单的关系数学写的数据库,把几亿条甚至更多数据玩的如臂使指,这只算基本功能而已。
2、规则简单:典型的,一个程序总是被设计的简单清晰,高内聚低耦合。真正动用的核心逻辑很少。就好像可以轻易玩转数以亿计的数据的数据库,底层只是少量的“关系代数”规则一样。
3、视角狭小:做关系数据库的,甚至连“全文搜索”都懒得管——因为那是NoSQL数据库的业务范围。
对应到小说上:
1、规模宏大:动不动就是星球、星系、宇宙级别的大哉问。
2、规则简单:总是事情考虑的太简单。比如“黑暗森林”。
3、视角狭小:容易陷到自己所知的、唯一的解决方案里出不来,压根不承认其它任何可能。
比如提出黑暗森林时,连现实生活时刻发生的、黑客攻防战的原理、细节都统统懒得知道。
BTW,最近“大逃杀”规则的吃鸡横行。这可是个用规则逼你们、冷冰冰的要求“只能有一(队)人”活到最后的游戏啊。
不开挂的话,你猜是“发现即消灭”更容易吃鸡呢;还是不到万不得已不开枪不暴露的“老阴B”更容易吃鸡?
如果这个游戏允许“临时结盟”呢?如果“临时结盟”到了决赛圈再自动解除呢?
最后,推荐几篇文章看看。
基本规则的确可以很简单。比如……对称和守恒。
然而More is difference.
哪怕一条看似极为简单的规则,真正衍化下去也可能超出人脑的能力极限——甚至配合全球的超级计算机都无济于事。
何况复杂的人性。何况复杂的人类社会。
真正的历史,总是波澜壮阔,超出任何人掌控的。
而身处局中的每个人,总是为自己的眼界所限,总是身不由己。
当前问题的症结,你看不出来。99%的人都看不出来。
你看出来了,却不知道该如何表达。因为人类语言尚没有表达类似概念的词汇。
你是语言上的巨人,把你看清楚的东西表达的很清晰。后来,你的名字或者你的文章的名字,就成了表达这种抽象概念的名词——比如牛顿,比如安培,比如库伦。或者……弗洛伊德/莎士比亚/黑格尔/尼采……
你表达了这些东西,但却没人能读懂。他们反而叫你“疯子”。
读懂了,他们却不知道该怎么应对——你也不能——只好静待雪崩。然后感叹“没有一片雪花无辜”。
你找到了应该可行的应对方案,却没人相信你。因为另一个明显更简单、更直观,然而却错的不成样子的方案更深入人心……
这个蠢到了极点的方案逼出了一群暴徒;他们砸烂了一切,包括文明。
然后,后人发现……其实你的方案一样的蠢。
真正解决问题的契机,来自于一个没有被历史记住的学徒/流民偶然发明的一种工具。
这种工具是如此有效(比如马镫,比如蒸汽机),所以迅猛的改变了人群的力量对比。
这种改变,使得社会“礼崩乐坏”。成千上万的人上了战场,进了屠场。
所有人都开始后悔,后悔人类不该发明这种工具。
但是社会正在悄悄的改变……
人们逐渐适应了这种工具,并围绕它建立了新的社会秩序……
一个美好得多的时代来临……
这,就叫史诗感。
程序可以写的无限精致、无限大气;但却永远不会有史诗感。
因为历史就是人类脱出控制的历程——从蒙昧、宗教、国王、自然的控制中逃离的过程。
每一次的控制,都几乎做到了历史水平上的最佳;所以,每一次逃离都是偶然。
偶然到没有人会去记录那个不起眼的发明家。甚至没有人知道他生活中哪个时代、哪个地区。
因为他的发明实在太不起眼。
但也只有偶然,才能让一个没什么见识的普通人,误打误撞的从无数精英——从国王到大臣到神父到学者——的围追堵截中逃离,并深刻的改变时代。以至于在后世看来,这个普通人的脑后显然是应该有光环的——毕竟他搞的东西是那么伟大,逻辑那么清晰,眼光那么远大……他怎么都不可能是一个放牛娃。
历史,就是对人类所谓的掌控力的嘲笑。
但要把它写出味道来……你需要真正理解、或者哪怕不理解但毕竟通过自己那足够敏感、足够博大的心灵深刻体会/见证了诸多曲折细微之处……这要求,简直是神仙都要挠头。
有这样敏感纤细的心灵,又要真正体味过悲欢离合,又能有大家手笔、以近乎冷酷的冷静把事情讲的条理分明……你还想要几个曹雪芹?
而程序则是控制。
我就抓这么一把,然后只把这一把捏紧。无暇他顾。
我算无遗策,然而人类的愚蠢断送了我的完美计划。
不是我的设计出了bug,而是执行者太愚蠢,所以才写出了bug。
换句话说,成与败,和其他人毫无关系。
它只和知道这个计划的“我”(作者或者作者在书中的某个化身)、以及执行我这个计划的人相关。
当执行计划的人很厉害,他就证实了我的计划的完美;而执行计划的人很差劲、以至于把事情搞砸了——这更加证实了我的计划的完美性。
完美到不允许任何一点改动。
但是很遗憾。至少人类历史上,还从来没有过完美到这种程度的、有足够规模的计划。
——先去假定一个完美的计划存在、然后想办法设计人物设计情节去证明它的完美,这就是程序员史观。
——或者说,程序员史观总是先决的认定一个“完美应对方案”,然后安排一个蠢货破坏它,从而证明这个方案的完美。
——就好像每一个程序员都假定自己能写出完美的程序、并愿意以自己的生命来证实这点一样。
当然了,大刘写的就是程序。而且写的很精致,很大气。这就够了。
拿它当历史读,是你的错。