是否可以将代码转换为逻辑图?
我在想的是数学是绝对的。我们可以肯定地判断它是对还是错。但是对于代码来说,还有一些不同于逻辑的东西。我想要做的就是删除“某些东西”以仅保留逻辑。
答案 0 :(得分:2)
这是可能的。流程图是逻辑图,可以很容易地由计算机生成。每个代码结构都有一个对应的flowchart structure。
快速谷歌提出:Code Visual to Flowchart
<小时/> 就反向而言,流程图太宽泛而无法转换为代码。 但是有图形编程语言。例如,NI's labView fpga是所有图形编程,然后可以转换为VHDL。
答案 1 :(得分:2)
不确定这是什么意思,但静态分析器如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]----------
这些不是逻辑图,但它们是可视化表示代码的方式,可能会给你一些想法......也许......除非我完全误解..
答案 2 :(得分:0)
至少可以反过来。在编写Siemen的PLC时,一种比较常见的编程形式是“梯形逻辑”,您可以用图形编程。
答案 3 :(得分:0)
或者像逆向工程UML,具有类和序列图?
没有代码本身那么有价值,IMO。一旦达到有意义的复杂程度,就无法获取整个图表或图表。而且可以有效绘制的问题并不值得付出努力。
没有任何类型的图形表示的调试器或单元测试。
图片和设计的价值是达到你能够很好地理解问题以进行编码的程度。但是,一旦你达到这一点,我认为使它们等同于工程图纸的边际效用是不值得的。
答案 4 :(得分:0)
这只是与您想要的相反,但 csgraph.com 允许您以 Adj List 或 Adj Matrix 格式绘制图形并生成它们的代码形式。