算力最强云笔记 DocRun 之最个性语言 Pond 之二项式分解

2020-10-24 12:30:20 +08:00
 einsxiao

DocRun 除了支持双向连接双栏编辑,文档拓扑关系图,调用本地 Python/Matlab/R 之类的环境之外,还支持直接运行 Pond

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} ) } 

->上例可运行代码及运行结果

1609 次点击
所在节点    分享发现
4 条回复
whileFalse
2020-10-24 15:27:47 +08:00
所以为什么要设计一个新的语言呢?
einsxiao
2020-10-25 16:12:57 +08:00
@whileFalse 大概有这些理由:

* 作者很迷 Mathematica,可是 Mathematica 很封闭,Pond 是开放的

* Pond 的内核和 Mathematica 相似,但是兼容了目前流行的 js 、python 的语法系统,上手使用没有违和感

* 用户可以把自己的代码添加到 Pond 系统中,并且不同用户之间的 Pond 代码可以相互调用

* Pond 可以无依赖直接在浏览器运行
whileFalse
2020-10-25 16:27:40 +08:00
@einsxiao 那么 Pond 语言是一个独立的语言,还是 DocRun 的一部分呢?
einsxiao
2020-10-25 18:44:02 +08:00
@whileFalse Pond 是一个独立的语言,在 DocRun 运行的 Pond 是 DocRun 的一个特殊版本(使用 wasm 直接在浏览器运行)
Pond 本来的部分,是在我研究生所在组实验室作为计算时沟通高性能 C++和 cuda 代码沟通的建模语言(譬如有保证和 GPU 编程效率的各种语法糖),目前主要的模块代码集中应用在材料的相场计算领域。
这部分工作在做商业化尝试,应该过一段时间会开源出来。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/718133

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX