这段demo展现了通过与AI聊天,一步步确立一门新语言的细节,最后用新语言来编程的完整过程。看完后感觉很快很多很多工作都得消失...虽然设计一门新语言也不是多大的事,但起码真干起来还是要好几天工作量的...现在这些都可以在AI的幻想世界里让AI脑补完成了,就像是和另一个人聊天吹水一样转瞬间就好了...现在还只是文字,下一步图片,再下一步视频,再下一步VR。在不远的未来,人类就真的可以生活在黑客帝国的世界里,天天体验白日梦...
以下内容转自https://twitter.com/Tisoga/status/1599347662888882177,略加整理,我的吐槽在图片的注释中...
=============
1/ (这个是最终结果,有点剧透,挪到最后)
2/ 首先我告诉了 ChatGPT 正在实现一门新的编程语言,能不能给一些 idea 或者建议,ChatGPT 给出了 GPTLang 的一些基本特性。

AI给出的建议比较四平八稳,这个时候还看不出啥
3/ 定义编译器命令为 `gptlc`,并且可以使用 `gptlc file.gpt` 来进行编译。
然后让 ChatGPT 给出一些常用的编译选项:

这里的编译器选项也是很常见的设置,符合一般习惯,还行吧
4/ 给出两个基础的语法定义:
注释,采用 # 作为注释符
变量定义,关键词是 `VAR`
然后让 ChatGPT 根据语法规则给出一些例子。

这里AI接受了这些基础设定,目前为止还ok...
5/ 然后定义了最基本的一个函数 `PT`,用来打印内容到屏幕上。
语法:
PT(<value>) -> None
给出了一些例子之后,ChatGPT 很快就学会了这个函数的使用方法。

定义了第一个函数,用来打印,算是最基本的函数吧,不算太离谱...
6/ 下一步是定义 Function 的语法
FUNC <function_name>(<arguments>) -> <return_values>: <function_body>
可以看到我的语法定义非常随意,并没有按照标准的 BNF 来定义,不过很显然 ChatGPT 很容易从示例中来学习具体的使用方法。

这里开始定义函数了,还...还行,AI也应该能照猫画虎弄出来...
7/ 接下来是定义分支条件
并基于这个分支条件的语法写了一段简单的代码来执行,ChatGPT 已经能够输出代码的结果了。

有分支了...程序的一大要素,AI也正确理解了...
8/ OK,有了函数和分支条件之后,ChatGPT 能否组合这两个语法来实现一个函数?
获取两个数中更大的那一个,并返回。
很显然,ChatGPT 很好地用 GPTLang 的语法实现了,并且还给出了指示。

这个max函数依然是一个非常简单的测试,我勉强能接受...
9/ 下一步,实现循环,这里我实现了一个类似于 Python 中 for loop 式的循环,不过在语法上有一些区别。
LOOP <iterable_object> -> <element>: <statements>
让 ChatGPT 基于这个语法实现一个打印 string 中字符到屏幕上的 function。

终于来到了循环,好了,程序的关键要素都齐备了...
10/ 为了实现排序功能,我们需要一个数组的数据结构
VAR nums:arr [5, 8, 6, 3]
让 ChatGPT 写了一个打印数组并返回数组长度的函数。

现在在数据类型上稍微做点文章,加入数组的概念了...
11/ 实现一个把数组中所有元素相加的函数,并返回结果
ChatGPT 也很快给出实现并给出每一步的解释。

结合之前的规则,写了一个求和函数...虽然不复杂...但总觉得有点不能接受...
12/ 到此为止,已经定义了一些 GPTLang 的基本语法规则了,问问看 ChatGPT 还有没有什么需要添加的。
ChatGPT 给出了一些可以继续实现的功能,比如添加 user-defined data types。

这里作者懒得动脑子了,让AI自己看着办...AI给出了一堆建议...
13/ OK,我并不想手动来编写 user-defined data types 的语法,那就直接让 ChatGPT 来帮我写吧。
ChatGPT 给到的语法规则和之前定义的风格也非常像,还给出了一些使用的例子。

好吧,作者连手都懒得自己动了,让AI自己继续完善...
14/ 之前都是让 ChatGPT 来帮我写,试一下直接编写一段 GPTLang 的代码,ChatGPT 能不能理解。
结果是不仅能理解,还能给出每一步的执行步骤。

作者决定自己写段代码测试下AI,AI也通过测试...但这个代码还是比较简单的...勉强能接受...
15/ 有了上面的基础之后,让 ChatGPT 用 GPTLang 写了一个 selection sort 的算法实现。

好了,开始选择排序了...这里我不能接受!选择排序有一定的复杂度了,还有这个array.index是个什么鬼,前面又没定义这个细节,AI你为啥就自己脑补了...
16/ 最后一步,生成 GPTLang 的语法文档,这份文档甚至比我描述的还要清晰,给出了所有语法规则和示例代码。

这文档看的我心惊胆战...比我这种懒得写文档的人强一万倍...

这文档只能说,100分...
1/ 在 ChatGPT 中实现了一门新的编程语言:GPTLang,并用这个语言写了一个排序算法。
定义了一个新的命令 `gptlc`,用来编译 GPTLang 的代码。
下图是最终的效果:让 ChatGPT 用 GPTLang 写了一个选择排序,并在命令行编译运行。


我已经不想说什么了...