什么是 Byzer-lang ? 一门面向大数据和 AI 的开源云原生编程语言

324 阅读4分钟

什么是 Byzer ?

Byzer ,又称为 Byzer-lang,一门面向 Data 和 AI 的低代码、云原生的开源编程语言。

Byzer 这一名称源于中国古代神兽“白泽”,其能言语,通万物之情,知鬼神之事。Byzer 语言创始人祝海林曾提到:“我们希望 Byzer 可以像神兽白泽一样,让数据说‘人’话。”

Byzer 是一门结合了声明式编程和命令式编程的混合编程语言,其低代码且类 SQL 的编程逻辑配合内置算法及插件的加持,能帮助数据工作者们高效打通数据链路,完成数据的清洗转换,并快速地进行机器学习相关的训练及预测。

Byzer 希望能够提供一套语言、一个引擎,就能覆盖整个数据链路,同时可以提供各种算法、模型训练等开箱即用的能力。

为什么我们需要开发 Byzer-lang ?

在 ABC (AI、BigData、Cloud Native)蓬勃发展的大数据时代,随着云基础设施、基础软件、算法模型等逐渐完善,低效的跨平台数据运转逐渐成为工程师落地数据平台和完成 AI 工程化的痛点。无论是基础设施的更换,更易用框架层面的升级,还是更优秀研发人才的招聘,都无法有效、高速地提升效率。

我们认为只有在编程语言层面进行革新,才能从根本上提高数据平台落地和 AI 工程化的效率。

  • SQL for AI™️ ,声明式融合命令式语言,SQL-like 语法简单又灵活
  • 云原生设计,充分利用云上算力和便宜的存储
  • 一套语言,一个引擎,覆盖 Data + AI 的能力,开箱即用

Byzer 四大特性降低成本,释放员工生产力

Byzer 旨在帮助用户以低成本和高效率的方式落地数据平台和完成 AI 工程化,释放数据分析师、工程师以及运维人员的生产力。其主要有以下四点特征:

  • 万物皆表(Everything is a table):

Byzer 语言的核心设计是万物皆表(Everything is a table),我们希望用户可以非常容易的将任何实体对象通过 Byzer 来抽象成二维表,从而能够基于表来进行数据处理或模型训练等进一步操作。Byzer 可以通过虚拟表串联数据流,做到多数据源无缝对接,并同时支持模型的批,流,API的一键部署。

  • 类 SQL 语法(SQL-like Language):

在语言设计层面,Byzer 采用了声明式融合命令式语言编程设计,SQL-like 语法简单又灵活。

  • 内置算法和插件(Built-in Algorithms and Plugins):

支持 Python、标准库、使用自定义 UDF(Scala/Java)。内置大量算法和特征工程工具,帮助平民分析师更快上手机器学习。

  • 可定制,简单,强大(Customizable, Simple and Powerful):

Byzer 通过一套语言、一个引擎,就能覆盖整个数据链路,开箱即用。且 Byzer 从 Day1 起就是云原生设计,同时原生分布式引擎(Spark 引擎和可插拔 Ray引擎)的设计,可以让 Byzer 充分实现算力和存储的云端扩展。

5b775e7ff9054a24831eb620fd47f0b1.png

上图为 Byzer 架构图,我们可以看到 Byzer 作为一个解释型语言,拥有解释器(Interpreter)以及运行时环境 (Runtime),Byzer 的 Interpreter 会对 Byzer 的脚本做词法分析,预处理,解析等,然后生成 Java/Scala/Python/SQL 等代码,最后提交到 Runtime 上进行执行。

Byzer 使用 Github 作为包管理器(Package Manager),有内置 lib 库和第三方 lib 库(lib 库是使用 Byzer 语言编写出的功能模块)。

从上述设计理念实现而来,Byzer 既保留了 SQL 的优势,简洁易懂,还允许用户通过扩展点来进行更多的进阶操作,提供更多可编程能力。

Byzer IDE 支持 —— Byzer Notebook

作为一门语言,需要能够支持编辑器或者 IDE 来方便用户开发和使用, 完成诸如高亮,代码提示,运行等能力。目前比较流行的方式是实现 LSP (language server protocol),这样在编辑器层或者是 IDE 层,可以直接基于 LSP 完成相关功能。比如在代码提示功能的实现上,可以使用内置宏函数 !show 来实现参数自省,通过 code suggestion API 返回给调用方,完成代码的提示功能。

Byzer Notebook 是基于 Byzer 引擎搭建的网页交互计算(Web IDE)应用平台。Byzer Notebook 同时也是 Byzer-lang 的 dubugger(调试器),通过 Notebook 简单易用的调试功能,省去了初学者安装配置开发环境的门槛。

2.png

贡献 Byzer 社区

如果 Byzer-Lang 和 Byzer Notebook 对您有帮助,或您有兴趣想要贡献自己的一份力量,Byzer 白泽社区(Byzer Org)非常期待您的加入。

也欢迎大家关注 Byzer Community 社区公众号参与 Byzer 社区的前沿技术话题讨论。