我现在正在学习计算理论课程。我可以很好地理解这些概念。我能够解决问题。而且,当我向我的导师询问现实世界的应用程序时,他告诉我这些概念在编译器设计中肯定是有用且必不可少的。但是,至少要进行有意义的研究,我需要一些关于如何在我的编码中使用这些概念的解释。
例如,如果我想设计自己的 grep。我将在 C 中使用字符串函数。我不知道如何在编码中使用正则表达式。
同样的情况也适用于图灵机。
如果我想添加两个数字,为什么我必须使用那些一元概念。硬件是否实现了这些概念?
我现在正在学习计算理论课程。我可以很好地理解这些概念。我能够解决问题。而且,当我向我的导师询问现实世界的应用程序时,他告诉我这些概念在编译器设计中肯定是有用且必不可少的。但是,至少要进行有意义的研究,我需要一些关于如何在我的编码中使用这些概念的解释。
例如,如果我想设计自己的 grep。我将在 C 中使用字符串函数。我不知道如何在编码中使用正则表达式。
同样的情况也适用于图灵机。
如果我想添加两个数字,为什么我必须使用那些一元概念。硬件是否实现了这些概念?
本文对 DFA 和 NFA 进行了实际讨论,因为它们适用于有效的正则表达式匹配。它讨论了哪些真正的库使用了有效的 Thompson NFA 方法。
图灵机主要用作计算机的定义。如果有人告诉我一种新语言,我可以通过尝试在其中构建图灵机来检查它是否与 C 或 Java 一样强大(不要与易用性混淆)。
NFA 和 DFA:这两个在编译器中用于从源文件中的字符创建标记并将它们返回给语法解析器。您可以从 UNIXlex
和yacc
手册中了解更多信息。
图灵机:我认为这与它最初的学术目的没有什么不同的用途。