7

我一直在学习 Factor 和 J 语言来尝试无点编程。这些语言的基本机制似乎很清楚,但是要了解如何进行算法设计是一个挑战。

对我来说,一个特别的困惑来源是应该如何构造代码,以便轻松地尝试不同的参数。我的意思是 Mathematica 和 Matlab 非常擅长的那种东西。您设置了一个算法,然后操纵变量并观察会发生什么。

如果没有显式变量,你如何做到这一点?也许我在想这一切都是错的。我应该如何在无点编程中解决这个问题?

4

2 回答 2

9

以下是我发现在处理串联范式时非常有用的三个重要建议(在我的案例中适用于 Factor 编程语言):

  • 无情地分解你的代码。编写极小的函数:如果堆栈参数超过 3-4 个,也许你可以把它分成更小的部分。
  • 花时间学习数据流组合器(bi、tri、cleave、spread ......)。它们允许表达常见的数据流模式,同时无需复杂的堆栈改组。
  • 学习从其他引文中建立引文。使用 currying 技术(curry, with, ...)从堆栈参数构建简单的引用,当事情变得过于复杂时使用 Fried 引用(“fry”词汇)。它们允许从模式轻松构建复杂的嵌套引用,而无需任何堆栈改组。

和往常一样,阅读并“走进”现有代码。在 Factor 中,很容易探索运行时并查看事情是如何工作的。

对于您的具体混淆来源,如果您的算法中有很多输入参数,最重要的是研究如何使用它们。收集数据流模式。您必须真正考虑在最小的相关参数集上“调度”操作的最佳方式。

这是一次相当艰难的经历,但当它成功时,它也是一种真正的回报。在那之后我们感觉自己像一个人类编译器..

祝你好运!

于 2010-08-28T20:33:42.030 回答
0

我在串联编程语言 Joy 和类似 Backus FP 的语言方面有一点经验。关于算法设计,我可以说是非常结构化的算法设计。

如果没有显式变量,你如何做到这一点?

事实上,像 Backus FP 这样的语言中没有全局变量。但是,没有什么可以阻止使用一些受限制的局部变量,例如实例变量。

于 2020-10-23T20:03:32.003 回答