MoonBit: 大模型时代下的编程语言探索
大家下午好,谢谢主持人的介绍,我现在是IDEA粤港澳大湾区数字经济研究院的讲席科学家,今天跟大家分享我的话题,就是AI时代下的编程语言。一般来讲我们说的语言都是像微软、谷歌这种比较大的公司做的事情,所以先简单介绍一下我过去的背景。我从本科毕业以后,大概过去十几年都在编程语言和开发者工具这一块工作。在我还在念书的时候,很荣幸参与到OCaml编程语言的核心维护中,10年以后,去年OCaml获得了ACM系统软件奖,今年编程语言的获奖者是Rust。我的第一份工作是在纽约,自己写了一门编程语言叫ReScript,很荣幸这门编程语言被一些公司商业化用到了,Facebook 的messenger,chats也用到的它,我回国之后,Facebook破例让我在国内继续维护这个ReScript编程语言,在Facebook的5年时间,我还参与到另外一门编程语言就是Flow, TypeScript Facebook内部使用的编程语言的开发中。基于我过去三门编程语言职业的开发,我有一个更大的梦想,我能不能从顶层视角,一开始就考虑这个编程语言和IDE怎么协同设计,2022年很高兴有这么一个机会,我们在深圳组织了一个软件团队从事MoonBit的开发。MoonBit是一个完整的开发者平台,它有一个中文名字叫做月兔,这是MoonBit团队过去20个月的工作。 编程语言怎么和AI联系在一起?一般做基础软件的是不追风口的,我们踏踏实实做事情。之前我看过一个访谈很有意思,就是微软前CEO比尔·盖茨访问OpenAI的CEO奥特曼,问他关于AIGC时代你最感兴趣的领域是什么?当时OpenAI的CEO的回答让我有点意外,他说他最感兴趣的是Coding编程,就是AI辅助代码生成。我觉得现在的AI能力达到了,但是需要工具的革新。GitHub在去年的一篇文章提到,预计到2030年大概有1500万新增的程序员,这是由AI导致的,它预测到2030年大概有4500万程序员,里面有30%是AI程序员,它的经济增量大概是1.5万亿美元,所以它是一个非常大的事情。不光是未来的预测,GitHub copilot可能是第一个AIGC大规模的应用,它在去年已经有数百万的用户。所以大模型时代不光是未来的事情,它现在已经到来了。现在绝大部分AI辅助工具都是一个在现有的VS Code的增强版,未来一定会产生一个AI Native的,AI原生的IDE,它可以原生和AI进行互操作,比如我写代码,跑运行的时候它会有一个crush,或者有个bug,AI原生的IDE就会自动帮你修复这样一个bug,它可以极大地提高我们的开发效率。刚才罗总用了这张PPT,我们很多程序员朋友会担心AI来了以后,我们会不会失业。刚才已经提到,现在AI的智能不是真正的人工智能,或者说不是真正的深度思考智能,很多时候还需要人和AI协同工作,AI生成代码需要人来审核,才能进代码仓库,所以大家不用担心因为AI就完全取代编程这个行业,未来一定是AI和人进行协同办公的场景。AI时代的编程语言会是什么样的呢?我之前读到一篇国外的博客,他的观点很有意思,大模型会不会杀死Python?如果写代码的朋友可能会知道,Python和JavaScript是最常用的编程语言。大模型时代还是这样的情况吗?我觉得这篇文章的观点很有意思,他讲出Python的优点在大模型下不再是一个优点。比如说Python有巨量代码库,但是过去200年人类创造的财富,可能比之前2000年还要多,同样的道理,在AIGC时代,可能未来10年产生的代码会比过去50年的代码还要多,这样Python积累的代码不再是个优势,反而会成为一个历史包袱。第二点就是Python的性能是很慢的,有了AIGC这样一个背景,生成一个高性能代码,它的瓶颈不会那么高。比如说以前我们如果要写C语言,需要写很繁琐的代码,未来这种高性能代码可以由AI生成,Python的短板反而会放大。另外一点更明显,Python的代码可靠性不高,因为Python是一门动态语言,没有很强的静态分析,我生成代码是很难保证它的准确性的,在AIGC时代,大量的代码需要人来进行审核,保证它的正确性。怎么一次保证代码的可靠性呢?我觉得Python的缺点是很明显的。AI时代下的编程语言应该具备哪些特点?刚才我提到了Python的缺点,我觉得AI时代的编程语言大概有这样几个比较显著的要求,第一是生成代码很容易验证它的正确性,甚至说生成代码是不是可以用一些形式化的验证,第二是快速静态分析,毕竟大模型智能有很多幻觉的,我们需要借助一些快速静态分析能力纠正这种幻觉,待会儿我会给大家演示这个Demo可以看到。第三是安全性,人写的代码要考虑安全性的问题,如果是AI生成的代码,它的安全性就更重要了。第四是高性能。 MoonBit做AI是一个很有道理的事情,我们这个项目立项是在2022年10月份,一个月以后ChatGPT横空出世,我们看到人类历史上第一次AI生成的代码这么靠谱,以前也有程序自动化方面的研究,但是都只是一个Demo,ChatGPT第一次把这个可靠的代码搬上来。传统的编程语言因为它已经有很多的存量用户,比如说Python或者Go语言做一些微小的改动,都需要巨大的讨论,它的动作会非常慢。MoonBit作为全新的编程语言,而且是一个编程平台,就没有任何的历史包袱,可以快速适应在AI时代下,如何更经济、高效生成MoonBit代码。给大家介绍一下什么是MoonBit。我们讲MoonBit不仅仅是一门编程语言,它其实是一个编程平台,我们有自己一套完整的工具链,有自己的IDE、调试器,包管理,测试覆盖的工具,我们也有原生的AI支持。后端方面我们也推出了多后端,不仅仅是一个后端,最开始的WebAssembly是由几个大的浏览器厂商,包括微软、谷歌,它们推出的人类历史上第一个跨平台、跨操作系统的指令集,MoonBit可以生成非常高效的WebAssembly代码,在云端和边缘端很好地运行。我们同是也支持JavaScript后端,这个大概在五一之前的。我们现在还在紧锣密鼓开发一个原生的后端,这样可以做一些系统编程。所以MoonBit可以支持多后端,是一个全场景覆盖的开发者平台。我们在过去一年多的时间,也慢慢地获得了海内外的认可,去年8月18日我们进行了一个Alpha版本的发布,当天就让我们比较意外,我们当天也登上了Hacker News的头版头条,今年3月份我们开源了标准库,很快走红了日本的一个开发者社区。6月份我们也登顶海外一个著名的开发者媒体New Stack,昨天我看到New Stack继续报道了我们的MoonBit开发,在国内我们也进入了清华、北大、中科院等等著名的高校,介绍MoonBit这样一个编程语言。 为什么AI时代下需要一门新的编程语言?第一是要安全性,MoonBit的优点是可以通过静态分析,加速开发过程,提高安全性,保证这个生产码的可靠性。第二点交互问题,传统的编程语言考虑的是人和编程语言的交互,未来考虑人和AI大模型以及编程语言三者交互。还有一点非常重要,就是提供一个精确的上下文摘要,因为我们不可能把所有东西送给大模型,需要一个IDE通过工具提供一个精确 Contaxt的上下文的能力。MoonBit设计的初衷,我们如何设计一个AI友好的编程语言?这是一个开放的问题,现在我们没有答案,什么样的编程语言是AI友好的编程语言?根据我过去的直觉,如果一个语言能被机器快速理解,它一定能更好地被大模型理解。比如说一段代码,它如果过于复杂,连静态分析都理解不了的话,大模型肯定也不能理解。所以我们设计的初衷就考虑MoonBit快速做一些静态分析的能力,做传统的IDE补全。MoonBit一开始也受,在我们之前做了一门编程语言,Rescript编程语言,因为他花了很久才做了一个IDE出来,MoonBit一开始就考虑,这门编程语言如何适配IDE,所以我们在MoonBit这个编程语言推出半年时间就推出自己的IDE功能,第三是静态分析能力,我们输出一个Wasm安全沙箱机制,保证MoonBit相比别的语言更安全。ai.moonbitlang.comMoonBit 平台demo演示(播放视频)现在给大家看一下MoonBitAI的演示功能,这是开放的,大家可以去尝试一下。相比传统的AI代码生成功能,我们是一站式服务,写一个prompt,可以实时编译、实时测试代码。生成代码以后,马上就可以测试结果。我们还可以修改他的prompt,我用命令式的方式写出来,它可以实时生成代码,实时编译,这是一倍速,不是三倍速。大家可能会怀疑,MoonBit是一门新的编程语言,我们知道AI最重要的是语料,有充足的语料才能生成代码。我们独一无二的地方在于可以把传统的IDE智能和大模型智能融合在一起,大模型智能可以快速生成很多代码,但是它的代码是不可靠的,我们可以通过快速的静态分析来校正大模型的幻觉,生成一次编译通过的代码。听上去原理好像很简单,但是工艺难度是很高的,因为这里面每一个Token出码的时间是毫秒量级,需要在毫秒的时间内快速对代码进行一个语义分析,纠正代码出码的错误,是一个非常难的工程上的问题。最后讲讲ReScript到MoonBit,如何从兴趣爱好到一门工业级别的编程语言,国内在这个领域基本上是一片空白,从ReScript到MoonBit,它的编程语言从一个玩具编程语言到工业级编程语言,是一个马拉松的过程。我做ReScript的时候大概花了6个周末做出原型,接下来花了6年时间完善这个产品,其实这个东西是可以做一辈子的事情,是一个非常漫长的过程。一门新的编程语言一定要解决一个新的痛点,而且要比现在的编程语言好一个数量级。如果你的编程语言和现在的编程语言是差不多的,我为什么不用一个已经被工业认可的语言呢?比如Java,Go语言呢,所以一定要解决用户的痛点。MoonBit的出发点之一是针对Wasm这样一个指令集,这是2017年的新的标准指令集,很多编程语言Wasm已经支持了但他效果不是很好,我们可以比现在的编程语言效果好一个数量级以上。第三是既要重视技术也要重视生态,在知乎上经常有人问问题,操作系统不难做,编程语言不难做,难的是生态。其实不是这样的,他愿意进入这个生态,是因为这个生态有闪光点,别人才愿意贡献。MoonBit这个编程语言开源了标准库之后,大部分的代码都是由第三方贡献的,为什么他们愿意贡献代码?就是我们一开始推出一个非常好的IDE,非常好的测试环境,大家愿意贡献代码。所以技术和生态是相辅相成的,有好的技术,同时运营好的生态。 MoonBit解决问题的出发点是在Wasm平台上实现物联网的开发,我们也基于我们在Rescript的经验,我们在一开始就在顶层设计,就把IDE、包管理一开始设计好,我们现在已经有比较完善的包管理,已经有不少人给我们贡献包。再一个就是把学术思想和工业实践结合在一起。最后一个是新的挑战,新的语言如何更好地与AI交互,这是我们的挑战也是我们的机会。我觉得MoonBit非常有机会成为一门世界级的编程语言,要做好任何事情,它都需要天时地利人和,我们这三要素是占据的。第一是在现在国家大的政策背景下,大家对根技术是非常支持的,第二是我们在深圳这样一片创新的土壤,深圳对我们的支持还是足够的,第三个是人和,这是最重要的一点,我们有非常优秀的团队,ReScript的开发早期更多是一个人的工作,MoonBit有一个非常年轻、精力充沛的团队,所以MoonBit是一个非常有希望的编程语言,谢谢大家关注。 来源:知乎 www.zhihu.com 作者:知乎用户(登录查看详情) 【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。 点击下载
![MoonBit: 大模型时代下的编程语言探索](https://pic1.zhimg.com/v2-1410fe1862966b2ba17b2ff9c7b9e5b8_b.jpg)
大家下午好,谢谢主持人的介绍,我现在是IDEA粤港澳大湾区数字经济研究院的讲席科学家,今天跟大家分享我的话题,就是AI时代下的编程语言。
![](https://pic1.zhimg.com/v2-1410fe1862966b2ba17b2ff9c7b9e5b8_b.jpg)
一般来讲我们说的语言都是像微软、谷歌这种比较大的公司做的事情,所以先简单介绍一下我过去的背景。我从本科毕业以后,大概过去十几年都在编程语言和开发者工具这一块工作。在我还在念书的时候,很荣幸参与到OCaml编程语言的核心维护中,10年以后,去年OCaml获得了ACM系统软件奖,今年编程语言的获奖者是Rust。我的第一份工作是在纽约,自己写了一门编程语言叫ReScript,很荣幸这门编程语言被一些公司商业化用到了,Facebook 的messenger,chats也用到的它,我回国之后,Facebook破例让我在国内继续维护这个ReScript编程语言,在Facebook的5年时间,我还参与到另外一门编程语言就是Flow, TypeScript Facebook内部使用的编程语言的开发中。基于我过去三门编程语言职业的开发,我有一个更大的梦想,我能不能从顶层视角,一开始就考虑这个编程语言和IDE怎么协同设计,2022年很高兴有这么一个机会,我们在深圳组织了一个软件团队从事MoonBit的开发。MoonBit是一个完整的开发者平台,它有一个中文名字叫做月兔,这是MoonBit团队过去20个月的工作。
编程语言怎么和AI联系在一起?一般做基础软件的是不追风口的,我们踏踏实实做事情。之前我看过一个访谈很有意思,就是微软前CEO比尔·盖茨访问OpenAI的CEO奥特曼,问他关于AIGC时代你最感兴趣的领域是什么?当时OpenAI的CEO的回答让我有点意外,他说他最感兴趣的是Coding编程,就是AI辅助代码生成。我觉得现在的AI能力达到了,但是需要工具的革新。
GitHub在去年的一篇文章提到,预计到2030年大概有1500万新增的程序员,这是由AI导致的,它预测到2030年大概有4500万程序员,里面有30%是AI程序员,它的经济增量大概是1.5万亿美元,所以它是一个非常大的事情。
不光是未来的预测,GitHub copilot可能是第一个AIGC大规模的应用,它在去年已经有数百万的用户。所以大模型时代不光是未来的事情,它现在已经到来了。现在绝大部分AI辅助工具都是一个在现有的VS Code的增强版,未来一定会产生一个AI Native的,AI原生的IDE,它可以原生和AI进行互操作,比如我写代码,跑运行的时候它会有一个crush,或者有个bug,AI原生的IDE就会自动帮你修复这样一个bug,它可以极大地提高我们的开发效率。
刚才罗总用了这张PPT,我们很多程序员朋友会担心AI来了以后,我们会不会失业。刚才已经提到,现在AI的智能不是真正的人工智能,或者说不是真正的深度思考智能,很多时候还需要人和AI协同工作,AI生成代码需要人来审核,才能进代码仓库,所以大家不用担心因为AI就完全取代编程这个行业,未来一定是AI和人进行协同办公的场景。
AI时代的编程语言会是什么样的呢?我之前读到一篇国外的博客,他的观点很有意思,大模型会不会杀死Python?如果写代码的朋友可能会知道,Python和JavaScript是最常用的编程语言。大模型时代还是这样的情况吗?我觉得这篇文章的观点很有意思,他讲出Python的优点在大模型下不再是一个优点。比如说Python有巨量代码库,但是过去200年人类创造的财富,可能比之前2000年还要多,同样的道理,在AIGC时代,可能未来10年产生的代码会比过去50年的代码还要多,这样Python积累的代码不再是个优势,反而会成为一个历史包袱。第二点就是Python的性能是很慢的,有了AIGC这样一个背景,生成一个高性能代码,它的瓶颈不会那么高。比如说以前我们如果要写C语言,需要写很繁琐的代码,未来这种高性能代码可以由AI生成,Python的短板反而会放大。另外一点更明显,Python的代码可靠性不高,因为Python是一门动态语言,没有很强的静态分析,我生成代码是很难保证它的准确性的,在AIGC时代,大量的代码需要人来进行审核,保证它的正确性。怎么一次保证代码的可靠性呢?我觉得Python的缺点是很明显的。
AI时代下的编程语言应该具备哪些特点?刚才我提到了Python的缺点,我觉得AI时代的编程语言大概有这样几个比较显著的要求,第一是生成代码很容易验证它的正确性,甚至说生成代码是不是可以用一些形式化的验证,第二是快速静态分析,毕竟大模型智能有很多幻觉的,我们需要借助一些快速静态分析能力纠正这种幻觉,待会儿我会给大家演示这个Demo可以看到。第三是安全性,人写的代码要考虑安全性的问题,如果是AI生成的代码,它的安全性就更重要了。第四是高性能。
MoonBit做AI是一个很有道理的事情,我们这个项目立项是在2022年10月份,一个月以后ChatGPT横空出世,我们看到人类历史上第一次AI生成的代码这么靠谱,以前也有程序自动化方面的研究,但是都只是一个Demo,ChatGPT第一次把这个可靠的代码搬上来。传统的编程语言因为它已经有很多的存量用户,比如说Python或者Go语言做一些微小的改动,都需要巨大的讨论,它的动作会非常慢。MoonBit作为全新的编程语言,而且是一个编程平台,就没有任何的历史包袱,可以快速适应在AI时代下,如何更经济、高效生成MoonBit代码。
给大家介绍一下什么是MoonBit。我们讲MoonBit不仅仅是一门编程语言,它其实是一个编程平台,我们有自己一套完整的工具链,有自己的IDE、调试器,包管理,测试覆盖的工具,我们也有原生的AI支持。后端方面我们也推出了多后端,不仅仅是一个后端,最开始的WebAssembly是由几个大的浏览器厂商,包括微软、谷歌,它们推出的人类历史上第一个跨平台、跨操作系统的指令集,MoonBit可以生成非常高效的WebAssembly代码,在云端和边缘端很好地运行。我们同是也支持JavaScript后端,这个大概在五一之前的。我们现在还在紧锣密鼓开发一个原生的后端,这样可以做一些系统编程。所以MoonBit可以支持多后端,是一个全场景覆盖的开发者平台。
我们在过去一年多的时间,也慢慢地获得了海内外的认可,去年8月18日我们进行了一个Alpha版本的发布,当天就让我们比较意外,我们当天也登上了Hacker News的头版头条,今年3月份我们开源了标准库,很快走红了日本的一个开发者社区。6月份我们也登顶海外一个著名的开发者媒体New Stack,昨天我看到New Stack继续报道了我们的MoonBit开发,在国内我们也进入了清华、北大、中科院等等著名的高校,介绍MoonBit这样一个编程语言。
为什么AI时代下需要一门新的编程语言?第一是要安全性,MoonBit的优点是可以通过静态分析,加速开发过程,提高安全性,保证这个生产码的可靠性。第二点交互问题,传统的编程语言考虑的是人和编程语言的交互,未来考虑人和AI大模型以及编程语言三者交互。还有一点非常重要,就是提供一个精确的上下文摘要,因为我们不可能把所有东西送给大模型,需要一个IDE通过工具提供一个精确 Contaxt的上下文的能力。
MoonBit设计的初衷,我们如何设计一个AI友好的编程语言?这是一个开放的问题,现在我们没有答案,什么样的编程语言是AI友好的编程语言?根据我过去的直觉,如果一个语言能被机器快速理解,它一定能更好地被大模型理解。比如说一段代码,它如果过于复杂,连静态分析都理解不了的话,大模型肯定也不能理解。所以我们设计的初衷就考虑MoonBit快速做一些静态分析的能力,做传统的IDE补全。MoonBit一开始也受,在我们之前做了一门编程语言,Rescript编程语言,因为他花了很久才做了一个IDE出来,MoonBit一开始就考虑,这门编程语言如何适配IDE,所以我们在MoonBit这个编程语言推出半年时间就推出自己的IDE功能,第三是静态分析能力,我们输出一个Wasm安全沙箱机制,保证MoonBit相比别的语言更安全。
MoonBit 平台demo演示(播放视频)
现在给大家看一下MoonBitAI的演示功能,这是开放的,大家可以去尝试一下。相比传统的AI代码生成功能,我们是一站式服务,写一个prompt,可以实时编译、实时测试代码。生成代码以后,马上就可以测试结果。我们还可以修改他的prompt,我用命令式的方式写出来,它可以实时生成代码,实时编译,这是一倍速,不是三倍速。
大家可能会怀疑,MoonBit是一门新的编程语言,我们知道AI最重要的是语料,有充足的语料才能生成代码。我们独一无二的地方在于可以把传统的IDE智能和大模型智能融合在一起,大模型智能可以快速生成很多代码,但是它的代码是不可靠的,我们可以通过快速的静态分析来校正大模型的幻觉,生成一次编译通过的代码。听上去原理好像很简单,但是工艺难度是很高的,因为这里面每一个Token出码的时间是毫秒量级,需要在毫秒的时间内快速对代码进行一个语义分析,纠正代码出码的错误,是一个非常难的工程上的问题。
最后讲讲ReScript到MoonBit,如何从兴趣爱好到一门工业级别的编程语言,国内在这个领域基本上是一片空白,从ReScript到MoonBit,它的编程语言从一个玩具编程语言到工业级编程语言,是一个马拉松的过程。我做ReScript的时候大概花了6个周末做出原型,接下来花了6年时间完善这个产品,其实这个东西是可以做一辈子的事情,是一个非常漫长的过程。一门新的编程语言一定要解决一个新的痛点,而且要比现在的编程语言好一个数量级。如果你的编程语言和现在的编程语言是差不多的,我为什么不用一个已经被工业认可的语言呢?比如Java,Go语言呢,所以一定要解决用户的痛点。MoonBit的出发点之一是针对Wasm这样一个指令集,这是2017年的新的标准指令集,很多编程语言Wasm已经支持了但他效果不是很好,我们可以比现在的编程语言效果好一个数量级以上。第三是既要重视技术也要重视生态,在知乎上经常有人问问题,操作系统不难做,编程语言不难做,难的是生态。其实不是这样的,他愿意进入这个生态,是因为这个生态有闪光点,别人才愿意贡献。MoonBit这个编程语言开源了标准库之后,大部分的代码都是由第三方贡献的,为什么他们愿意贡献代码?就是我们一开始推出一个非常好的IDE,非常好的测试环境,大家愿意贡献代码。所以技术和生态是相辅相成的,有好的技术,同时运营好的生态。
MoonBit解决问题的出发点是在Wasm平台上实现物联网的开发,我们也基于我们在Rescript的经验,我们在一开始就在顶层设计,就把IDE、包管理一开始设计好,我们现在已经有比较完善的包管理,已经有不少人给我们贡献包。再一个就是把学术思想和工业实践结合在一起。最后一个是新的挑战,新的语言如何更好地与AI交互,这是我们的挑战也是我们的机会。
我觉得MoonBit非常有机会成为一门世界级的编程语言,要做好任何事情,它都需要天时地利人和,我们这三要素是占据的。第一是在现在国家大的政策背景下,大家对根技术是非常支持的,第二是我们在深圳这样一片创新的土壤,深圳对我们的支持还是足够的,第三个是人和,这是最重要的一点,我们有非常优秀的团队,ReScript的开发早期更多是一个人的工作,MoonBit有一个非常年轻、精力充沛的团队,所以MoonBit是一个非常有希望的编程语言,谢谢大家关注。
来源:知乎 www.zhihu.com
作者:知乎用户(登录查看详情)
【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。
点击下载
![like](https://news.axiox.net/assets/img/reactions/like.png)
![dislike](https://news.axiox.net/assets/img/reactions/dislike.png)
![love](https://news.axiox.net/assets/img/reactions/love.png)
![funny](https://news.axiox.net/assets/img/reactions/funny.png)
![angry](https://news.axiox.net/assets/img/reactions/angry.png)
![sad](https://news.axiox.net/assets/img/reactions/sad.png)
![wow](https://news.axiox.net/assets/img/reactions/wow.png)