找回密码
 立即注册
楼主: 万胜

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

[复制链接]
发表于 2020-12-23 13:28 | 显示全部楼层
因为在Lua里面,原先由C++编译器来负责的类型检查,都需要程序员用自己的大脑来检查,所以如果按照使用C++的思维来使用Lua,就会发现,大脑凭空多了一笔类型检查相关的庞大负担,自然觉得Lua太不严谨、用起来太累人了。
如果能把思维放开,不要太在意那些细节,把脚本运行出错看成是另一种形式的自动类型检查,就可以轻松很多了。
发表于 2020-12-23 13:30 | 显示全部楼层
因为Lua就是比C艹好写啊
Lua你不需要关注对象的回收,甚至连回环他都能回收
你可以把table当作类使用,可以当作数组使用,可以当作结构体使用
table还可以方便的指定各种元表,_index,_newindex 等访问规则
至于这些元表如果你觉得不好用,你甚至可以完全不用它们啊
C艹几年就出一个新版本,前几个版本的新特性都还没掌握就又来新的了 永远都学不完 指针跑飞了 内存泄漏了  都说不准
但真要说lua比不上的,应该就是调试,脚本的调试比起java c++等 还是缺乏那样强大的ide
发表于 2020-12-23 13:36 | 显示全部楼层
为什么现在会改变想法呢
那是因为,我好好地反思了一下我用lua这10年,
我到底精通lua了吗?
事实上,我用lua写的代码量,甚至操作了c++
我可以这么说吧,lua真的很难。难度超过了c++、
别问我为什么,我用了10年想要精通lua,结果我在使用的时候,
利用搜索引擎,毫不动脑,结果前8年思维都是僵化的。
为什么最近2年好点呢?因为搜索引擎搜不到了。我开始自己去探索新的写法。
我最近已经萌生改动lua的想法。懂吗?这就是精通!
改得lua的妈妈都不认识它了。


本帖子中包含更多资源

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

×
发表于 2020-12-23 13:38 | 显示全部楼层
我感觉你是因为C++学的太多,太关注写出来的东西的机器友好性了。
而对很多不太熟悉计算机,而更关注业务逻辑的人来说,lua确实比C++简单,只需要关注我要的数据是什么,怎么能获取到,怎么能存起来,然后要怎么处理一下。
你说的对Lua语法滥用造成代码看不懂,不好调试的问题确实是存在的,但是要和C++比的话,那也要同一个级别的来比较。以C++的灵活性,如果滥用的话,写出来的东西会更难懂,更难调试。
所以,总体上来说,Lua确实是比C++要简单的。然后,约定一套编程规范也是必须的。


另外一点我是深有体会的,Lua的门槛虽然低,任凭哪个智商正常的人学个一个星期,都能开始写些实用点的业务逻辑了。但是对我来说,并不太喜欢用它写太复杂的东西。C++的很多错误都可以被编译器检查出来,而lua只有运行到了才知道会不会发生错误,比如变量名拼写错了,多了一个,少了一个字母,某个字母大小写错了,这些问题都很头疼,程序规模小还好,检查下代码就能发现大部分;但是如果规模稍微大一点,分支稍微多一点,人的检查有遗漏的概率就开始增加,对最终程序的信心就要依赖于大量不同分支的测试。
发表于 2020-12-23 13:40 | 显示全部楼层
个人觉得,lua和C++是很难比较的,动态语言和静态语言的设计目标不一样,即他们适合的领域是不同的,适合C++的地方压根用不了lua;适合lua的地方也通常不会想去用C++实现。所以如果总结成:简单的业务适合用lua开发,复杂的需求适合用c++开发,可以理解为Lua【开发业务】比C++【完成需求】简单。
而别人说的简单,另一方面,通常是容易上手:比如同是从网上下载一份代码,lua直接可以run,而C++、特别是带vs的solution那种,可能要配半天环境还不能编译;换个OS,又不能编译;甚至换个编译器版本就不能编译了。。。初学者当然觉得是lua简单。
关于lz提到的几点:
1.ide等工具的支持,从语言层面。lua基本靠肉眼识别,各种table写起来爽,读起来万分痛苦;而c++有足够好用的ide,加上静态语法检查,相对容易阅读。
2.业务的复杂程度。语言像地基,简单的业务像平房,可能一个人月就可以搞完;复杂的业务像摩天大楼,需要很多人共同参与,合作的复杂度和业务本身的复杂度已经超过了语言本身。从已有的游戏业务研发经验来看:为一个团队制定lua语言的使用规则是非常重要的,即人为的加入许多lua本身不一定提倡的限制,来降低团队成员合作的复杂度。
3.lua和c++都有炫技的人,c++的奇技淫巧只怕比lua更多更没上限,不过多阐述。但是能把代码写得让别人读懂,也让未来的自己读懂,其实和语言本身的语法啊语法糖啊没什么特别大的关系。。。
发表于 2020-12-23 13:44 | 显示全部楼层
狂野的力量~!!你驾驭不住~!!




楼上都答的差不多了 我来抖个机灵
发表于 2020-12-23 13:52 | 显示全部楼层
开发项目总是分人的,底层框架怎么复杂怎么玩都是核心人员的事情(拿C, C++做核心,Lua做应用层也一样),评价好不好用应该看写应用层的。应用层或者业务层需要学习的越少,业务逻辑占代码的比重越高,那么这语言越简单,从这个角度而言,Lua肯定是比C++简单的。


Lua的元表,环境等提供的可定制性很高,全强类型方式编程也是可行的,这算是一门半完成的语言,而剩下的一半纯看应用平台的核心设计人员打算如何使用它。我现在用Lua遵循一个规则,框架强类型OOP,应用层FP,只要确保写应用时不需要使用元表等技巧,那么可读性和调试都就都不是问题。
发表于 2020-12-23 14:00 | 显示全部楼层
那些说lua简单的,先实现一个将lua表序列化和发序列化的库再说。
你看看写出来是不是要数千行和数周。(那些认为分分钟就可以写出的,我连看都不用看,肯定爆栈,没有考虑表的循环引用,没有考虑浮点数的nan,没有考虑定向输入输出流等问题……)
lua这不叫简单,这叫简陋。
发表于 2020-12-23 14:01 | 显示全部楼层
1、语言难易,跟学习成本有关。C++开始一个Helloword需要好多知识的,编译环境开发环境都很复杂,相对lua就简单多了。
2、Lua类型太自由,可以通过名字来得到区别,只要命名规范,这个根本不是问题。
3、c++有类、对象、指针、线程,完全掌握还是需要蛮久的
发表于 2020-12-23 14:07 | 显示全部楼层
不太确定提问者如何定义难易。如果以清晰易跟踪论,静态语言在类型上是有天然优势的;如果是写起来顺手,动态语言又会更胜一筹;至于学习成本,语言细节显然是C++更复杂,这就不赘述了。
以前看某个答案说的很好,“面向应然编程而不要面向实然编程”。如果一门语言为实现某个目标,需要付出更多精力去了解更深层次的事情,那么它的学习成本可以认为是更高的。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-24 10:19 , Processed in 0.097797 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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