V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ansurfen
V2EX  ›  分享创造

我开发了一个编译成 VBScript 的现代编程语言 - Hulo

  •  
  •   ansurfen · 58 天前 · 1728 次点击
    这是一个创建于 58 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我最近在做一个编译器/转译器项目,想要解决一些在 Windows 脚本开发中遇到的“老大难”问题。

    你知道 VBScript 最令人头疼的是什么吗? 就是那种 冗长的语法有限的语言能力,一旦想实现稍微复杂一点的逻辑,就会陷入繁琐的拼接和调试地狱。

    于是我开始思考—— 有没有可能用一种更现代、更清爽的语言来写脚本,然后自动生成 VBScript ?

    于是我做了个语言,叫做 Hulo 。

    什么是 Hulo ? Hulo 是一种现代化、类型安全的编程语言,可以编译(准确说是转译)成 VBScript 。

    来看几个实际例子:

    简单的消息框:

    MsgBox "Hello, World!"
    

    带类型的函数:

    fn sayHello(name: str) -> void {
        MsgBox "Hello, $name!"
    }
    
    fn add(a: num, b: num) => $a + $b
    
    sayHello "Hulo";
    MsgBox add(5, 3);
    

    类和对象:

    class User {
        pub name: str
        pub age: num
    
        pub fn greet(other: str) {
            MsgBox "Hello, $other! I'm $name."
        }
    }
    
    let u = User("John", 25)
    $u.greet("Jane")
    

    控制流和用户输入:

    let n = InputBox("Input a number:")
    
    if $n < 0 {
        MsgBox("The number is negative.")
    } else {
        MsgBox("The number is positive.")
    }
    

    列表和循环:

    let arr: list<num> = [1, 2, 3, 4, 5]
    
    loop $item in $arr {
        MsgBox $item
    }
    
    loop $i in [0, 1, 2] {
        MsgBox $i
    }
    

    更多示例请前往 GitHub 上的 examples/ 查阅!

    写在最后

    我知道 VBScript 生态比较老旧,但它在 Windows 自动化中仍然有着不可替代的位置。 如果你也正在用 VBScript 做运维、脚本开发、企业级自动化,那么 Hulo 或许能为你带来一点 久违的开发愉悦感

    目前项目还在早期阶段,欢迎感兴趣的朋友提建议、提 issue 、或者一起来参与开发!

    项目地址: https://github.com/hulo-lang/hulo

    你觉得这种“现代语言 + 老派平台”的方式靠谱吗?

    15 条回复    2025-07-14 09:16:45 +08:00
    xiangyuecn
        1
    xiangyuecn  
       58 天前
    为什么不直接用 JScript
    ansurfen
        2
    ansurfen  
    OP
       58 天前
    @xiangyuecn VBScript 原生可以跑在 windows 上面,不需要运行时,也可以用来编写批处理脚本。然后后面我会发布 Hulo 到 Bash 、Powershell 、Batch 的转译支持,目前在重构语法树 可能下周在增加一个新的语言。最主要的就是这些批处理脚本能直接跑不需要运行时,我对 Hulo 的定位就是写批处理脚本相关的,然后现在还在早期 相关的工具链还没开发 可以期待一下。
    hj18
        3
    hj18  
       58 天前
    很棒的想法,我支持。
    TrackBack
        4
    TrackBack  
       58 天前
    想法很棒,不过为什么要重新发明新语言?
    在现有语言的基础上写应该会方便很多,推广也容易

    当然如果只是练手项目的话倒无所谓
    dwu8555
        5
    dwu8555  
       58 天前
    要安装 vb 的 ide 吗
    ansurfen
        6
    ansurfen  
    OP
       58 天前
    @TrackBack 因为翻译成批处理脚本 最重要的就是命令类型比如说 git clone xxx 这种,现有的语言根本不支持这样的语法。所以一个新的语言就诞生了,命令就是最基础的数据类型。不过这块刚构思完,还没来得及实现和介绍
    ansurfen
        7
    ansurfen  
    OP
       58 天前
    @dwu8555 虽然两者语法看起来类似,但是只能翻译成 VBS ,不支持 VB 。VBS 能够直接跑在操作系统不需要安装任何环境,操作系统自带。
    geelaw
        8
    geelaw  
       58 天前
    @ansurfen #2 他的意思是 Windows 的脚本解释器除了 VBScript 还支持 JScript ,请注意 JScript 和 JavaScript 不同。

    @xiangyuecn #1 的一个可能的回答是,JScript 支持的 JavaScript 语法比较古早。当然,我觉得配合合适的 .d.ts 之后用 TypeScript 编译器翻译成很低版本的 ECMAScript 应该是更简单的解法。
    ansurfen
        9
    ansurfen  
    OP
       58 天前
    @geelaw 哦哦 感谢解释。可能我有点标题党吧,因为一开始的目标也不是只针对 Windows , 在我的 github 仓库里面,写着是要翻译成 Bash ,Batch ,Powershell 的。然后就是命令了,现在哪怕是最现代化的批处理脚本 Powershell 也很难对市面上的命令进行有效的代码提示,甚至 ps 自己的静态分析就很鸡肋。所以 Hulo 就设计出来了,一款以 cmd 类型为基础数据类型的编程语言,不过这块还没实现,因为要实现的难点在于 命令很复杂,需要一套有效的声明系统,以及不同平台的命令需要实现跨平台封装 相比传统编程语言更加自然,为此我设计了两套还存在于 PPT 中的系统。
    bigtear
        10
    bigtear  
       58 天前
    可以尝试兼容 Python 或者 Golang 的语法,前景会大很多。
    不过你这个应用场景略小众,毕竟现在 Windows 都自带 PowerShell 了。
    ansurfen
        11
    ansurfen  
    OP
       58 天前
    @bigtear 感谢你的建议,不过目前的计划会先把各平台的批处理脚本都对接完成,然后实现最核心的功能,命令类型,并且实现对命令的代码提示和接收参数的类型检测。虽然自带 Ps ,但是并不冲突,未来可以编写一个 Hulo 代码,翻译成 Powershell 和 Bash 脚本。让批处理脚本一次编写多端运行。不过这还需要一个命令转换系统,比如说 Write-Host 和 echo 的跨平台抽象,这块我后面会实现,已经设计出了语法糖。
    darkway
        12
    darkway  
       57 天前
    恭喜你发明了易语言
    uqf0663
        13
    uqf0663  
       57 天前
    很棒的想法,加油。
    Damn
        14
    Damn  
       57 天前 via iPhone
    49 年入国军,vbs 都要被废了。。
    https://www.ithome.com/0/770/120.htm
    ansurfen
        15
    ansurfen  
    OP
       57 天前
    @Damn 哈哈哈,这个我之前看过。虽然要被废了,但是不可否认 Windows10 还有很大市场份额的。不过先发布 VBS 的支持是因为他的语法最接近传统的编程语言,不会像其他批处理脚本一样有各种抽象的概念(比如说 &>, $(), [[]] 等符号满天飞),要设计的地方很多,这周会发布 Hulo 到 Bash 翻译的版本,然后下下周在支持 Batch 。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3028 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:01 · PVG 22:01 · LAX 07:01 · JFK 10:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.