IDEA研究院编程语言MoonBit发布beta预览版,快速实现多领域应用

news2024/9/22 21:28:40

MoonBit beta 预览版比大部分主流语言更早推出现代化泛型、精准错误处理和高效迭代器等重要特性,在云计算、边缘计算、人工智能和教育等领域快速实现落地应用。Beta 预览版标志着 MoonBit 生态进入全新阶段,为用户提供更稳定、流畅的创新操作体验。

MoonBit自去年发布 alpha 版后,反响热烈。经过一年的高速迭代,MoonBit 到达了 beta 预览版的里程碑:在核心语言特性上,MoonBit媲美、甚至超越了大部分主流语言的1.0版本;语言特性的开发稳定,开发者可以更广泛地参与到生态建设中来。这里列举几个 MoonBit 的核心特性:

  • 现代化的泛型系统

现代语言复杂性的很大一部分在于类型系统的设计,很多主流工业语言,比如 Java,Go在 1.0 版本推出很多年以后才会渐渐完善泛型的支持,但是这会对生态造成撕裂。MoonBit 在 beta预览版本已经完成了泛型和 ad-hoc polymoprhism,而且 MoonBit 在保持极快的编译速度的同时,提供了零开销的泛型支持。

  • 准确的错误处理

错误处理是现代语言设计中的重要组成部分,大部分编程语言在静态分析中,彻底放弃错误处理的支持,这意味着任何函数都可以抛出异常,很难写出高可靠性的代码。MoonBit 通过准确的控制流分析,可以完全在编译时期跟踪函数的错误。这一过程几乎完全由编译器自行推导,且不像 Java checked exception 那样过于繁琐,降低用户的心智负担。

  • 高效的迭代器

传统的编程语言的迭代器会产生频繁的装箱操作,导致其性能比普通的循环要糟糕很多。MoonBit 创新地使用了零开销的迭代器设计,可以让用户写出优雅代码的同时保持程序的性能

多应用场景

MoonBit 是一个全场景覆盖的开发者平台,紧跟科技前沿和行业趋势,侧重于云计算、边缘计算、人工智能以及教学领域的发展,并在每个领域做到极致,确保在性能上领先其他语言至少一个数量级。

云计算

在云计算领域,MoonBit 近期已支持 Wasm 组件模型,并有海外用户实现了与 Spin 框架集成的 MoonBit SDK。

通过将应用程序拆分成独立的、可重用的组件,MoonBit 可以在云计算开发中更好地利用模块化开发、灵活的部署和更新、资源优化、防止单点故障提高安全性、易于扩展和集成等特性,实现云计算应用场景中的突出优势,提高系统的灵活性和安全性,简化扩展和集成过程,从而显著提高云计算开发效率并降低运营成本

图片

边缘计算

在边缘计算领域,目前已有 MoonBit PDK 插件,并被 Extism 收入官方 PDK 库。

通过 PDK 的支持,MoonBit 能够在边缘计算应用中更高效地利用硬件资源,实现分布式计算和本地处理,提升性能和响应速度,同时确保设备兼容性和数据安全性,从而大大提升开发和部署效率,满足低延迟和高效能的需求。

图片

教育

在 MoonBit 的应用生态发展中,注重为学生群体以及编程语言初学者提供简单易学的入门环境,并以游戏的形式打造轻松愉悦的学习体验。

MoonBit 现已支持使用 WebAssembly 开发小型复古游戏的 WASM-4 框架。凭借 MoonBit 的高效工具链和简洁设计,入门级开发者可以在官方教程的指导下轻松创作属于自己的第一款游戏。

同时,框架内置的多玩家支持功能能够让至多四名玩家共同体验游戏的乐趣。无论是创作过程还是开发体验,MoonBit 都能让初学者体验前所未有的简单与高效。

不仅如此,由于 MoonBit 支持实时可视化开发,同时编译速度极快,开发者还能够实时更改代码来灵活调整游戏参数。

