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

2020-02-04 13:27:41 +08:00
 jam1024

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

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

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

为何 Lua 没流行起来呢

8970 次点击
所在节点    程序员
46 条回复
chuxiaonan
2020-02-04 16:34:19 +08:00
说到胶水语言 我第一时间想到的就是 perl/awk/sed/bash/zsh/csh/ksh/各种 shell

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/642047

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX