Functional programming 图解程序

Functional programming 图解程序,functional-programming,diagram,Functional Programming,Diagram,我倾向于视觉思维。因此,如果我能想象通过一个程序的数据流,我就能更好地理解其中发生的事情,而不是阅读一篇关于正在发生的事情的文本故事(伪代码) 有没有一种方法可以直观地表示变量和对象通过函数流动和被函数改变的方式?最好是在小范围内工作的东西,在单个函数内部和整个程序的更大范围内 例如,用来教句子图表的英语课。电气工程师有电路图。在计算机科学中有没有类似的东西?我也倾向于视觉思考者。通常,当我试图完成一个项目,或者在代码中找不到错误时,我会将其带回框图 对于大型程序来说,这可能会变得很混乱,但您可

我倾向于视觉思维。因此,如果我能想象通过一个程序的数据流,我就能更好地理解其中发生的事情,而不是阅读一篇关于正在发生的事情的文本故事(伪代码)

有没有一种方法可以直观地表示变量和对象通过函数流动和被函数改变的方式?最好是在小范围内工作的东西,在单个函数内部和整个程序的更大范围内


例如,用来教句子图表的英语课。电气工程师有电路图。在计算机科学中有没有类似的东西?

我也倾向于视觉思考者。通常,当我试图完成一个项目,或者在代码中找不到错误时,我会将其带回框图


对于大型程序来说,这可能会变得很混乱,但您可以在图表中“漫游”一段数据,看看会发生什么。

我是haskeller,所以我要说的是纯函数式编程。我想到的第一件事是。这些可以用来描述功能和结构如何相互作用;然而,它们更倾向于定义不变量/规律,而不是行为

在考虑lambda演算(或基于lambda演算的更高级语言)的计算时,另一件有用的事情是表达式图,如中所用。它们可以让你看到你表达的结构,包括分享。当然,这只有在代码是纯的情况下才有意义,也就是说,没有突变发生


第三种图有助于可视化数据如何通过函数,它是不同类型的数据流图,如用于(也可用于正常函数,因为
(>)
是箭头)或SICP的数据流图。这些说明了各个功能是如何“连接在一起”的。关于这一点的另一个观点是用于绘制流处理/管道和过滤器样式的图表,例如,它更侧重于时间的概念(与箭头图表相反,它确实表示单个值)。

有一些自动化解决方案。这两个都显示了在计算的每一步计算机内存中的内容

Python具有完全在线的功能

有关Haskell,请参见。这个需要安装

提到了UML图,所以我将拿起手套。 已经存在了相当一段时间,是软件开发社区中公认的工具,易于使用和理解

我将提到我最常使用的两个图表:

  • 类图——在使用API和抽象的OO解决方案中,很容易在所有不同的类之间丢失。 类图是OO解决方案的可视化表示,根据我们的需要可以使其变得简洁或复杂。擅长Java,我可以推荐eclipse IDE的插件-它重量轻且易于使用:
  • 序列图-允许我们记录函数/方法之间的调用序列。考虑一个图形化的调用堆栈。非常强大的工具,用于跟踪大型项目中的复杂事务。专注于Java,值得一提的是,它已经支付了对SDs的支持。SDs的免费Eclipse插件是:
  • 这只是对UML图的一个非常简短的总结。如今,大多数UML应用程序都允许从现有代码中对图表进行反向工程,并从图表中生成代码

    这意味着您可以使用UML记录遗留代码,并在特性的设计阶段使用UML,在开始处理特性实现时可以从中生成代码

    其他链接:


    非常有趣的想法;您可能想看看UML,因为有一些图表显示了程序流。尽管很有趣,但对于除了最简单的应用程序之外的所有应用程序来说,深入到这种粒度可能是不切实际的,因为变量可以根据……代码中发生的所有其他事情选择许多不同的路径。从老式的流程图(控制流和数据流)到UML,没有一种方法,但有很多方法。在你最喜欢的书店里,你更可能在“软件工程”而不是“计算机科学”下找到文献。