高级语言的最极简模型是什么?

图灵完备的最低要求

高级语言的前提是图灵完备,所有高级语言可以简化成这样(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
注意:
除非另有声明,本文可以自由使用、转载和二次创作,但需注明作者,并以相同许可协议分享,且不得用于商业目的。详情请参阅:CC BY-NC-SA 4.0许可协议。

- 标题:高级语言的最极简模型是什么?
- 作者:Pinpe
- 链接:https://blog.pinpe.top/3359/
成为第一个评论的人吧!

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
呼呼
上一篇
下一篇