图灵完备的最低要求
高级语言的前提是图灵完备,所有高级语言可以简化成这样(Python语法):
条件判断:if:…elif:…else:…
循环:while …:
变量和计算、判断系统(无论强类型还是弱类型):x = …
输入与输出:input(…)和print(…)
退出程序:exit(0)
写一个循环递归程序:
a = 0 while a == 5: a += 1 print(a) exit(0)
去掉while,改用goto
首先,两种方式都可以实现死循环。
while True: …
def func(): … func() func()
于是while就不是最简的,goto也能实现一样的功能:
a = 0 $ A # 新建一个标签 a += 1 print(a) if a != 5: goto A # 跳转到标签 exit(0)
为什么goto不内置条件判断?
条件判断也是一种跳转,因此也不是最简的,可以内置在goto里:
a = 0 $ A a += 1 print(a) a != 5 goto A #在a!=5的情况下,跳转到标签,否则就跳过 exit(0)
让我们脱离Python语法
a: 0 :: A a += 1 puts a a != 5 goto A exit
实战
secret: 42 guess: 0 attempts: 0
:: start puts “我想了一个数字,试试看能否猜中!” guess: key —获取用户输入并存储在 guess 变量中 attempts += 1
:: check_guess guess < secret goto too_low guess > secret goto too_high puts “恭喜你,猜对了!” puts “你总共尝试了”+attempts+“次。” goto end
:: too_low puts “太小了,再试一次吧!” goto start
:: too_high puts “太大了,再试一次吧!” goto start
:: end exit