VimL的“工程化”飞跃(下):从语言到跨平台生态

codigger
• 阅读 0

系列文章导读: 在上篇中,我们探讨了ObjectSense如何通过引入Class和Package机制,完成了从VimL“脚本”到“现代OOP语言”的第一次关键进化。它解决了VimL在“语言工程化”上的核心短板。 但VimL还有一个更根本的局限:它是一座“孤岛”,它的生命几乎完全依赖Vim编辑器这个“宿主”。 (上篇)从脚本到现代OOP (下篇)从语言到跨平台生态 一、VimL的“宿主”困境 VimL的第二次进化,必须解决这个“宿主困境”。如果一门语言只能活在编辑器里,那它永远无法构建独立的服务、桌面应用或智能合约。 ObjectSense的文档,用大量篇幅展示了它如何试图“越狱”——从VimL的“基因”出发,进化出一个独立、跨平台的完整生态。 VimL的“工程化”飞跃(下):从语言到跨平台生态 二、进化的第二步:构建“生态工具链” 如果说(上篇)的OOP是“语言设计”,那么(下篇)就是“工具链建设”。

  1. Sense.ose 与 rose:从“插件”到“模块” VimL的包管理是“编辑器级别”的(如Vim-plug, Packer)。而ObjectSense则提供了“语言级别”的模块化方案。 Sense.ose 文件: 扮演了package.json (Node.js) 或 Cargo.toml (Rust) 的角色。它是一个“Module描述文件”,定义了模块的版本、依赖(require)、导出(export)和入口(main)。 rose 命令行工具: 扮演了npm或cargo的角色。它提供了install, push, run, create等一系列完整的包管理和项目运行命令。 这两者的结合,标志着它从“Vim插件”正式进化为“可独立分发的软件模块”。 VimL的“工程化”飞跃(下):从语言到跨平台生态 三、进化的第三步:Harmony框架——“逃离”VimL 这可能是ObjectSense在进化上最大胆的一步。它不再满足于“封装”VimL,而是要“编译”VimL。 VimL的宿命是被Vim的解释器执行。而ObjectSense的Harmony Framework(和谐框架)是一个“编译调度”框架。 根据文档,Harmony允许你“注册和使用不同的Compiler(编译器)”。 这意味着什么?
  2. AOT编译(preboot): 文档中的“实战 OSE-Compiler”章节展示了,Harmony可以使用preboot编译器,将ObjectSense代码编译为C语言代码。
  3. 跨语言编译(Smart Contract): 文档明确提到,可以使用SmartContract编译器,将OSE代码“翻译为Solidity源程序,进而编译成Evm Bincode”。
  4. 交叉编译(Cross Compiler): 它甚至提供了交叉编译工具,用于“编译出windows 和 macos 和 linux 多平台动态库或可执行文件”。 这彻底打破了VimL的“孤岛”宿命。ObjectSense不再是Vim的“寄生脚本”,它进化成了一种“元语言”:一种可以用Vim的简洁语法编写,但最终可以“变身”为C代码、Solidity合约或其他任何目标代码的工程语言。 VimL的“工程化”飞跃(下):从语言到跨平台生态 四、进化的“未来时”:Micro(微语言) 如果说Harmony是“进化”的执行者,那么Micro(微语言)就是“进化”的设计者。 Micro机制(“类似于Lisp宏”)允许开发者自定义语法。这意味着开发者可以“在语言之上设计语言”。 例如,开发者可以为“智能合约”或“GUI”设计一套专用的、声明式的Micro语法,然后通过Harmony框架将其编译成目标代码。 这标志着VimL的基因完成了最终的进化:它从一个“被动”的、用于配置编辑器的脚本,进化成了一个“主动”的、用于创造新工具和新语法的“元编程”平台。 结论:VimL的“精神续作” 从VimL出发,ObjectSense的进化路径清晰可见:
  5. 第一次飞跃(语言): 引入OOP和包管理,解决了VimL的“工程化”难题。
  6. 第二次飞跃(生态): 引入rose工具链,摆脱了“插件”的定位。
  7. 第三次飞跃(跨平台): 引入Harmony编译框架,摆脱了“Vim宿主”的依赖,进化为可编译至C、EVM等的“元语言”。 它保留了VimL“千行代码”的简洁内核,但赋予了它现代工程化的“骨架”和“跨平台”的翅膀。无论这个项目未来走向何方,它都为VimL的进化提供了一个极具想象力的范本。
点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
10个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
4年前
NEO从源码分析看网络通信
_0x00前言_NEO被称为中国版的Ethereum,支持C和java开发,并且在社区的努力下已经把SDK拓展到了js,python等编程环境,所以进行NEO开发的话是没有太大语言障碍的。比特币在解决拜占庭错误这个问题时除了引入了区块链这个重要的概念之外,还引入了工作量证明(PoW)这个机智的解决方案,通过数学意义上的难题来保证每个
codigger codigger
25分钟前
VimL的“工程化”飞跃(上):从脚本到现代OOP
系列文章导读:VimLanguage(VimL)是编辑器之神Vim的“灵魂”,它极致高效、简洁,但也始终被“脚本语言”的枷锁所束缚,难以用于构建超大型的软件工程。ObjectSense文档则展示了一条不同的进化路径:如果VimL从一开始就拥抱现代工程思想,
codigger codigger
5个月前
关于 ObjectSense 语言的科普解析
ObjectSense是基于VimL8的面向对象语言,其语法简洁、现代,官方支持的代码仓库和框架,助力更安全高效开发各类型应用。
codigger codigger
2个月前
代码的‘灵魂’与‘透视眼’:ObjectSense 面向对象与反射机制
在编程世界中,如果说变量和函数是构建程序的"砖块",那么面向对象编程(OOP)就是赋予这些砖块"灵魂"的设计哲学。ObjectSense在VimL基础上扩展出完整的OOP特性,让代码更具模块化和可复用性,让代码拥有了生命和智慧。一、类与对象:OOP的基本单
codigger codigger
2星期前
疯了还是天才?(中):ObjectSense的“三位一体”Super IDE
系列文章导读:在上篇中,我们探讨了ObjectSense如何选择VimLanguage这一“最不可能”的地基,并为其封装了现代OOP能力,解决了“语言”层面的问题。但一门语言的成功,离不开它的生态和工具链。(上篇)一个“复古”的破局者(中篇)“三位一体”的
codigger codigger
24分钟前
疯了还是天才?(下):揭秘ObjectSense的“AI护城河”——微语言
系列文章导读:在上篇,我们了解了ObjectSense基于Vim的“根基”;在中篇,我们探讨了它“三位一体”的SIDE生态。现在,我们将触及它最核心、也是最大胆的主张:它凭什么“让AI无法取代”?(上篇)一个“复古”的破局者(中篇)“三位一体”的Super