377 字
2 分钟
高级语言的最极简模型是什么?
2024-09-23
无标签

图灵完备的最低要求#

高级语言的前提是图灵完备,所有高级语言可以简化成这样(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

高级语言的最极简模型是什么?
https://pinpe.top/posts/old/高级语言的最极简模型是什么/
作者
Pinpe
发布于
2024-09-23
许可协议
CC BY-NC-SA 4.0