《消失的地平线》里有几段关于中庸的文字:
张回答得很慢,且差不多就是自言自语地嘟哝道:“要是用三言两语来概括的话,亲爱的先生,我得说,我们奉行的信仰是中庸之道。我们反复灌输杜绝过激言行的美德,甚至包括似是而非或似非而是的理论观点,也许你会不理解,美德本身也有个度。在你们所见到的这个山谷里,有几千居民生活在我们的管辖之下。我们已经发现很大程度上道义可以带来幸福;我们用中庸的严谨来规范自身,而反过来我们又满足于中庸的遵从。我想,我完全可以这样说:我们的人民是适度地节衣缩食,适度地保持贞节,适度地忠诚老实。”
这大喇嘛的皱纹更深而且更加重叠在一起,很长一会儿康维才恍然意识到他很可能是在笑。“做蠢事时的懒惰可以成为伟大的美德,”这低声嘟哝又开始了,“无论如何,你都很难发现我们对这种事有严格的评价。我相信张已经给你们讲过我们的中庸之道,其中的一条就是我们总是要适度地行动。比如我自己,曾有能力学好10门语言,假如说我无节制的话,这10门会变为20门。但是我没有这样。其它方面也是同样的道理;你会发现我们既不放荡也不禁欲。当我们到了需要关心照顾的年龄,我们很高兴地接受餐桌上的乐趣,而对年轻同僚们的欲求——山谷的女人们也乐意运用中庸之道来对待她们的贞洁。所有事都考虑到了,我觉得你肯定不用费多少劲就会习惯我们这一套的。张的确也很乐观——所以经过这次见面以后,我说,我也得承认,你身上有一种迄今为止还从来未曾在任何一个来访者身上找到的奇怪的品质。不是那么玩世不恭,更不是辛酸。也许有一部分的幻灭,但还有一副清醒的头脑,是我不曾意料在任何一个年纪小于100岁的人身上找到的,如果用一句话概括起来说——这是没有激情。”
“中庸”大概因为有个“庸俗”的“庸”字,现在有些贬义了。然而细究起来。和时尚的80/20方法并无太大不同。不像2个极端靠拢,就是靠近主流思想,接近绝大多数。原因在于自然界由于大数定律,容易构造出正态分布。什么意思?比如一个骰子,6个面,随便扔一下,可能是1,2,3,4,5,6中的一个。而且出现的可能性各是1/6。如果2个这样的骰子呢?扔出来的结果自然是2,3,4,5,6,7,8,9,10,11,12中的一个,出现的可能性就不是1/12了,出现2和12的可能性最小,出现7的可能性最大。这就有个正态分布的样子了。如果扔N个骰子,就呈现出标准的正态分布,一个两头尖中间胖的结构。
还是说写程序,不知道别人有没有我这样矛盾的心情。一方面想用现成的组件搞定事情,幻想写程序如同搭积木一样拼拼接接就完成了。另一方面,又要从一行一行代码开始重复制造轮子。这个问题在哪呢?为什么一方面有那么多现成的组件,甚至现成的解决方案,比如Blog比如BBS,你可以一行代码不写,安装个WordPress,安装个Discuz就搞定了。 另一方面,你想做个有些类似Blog功能但有不完全是Blog的东西,那就麻烦了。因为你很难把WordPress拆掉重新搭。而代码级的东西固然重复制造了轮子,但毕竟是可以重新打造出一个Blog系统的。
所以说,写程序的现状是:现成的东西都在两头。一头特别细,是一行一行的代码。一头特别粗,是一个一个完整应用。中间的东西完成度不高。
最近要写个注册登陆的东西。哪个网站没有注册登陆?这个东西够平常吧。
我的需求也不复杂,登陆的模块要前后端分离,后端给Restful API,前端我好用React
数据库先用nedb凑合,如果项目大了再用mongodb
然而找到的几个方案有:
https://github.com/zeMirco/lockit
https://github.com/braitsch/node-login
https://github.com/themouette/express-users
- lockit
功能很全,可是我要用nedb怎么办? - node-login
只能用mongodb - express-users
没有restful API
很好。都看着有想要的功能,都不能直接用。那么,都是开源的,能拆么? 理论上,是能拆的。然而,是代码级的拆。不是模块级的拆,要拆了重用,得一行一行代码看明白了。这个叫做学习借鉴。不能叫做复用。
理想的模块,不仅要水平的拆分。还要垂直的拆分。水平的拆分是不同功能模块的拆分,垂直的拆分是技术栈的拆分。前端和后端在url这就该砍一刀。砍成几个大块,才能像IBM-PC一样,分别进化,现在的电脑和十年前大不一样了,然而还是一块一块进化来的。
写代码的中庸,就得搞清楚粒度,不能太小了,也不能太大了。