gpt4 book ai didi

c - 将任何程序转换为语义等价的程序

转载 作者:太空狗 更新时间:2023-10-29 17:18:34 29 4
gpt4 key购买 nike

我最近发现了这个定理 here , (在底部):

任何程序都可以转换为在 while 循环中包含一个 switch 语句的一个过程的语义等价程序。

文章接着说:

这个定理的推论是,任何程序都可以重写为由仅包含条件语句的单个递归函数组成的程序

我的问题是,这两个定理今天都适用吗?类似地转换程序是否会获得任何好处?我的意思是,这样的代码优化了吗? (虽然递归调用比较慢,我知道)

我读了,来自 here , switch-cases 在被编译器优化时几乎总是更快。这有什么区别吗。 ?

PS:我正试图从 here 获得一些关于编译器优化的想法。

我还添加了 c 标签,因为这是我见过的唯一经过优化的语言。

最佳答案

这是真的。图灵机本质上是一个永远重复的符号开关语句,因此它非常直接地基于图灵机计算一切。 switch 语句只是一堆条件语句,因此您可以清楚地将这样的程序编写为仅包含条件语句的循环。一旦你有了它,从递归进行循环就非常容易了,尽管如果你的语言没有真正的词法范围,你可能必须传递很多状态变量作为参数。

在实践中几乎没有理由这样做。此类程序通常比原始程序运行得更慢,并且可能占用更多空间。那么,为什么您可能会减慢程序速度,和/或使其加载图像变大?

唯一有意义的地方是您打算混淆代码。这种技术常被用作“控制流混淆”。

关于c - 将任何程序转换为语义等价的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323451/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com