• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jam1024
V2EX  ›  程序员

Lua 还是 Python 关于胶水语言的选择

  •  
  •   jam1024 · Feb 4, 2020 · 11241 views
    This topic created in 2464 days ago, the information mentioned may be changed or developed.

    在会第二门编程语言和主要用第二门编程语言的前提下

    个人感觉 Lua 更好,上手容易,轻量,快速,Runtime 体积小,部署容易,跟其他语言缝合也容易。

    而 Python 则有点拖泥带水,Runtime 有点体积,还有分 Python2 和 Python3。

    为何 Lua 没流行起来呢

    46 replies  •  2020-02-11 14:56:55 +08:00
    zhuangzhuang1988
    zhuangzhuang1988
    Feb 4, 2020❤️10
    1
    因为培训班不教
    nightwitch
    nightwitch
    Feb 4, 2020
    2
    lua 从一开始的定位就是一种嵌入式语言,用于嵌入在大型应用里提供方便的脚本操作。而 Python 的定位是通用编程语言。
    wangyzj
    wangyzj
    Feb 4, 2020
    3
    因为 lua 的场景和他的优点都决定他最好是寄生在别的东西里面
    jugelizi
    jugelizi
    Feb 4, 2020
    4
    py 可以独立运行啊
    lua 太轻量了 完全不是一个方向的比较
    pursuer
    pursuer
    Feb 4, 2020 via Android❤️1
    5
    标准库越完善越容易流行 ,轮子好造,python java node.js go 都是如此
    rb6221
    rb6221
    Feb 4, 2020 via iPhone
    6
    没标准库,也就是“太”轻量了
    df4VW
    df4VW
    Feb 4, 2020❤️1
    7
    这个评判标准的话,perl 不是更美滋滋?
    SPACELAN
    SPACELAN
    Feb 4, 2020
    8
    我们把 v8 引擎嵌入到了 java,php,golang,python。就是看上了 js 的灵活和工具库丰富
    tab
    tab
    Feb 4, 2020
    9
    最常见的 Web 开发 Python 直接用的也不多,这两年基本是被机器学期带火的(之前 Torch 框架也有用 lua 的,然而已经凉了)。Lua 在游戏开发中很常见,底层定了,上层的业务逻辑大都用 Lua 实现。两者做比较,Lua 的生态差太多,不同的应用场景想用要么得自己造很多轮子要么就要多种语言混合使用,而 Python 基本什么都能找到现成的,现在已经形成马太效应,学习成本和方便程度不可同日而语了。
    designer
    designer
    Feb 4, 2020
    10
    python 支持性挺好的,很多 arm linux 机器都内置了.玩起来也方便
    love
    love
    Feb 4, 2020
    11
    js 更好
    chenyu0532
    chenyu0532
    Feb 4, 2020
    12
    lua 主要的应用场景是游戏里,业务逻辑用 lua 实现很方便,不过出了游戏圈生态差了很多,还是 python 比较好
    jam1024
    jam1024
    OP
    Feb 4, 2020
    13
    @jugelizi 常用的库都有吧, 还是不行,为何不用第三方语言实现,要用胶水语言
    abcbuzhiming
    abcbuzhiming
    Feb 4, 2020
    14
    lua 才不是胶水语言好不好,你要找胶水语言那 python 是唯一选择,人家和各种语言都能胶水起来,库又多。lua 最多还是和 c 交互,游戏领域用的多(暴雪的 wow 带起来的)
    bomb77
    bomb77
    Feb 4, 2020
    15
    只当胶水可能 lua 确实更轻量方便,但是 python 轮子多,做其他事情更方便
    lenghonglin
    lenghonglin
    Feb 4, 2020
    16
    python 轮子多,就这点好。python 的轮子 lua 也能实现,只是没人来做
    youxiachai
    youxiachai
    Feb 4, 2020
    17
    现在有 quickjs....
    感觉还是 js 方便....
    classyk
    classyk
    Feb 4, 2020 via iPhone
    18
    从目前请快来看,LUA 真是可以说完全定位在胶水语言了。python 则可以非常简单且单独处理非常多的任务
    wd
    wd
    Feb 4, 2020 via iPhone
    19
    你觉得 lua 不流行只是觉得没人用来做 web 吧?
    pythonee
    pythonee
    Feb 4, 2020
    20
    lua 和 schema/lisp 的软件构建方式似乎有很多相似之处
    用 c/c++开发需要性能偏高的底层内核或引擎,然后上层应用用 lua 和 scheme 来快速开发,这样可以平衡性能和开发效率。还有些是将 scheme 先转译成 c 语言,将动态变静态

    所以,我觉得 lua 似乎更像是嵌入式语言,而 python 似乎脚本语言
    chuxiaonan
    chuxiaonan
    Feb 4, 2020
    21
    说到胶水语言 我第一时间想到的就是 perl/awk/sed/bash/zsh/csh/ksh/各种 shell

    话说回来 我个人觉得只要用着顺手就行 没必要纠结到底用啥
    (我还见过用 Matlab 当胶水语言的呢。。。震惊 各种*.m 刚开始还以为是 oc,点开一看这不 Matlab 吗乖乖
    不过用 oc 当胶水语言的也挺奇葩的
    ntdll
    ntdll
    Feb 4, 2020
    22
    胶水的话,还是 python 更好一些,但是就嵌入式环境来说,我觉得 lua 也就那样,语法略显诡异,说 runtime 体积小,但现在多数情况下,对体积要求并没有那么敏感,相比之下 JavaScript,入门门槛可比 lua 低多了,是个人过来学半小时,都能写点东西。
    laoyur
    laoyur
    Feb 4, 2020
    23
    头像好评
    Chry3anthemum
    Chry3anthemum
    Feb 4, 2020
    24
    显然 perl
    waruqi
    waruqi
    Feb 4, 2020 via Android
    25
    lua 很给力
    mattx
    mattx
    Feb 4, 2020
    26
    定位问题
    1 python 生态更强大,要啥都有现成的库,语法优雅,但是 runtime 占用,解释器全局锁都是问题。
    2 lua 定位嵌入式语言,就是 api 和 库 尽可能少,需要宿主语言去实现,这样的话可定制性好,有 luajit 效率也高。
    jam1024
    jam1024
    OP
    Feb 4, 2020
    27
    @mattx 是的,lua 写点小脚本或者缝合其他语言,或者缝合其他组件的确不错,轻量快速。
    exceptionplayer1
    exceptionplayer1
    Feb 4, 2020
    28
    我也不喜欢 python,需要安装各种包,特别是生产环境在没有权限的情况下很坑。
    所以我用 go,本地写好编译完直接可用~ 用起来很爽
    ysc3839
    ysc3839
    Feb 4, 2020 via Android
    29
    我觉得是第三方库不多,lua 应该类似 js 是跑在受限沙箱里的语言,但 Python 虽然可以嵌入,但是仍然不受限制,可以访问系统资源。
    再加上 lua 往往比 js 引擎轻量,所以 lua 常被用于需要在受限环境中运行,又需要轻量要求的环境。比如给游戏写脚本之类的。
    jam1024
    jam1024
    OP
    Feb 4, 2020
    30
    @ysc3839 我觉得不能这样说,因为 python 的实现复杂,所以嵌入也不一定完善,可能会出各种各样的问题,而 lua 的实现相对简单一点,嵌入的实现也更容易很更快的达到稳定
    jam1024
    jam1024
    OP
    Feb 4, 2020
    31
    @exceptionplayer1 然后因为国内网络比较垃圾,稍微拖点国外的东西,9、10MB 的文件都可能会卡壳,而 Lua 则最大打包起来不过 2、3MB,直接秒下,很快就部署起来了。
    ysc3839
    ysc3839
    Feb 4, 2020 via Android
    32
    @ysc3839 Node.js 出来之前 js 和 lua 差不多,都是嵌入一个软件中使用,因为是一个受限的环境,单独跑的话没法访问系统资源,可以做的事情不多。
    Python 则不一样了,单独跑就能实现很多功能,即便是嵌入使用也不受限制,可以用来扩充主程序的功能。
    假如你写一个游戏服务器,想把游戏统计数据实时上传到某个接口,用 lua 或 js (不是 Node.js) 的话,你得自己给这些语言扩充相关的通信功能,而用 Python 的话这功能就是自带的,可以直接使用一堆轮子。
    ysc3839
    ysc3839
    Feb 4, 2020 via Android
    33
    @jam1024 这是看用途的,如果不为了 Python 那么多现成的库,那使用 js 或者 lua 这种设计就是嵌入的语言当然更合适。但是如果需要那些功能就不一定了。
    crella
    crella
    Feb 4, 2020 via Android
    34
    lua 轮子太少,好像没什么写 web 的框架,所以新手程序员一般不先学这个……
    robertredd
    robertredd
    Feb 4, 2020 via Android
    35
    不要纠结语言了 看实际用途吧!
    paoqi2048
    paoqi2048
    Feb 4, 2020
    36
    你可以将 lua 理解为 minipy
    GuangXiN
    GuangXiN
    Feb 4, 2020
    37
    lua 这种弱鸡还有人用
    juzipeek
    juzipeek
    Feb 4, 2020
    38
    wrk, OpenResty, ats, redis 都使用 lua 来扩展功能
    ofooo
    ofooo
    Feb 4, 2020
    39
    @SPACELAN v8 引擎嵌入到 python 是什么意思?
    thedrwu
    thedrwu
    Feb 5, 2020 via Android
    40
    选择用 python 做胶水或脚本很大原因是有 numpy 的加成。
    不然 lua / tcl / scheme 甚至 vb 都轻巧易学。
    no1xsyzy
    no1xsyzy
    Feb 5, 2020❤️1
    41
    什么时候把 lua 当胶水了? lua 不是主点的嵌入吗?

    还有,语言的流行是具体应用的流行。
    C 的流行是 Unix 的流行。JavaScript 的流行是浏览器的流行。
    其他也有通用性因为多种应用多次流行的。
    纠结语言的落地没意义,因为这和语言本身的性质甚至其实现的好坏无关。
    avv
    avv
    Feb 5, 2020
    42
    JS +1
    V69EX
    V69EX
    Feb 5, 2020
    43
    lua 真的很容易学,前段时间,在完全不会的情况下,花三天时间,给 mpv 写了个脚本,用来切换 iptv 直播源的播放列表(频道切换)。
    hanguofu
    hanguofu
    Feb 11, 2020
    44
    @V69EX : 厚着脸皮求脚本 :D 谢谢!
    V69EX
    V69EX
    Feb 11, 2020
    45
    @hanguofu 没问题,给你贴上网了: https://paste.centos.org/view/12cada0c

    只需要打开源码,设置一下 iptv 播放列表文件(比如 xxx.m3u8 )的全路径就行,变量后面有注释。
    V69EX
    V69EX
    Feb 11, 2020
    46
    把这文件放在~/.config/mpv/scripts/目录下,修改~/.config/mpv/input.conf,加上:
    F6 script-binding iptv

    当然,这个热键你可以自己随便定义。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2126 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 129ms · UTC 16:22 · PVG 00:22 · LAX 08:22 · JFK 11:22
    ♥ Do have faith in what you're doing.