VimL的“工程化”飞跃(上):从脚本到现代OOP

codigger
• 阅读 0

系列文章导读: Vim Language (VimL) 是编辑器之神Vim的“灵魂”,它极致高效、简洁,但也始终被“脚本语言”的枷锁所束缚,难以用于构建超大型的软件工程。ObjectSense文档则展示了一条不同的进化路径:如果VimL从一开始就拥抱现代工程思想,它会是什么样子? 本系列将分两篇,从VimL的进化角度,客观解读ObjectSense如何试图将其“内核”带入一个全新的工程领域。 (上篇)从脚本到现代OOP (下篇)从语言到跨平台生态 VimL的“工程化”飞跃(上):从脚本到现代OOP 一、VimL的“天花板” 任何一个深度Vim用户,都对VimL怀有复杂的情感。 它的“神性”: 极致的性能、与编辑器无缝融合、仅用几行代码就能实现复杂的文本操作。 它的“局限”: 当你想写的不是一个“插件”,而是一个“大型应用”时,VimL的局限性就暴露无遗: “伪”面向对象: VimL 8 引入了 dict 函数,可以通过 self 关键字模拟OOP,但这本质上是“字典驱动”,而非真正的类(Class-based)结构。 工程化缺失: 它没有原生的 Package(包)或 Import(导入)机制,导致大型项目依赖混乱,命名空间极易污染。 语言“孤岛”: 它几乎完全被困在Vim编辑器内部,无法作为一门独立的语言去构建其他类型的应用(如服务、GUI等)。 VimL是一个顶级的“脚本小子”,却不是一个合格的“系统架构师”。 二、ObjectSense的第一步:保留内核,重构“骨架” 面对VimL的局限,ObjectSense的进化选择不是推倒重来,而是“基因重组”。 根据其文档,它首先保留了VimL的“优良基因”:“基于Vim language进行面向对象的封装,该语言核心代码仅在千行之内,高度精炼,简洁。” 这意味着它继承了VimL轻量、高效的运行时特性。但紧接着,它进行了第一次、也是最关键的一次“进化”——注入了完整的现代OOP骨架。 VimL的“工程化”飞跃(上):从脚本到现代OOP 三、从“字典戏法”到“真正的类” VimL的dict函数是一种“模拟”,而ObjectSense则提供了“原生”的工程化能力。这是从“脚本”迈向“工程语言”的第一步。

  1. 引入 Class 与 Inherits(继承) VimL需要你手动管理字典和函数引用来实现“对象”。 ObjectSense则提供了清晰的Class关键字,以及Inherits来实现多重继承。 VimL (模拟) VimL的“工程化”飞跃(上):从脚本到现代OOP

ObjectSense (原生) VimL的“工程化”飞跃(上):从脚本到现代OOP

  1. 引入 Package 与 Import(包管理) VimL的“工程化之痛”在于缺乏命名空间。所有插件的函数理论上都在一个“大通铺”里,只能靠命名规范(如unite#...)来避免冲突。 ObjectSense则引入了现代语言标配的 Package 和 Import 机制。 VimL的“工程化”飞跃(上):从脚本到现代OOP 这彻底解决了VimL在大型项目中最大的痛点——命名空间污染和依赖管理。 通过Class, Inherits, Package和Import这几项关键进化,ObjectSense在保留VimL简洁内核的同时,完成了从“编辑器配置脚本”到“现代面向对象语言”的第一次飞跃。 但这仅仅是语言层面的进化。一门语言要“活下去”,还需要摆脱对单一宿主(Vim编辑器)的依赖,并建立自己的“生态工具链”。 VimL的“工程化”飞跃(上):从脚本到现代OOP (未完待续) 在(下篇)中,我们将探讨ObjectSense如何通过“编译框架”和“微语言”实现第二次飞跃——从一门“语言”进化为一个“跨平台生态”。
点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
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_
Wesley13 Wesley13
4年前
PPDB:今晚老齐直播
【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。
Wesley13 Wesley13
4年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
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年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
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
19分钟前
VimL的“工程化”飞跃(下):从语言到跨平台生态
系列文章导读:在上篇中,我们探讨了ObjectSense如何通过引入Class和Package机制,完成了从VimL“脚本”到“现代OOP语言”的第一次关键进化。它解决了VimL在“语言工程化”上的核心短板。但VimL还有一个更根本的局限:它是一座“孤岛”