DocRun 除了支持双向连接双栏编辑,文档拓扑关系图,调用本地 Python/Matlab/R 之类的环境之外,还支持直接运行 Pond
Pond 具备强力表达式引擎,这里以二项式分解为例: 暴力展开
# 多项式暴力展开
clear(x,y)
(x+y)^8 //.{
(a~+b~)^n~:>a*(a+b)^(n-1)+b*(a+b)^(n-1),
a~~*(b~+c~~):>Times(a)*b+Times(a)*Plus(c)
}
使用杨辉三角优化
N=18; c = [1,2,1]; #二项式的系数
Do(c=Join(1,Table(c[i-1]+c[i],{i,c.size(),2,-1}),1),{N-2} )
(x+y)^N/.{(a~+b~)^(n~Number?$>1&):>Plus@@Table(c[i+1]*a^i*b^(n-i), {i,0,n} ) }
1
whileFalse 2020-10-24 15:27:47 +08:00
所以为什么要设计一个新的语言呢?
|
2
einsxiao OP @whileFalse 大概有这些理由:
* 作者很迷 Mathematica,可是 Mathematica 很封闭,Pond 是开放的 * Pond 的内核和 Mathematica 相似,但是兼容了目前流行的 js 、python 的语法系统,上手使用没有违和感 * 用户可以把自己的代码添加到 Pond 系统中,并且不同用户之间的 Pond 代码可以相互调用 * Pond 可以无依赖直接在浏览器运行 |
3
whileFalse 2020-10-25 16:27:40 +08:00
@einsxiao 那么 Pond 语言是一个独立的语言,还是 DocRun 的一部分呢?
|
4
einsxiao OP @whileFalse Pond 是一个独立的语言,在 DocRun 运行的 Pond 是 DocRun 的一个特殊版本(使用 wasm 直接在浏览器运行)
Pond 本来的部分,是在我研究生所在组实验室作为计算时沟通高性能 C++和 cuda 代码沟通的建模语言(譬如有保证和 GPU 编程效率的各种语法糖),目前主要的模块代码集中应用在材料的相场计算领域。 这部分工作在做商业化尝试,应该过一段时间会开源出来。 |