道与术 - 谈谈我对数学和软件产品之间关系的理解

原创
2019/12/22 12:59
阅读数 1.3K

JFinal 波总和我在 谈谈我对 JFinal Marketing 的一些看法 博文的评论中谈到了数学和软件之间的关系. 这篇文章中我再详细说说我的理解.

纵观人类知识的积累, 大致可以分为 "道" 与 "术". 所谓"道", 即天道, 也就是自然规律. 而"术", 即技术, 是人类对已发现自然规律的应用. 自先秦而降中国文化即重道而轻术, 这当然有其历史局限性, 但道在术先也是毋庸置疑的.

波总在 JFinal 4.8 发布 新闻中引用了欧拉恒等式:

在我看来欧拉恒等式属于"道"的范畴, 它简洁优美地表达了几个基本量之间的关系, 这是我们这个宇宙的自然规律, 是被发现的, 而不是被发明的.

波总在对我的回复中讲到:

就因为要素 + 关系是很普适很好用的建模因子,所以才会像你所说的与很多东西存在同构。这里的关键、难点在于:你将什么东西提取并抽象成为要素与关系,一百个人可以有一百种提取方式。数学大师欧拉提取了e、i、pi、0、1、+、= 这五个要素与两个关系,请问为什么不是另一个普通人提取出来,就因为这个提取过程极难、极难,需要对本质有深刻洞察。提取抽象出要素与关系只是建模的第一步,你得验证要素与关系之间是不是逻辑自洽、续洽、他洽,否则你建立的这个模型就是错误的。光是这一步就是极难的事情。好了,下一步是将要素、关系的数量最少化,也就是说你从你建立的模型中无法再删除任何一个要素或者关系,否则模型就是错误的,这个达成不能再继续删去要素或者关系的状态 jfinal 称之为极简。对应到 jfinal 顶层设计是五个要素Handler、Interceptor、Controller、Render、Plugin,无法再删除任何一个,否则很多功能实现不了。你认为是哲学,是玄学,但这个却是我的日常。你没有这种思维方式,不代表别人有了就是错误的,你有你自己的思维方式,或许别人也不是很赞同

我认为这个类比并不恰当. 欧拉恒等式是一条关于自然规律的表达,是真理,是被发现的; 而你不可能把 JFinal 的设计归结于自然规律和真理的范畴, 它是被设计和开发出来的, 而不是被发现的. 而其中提到的五要素也完全没有道理和欧拉恒等式中的几个数学常量相提并论. 我也基本上可以肯定欧拉恒等式的发现过程和 JFinal 的开发设计过程没有任何可比性. 欧拉也没有像波总在上面讲的 将 e、i、pi、0、1、+、= 这五个要素与两个关系提取出来成为一个恒等式. 欧拉恒等式是欧拉公式在 x=pi 时候的特例, 而欧拉公式是人类在数学复分析领域的成果, 其发现过程除了欧拉也有其他数学家的贡献.

另一方面, 波总提到的 JFinal 五要素 Handler、Interceptor、Controller、Render、Plugin, 这些概念应该早在 JFinal 之前已经出现. PlayFrameowrk1.x 在 2009 年的时候就已经采用相同的概念来构造, 而我知道 Play 并不是一开始就是那个样子, 最早的 Play 是基于 Servlet 的架构, 只是在后来的迭代中演进成当初的架构的. 波总也在评论中让我 "谈谈 actframework 在设计顶层架构时使用的思维方式". 这个题目很大, 可能需要另外开坑讨论. 不过这里我可以很明确地说, 我根本就没有做过任何顶层架构设计. 我也是属于不太相信所谓架构师的那一派. 对我来讲, 好的结构是演化出来的, 不是设计出来的.

展开阅读全文
打赏
2
0 收藏
分享
加载中
前些天我为了回复你的这个博客:https://my.oschina.net/greenlaw110/blog/3145851
花时间写了这个:https://my.oschina.net/jfinal/blog/3146036

引来 beetl 这帮人又浪费了不少时间,这次我不想再重蹈覆辙,没功夫跟 beetl 这帮人玩。

在此我只举一个数学思维用于 jfinal 的实际例子,再多表述可能也不如一个实例。

jfinal 在 9 年前就有将架构做得 "极简" 的愿望,但什么是 "极简" 这事要先搞明白,否则没有思维方式做为指导。

正好我早就有数学思维的习惯,很自然的就会去数学中找找可以借签的东西。以欧拉恒等式为例,显然它是简洁的,但我同时认为它是极简的,因为我认为它在关联了多个深刻的常量的同时,其要素、关系已经是最小化的状态,你无法再删除任何一个要素或关系

我从中总结出可用于 jfinal "极简" 的定义,用白话来说就是:构建具有深刻意义的要素 + 关系的普适性模型,尽一切手段消除不必要的要素或关系,直至不能再删除任何一个要素或关系,这种状态称之为 jfinal 极简。

