编程 Bespoke:一门要求程序员说请的编程语言

2026-09-05 20:39:28

Bespoke:一门要求程序员"说请"的编程语言

编程世界有一个不太令人愉快的语气问题。我们杀死进程(kill processes)、中止事务(abort transactions)、抛出异常(throw exceptions)、跳出循环(break out of loops)、执行指令(execute instructions)。我们不问自取地获取锁(acquire locks without asking),毫无歉意地修改变量(mutate values without apologising),命令机器返回值(order the machine to return)。

一位开发者决定改变这一切,创造了一门名为 Bespoke 的编程语言——一门为"说请"的人设计的语言。

设计理念

Bespoke 的核心设计理念是:编程应该是一种礼貌的对话,而不是对机器的粗暴命令。语言的语法和语义都围绕着"礼貌"和"尊重"来设计。

在 Bespoke 中,你不会"命令"机器做什么,而是"请求"它做什么。你不会"杀死"进程,而是"请它退出"。你不会"抛出"异常,而是"礼貌地告知"出现了问题。

语法特色

Bespoke 的语法充满了英式礼貌用语:

  • please 关键字:所有操作都需要以 please 开头,表示请求
  • thank you:用于结束一个代码块,表示感谢
  • sorry:用于异常处理,表示歉意
  • may I:用于请求权限或资源
  • would you mind:用于条件判断

例如,一个简单的 Hello World 程序:

please print "Hello, World"
thank you

一个条件判断:

please if would you mind (x > 5)
    please print "x is greater than 5"
thank you

异常处理:

please try
    please do_something_risky()
sorry if SomethingWentWrong
    please print "Sorry, something went wrong"
thank you

并发模型

Bespoke 的并发模型也体现了礼貌原则。传统语言中,线程之间通过锁来"强制"互斥访问。而在 Bespoke 中,线程通过"请求"和"等待"来协调:

  • may I have the lock, please:请求获取锁
  • of course:表示同意授予锁
  • after you:表示礼让,让其他线程先执行

这种设计的目的是减少死锁——因为每个线程都在礼貌地等待对方,而不是粗暴地抢占资源。

类型系统

Bespoke 的类型系统也有独特之处。它引入了"礼貌类型"的概念:

  • polite int:一个有礼貌的整数,在被使用前会先打招呼
  • shy string:一个害羞的字符串,需要被邀请才会显示自己
  • grumpy boolean:一个脾气不好的布尔值,偶尔会拒绝回答

这些类型虽然看起来像是玩笑,但实际上体现了语言设计者对类型系统扩展性的思考。

实现细节

Bespoke 是一门编译型语言,编译器将 Bespoke 代码编译为 C 代码,然后通过 C 编译器生成本机二进制。这种设计使得 Bespoke 可以利用成熟的 C 编译器生态,同时保持语言的独立性。

语言的运行时包含一个"礼貌检查器",在运行时验证代码是否遵守了礼貌规范。如果代码忘记说"please",运行时会发出警告而不是直接报错——因为毕竟,谁都会偶尔忘记礼貌。

这是认真的吗

Bespoke 看起来像是一个玩笑项目,但它实际上提出了一些严肃的问题:

  1. 编程语言的语气重要吗? 我们使用的语言(包括编程语言)会影响我们的思维方式吗?
  2. API 设计应该更"礼貌"吗? 好的 API 设计是否应该像有礼貌的对话一样?
  3. 错误处理的隐喻:我们用"抛出异常""杀死进程"这样的暴力隐喻,是否会影响我们对错误的态度?

这些问题在编程语言设计社区中一直有讨论。Bespoke 用一种幽默的方式把这些问题摆在了台面上。

无论 Bespoke 是否会成为一门被广泛使用的语言,它都提醒我们:编程不仅仅是技术,也是一种表达方式。我们选择的关键词、语法和隐喻,都在塑造我们与机器、与彼此的关系。

也许,在编程中多说几个"please"和"thank you",并不会让代码运行得更快,但可能会让写代码的过程变得更愉快一点。

原文链接:https://blog.hofstede.it/bespoke-a-programming-language-for-people-who-say-please/

推荐文章

程序员茄子在线接单