找回密码
 立即注册
查看: 1541|回复: 20

为什么很多人觉得Lua比C++简单?

[复制链接]
发表于 2020-12-23 12:43 | 显示全部楼层 |阅读模式
为什么很多人觉得Lua比C++简单?
发表于 2020-12-23 12:52 | 显示全部楼层
因为的确比较简单。比如我最近在写一本书,《自己动手实现Lua:虚拟机、编译器、标准库》,目前初稿已经写完了,预计下半年出版。由于Lua很简洁,所以才有可能在一本不太厚的书里面同时覆盖虚拟机,编译器和标准库这三个主题。你换成C++试试。(注:书已经于十月底出版)
发表于 2020-12-23 12:56 | 显示全部楼层
因为Lua就是比C++简单啊,这有什么疑问吗?


觉得反之的,把元编程、模板编程、C++11、C++14等等全部撸下来,跟Lua一本宝典就能包打天下的对比一下。


Lua更多灵活的地方在元表、扩展里面,提供了接口给用户来实现自己想要的功能,但是这些本身并不难。


C++是提供了N多范式,你需要一个一个的来学习。
发表于 2020-12-23 12:57 | 显示全部楼层
谢邀。


我觉得题主你所理解的简单是有问题的。讲道理 Lua 实现了一个几乎最小而且完整的动态语言核心。而所谓的metatable这种灵活的东西,也更是为了减轻额外的一些设计负担采取的约定性的东西。但是这种灵活性拿出来不是给任何人都能用的,必然也要做一些取舍和限制。


另外至于所谓的 C++ 的规则和限制什么的,BS 当年都说过,C++ 是不会限制使用者的风格的,也就是说,钦定了你可以自由自在的瞎jb写,而且标准委员会会给你语言特性级别的支持。


于是瞎jb写你用 Jawa 也能写出非常难调试的代码,所以这只能说是人,或者说团队协作的问题,不能怪到语言上。毕竟 C++ 配合 structural typing 也一样写的出来不好跟踪的代码(不好跟踪的一个原因甚至是根本都不给你调试的机会,比如模板)。


关于那个类比,我觉得更是没道理。如果说 Lua 是围棋(如果我没有理解错你的意思),那 C++ 其实是在围棋棋盘上用黑白子实现了的围棋+象棋+军棋+跳棋。你玩起来觉着像象棋,是因为你只了解了象棋的规则而已。


另外可以建议题主了解一下 Lua 社区的一些其他工具,有些是加了 gradual typing 限制的(类比 TypeScript 之于 JavaScript),也许能够某种程度上满足你的需求。


以上。
发表于 2020-12-23 13:03 | 显示全部楼层
同感,的确是Lua比C++难很多,我抄写了3.0,4.0,5.1三个版本的Lua源代码后仍然不知道怎么才能方便地编写和调试Lua,所以我们写了个Lua集成开发环境: LuaPerfect
非插件,无需配置,调试不降帧,腾讯公司出品,已更新66个版本,支持ULua,ToLua,XLua,SLua,Cocos,SLua-Unreal等,更多精彩等你来探索: https://luaperfect.net

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2020-12-23 13:11 | 显示全部楼层
因为你在用C++的套路去写Lua,关键你是还想用C++的思路去理解Lua。最关键的地方是你C++学得还不够,理解都没到位。
Lua的一个很好用的地方就是metatable,你偏偏不去用,唉。
C++也有很多鬼画符的写法,你大概是没见过。
发表于 2020-12-23 13:13 | 显示全部楼层
确实说不清楚,大说说自己的理解吧。
这个问题比较的两门语言——偏偏是Lua和C++这两个语言。这二者都比较有争议,属于语言大战常见问题。


Lua这个语言在游戏界比较常用,关于规范性和灵活性的争议也比较大;C++这个语言则是复杂型语言的典范,支持多种编程范式。
Lua语言内核太小,C++语言内核太大,这二者恰好都触及到了用户的“不适区”。
这种“不适”表现为,如果你非常熟悉C++,那么突然换Lua可能会很难受;如果你非常喜欢Lua,对C++也会很难受。
所以我的观点是这两个语言恰好都太极致了,很难回答。
如果问题改为“为什么Python比C++简单”,就比较容易得到赞同了(当然还是有很多人不同意)。个人认为,Python在简洁之余没有丢掉太多规范性要素,思路相对Lua更“规矩”一些,处于用户的“舒适区”。


Lua个人使用还是很爽的,开发比较快(新手Debug技术需要磨练)。
而在协作时容易引起混乱的问题,解决方法是要做好代码审查和交流,等一段时间后大家都熟悉了、渡过了这段不良反应期,很快就能享受到这门语言的美好了。
而C++就属于需要长时间反复学习和练习才能掌握的好,但是这种代价可能是值得的,比如对编程的核心能力提升会有很大帮助。
发表于 2020-12-23 13:16 | 显示全部楼层
感觉上你是先入为主,学习了 C++ 之后,希望学别的语言也使用 C++ 那套思维方式,当出现不同的时候就觉得比 C++ 难。
如果更客观一些去比较难度,可能是让未学过这两种语言的人,学习并完成相同的题目,看看平均而言学习哪一个更快一些。
发表于 2020-12-23 13:22 | 显示全部楼层
lua的简单:牺牲的是运行时的效率,换来的是开发时的简单。优点:代码简洁,代码量少,因此而易于理解。代码少也就意味着容易维护、修改。缺点:编译期难以发现bug,问题不容易暴露。
c++的复杂:开发时的复杂,换来的是运行时的效率。优点:性能好,可以控制的细节多。很多问题在编译期就会发现。缺点:语法越发复杂,语言太丰富造成掌握起来困难,因此学习成本高,团队协作难以统一风格。
最好的方案是:变化小的核心部分用编译型语言比如C/C++完成。
变化频繁的业务部分用解释型脚本比如Lua、Python完成。
这就是简单与复杂的完美结合。
总结就是:同意题主的大部分观点,确实存在这些问题,所以,扬长避短、合理安排才是正确之道。
发表于 2020-12-23 13:26 | 显示全部楼层
我们一个几年的C++同事对python的评价跟你对lua的评价大致差不多。都用到了一个词“反人类”
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-22 01:41 , Processed in 0.094970 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表