来自公众号:InfoQ
整理 | Tina
编程语言圈子又出“新花样”了!
如果开发者之间有一件事是共通的,那就是大家总爱创造新语言。这些语言往往被描述为“像 C 语言但更简单”、“像 C 语言但更现代”或“像 C 语言但专为某些特定群体设计”。而这一次,我们迎来了一种专为 AI 设计的编程语言,可以称之为“适用于 AI 的 C 语言”。
这次的新语言名为 Mirror,有一些独到之处。它的基本语法由两部分组成:定义的函数名称,以及输入输出示例。
它还有点像测试驱动开发(TDD),但不同的是你无需编写测试,而是直接提供黑盒版本。换句话说,这是一种 AI 驱动的函数式编程体验,同时也意味着你可以省去手动写代码的麻烦。
我们知道在 Excel 中,你可以通过提供一两个示例来演示如何格式化一列,之后 Excel 会学习这些模式,并将其应用到其他部分。
这种通过示例来引导的方式,是否也能用于编程呢?
卡内基梅隆大学从事教学工作的 Austin Z. Henley 就提出了这样的设想。想象一下,你不再需要一行一行地写代码,而是直接通过示例演示给计算机,让它“学会”你的意图。于是他和某创业公司 CTO Andrés Gottlieb 等人一起开发了一个名为 Mirror 的语言。
Austin 将此称为“编程示例”技术,用户提供想要的结果示例,系统生成可以执行该结果的代码。
Mirror 设计得非常简单直观,用户首先需要定义函数的签名,包括函数名称、输入参数的类型以及输出参数的类型。接下来,用户需要提供一个或多个函数调用的示例,包括适当的输入参数和对应的输出结果。
让我们从一个非常简单的示例开始,看看这个语言的设计逻辑:
首先定义一个名为 is_even 的函数,然后给出几个例子,比如 0 是偶数,返回 true,而 1 是奇数,则返回 false...... 这些例子为大语言模型(LLM)提供了训练依据,用于生成符合规则的实际代码。
最后用 is_even(12345) 来调用 is_even 函数,并传入参数 12345,那么它会判断 12345 是否为偶数。
在后端,Mirror 使用传统的递归下降解析器会处理这些示例,然后将它们发送到给大模型,大模型随后生成符合这些示例约束的 JavaScript 代码。生成的代码会显示给用户,如果需要,用户可以提供更多示例以进一步优化输出结果。
基于 LLM 的示例编程编程语言
有意思的是 Mirror 在技术社区 Lobsters 上曝光后,居然还有一些开发者给予了极高评价:
“我一直以为会有人发明一种集成了 LLM 的编译器,但从未真正思考过它可能会是什么样子。这是一个非常有趣的概念,就像一种伪代码解释器。我觉得这种方式可能有一天会成为主流的编程方法。”
“很棒!我之前用 neuro-lingo 做过类似的事情,只不过开发者需要为函数提供类型签名和注释,这主要是作为一种思想实验。我一直认为下一步的迭代会类似于 Mirror,开发者的任务是编写测试,而不是实现具体功能。我觉得在未来,这种方法很有可能变得合理:一种只使用英语作为编程语言(通过 AI)的语言,同时用传统编程语言来编写测试以确保正确性。”
“在看到当前 LLM 的能力后,我就想到这会使形式化规范和验证的概念变得更加吸引人。”
自媒体博主 The Primagen 则花了 2 个小时探索 Mirror。
他一开始也被 Mirror 的愿景吸引住了,认为这简直是语言轮子界里的“适用于 AI 的 C 语言(be C but for AI)”。
还具备由人工智能驱动的函数式体验,虽然避免了编写代码的繁琐,但却需要编写测试用例,这就好像是一种“后期 TDD”。所以他认为,Mirror 的出现标志着人工智能驱动的测试驱动开发进入了“后期阶段”。
并且他调侃说,“只要风险投资人看到 Mirror 的介绍,那么很可能会轻松获得一轮千万美元级别的融资”,因为“人工智能”这个词对风投来说似乎具有莫大的吸引力。他还拿 Friend 举例,这是一个人工智能社交网络产品,仅跟 AI 沾个边就筹集了约 250 万美元(随后,他们花了 180 万用来购买 Friend.com 域名)。
接着他希望用 Mirror 来实现一个简单的功能。不幸的是即使提供了大量的示例,Mirror 生成的代码仍然是错误的。
但 GPT 只用了一句简单的英语描述和代码结构,就轻轻松松地完成了任务。
折腾 2 个小时候后,The Primagen 评价说,Mirror 目前适合用来学习,比如可以帮助你学习如何编写解析器。
现实中,AGI 离我们还比较遥远,所以不要只想着回避学习编程。就算 Sam Altman 宣称距离 AGI 只有“几千天”,那起码也还有 10 年时间。所以为什么有些人非要选择绕过学习基础编程的过程,而转而依赖工具或 AI?
他最后吐槽道:“要知道,掌握技术并学习解决问题的能力永远是有价值的。而如果未来的某一天,AI 真的变得无所不能,那么具备技术技能的人依然会保持竞争力。无论未来 AI 多强大,技术能力都将是你提升自我、解决问题和实现价值的核心力量。这不是一个非此即彼的选择,你可以同时学习技术、享受创造的乐趣,并为自己的职业发展打下坚实的基础。”
参考链接:
https://austinhenley.com/blog/mirrorlang.html
https://lobste.rs/s/ui3ld4/mirror_llm_powered_programming_by
https://medium.com/@prateek.vyas/mirror-the-ai-powered-programming-language-using-examples-94fab8c88585
https://www.youtube.com/watch?v=KuLUd1UIvVA