MoonBit 团队正在开发 MiniMoonBit 编译器教学项目。学生可以用 MoonBit 实现 MoonBit 语言的一个子集。由于 MoonBit 强大的表达力,相较传统的用 C/C++ 实现的编译器项目,学生可以更轻松地上手实现。

同时,MiniMoonBit 项目采用了模块化的设计,多层 IR 都有对应的 JSON 文本表示,学生不再需要从头实现编译器的每个环节,而是可以选择感兴趣的模块来学习。

快、小、安全、最佳数据处理体验

MoonBit 于 2022 年启动开发计划,凭借团队在 ReScript、OCaml、Flow 等工业编程语言研发中的十多年经验,迅速在两年内完成了整套工具链的开发,致力于成为第一个走向国际的中国编程语言。

2023 年 8 月 18 日,MoonBit 首次在海外发布后,迅速引起了国际技术社区的广泛关注,并登上了 HackerNews 的头条。HackerNews 作为硅谷最具影响力的科技社区之一,对 MoonBit 的每一次重大特性更新都给予了高度关注。

此外,MoonBit 还在全球 DevOps 领域权威媒体平台 The News Stack、日本顶尖科技社区 Zenn 等知科技媒体上频频出现,进一步巩固了其全球影响力。

同时,MoonBit 在工业应用方面进展迅速,包括多家海外创业公司的应用、在国内拥有数据库领域的商业合作伙伴等。这一过程中,MoonBit 一直致力于发挥其在语言速度、代码精简和数据处理等方面的卓越优势。

「快」

MoonBit 致力于实现全栈性能的卓越表现,包括编译性能和运行时性能。

通过专为多级中间表示(IR)定制的全局优化,不仅改善了内存布局,减少了缓存未命中率,还为数据和控制流分析提供了一个优越的环境,从而确保了编译和运行时的高性能。从编译速度来看,MoonBit 编译 626 个包(package)只需 1.06 秒,比 Rust 快了近 9 倍,运行时间仅为Go的 35分之一。

图片

「小」

MoonBit 在输出 Wasm 代码体积上相较于传统语言有显著优势MoonBit 通过 WebAssembly(Wasm)组件模型,在生成代码时实现了显著的体积优化。相比其他编程语言,MoonBit 编写的 Wasm 组件代码体积大幅减少。

例如,在编译一个简单的“Hello World” HTTP 服务器时,MoonBit 的输出文件大小仅为 27KB,而 WasmCloud 提供的 http-hello-world 模板中 Rust 的输出为 100KB,TypeScript 为 8.7MB,Python 更是高达 17MB。

图片

「安全」

借助前文提到的创新错误处理机制,MoonBit 有效解决了传统编译技术在错误处理机制转换中遇到的适用范围有限和内存开销大的问题。通过静态分析源程序中的错误处理代码,并根据目标编程语言的特性进行转换,MoonBit 扩大了适用语言范围,减少了内存开销,同时提升了代码的安全性和稳定性。

健壮的类型系统是 MoonBit 保障其安全的重要设计之一。MoonBit 采用了强大的类型系统,并内置静态检测工具,在编译期检查类型错误,从而提高代码的正确性和可靠性。

MoonBit 的安全保障得益于其对 WebAssembly 的原生支持,这一特性使得 MoonBit 能够深度挖掘 Wasm 在沙箱环境、内存隔离以及默认的无权限机制(deny-by-default)等方面的安全架构优势。通过这些先进的安全特性,释放其在云计算和边缘计算安全问题上的潜力。同时结合语言自身类型系统安全,删减无用代码(DCE)、编译为经过验证的 Wasm 指令等三层保障,确保代码可信与数据隐私安全。

「专注数据处理」

MoonBit 作为一门多范式编程语言,在保持语言简单性的同时,也侧重于提供数据处理的最佳体验。MoonBit 通过原生支持 JSON 处理、Iter 类型和模式匹配实现高效数据处理,在语法设计上兼具动态语言的灵活性和静态语言的安全高效,直观而简洁地进行对数据的解析和转换

