The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
asuraa

golang 为何不出来个 Typescript

  •  
  •   asuraa · Apr 28, 2025 · 6482 views
    This topic created in 555 days ago, the information mentioned may be changed or developed.

    golang 为何不出来个 Typescript , 很多恶心的语法,可以先使用语法糖,然后编译生成为 golang 代码,然后在编译为 golang 的可执行文件,岂不美哉?

    56 replies  •  2025-04-30 15:33:54 +08:00
    vczyh
    vczyh
    Apr 28, 2025
    1
    你可以自己搞一个,将 TS 翻译成 Go
    asuraa
    asuraa
    OP
    Apr 28, 2025
    2
    @vczyh 想弄,没这个能力啊。
    vczyh
    vczyh
    Apr 28, 2025
    3
    @asuraa 我倒是觉得 Go 没这个动力和需求,你说他图啥
    asuraa
    asuraa
    OP
    Apr 28, 2025
    4
    @vczyh 好像也是,go 本身就有生成的 比如 ent 这种
    zhanying
    zhanying
    Apr 28, 2025 via Android
    5
    ts.go (
    gongym
    gongym
    Apr 28, 2025
    6
    给你个参考
    https://github.com/ccxt/ccxt
    我没仔细研究过,看 readme 其中的 go 库是用 ts 生成的
    go/ in Go (generated from TS)
    bruce0
    bruce0
    Apr 28, 2025❤️1
    7
    这不就是 GO Plus Plus 吗
    NessajCN
    NessajCN
    Apr 28, 2025
    8
    嫌 go 恶心直接去写 C 不就完了
    go 又不像 jvav 那样必须要运行时
    编译两遍意义何在?

    或者说你是不是不知道 go 编译完是二进制机器码?
    InkStone
    InkStone
    Apr 28, 2025
    9
    甭管怎么理解 Go 的语法好坏,用 Go 就是图它编译快、上手简单,糙又猛。你给整 ts 那一套,那对 Go 的用户来说就是无事生非啊。
    ninjashixuan
    ninjashixuan
    Apr 28, 2025
    10
    这么不想写 go 换个语音写嘛,没必要这么纠结。
    TuringGooner
    TuringGooner
    Apr 28, 2025
    11
    后端能选择的语言太多了,又不像前端选择有限。觉得不爽换一门语言就完事了
    fffq
    fffq
    Apr 28, 2025
    13
    try catch 才难受呢
    Vegetable
    Vegetable
    Apr 28, 2025❤️1
    14
    go 又不是解释型语言,我为什么要编译为 go, 而不是一步到位编译为最终产物呢?
    bronyakaka
    bronyakaka
    Apr 28, 2025
    15
    @NessajCN 虽然但是,go 的确必须依赖运行时。java 那是虚拟机
    vfs
    vfs
    Apr 28, 2025
    16
    这么说吧, 如果让我在 typescript 的语法和 go 的语法中选, 我还是选 go. 所谓"恶心的语法"可能正是权衡之后的选择
    datou
    datou
    Apr 28, 2025
    17
    go++?
    asuraa
    asuraa
    OP
    Apr 28, 2025
    18
    @NessajCN c 需要自己管理内存比较麻烦,编译慢,go 内存自动管理也是有 gc 的,也是有一个 runtime 的

    @Vegetable 那就得做个新语言了,难道高多了
    liaohongxing
    liaohongxing
    Apr 28, 2025
    19
    为什么都说 go 简单呢,go 看似语法简单,但是组合到一起可不简单 。

    比如:
    https://github.com/SagerNet/sing-box

    https://github.com/pion/webrtc
    liaohongxing
    liaohongxing
    Apr 28, 2025
    20
    songray
    songray
    Apr 28, 2025
    21
    国内有个开发者搞了基于 Go 的凹语言。
    但是说实话,定位很奇怪,品味也很奇怪,也许你可以参考它 fork 一个自己的。
    flyqie
    flyqie
    Apr 28, 2025 via Android
    22
    @liaohongxing #19

    没看懂你说的组合到一起不简单。。

    本身探讨的就是语法,跟项目没什么关系。

    在语法上 go 确实简单甚至简陋。
    wogogoing
    wogogoing
    Apr 28, 2025
    23
    这不就是许式伟大佬搞的那个 go++ ?
    crysislinux
    crysislinux
    Apr 28, 2025 via Android
    24
    应该是 babel ,想要什么搞什么。
    noahliaszn
    noahliaszn
    Apr 28, 2025
    25
    楼主这个问题 突然想到了之前的 typescript 用 go 重写 哈哈哈

    https://github.com/microsoft/typescript-go
    VVVYGD
    VVVYGD
    Apr 28, 2025
    26
    应该给 ts 搞个 符合 PLAN9 的编译器
    treblex
    treblex
    Apr 28, 2025
    27
    你是否在寻找 https://haxe.org/ ,虽然暂时没有 go 了
    Haxe 可以构建跨平台应用程序,支持 JavaScript 、C++、C#、Java 、JVM 、Python 、Lua 、PHP 和 Flash ,并允许访问各平台的原生功能。Haxe 拥有自己的虚拟机( HashLink 和 NekoVM ),但也可以在解释模式下运行。
    asuraa
    asuraa
    OP
    Apr 28, 2025
    28
    @Alias4ck 哈哈 要是给 ts 弄个编译器就行了
    codersdp1
    codersdp1
    Apr 28, 2025
    29
    @liaohongxing #19 咋不把 k8s 搬出来
    yazinnnn0
    yazinnnn0
    Apr 28, 2025
    30
    为什么要做 go 的前端? 做 llvm 的前端不好吗
    Belmode
    Belmode
    Apr 28, 2025
    31
    @yazinnnn0 #30 ......照这样说,我干嘛还去写 GO ,我直接写 Java 不行吗,反正最后编译成 GO 。
    woniu7
    woniu7
    Apr 28, 2025
    32
    ts 是因为 js 是浏览器唯一语言,整个特性多表达能力强的编译 go ??直接编译二进制不好吗
    pkoukk
    pkoukk
    Apr 28, 2025
    33
    @bronyakaka 啥运行时?说出来听听
    cenbiq
    cenbiq
    Apr 28, 2025❤️1
    34
    因为这是一个伪命题,如果某语言语法性能各方面吊打或者持平 GO ,且能编译成 GO ,那么它就不会编译成 GO ,而是直接编译成二进制文件,从而成为一门与 GO 无关的语言。
    bronyakaka
    bronyakaka
    Apr 28, 2025
    35
    @pkoukk go 的 runtime 不是运行时???
    pkoukk
    pkoukk
    Apr 29, 2025
    36
    @bronyakaka #35 你是不是分不清什么叫 SDK 什么叫 RUNTIME ?
    gloeaerris
    gloeaerris
    Apr 29, 2025
    37
    我觉得是楼主理解错了,楼上的一众大佬也没理解你说的,ts 代码转换成 js 代码这一步严格来说不应该叫编译,应该叫转换或者转译,只不过前端的开发现在已经习惯叫编译了,前端的编译跟后端的编译完全不是一个东西,这个就是定义产生的歧义,纯属个人见解哈。
    xixi1412
    xixi1412
    Apr 29, 2025
    38
    这个项目可能符合你的要求。
    https://github.com/borgo-lang/borgo
    kneo
    kneo
    Apr 29, 2025 via Android
    39
    @gloeaerris 转译也是编译的一种,严格来说,用编译没有问题。
    bronyakaka
    bronyakaka
    Apr 29, 2025
    40
    @pkoukk #36 你哪只眼睛看到 SDK 了???无中生有??一直不都是在说运行时吗
    bronyakaka
    bronyakaka
    Apr 29, 2025
    41
    @pkoukk #36 眼睛不要就捐出去
    bronyakaka
    bronyakaka
    Apr 29, 2025
    42
    @pkoukk #36 我看是你自己搞不清 SDK ,这上面哪点和 SDK 有关系吗?
    bronyakaka
    bronyakaka
    Apr 29, 2025
    43
    @pkoukk #36 你告诉我 runtime 字面翻译是什么,不是运行时还是 sdk ??还是你觉得 go 没有 runtime ?
    bronyakaka
    bronyakaka
    Apr 29, 2025
    44
    @pkoukk #36 屏蔽了,别来恶心我
    pkoukk
    pkoukk
    Apr 29, 2025
    45
    @bronyakaka #40 看来你确实不知道。
    cheng6563
    cheng6563
    Apr 29, 2025
    46
    长工具链的开发模式更恶心,前段时间接手了一个老前端项目,npm install 一下又是要我下 VC++又是要我装 python2 ,把我恶心坏了。
    zhaoahui
    zhaoahui
    Apr 29, 2025❤️1
    47
    Go 不需要语法糖
    UnluckyNinja
    UnluckyNinja
    Apr 29, 2025
    48
    @asuraa #18 我觉得你的理解正好反了,如果一个语言只改语法不修改目标语言,那相当于只修改 parser 的部分,其它基本不用动,如果你把目标语言从 native 改成了源码,反而需要从零实现 AST 到源码的转换,难度不比前者低。
    neoblackcap
    neoblackcap
    Apr 29, 2025
    50
    @asuraa C 的编译并不慢,慢的是 C++。当然了 golang 都将编译速度看成是优化的点,那 golang 的编译速度的确快一些
    neoblackcap
    neoblackcap
    Apr 29, 2025
    51
    @UnluckyNinja 现在搞编译语言可以不那么麻烦,很多都是基于 LLVM 搞的,前端解析完也是出 LLVM IR ,后面的一系列优化都能被复用
    pkoukk
    pkoukk
    Apr 30, 2025
    52
    @chust
    你别光看标题不看内容,人家 faq 里说了“in Go the word “runtime” is just the name given to the library providing critical language services.”
    这原 po 在说 go 不像 java 需要 runtime ,他跑来说 go 也有 runtime ,你说他是什么意思?要么是抠字眼要么是不懂什么是 runtime 呗
    asuraa
    asuraa
    OP
    Apr 30, 2025
    53
    @UnluckyNinja 我意思就是模仿 ts ,实现类似的语法,但是转移转译为 go 后编译
    asuraa
    asuraa
    OP
    Apr 30, 2025
    54
    @neoblackcap LLVM 就很慢了,go 是 PLAN9 的体系 编译器来飞快啊
    xgdgsc
    xgdgsc
    Apr 30, 2025 via Android
    55
    @asuraa llvm 取决于怎么用了,如果像 julia 在 REPL 里 Revise 一点编译一点就跑的话还是很舒服的,从头编译慢点,但只在安装包的时候进行,可以接受
    guanzhangzhang
    guanzhangzhang
    Apr 30, 2025
    56
    python 搞个 typetion 就好了,各种乱 return 和乱用类型
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2814 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 94ms · UTC 14:06 · PVG 22:06 · LAX 06:06 · JFK 09:06
    ♥ Do have faith in what you're doing.