是否可以将代码转换为逻辑图?
编辑:
我在想的是数学是绝对的。我们可以肯定地判断它是对还是错。但是对于代码,除了逻辑之外还有其他东西。我想要做的是删除那个“东西”,只保留那里的逻辑。
不确定这是否正是您的意思,但是像 clang 解析代码这样的静态分析器会确定代码可能采用的所有可能分支,并检查错误。例如,给定代码..
1. if(somefunction()){
2. this_will_break();
3. } else {
4. if(anotherfunction()){
5. printf("%i", str(something));
6. }
7. print("this is fine");
8. }
您将获得以下输出:
Line 1. Taking true branch.
Line 1. Error: Function this_will_break is not defined
Line 4. Taking true branch.
Line 5. Warning: Function passed incompatible type
您可能会绘制这些路径,但我不明白您为什么想要(它不会真正显示任何内容)
另一个可能类似的想法是Gprof2Dot,它获取分析数据,并绘制一个分层 Graphviz 图表,显示每个函数需要多长时间运行,哪个函数调用它等等。
最后一件事浮现在脑海中,它是基于节点的应用程序,例如Shake或Quartz Composer—— “可视化编程”的方式,将代码表示Add(Blur(MyImage), Blur(AlphaChannel))
为:
[MyImage]--->[Blur]----\/
[Add]
/\
[AlphaChannel]----------
这些不是逻辑图,但它们是可视化表示代码的方式,这可能会给你一些想法……也许……除非我完全误解了……
这是可能的。流程图是逻辑图,可以很容易地由计算机生成。每个代码结构都有相应的流程图结构。
快速谷歌提出:Code Visual to Flowchart
至少反过来是可能的。在对西门子的 PLC 进行编程时,一种更常见的编程形式是“梯形逻辑”,您可以在其中进行图形化编程。
或者像逆向工程UML,带有类和序列图?
不像代码本身那么有价值,IMO。一旦达到有意义的复杂程度,就不可能吸收整个图表或图形。可以有效绘制的问题不值得努力。
没有任何类型的图形表示的调试器或单元测试。
图片和设计的价值在于达到您对问题的理解程度足以编写代码的程度。但是一旦你达到了这一点,我会认为使它们与工程图纸等效的边际效用是不值得的。
这只是与您想要的相反,但csgraph.com允许您绘制图形并以 Adj List 或 Adj Matrix 格式生成它们的代码形式。