图片

JSON处理

MoonBit 在数据处理上的语法设计旨在优化常见的数据处理场景,解决传统方法中由于生成多个中间数组而导致的性能问题。在 Iter 性能对比中,MoonBit 的数据处理速度达到了 JavaScript 的 25 倍之多。

图片

一站式解决方案

相较于传统的编程语言设计路线,MoonBit 从一开始就提供全套开发、调试、部署的一站式解决方案。MoonBit 不仅提供多后端支持、通用程序语言设计,还涵盖了编译器、构建系统、集成开发环境(IDE)、调试器,部署工具等。

这个全面的设计使得 MoonBit 能够实现高度垂直整合,而且可以同时在云端和边缘端执行,更好地与各种资源进行交互,从而为用户提供极致的开发体验和性能。

「内置AI助手的云IDE」

与其他云 IDE 不同,MoonBit 对 IDE 的支持不仅包含了现代 IDE 的所有功能,且MoonBit 无需依赖容器。快速语义分析技术可处理大量的代码库,并且在更大规模的代码库中也能在百毫秒级别完成 IDE 响应。

现今大多数编程语言的 IDE 是为桌面操作系统设计的,未能很好地适应云原生环境和边缘端的需求。MoonBit 则通过采用高度并行化的架构和对分离编译的原生支持,使得云IDE 可以直接在边缘端运行。这在现今大多数语言的云 IDE 中是首次。

除了传统 IDE 的功能以外,MoonBit AI 助手现已内置于 MoonBit IDE,并实现了自动化测试生成、文档生成,以及代码解释功能,为应用的开发、测试和文档编写提供了全方位的支持,使得开发者能够更加专注于业务逻辑的实现,而不必担心底层的复杂性和维护工作。

「开箱即用的调试支持」

MoonBit 在初始阶段已经提供其他语言通常在成熟阶段才拥有的调试工具。MoonBit 目前已提供 sourcemap 支持,支持源码映射、基于源码设置断点、输出 sourcemap 等,可以在浏览器中进行源码调试。这项功能的推出不仅减轻了开发者在代码调试方面的负担,还显著提升了开发和调试的流畅性。

对于 JavaScript 后端,用户仅需在 JavaScript Debug Terminal 上执行 moon run --target js --debug,即可立刻进入调试。MoonBit的sourcemap和调试支持显著优化开发者的调试体验,确保 JavaScript 代码的生成尽可能贴近源码,变量名和字段名保持一致,便于使用浏览器的 DevTools 进行源码检查和调试。

「包管理」

MoonBit 作为一门从 0 到 1 的编程语言,对于生态建设尤为重视,其中一个关键在于构建高效且功能丰富的包管理系统。我们搭建了一个中心化的 MoonBit 包管理平台 mooncakes.io,提升包的获取速度和编译效率,从而为开发者提供一个高效的工作环境。

图片

此外,我们注重文档的管理和维护。为了让第三方包更加易于开发者理解和使用,我们提供了文档生成工具 moondoc,并在 mooncakes.io 集成了每个包的文档,以帮助开发者编写和分发包的文档、帮助包的使用者创造高质量的应用。

图片

图片

AI时代下的编程语言

这个世界是否还需要一门新的编程语言?答案是,是。

编程语言的发展经历了60年代时,结构化编程的兴起。到70年代,则是面向对象编程与C语言。90年代,是脚本语言与互联网 。而00年代,是语言的统一与多样性。到了10年代,是现代语言与大数据。编程语言在不断进步,同时也有大量的编程语言渐渐销声匿迹。

大模型时代浩浩荡荡的浪潮卷席了万事万物。编程语言作为计算机核心组件、且是软件开发者创造技术世界最重要的工具,自然被顶上风口浪尖。整个技术行业都对编程语言提出了更高的要求。

