我倾向于成为一个视觉思考者。因此,如果我可以想象程序中的数据流,那么我就可以更好地理解其中发生的事情,而不是阅读正在发生的事情的文本故事(伪代码)。
有没有一种方法可以直观地表示变量和对象流经函数以及被函数更改的方式?最好是在小规模、单个函数内部和更大范围的整个程序中工作的东西。
例如,英语课用于教授句子图解。电气工程师有电路图。计算机科学中有相应的吗?
我是一个haskeller,所以我会代表pure函数式编程。我首先想到的是交换图 https://en.wikipedia.org/wiki/Commutative_diagram。这些可以用来描述功能和结构如何相互作用;然而,他们宁愿定义不变量/定律而不是行为。
在考虑 lambda 演算(或基于其的高级语言)的求值时需要了解的另一件事是表达式图,如图简化 https://en.wikipedia.org/wiki/Graph_reduction。它们可以让你看到你的表达结构,包括分享。当然,只有代码是纯粹的,即没有发生突变,这才有意义。
第三种图表有助于可视化数据如何通过函数传递,它是不同类型的数据流图,例如用于arrows https://www.haskell.org/arrows/(它也可以用于正常功能,因为(->)
是一个箭头),或 SICP 的“Henderson 图”(参见图 3.31 及其上面的段落3.5.2 无限流 https://sarabander.github.io/sicp/html/3_002e5.xhtml#Infinite-Streams)。这些显示了各个功能如何“插入在一起”。另一个角度是用于绘制流处理/管道和过滤器样式的图表,例如大理石图 http://rxmarbles.com/,它更关注时间概念(并且与箭头图相反,它确实代表个体值)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)