einsxiao

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

  •  
  •   einsxiao · Oct 24, 2020 · 2254 views
    This topic created in 2037 days ago, the information mentioned may be changed or developed.

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

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

    4 replies    2020-10-25 18:44:02 +08:00
    whileFalse
        1
    whileFalse  
       Oct 24, 2020
    所以为什么要设计一个新的语言呢?
    einsxiao
        2
    einsxiao  
    OP
       Oct 25, 2020
    @whileFalse 大概有这些理由:

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

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

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

    * Pond 可以无依赖直接在浏览器运行
    whileFalse
        3
    whileFalse  
       Oct 25, 2020
    @einsxiao 那么 Pond 语言是一个独立的语言,还是 DocRun 的一部分呢?
    einsxiao
        4
    einsxiao  
    OP
       Oct 25, 2020
    @whileFalse Pond 是一个独立的语言,在 DocRun 运行的 Pond 是 DocRun 的一个特殊版本(使用 wasm 直接在浏览器运行)
    Pond 本来的部分,是在我研究生所在组实验室作为计算时沟通高性能 C++和 cuda 代码沟通的建模语言(譬如有保证和 GPU 编程效率的各种语法糖),目前主要的模块代码集中应用在材料的相场计算领域。
    这部分工作在做商业化尝试,应该过一段时间会开源出来。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2676 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 11:17 · PVG 19:17 · LAX 04:17 · JFK 07:17
    ♥ Do have faith in what you're doing.