在大模型时代,工具重塑了开发者的工作方式,同时也降低了学习新语言的门槛。开发者将更专注于创意和设计,代码的实现和优化则由编程工具完成。这一转变推动编程工具从简单的代码生成器进化为复杂问题解决平台。

MoonBit AI 云原生开发者平台——MoonBit 编程语言及工具链,就在这个机遇与挑战并存的时代应运而生。MoonBit 的目标,是重塑软件开发生态。

MoonBit 的未来路线

MoonBit AI 云原生开发者平台是一个“道阻且长,行则将至”的系统工程。MoonBit 正在马不停蹄地扩大 MoonBit 的社区力量、培养社区人才。2 年的时间里 ,MoonBit 工具链已有几百名社区贡献者和近万人的全球的用户,增长速度遥遥领先

目前,MoonBit 已支持 Wasm 与 JS 后端。未来,MoonBit 计划支持 native 后端。这意味着无论是 UI、客户端、边缘计算还是系统编程,用户都能在 MoonBit 平台上找到适合自己的使用场景,从而使生态能够覆盖所有可能的应用场景。

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2050937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++入门——03内存管理

上图为C语言的内存管理,C中可以继续使用,但有些地方就无能为力而且使用起来比较麻烦,因此C又提出了自己的内存管理方式:通过new和delete操作符进行动态内存管理。 1.new和delete操作符 1.1.new/delete操作内置类型 注意&#xf…

自闭症青年的行为特征有哪些

自闭症,又称孤独症,是一种神经发育障碍,它不仅影响儿童的成长,也会在青年时期展现出一系列独特的行为特征。了解这些特征对于更好地支持和帮助自闭症青年融入社会至关重要。 社交互动方面的困难是自闭症青年较为显著的特征之一。他…

IO进程(学习)2024.8.17

目录 文件属性获取 目录操作 标准IO 和文件IO 的区别 库 库的定义 库的分类 静态库 动态库 库的制作 制作静态库 动态库的制作 使用库 进程 程序和进程的区别 程序:编译好的可执行文件 进程:一个独立的可调度的任务 特点 进程段 进程…

SMS流媒体服务器-MPEG-PS流的深度解析

1.简介 ps流的解析,只要按照标准文档对照16进制的流数据,基本都能看的明白。但是实际项目中会碰到各种各样的问题。本文将对如何高效的解析出音视频数据发表一下个人的看法。 介绍一下本人的开源流媒体,点个star,有兴趣一起开发的…

应急响应:勒索病毒-实战 案例一.【Windows 系统-排查和解密】

什么是勒索病毒. 勒索病毒是一种恶意软件,它通过加密用户的数据或锁定用户设备,然后要求用户支付赎金以解锁数据或系统。勒索病毒的入侵方式多样,包括网络共享文件、捆绑传播、垃圾邮件、水坑攻击、软件供应链传播、暴力破解、利用已知漏洞攻…

javaweb_08:Mybatis入门(基于Springboot)

javaweb_08:Mybatis入门 一、引入二、快速入门(一)准备工作1、创建Springboot工程2、创建user数据库3、创建实体类 (二)引入MyBatis相关依赖,配置MyBatis。(三)编写SQL语句&#xff…

动态路由OSPF基础学习笔记一

由于静态路由由网络管理员手工配置,因此当网络发生变化时,静态路由需要手动调整,这制约了静态路由在现网大规模的应用。 动态路由协议因其灵活性高、可靠性好、易于扩展等特点被广泛应用于现网。在动态路由协议之中,OSPF&#xf…

Linux I/O 多路复用机制详解

文章目录 1 文件描述符(File Descriptor)1.1 什么是文件描述符?1.2 文件描述符与文件的关系 2 文件描述符集合(File Descriptor Set)2.1 什么是文件描述符集合?2.2 fd_set 结构体 3 select() 函数的工作原理…

ros笔记06--从零体验ros2中launch系统

