假设X是输入语言,Z是输出语言,f是编译器,用Y语言编写。
f = X -> Z
因为f只是一个程序,我认为Y可以是任何语言,对吗?所以我们可以有编译器f1,f2,每个编译器都是用Y1和Y2编写的。
f1 = f Y1
f2 = f Y2
g = Z -> M
h = g . f # We get a compiler X -> M
以cpython编译器为例,X是Python,Z是Python代码,Y是C。
cpython = Python -> PythonVMCode C
interpreter = PythonVMCode -> Nothi
所以我做了一个关于伪代码/算法的测试。
有一个正确/错误的陈述:An Algorithm must always have an output.
我把F作为我的答案,但是老师记错了。
我想到了Python
x = 100/4
上面的代码只是定义了x。不输出任何内容。(它不能被认为是一种算法吗?)
我想的另一个例子是:
for x in x: y = 9999999999^9999999999/9999999
像^这样的东西可能会给计算机加热,并为用户产生热量,或者类似的东西。不会输出任何内容。
我正在写一种基于堆栈操作的笑话语言。我试图找到使它完成图灵所需的最小数量的指令,但不知道基于一个堆栈的语言是否可以是图灵完整的。这些指令够了吗?
IF (top of stack is non-zero)
WHILE (top of stack is non-zero)
PUSH [n-bit integer (where n is a natural number)]
POP
SWAP (top two values)
DUPLICATE (top value)
PLUS (adds top two values, pops them, and pushes result)
我看了几个问题和