本文使用 Zhihu On VSCode 创作并发布
什么是Hedgehog Lab?
首先我们看一下关于其创始人"立党"的个人文章介绍:
我们本着严谨的态度,不考虑吹X的情况下,这段介绍的关键字为“国产”,“自主知识产权”,“宏内核(我X?)”,“并行加速”。请大家记住这几个关键词,这里我们不考虑没有提到的类“simulink”等模拟仿真部分,我们只逐一分析一下这些关键字部分。
国产?
首先因为立党老师应该还没有入美籍,其他共同贡献者也是中国人,所以这条check √。
自主知识产权?
首先我们首先考虑一下,作为一个科学计算平台(按照立党的话:科学矩阵符号运算编程环境),人话就是做数学计算的平台的话,其核心是什么,结合立党的文章有如下选项:
- 前端UI界面
- 用户交互界面
- 数据渲染图
- 饼图
- 柱状图
- 散点图
- 折线图
- 等等blabla
- 数值计算功能
- 精度:能提供到多少精度的计算功能
- 矩阵
- 维度:计算功能支持的矩阵维度
- 基本加减乘运算
- 矩阵分解,行列式,特征向量等运算
- 代数计算
- 积分计算
- 导数计算
- 初始化
- 矩阵初始化
- 随机变量初始化
- 扩展
- 最优化问题求解器
- 计算性能
- GPU加速支持
- 多线程,多进程计算支持
那我们我们分析一下,一个科学计算平台(软件),前端UI重要吗?当然重要,毕竟好的UI能方便用户的使用增加效率。那么有多重要?远远比不上数值计算的核心需求重要,对于大部分的科学计算需求,其底层都是这些数值计算功能,毕竟如果你连个矩阵分解都做不了的话,还求解什么方程组是吧,界面写出花也没用。所以如果排序的话,重要性应该是:
- 数值计算功能
- 计算性能
- 前端界面
那么问题来了,哪些部分是”自主知识产权“?也就是哪部分是立党和他的小伙伴们写的呢?
前端部分
用户界面
大体看了一下,主要他们用了material-ui和react及相关的一些开源框架,当然前端交互界面部分我们可以说总体上属于”自主知识产权“。
数据渲染图
这部分他们使用了plotly.js这个库,https://plotly.com/javascript/
确实效果不错。
数值计算部分
这里是科学计算平台的核心,如果我们注意一下立党在他的项目里定义矩阵计算那部分代码,如下图所示
我们发现使用了gpu.js和math.js开源库,我们先不管gpu那部分,只讨论数值计算。在定义的矩阵Mat类里,所有的运算都是基于mathjs而来,而且还不全,这里只简单举几个例子:
- 矩阵维度只有两维
- 矩阵分解功能缺失
总之,对于数值计算部分,主要做的还是调用mathjs的方法写了一个最简单的运算封装,连mathjs本身的全部功能都没有全部用到(我能想到的最贴切语言了,欢迎大佬提供更好的表达方式)。为此我们可以专门比较一下在mathjs官网的demo,https://mathjs.org/index.html ,我们也可以在官网上做一些数值运算如下所示:
而参考mathjs文档,HedgehogLab目前的数值计算部分只是mathjs已有功能的一个子集。
计算性能部分
立党按照其宣传的”并行加速“的核心代码,主要体现在这里:
而我们又知道,其调用GPU做并行计算的程序是用的开源库gpu.js。所以到这里,可以说是一个利用gpujs对于mathjs部分计算功能重新封装后的一个gpu并行计算提升。
所以是自主知识产权吗?
我想看完分析大家也心里有答案了,核心数值计算底层非自己写的而且封装后提供的运算函数鸡肋。当然做数学计算的大佬一看肯定就知道在吹牛X,可能只是没有人愿意去捅吧。
什么值得肯定?
我觉着对于功能接口的封装部分,大家可以看一下runtime那里还挺有意思,parser那里写的可以,看起来用的话比较方便,前端做的也挺漂亮,值得肯定。如果不考虑“自主知识产权”部分,是一个不错的开源项目。
One More Thing ?
我觉着这是一个值得思考的事,我们缺什么?
- 我们缺写前端UI的工程师吗?我们缺像尤大那样写出Vue框架的前端工程师吗?
- 我们缺提供数值运算功能的开源库吗?我们缺有能写像BLAS这种底层数值运算库的数学家/工程师吗?
我觉着每个问题都有不同的答案,而这些答案也代表到底真的是”自主知识产权“还是”吹牛X“的区别,更是未来发展值得思考的问题。
我觉着既然”立党“老师曾经热衷与批判于某些国内不良风气问题,为何自己要说一些或者就在做自己批评的人呢?
之前有个一阵热度的TRUFFER,一位匿名大佬评价的很好,具体解释了其数值计算库的成员变量及方法并,而且还用c++动手实现了其50%核心计算函数。
如何评价国产软件 TRUFFER(可替代 MATLAB)? - 知乎 https://www. zhihu.com/question/4030 55136/answer/1300485419
希望立党老师能发挥出这个匿名大佬的精神,好好琢磨一下什么叫格物致知,而不是调用个已有的开源库写个封装写个前端就叫”自主知识产权“。
当然本人并非数值计算专家,只是大学时候做过一些数值计算项目,由于立党高调的宣传,加上立党早就拉黑我让我没法给他评论,让我产生了简单的公开分析了一下Hedgehog Lab这个项目的想法,欢迎大家提出不同观点。