百年之后:组合子的深入洞察
1. 组合子的百年审视
一个世纪过去了,我们该如何看待组合子呢?从某种意义上说,它们可能仍是我们所知的最纯粹的计算表示方式,但对人类而言却理解起来颇具难度。
随着计算和计算范式的发展,我们在许多方面正逐渐接近组合子的核心思想。Wolfram语言的基础符号结构,以及过去40年里个人构建的诸多成果,追根溯源都深受组合子思想的影响。
传统计算机系统工程倾向于将计算的不同方面分离,如数据、数据类型、代码、函数、变量和控制流等。然而,组合子表明,实际上无需进行这些区分,一切都可以整合在一起,由相同的动态“计算材料”构成。
但这种纯粹的思想对人类来说具有很大的迷惑性,因为我们理解事物往往依赖于“固定锚点”来赋予意义,而在纯粹且不断变化的s、k组合子的海洋中,我们缺乏这样的锚点。不过,存在一种折中的方法,这也是构建Wolfram语言这样的全面计算语言的可行途径。
2. 符号表达式与计算统一
在实际应用中,关键是将一切表示为符号表达式,并通过反复应用变换来计算这些表达式。Wolfram语言中的符号表达式与组合子表达式类似,只不过前者包含数千个不同的符号结构,用于表示分子、城市或多项式等。
从组合子中我们可以学到,“数据”和“代码”本质上并无区别,都可以用符号表达式表示,并且都能作为计算的原材料。“数据”也不必维持特定的类型或结构,其内容和构建方式都可以是计算的动态输出。
例如,早期的实用计算中,程序常被设置为指令序列,形成“过程式”程序,如:
x = f[x]; x = g[x]
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