ros笔记06--从零体验ros2中launch系统 介绍创建步骤最基础的 launch 案例多节点 launch 案例 注意事项说明 介绍 ROS2系统通常由许多节点组成,这些节点运行在许多不同的进程(甚至不同的机器)上。虽然可以通过 ros2 run 单独运行这些节点,但当节点数量很…

【LLM入门】Let‘s reproduce GPT-2 (124M)【完结,重新回顾一下,伟大!】

文章目录 03:43:05 SECTION 4: results in the morning! GPT-2, GPT-3 repro03:56:21 shoutout to llm.c, equivalent but faster code in raw C/CUDA【太牛了ba】03:59:39 summary, phew, build-nanogpt github repo 03:43:05 SECTION 4: results in the morning! GPT-2, GPT-…

计算机毕业设计选题推荐-springboot 基于springboot的宠物健康顾问系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

Windows系统下Go安装与使用

step1: 下载go语言SDK 下载地址:https://go.dev/dl/ 下载后选择合适位置安装即可,我选择D盘 在安装完成后,可以通过go env 命令检测是否安装成功。在“命令提示符”界面输入“go env”命令,如果显示如下类似结果则说明…

C++STL初阶(12):stack和queue的初阶实现

1. stack的选型 对于栈的实现是我们非常熟悉的过程: C语言基础数据结构——栈和队列_栈和队列 插入取出数据-CSDN博客 _top表示下标,_capacity表示空间大小: 那么按照我们原来的思路,利用_top和_capacity T*来给stack构形。 temp…

Grok 2携AI图片生成重生

埃隆马斯克&#xff08;Elon Musk&#xff09;的人工智能初创公司xAI推出其最新的AI助手Grok 2的测试版&#xff0c;添加了类似于OpenAI的DALL-E和Google的Gemini的图像生成工具&#xff0c;但对可以生成的图像类型的限制显然较少。<这是其中的一个“亮点”&#xff0c;一些…

【Hot100】LeetCode—234. 回文链表

目录 1- 思路快慢指针链表拆分反转链表 2- 实现⭐234. 回文链表——题解思路 3- ACM 实现 原题连接&#xff1a;234. 回文链表 1- 思路 快慢指针链表拆分反转链表 思路 ①将链表拆分前后两个部分——>找拆分点、②反转后面部分、③根据反转结果&#xff0c;同时利用两个指…

揭秘住宅IP代理:原理、用途及应用分析

在数字化时代&#xff0c;互联网已成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;随着网络环境日益复杂&#xff0c;隐私保护、网络访问限制等问题愈发凸显。住宅IP代理作为一种新兴的网络技术解决方案&#xff0c;正逐渐成为众多跨境业务和网络活动的重要工具。…

打卡第46天------动态规划(回文串)

想要快点把每一道题给练会,在面试的时候跟面试官对答如流,这家公司实在是让我没有继续待下去的欲望了,天天祈祷上Di,求Shang帝帮助我实现两份工作的无缝衔接。交托仰望。 今天 我们就要结束动态规划章节了,动态规划的题目还是挺难的,贪心和动态规划对我来说都比较困难,对…

Jeecgboot3.6.3的vue3版本的一种flowable动态增加一个用户任务节点的方法(三)后端代码实现

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 这部分主要讲后端实现部分 1、增加一个AddTaskVo 类型,提供新增任务需要的数据结构 import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.D…

10结构型设计模式——桥接模式

一、桥接模式 桥接模式&#xff08;Bridge Pattern&#xff09;是结构型的设计模式之一。桥接模式基于类的最小设计原则&#xff0c;通过使用封装&#xff0c;聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象&#xff08;abstraction&#xff09;与行为实…

PNG的存储方式[计算机原理]

块的基本理论 众所周知&#xff0c;所有的信息在计算机中以位的形式存在&#xff08;0|1&#xff09;8位是一个字节&#xff0c;可以表示成两个16进制数&#xff0c;例如0xFC因为4位对应一个16进制数嘛。PNG这种图片也不例外&#xff0c;它也是由位组成的&#xff0c;不过我们…