1 rocmax 2024-02-15 17:14:49 +08:00 via Android 因为 lua 可以方便地调用 c/c++ |
![]() | 2 adoal 2024-02-15 17:15:00 +08:00 ![]() JS 性能更高吗?以前看过一篇论文,对常见的各种语言做了个 benchmarking ,脚本语言无 JIT 组 Lua 是第一,有 JIT 组 LuaJIT 是第一…… |
![]() | 3 ipwx 2024-02-15 17:15:22 +08:00 ![]() 不上 jit 的情况下 lua 很快,js 很慢 |
![]() | 4 westoy 2024-02-15 17:15:50 +08:00 早期 dhtml 时代 js 并不普及,PHP black book 作者公开在书里建议别用 js....... js 慢慢普及是 gmail 时代才开始的, 性能上去是 v8 出来后 而且 lua 和 luajit 爆杀........ |
![]() | 5 inroading 2024-02-15 17:19:11 +08:00 Javascript 只是在 Web 开发中占主导,Lua 可以很方便嵌入 mpv 这种桌面应用; Lua 更简单 |
![]() | 6 pursuer 2024-02-15 17:19:23 +08:00 只提性能,在不带 jit 的情况下,lua 的解释器实现是比 Javascript 更快的。不过好像也就 2-3 倍的样子 如果带 jit ,那一般 js 说的是 v8/node ,我看了下电脑里的 node 排除掉 node_module 是 62.6mb ,可能是考虑有点大吧。 |
7 dcsuibian 2024-02-15 17:22:52 +08:00 我觉得性能不是问题,主要是开发语言 比如 Postman 包含一个基于 Node.js 的运行时,自然就会支持 Javascript 脚本 如果是 C/C++开发的程序,那 Lua 或 Python 脚本就挺正常 |
8 drymonfidelia OP @pursuer 纯 V8 看起来也没多大,我看 Microsoft.ClearScript.V8 才 768KB |
9 drymonfidelia OP @dcsuibian 如果我要给用 C#开发的跨平台程序加入脚本功能,Lua 还是 JS 更合适?看起来 Jint 相比 Lua 的解析器更成熟 ( V8 那个好像不能跨平台) |
![]() | 10 icyalala 2024-02-15 17:45:18 +08:00 如果从开发者(而不是脚本使用者)的角度来看,Lua 显然是更容易集成的。 纯粹的 C89 ,代码量非常少,编译超简单,想怎么集成就怎么集成,也不用考虑 C++ 和跨平台之类的各种问题。 License 也是 Public Domain 的,没有其他顾虑。 如果把 JS 要用在脚本语言,还是看看 quickjs 吧,至少体积和使用难度比 v8 小多了。 |
11 kneo 2024-02-15 18:21:38 +08:00 via Android 开发者友好,安装包体积友好。 |
12 lijiangang886 2024-02-15 18:21:48 +08:00 为什么 lua 在游戏开发中应用普遍? - 韦易笑的回答 https://www.zhihu.com/question/395593519/answer/2738722877 总之就是 quickjs 出来的太晚了 |
![]() | 13 Trim21 2024-02-15 18:41:13 +08:00 via Android ![]() 额,你们都在说什么,mpv 支持 js 脚本啊… |
![]() | 14 june4 2024-02-15 18:58:00 +08:00 lua 比 js 快?我不能相信 |
15 ly841000 2024-02-15 19:05:21 +08:00 @drymonfidelia #8 这个只是包装的 DLL 大小,真实大小是 runtimes 目录下的 有 20 多 M |
![]() | 16 phrack 2024-02-15 19:23:46 +08:00 via iPhone ![]() Javascript 程序员收收味,真是哪里都能看到你们。这垃圾语言设计的时候就没整好,要不是碰巧是给浏览器绑定早死绝了 |
17 drymonfidelia OP @Trim21 自带的脚本都是 lua 写的 |
18 lijiangang886 2024-02-15 19:47:05 +08:00 ![]() @phrack #16 原文:“Javascript 程序员收收味,真是哪里都能看到你们。这垃圾语言设计的时候就没整好,要不是碰巧是给浏览器绑定早死绝了” ====== 回复:你说得对,但 lua 也不比 js 好,甚至更烂,要跟 lua 比烂那估计得把 php 搬出来 |
![]() | 19 ikas 2024-02-15 19:47:54 +08:00 说到底它还不支持 Lua5.2 呢 这种纯粹开发喜好问题 |
![]() | 20 vincent7245 2024-02-15 19:49:44 +08:00 1 lua 不算小众 2 lua 至少比 js 语法更友好 |
22 starrycat 2024-02-15 20:34:47 +08:00 via Android 得看历史性能数据吧,我猜 mpv 使用 lua 时应该比 js 更普及和性能更高吧,就算现在 js 更好,现有代码够用为什么要换? |
![]() | 23 Al0rid4l 2024-02-15 21:23:44 +08:00 论性能, JS 和 Lua 其实差不多的 论生态, JS 大得多 论语法, 都是动态弱类型, Lua 的索引默认 1 开始真没看出来哪里友好了, 异步语法更不用说 JS 的确丑陋, 但 Lua 和优雅也不搭边, 搁这吹 Lua 的还是歇歇吧 用 Lua 的考量基本上只会是体积小和容易集成 |
![]() | 24 wolfan 2024-02-15 21:47:02 +08:00 首先,这事得结合时代来看。 lua 的时候,存储空间还是寸土寸金,而 lua 就那么点大,使用 lua 有存储上的优势。 其次是当年 C 大行其道,用 lua 辅助不是很正常。 最后是强大的惯性作用。 所以用 lua 没毛病嘬。 |
![]() | 25 lambdaq 2024-02-15 23:24:44 +08:00 为啥不用 Emacs Lisp ? |
26 sunzhuo 2024-02-16 00:18:19 +08:00 Lua 的语法还是很简单的,集成也简单。 |
![]() | 27 stimw 2024-02-16 02:41:15 +08:00 via Android @phrack 你 17 年的帖子: “ 楼主玩过不少语言,目前主力 python 。 经常因为项目需要会要写 java 和 js ,但是为什么我一直觉得 java 和 js 非常机车啊! java 脱离 IDE 根本没法写,有 IDE 也是一大坨一大坨,看的人眼睛疼,js 我尝试了三次去熟悉这个语言,每次都是玩到想哭,真的,就是想哭,为什么到处都是回调,我根本不明白整个程序的流程到底是怎么走的? 谁能帮我脱离苦海?! ” 合着你 7 年过去了零进步呗。js 黑也没黑到点上,回调函数也能黑,这辈子就只会写 python 是吧... 当年还是正常就事论事只说语言,现在倒学会打地图炮喷整个群体了。 |
28 dnfQzjPBXtWmML 2024-02-16 02:48:16 +08:00 via Android Lua 解释器简单啊,在单片机上都能用 |
![]() | 29 Cookmilk 2024-02-16 03:13:16 +08:00 via iPhone Lua 轻,啥叫轻。就是功能少。 |
![]() | 31 HaroldFinchNYC 2024-02-16 05:07:59 +08:00 Lua compiler 很小,可以整合到软件里 |
32 MetroWind 2024-02-16 05:31:05 +08:00 ![]() 没事谁愿意用 Javascript 这破玩意 |
![]() | 33 yf215 2024-02-16 08:48:49 +08:00 via Android Quickjs 相对 luavm 性能还是差点,不过现在很多项目都是集成 quickjs 了。 |
![]() | 34 rrfeng 2024-02-16 10:05:35 +08:00 via Android 小巧,不能玩花有时候也是优势。 你整个 js 进去,随便拉个库 import 几十个 modules… 说大项目不好重构的,不适合 lua 就是不适合,别强行用。 |
![]() | 35 pursuer 2024-02-16 10:28:52 +08:00 @lijiangang886 @Al0rid4l lua 的设计我觉得不算差吧,索引为 1 只是规范问题,和多数语言不一致。_ENV upvalue 设计我觉得比 js 好,可以防止变量泄漏到全局,而且运算符的一致性也更好一点,例如经典 js 的==,虽然现在基本都用===了,js 用+做字符串连接,其他符号又转换为数字计算。lua 还支持有栈协程,也更灵活一些。lua 设计的时候就考虑尽可能快,所以排除 jit 的话有兼容性负担的 js 上限大概是达不到 lua 的水平的。 但说到底这些设计上的差异并没有多大影响,js 优势就有非常强大的兼容性和生态,语法糖也更甜。这就足够了。 @drymonfidelia 9# 如果考虑 js 的话,有个 txiki.js 的项目可以看看,quickjs 基础上增加了一些 web api 支持 如果脚本可能很复杂的话我觉得考虑下 rpc ,类似 Language Server Protocol 这样的 |
![]() | 36 jsq2627 2024-02-16 13:13:34 +08:00 via iPhone v8 的 embedding 难度比 lua 高多了 |
37 mengzhuo 2024-02-16 21:41:56 +08:00 最近在实现 js 相关的解析器,发现要是现实的语法功能对比其他语言实在是太复杂了。 而这些都是嵌入脚本式语言要避免的地方,尽量简单并能完成工作。 |
![]() | 38 Al0rid4l 2024-02-16 22:24:13 +08:00 @pursuer "和多数语言不一致" 这就是不友好, 不然 Brainfuck 都能说自己友好, 每个语言的槽点都能说是规范问题, 毕竟谁还没个规范了 上限是达不到 Lua, 不过主流解释器/编译器都带 JIT, 每个都有好爹, 实际情况就是 JS(JIT)和 LuaJIT 差不多, 但你把人家好爹排除了 |
![]() | 39 kaiveyoung 2024-02-16 22:43:15 +08:00 via Android 你如果写过就知道了,Lua 和 C/C++集成互相调用非常方便,甚至都不用拷贝变量,直接使用 Lua 访问原生 C++对象。而且一个 5M 大小的 C++程序,在 600MHz 主频,128M 内存的嵌入式设备上运行 |
![]() | 40 ZhiyuanLin 2024-02-17 01:09:23 +08:00 你嵌入过就知道,lua.h 比 v8.h 的 API 好用多了…… |
41 byzod 2024-02-17 16:13:56 +08:00 via Android 你是浏览器大战的时候没关注吧, 那时候的 js 性能只能用一坨屎来形容 什么拳打 lua 脚踢 native, 都是卷出来的 |
![]() | 42 tywtyw2002 2024-02-18 08:34:36 +08:00 via iPhone ![]() lua 快啊 程序插件脚本,基本上只需要实现基业务逻辑就行了,剩下的函数去 call api 。性能什么,并不拼浮点计算。 lua 不爽的就是没原生 class ,table 有时候让人很头痛,还有就是 string 操作还是很原始。 写 wow ,neovim 插件,你发现大部分操作都是 if else 然后 call api 。性能相关的函数都是 call c api 去解决的。 |
43 mudssky 2024-02-18 10:17:30 +08:00 mpv 几年前我开始用的时候就支持 js 脚本了,我写 mpv 脚本都是用 ts 然后编译到 es5 就可以了。 |
44 rockcat 2024-02-18 11:15:32 +08:00 用 Lua 主要是 runtime 小巧,js 的 runtime 太大了。 |