花仲马,五一在加班,我便只得找点事情做。
还记得 Uncode 吗?用于落地我构思的整个云研发体系的 IDE,如果不记得的话,请访问『流程即代码:低代码 & 云研发 IDE —— Uncode』。它来了,现在来了。
我,也许擅长 IDE 的插件开发,还有阅读了大量 Intellij IDEA Community 的源码,但也说不上擅长 IDE 的设计 —— 有太多的坑值得去探。特别是在五一之前,我尝试用 Druid 去构建一个编辑器,便发现这并不是容易的事情。所以,我走回了 WebView + Monaco 的路线,然后用 Rust 作为系统的核心:
上图是当前 Uncode 的架构图:
或许,你还注意到了 Golang。
Uncode 使用 Rust 来实现各类的 DSL 的解析,以及各类的代码生成。但是,Rust 还缺少一个重要的工具,Antlr(至少还不稳定)。依旧是那个老问题,Antlr 官方提供了大量的现有编程语言的语法,这个重要的特性由于支持我们做静态分析。所以,我们将使用 Golang 来暂时实现这样的功能。
考虑到 Uncode 不是一件容易的事情:
所以,Uncode 的第一个目标,相当的简单:可以用 Uncode 来编写 Uncode 的编辑器。
IDE 的复杂性。变身为一个 IDE 是一件非常复杂的事情。在那之前,需要准备好稳定可靠的 UI 接口 + 良好的交互性。当然了,还有对于诸多工具的集成。
所以,在五天里(加上 4.30 号),我开发了演示版本的 Uncode,除了不能写代码,它似乎什么也能做。
需求代码化,即将软件开发需求抽象为特定的领域语言,并使用管理代码一样的方式来管理需求,追踪需求的变化 。同时,为通过新的 API 来对接版本管理系统,以可视化需求,演变为看板代码化。
『需求即代码』作为 Uncode 的第一个部分,在演示版里,我实现得比较简单,读取代码库里的 story,解析其中 cucmber
的语法,然后展示到 Uncode 里。对应的 DSL 也还在早期(因为还得改 Cucumber 对应语法的解析器)。
# status: backlog
Feature: 架构守护 DSL 设计
作为一个架构师,我希望在设计通过类似于 ArchUnit 这样的 DSL 来设定调用规则等。
Scenario: 开发人员违反规则时,无法提交代码
# Enter steps here
由于,使用的 Kanban 库不是很完善,所以并没有创建对应的编辑功能。对应的功能截图如下:
设计即代码就稍微复杂一些,分为这么四部分:
UI 依旧很丑。
我承认,这就是一个带目录功能的编辑器。哦,不,暂时还支持保存文件,但是基本可用。
Todoing。
就这么五天,你还想要什么自行车。
GitHub 下载预览版:https://github.com/inherd/uncode/releases
如果你擅长又或者是对以下的内容感兴趣:
人生苦短,欢迎加入 Uncode 的开发:https://github.com/inherd/uncode
围观我的Github Idea墙, 也许,你会遇到心仪的项目