Computer science C和图灵机
我知道图灵机器很好用,因为它和我们的计算机有“同样的能力”。Computer science C和图灵机,computer-science,turing-machines,formal-languages,Computer Science,Turing Machines,Formal Languages,我知道图灵机器很好用,因为它和我们的计算机有“同样的能力”。 另外,我的讲座说,每一个C代码都可以由一些图灵机执行。 我相信这是学习这门学科的关键,但我没有找到任何证据 将C代码翻译成某种图灵机的算法是什么?该图灵机执行C代码,并给出与C代码相同的输出,作为输入?许多年前,人们没有太多的时间来解释想法和想象事物将如何工作;在计算的历史上有很多“机器”,其中最著名的一个是,它解释并清楚地展示了如何解决简单的数学问题,这些问题对于当时可用的机器和设备来说根本不简单 图灵机展示了如何从计算的构建块开
另外,我的讲座说,每一个C代码都可以由一些图灵机执行。 我相信这是学习这门学科的关键,但我没有找到任何证据
将C代码翻译成某种图灵机的算法是什么?该图灵机执行C代码,并给出与C代码相同的输出,作为输入?许多年前,人们没有太多的时间来解释想法和想象事物将如何工作;在计算的历史上有很多“机器”,其中最著名的一个是,它解释并清楚地展示了如何解决简单的数学问题,这些问题对于当时可用的机器和设备来说根本不简单 图灵机展示了如何从计算的构建块开始,使用一个磁头、一个磁带、一个寄存器和一个查找表,得到一台工作机器,在当时,这件简单的事情是开创性的,事实上,如果你只是将一组有效状态、有效寄存器减少到0和1,您可以了解现代CPU背后的基本原理 尤其是图灵机器+布尔代数是一门好的计算机科学课程的转折点,因为它们教给你使CPU按其工作方式工作的基本逻辑 如果您是一名程序员,您可以将图灵机的本质抽象为
while
构造,内部带有If
,您可以轻松猜测while
的作用以及If
的条件是什么
在现代CPU上,你甚至可能没有
while
循环,只是一个无休止的循环,因为CPU根本不睡觉,它总是有事情要做,即使什么都不做也意味着为CPU做一些事情,闲置循环就是为了这个目的而发明的。许多年前,人们没有太多的时间来解释思想和想象事物将如何运作;在计算的历史上有很多“机器”,其中最著名的一个是,它解释并清楚地展示了如何解决简单的数学问题,这些问题对于当时可用的机器和设备来说根本不简单
图灵机展示了如何从计算的构建块开始,使用一个磁头、一个磁带、一个寄存器和一个查找表,得到一台工作机器,在当时,这件简单的事情是开创性的,事实上,如果你只是将一组有效状态、有效寄存器减少到0和1,您可以了解现代CPU背后的基本原理
尤其是图灵机器+布尔代数是一门好的计算机科学课程的转折点,因为它们教给你使CPU按其工作方式工作的基本逻辑
如果您是一名程序员,您可以将图灵机的本质抽象为while
构造,内部带有If
,您可以轻松猜测while
的作用以及If
的条件是什么
在现代CPU上,你甚至可能没有一个
while
循环,只是一个无休止的循环,因为CPU根本不睡觉,它总是有事情要做,即使什么都不做也意味着为CPU做些什么,空闲周期就是为此而发明的。一种转换(任意)的算法将C代码写入图灵表是相当困难的,我认为这不会很有指导意义。我宁愿建议考虑以下事项:
a=b+C创建的代码>。CPU只能做“简单的事情”,比如算术、访问内存和跳转到程序中的不同位置。最后一位用于实现循环和if-then-else构造:“如果某个条件为真,跳转到此位置并在那里执行代码,否则跳转到另一个位置”
|| | | | | | | | | | | | | |
是磁带的空白部分,
是磁头),要添加数字,我们的机器只需要删除内部的
,将其替换为
,并从磁带的开头或结尾移除一个
,以获得。| | | | | | |
。使用图灵指令表,您可以根据磁带的当前状态做出决定:如果我们处于状态A并看到A |,则执行此操作(写入符号、移动磁头、更改状态),否则,执行其他操作- “做事情”的CPU
- “存储东西”的内存
- “协调事物”的程序
- 能在磁带上读写的磁头
- 一个(无限的!甚至比个人电脑更好)磁带==存储东西
- 指令表==协调事物
我希望这会有所帮助。将(任意)C代码转换为图灵表的算法编写起来会非常困难,我认为这不会很有启发性。我宁愿建议考虑以下事项: