MeetUp 精彩回顾(上):探索国产软件新发展
首场线下 MeetUp 精彩回顾来啦!
3月23日,MoonBit 的首场线下 MeetUp 如期而至,带来了一场关于国产软件新发展的探讨。这场活动汇集了五位行业内的知名专家,他们围绕国产基础软件的新发展,分享了四个充满洞见的主题。从技术创新到市场趋势到个人经历的分享,每一位嘉宾都带来了自己的故事和行业里的最新动态。
文末还有详细的回答环节。来吧,让我们一起往下看,看看这场 MeetUp 带给我们什么新鲜事儿!
张宏波首先介绍了本人的编程语言开发经历,从本科开始至今,他关注并投入函数式编程语言开发已有十几年了,曾担任 OCaml 的核心开发人员,主导创造 ReScript(前 BuckleScript )。
ReScript现在已经可以完全由社区来打理,进展活跃,这是一件值得终身自豪的事情。
我们在疫情前在维也纳召开过两次几百人的全球开发者大会,在美国也召开过一次,然后在南美,甚至还有 ReScript 的一些商业培训课程,我们有自己的书籍。
之后,收到 IDEA 研究院院长沈向洋的邀请,张宏波回到了深圳,成立了基础软件研究中心,并组建了 MoonBit 团队——一个国内独一无二,拥有丰富编程语言开发经验的团队。
我们想正儿八经做一些真正有人用的系统,而不是单纯地追求学术发表,这是我们最大的不一样。我们团队也非常年轻,是很聪明的一个团队。讲这些是给大家信心,MoonBit 是一个非常靠谱的事情。
在立项开始,MoonBit 便瞄准了 WebAssembly 这一新的标准指令集。张宏波解释道:
“作为一门编程语言要去让别人用,其实是很难的事情,我为什么不用一些已经非常成熟的 Java、 go 语言?WebAssembly,它是微软、谷歌在 17 年成立了一个新的跨平台、跨操作性的一个标准指令集。MoonBit 一开始就考虑如何适配 WebAssembly,可能会对一些已有的编程语言有一个降维打击的优势,对 WebAssembly 这个平台也感兴趣的话, MoonBit 希望成为你的 go to language。”
随着团队的成长,MoonBit 也不止步于一门编程语言,而是一个配备了自动调试功能和具有客户端 IDE 的编译平台。除了 WebAssembly 后端外,今年的发展计划还包括支持 JavaScript、JVM 和 Native 等多个后端。
在今年年初,我们发布了 mooncakes.io 包管理系统,并在几周前开源了 MoonBit 标准库,收到了高质量的贡献。接下来,我们计划逐步开放构建系统和编译器,目标是明年发布兼容性保证的1.0版本。
在全民 AI 的热潮下,张宏波坦言,对于一向不追逐热点的编程语言工程师而言,这是一次几十年难遇的机会。然而,要在 AI 代码生成这一领域取得真正的突破,关键在于拥有一个深刻理解并能精确掌控代码及工具链的团队。MoonBit 在核心技术层面上的创新,包括基于开源 Rust n2 高度定制的构建系统、团队百分之百自主研发的编译器和静态分析工具。在 AI 领域,MoonBit 采用了开源的 llama.cpp,并正在探索使用 MoonBit 语言开发全 AI 交互的 IDE 功能。
然而,AI 代码生成技术在给人们带来震撼的同时,也暴露出了一些亟待解决的挑战,如安全性风险、幻觉问题以及需要创建更自然的 AI 与人的交互方式。为了解决安全性问题,MoonBit 通过采用安全的类型系统、Wasm 安全沙箱机制、死代码删除技术实现了快速静态分析能力,为代码提供了三重安全保障。
在幻觉问题上,MoonBit 采用了对形式化验证友好的函数式循环,并计划引入内置测试功能。通过对代码进行重采样和实时静态分析,实现对大模型幻觉的矫正。
在原生的 AI 人机交互方面,张宏波透露团队正在尝试使用 MoonBit 来写一个 AI 原生的IDE。
关于未来,张宏波表示:我们发自内心地希望 MoonBit 在未来可以成为世界级的编程语言以及配套的工具链。
所以我现在做的 MiniBlink 相关的工作,我并不是想做一个完整的浏览器内核,而是想把它作为一个可以集成在各个软件之中,让它方便集成的一个内核,但是这样的话我就不会追求像 Chromium 那样完整的实现它所有的功能,因为这样的话一个是工作量会非常庞大,第二个是如果把这些做完了之后,它的那个就和 Chrome 可能差不多,它的大小可能也差不多,那就没什么意义。
在减少内核体积的同时,还需要保证浏览器的性能不受影响。对于网页的渲染速度、脚本的执行效率以及网络请求的处理,都需要细致优化。特别是重写的V8引擎,需要在减小体积的同时,保持高性能的JavaScript执行能力,这是一个难以平衡的挑战。
“我经常碰到这种各种各样的 Bug。大部分 Bug 可能是我自己就是对 Chromium 和 blink 的理解不深导致的。但是也有些 bug,我发现它是后面老版本产生的一些问题。就是 Chromium 它自身也是有一些 Bug 的,然后它最新的版本它会修复。我遇到最难调试的问题还是 V8 里面的问题,因为 V8 它那个我有时候碰到一些崩溃,它连堆栈什么都没有,这时候确实很难很难去调整。现在我如果遇到这种问题的话,我可能会回退版本,把 V8 切换到一些老版本上,看有没有同样的问题,然后一步步定位,具体是我的问题导致的,还是谷歌的代码导致的。用一些小手段来来去调试。”
扫地僧通过不断地探索与尝试,最终开发出一个更小体积、快速启动的浏览器内核,使其更适合跨平台开发。他通过裁剪不必要的模块、重写关键组件,如V8引擎和网络层,大幅减少了最终产品的体积。同时,他还优化了跨进程通信机制,提升了安全性和性能,使得软件的冷启动速度和运行效率得到了显著提高,为轻量级应用的开发打开了新的可能。
QMoonBit 也能在 JVM 中运行吗?
MoonBit 计划支持 Wasm、JS、JVM 及 Native 平台。目前,已完成 Wasm 和 JS 平台的支持。我们计划于本年度 Q3 正式启动 JVM 与 Native 平台的支持工作。我们期待在年底前实现对这些多后端平台的全面支持。
Q想知道 MoonBit 支持 autodiff 么?这个目前不支持,目前我们应该不会把 autodiff 作为语言特性,如果实现的话也应该是通过库的方式实现。
Q前端开发的话,有指引吗?在未来的更新中,我们将引入对多后端技术的支持。随着社区生态的丰富,我们后续会根据大家的呼声给出具体的指引与文档。如果大家目前在前端开发中遇到任何问题,可以在论坛提问或者 GitHub 上提交 pr,我们会有专人进行解答。
Q如何看待这个观点【随着 AI 发展应用层编程语言将消失,只剩 “自然语言”】未来编程语言背后的技术还是会存在。编程语言的生命周期很长,例如 Java 已存在几十年且预计将继续保持重要性,而像 Perl 这样的语言,尽管使用率下降,但由于其庞大社区和市场份额,衰退将很缓慢。大模型技术会促使不同编程语言逻辑表达越来越相似,未来的编程语言界限可能变得模糊而不是消失。
Qminiblink 适合 serverless 吗?能否解决其冷启动问题?Miniblink 由于其轻量和快速启动的特性,理论上适合用于 Serverless 环境,可能有助于缓解冷启动问题。然而,实际效果取决于多种因素,包括应用场景、资源配置和优化措施。因此,在考虑将 Miniblink 集成到 Serverless 应用中时,建议进行充分的测试和评估。