jfinal 在设计的时候,是不是有 “极简” 这路思脉极端重要,它就是一个方向标,否则 jfinal 迭代 9 年,不可能保持现在的体量,才 29003 行代码,不到三万行实现了 Web MVC + AOP + ORM + Template Engine + ... 等功能

jfinal 这 9 年,很多用户提出要在架构中加这个加那个,如果没有前面提炼的 "极简" 作为一路思脉,jfinal 早就加得面目全非了
2019/12/24 20:25
回复
举报
该评论暂时无法显示,详情咨询 QQ 群:912889742
头脑中的概念是思维方式的基石,而思维方式影响行为方式。jfinal 在设计架构时,头脑中有没有时时怀揣着 "极简" 概念,极大决定了架构设计的产出。 所以,jfinal 迭代 9 年代码量只有 29003 行,无任何第三方依赖,顶层架构从来没有变过(极简设计的特点是架构稳固)。 而罗总是另外的思维方式,所以产出的 actframework 代码量估计比 jfinal 高出十倍,第三方依赖非常多。 我不知道宋玉是谁,我没有多少文学素养,恰好爱好数学,将数学思维方式用于 jfinal 纯属偶然。
2019/12/25 10:37
回复
举报
我觉得数学是对自然的一种人类发明的抽象,就像二进制,十进制一样。数学并不等于自然本身。

就比如物理学一直期望有一个大一统理论一样,先不管具体大一统是什么,我们从这里就可以看出所有的物理定义,都是人类对其的定义,对其的划分,但这不等于自然本身,如果等于,干嘛还要再造一个大一统。

波总的理论也好,你的【好的架构是进化出来的】也好,我觉得都是每个人自己对java web开发抽象出来的理解不同。
然而这个不同我觉得没有讨论的意义,就像在讨论咖啡和茶哪个更利于开发一样没有意义,直接讨论具体框架哪个地方的设计,谁比谁好更加有价值。
2019/12/22 17:53
回复
举报
该评论暂时无法显示,详情咨询 QQ 群:912889742
你看,讨论抽象的东西就是那么难以沟通,我也不打算解释我说了啥,重新简单说下我的观点。我觉得你们讨论这么抽象的原则什么的讨论不出所以然。不如直接设立场景去pk框架设计,哪个场景哪个设计更优雅等等
2019/12/23 06:17
回复
举报
该评论暂时无法显示,详情咨询 QQ 群:912889742
先恭喜波总升级人生👪 我经历过这个阶段, 正式痛并快乐的时候😄
2019/12/23 04:16
回复
举报
不赞同波总把我归于 beetl 帮. 我和 @闲大赋 认识的时候也差不多是我认识波总的时候, 当时刚加入开源中国, 我还给 JFinal 写过 rythm 的插件, 波总手动点赞过的. 说起来我和 beetl 直接一开始还属于直接竞争关系. 在我心中大家都是同行, 而且是精英, 都值得尊重, 所以在人我不占立场. 我只讲理. 20 号发生的那件事我的确不占理, 所以随后那篇博文我交代清楚了, 也在评论中向波总道过谦, 这里就不重复了. 之后我做的都是把自己心中的观点公开坦荡表达出来, 如果这个被波总认为是捣乱, 我也无话可说了. 大家从此井水不犯河水, 大路朝天各走半边好了.
2019/12/23 04:24
回复
举报
jfinal自己发表了不讲道理的博客,还说别人不讲道理,还说自己有上万人,明显想搞网络暴力,你可以呼唤试试!罗神在解释antlr,以及道和术说的很清楚了,我挺烦动不动都上升到道,中国没有几个搞技术有资格能上升到这个阶段,不要忽悠人!另外,你的jfinal没事就诋毁beetl和beetlsql(但不妨碍你抄袭beetl,不相信可以看代码,同内容代码块和同名类有很多),我理解是你受到的质疑太大了,才每次发博文映射beetl,可惜我比较直,你自己找不痛快了
2019/12/23 08:31
回复
举报
波总也不必犯难, 不管是人生升级, 还是发新版都是好事, 而我认为和人辩论也是好事, 自己是正确的当然开心, 辩输了也算是找到了自己的不足, 并不是坏事. 至于纠结于要不要发出一只穿云箭, 召唤千军万马, 更不必犯难, 有道理大家上好了, 当然希望波总的小伙伴们都是讲道理的, 我一定一一接待, 如果来一堆胡扯的, 就只能凉在那里, 怕是波总自己脸上无光.
2019/12/23 04:29
回复
举报
👍 👍 👍
2019/12/22 13:42
回复
举报
更多评论
打赏
12 评论
0 收藏
2
分享
返回顶部
顶部