当前位置:  开发笔记 > 编程语言 > 正文

TCL vs Lua - 编写mmo服务器脚本

如何解决《TCLvsLua-编写mmo服务器脚本》经验,为你挑选了5个好方法。

我有一个c ++服务器端项目,我需要嵌入某种脚本.它是在线MMO类型服务器的一部分.我有使用TCL的丰富经验,看起来很自然.我在游戏开发日里做了少量的Lua,我想知道这对于嵌入式脚本来说是不是更好的语言.学习一门新语言也很不错.TCL与Lua的相对优势和劣势是什么?谢谢!



1> RHSeeger..:

老实说,他们都非常适合这项任务.两者都很容易嵌入到应用程序中,并且具有相当简单的语法.我知道在Tcl中添加新命令(与应用程序交互)非常简单,我告诉Lua也非常擅长这种类型的事情.

我的建议是和Lua玩一会儿来看看你喜欢它(因为你已经知道了Tcl)......然后选择一个让你觉得最舒服的那个.如果你正在编写大部分代码,那么你最终会使用它,所以你也需要一些你可以使用的东西.最后,对于最终用户来说,两种语言选择应该相当容易.

我的个人偏好是Tcl,因为我不喜欢Lua(我为魔兽插件做了大量的编程)因为我喜欢Tcl(我已经为它做过很多编程私人工作).

编辑:添加了关于最终用户都很容易的说明.得到了2票,除了没有澄清我的陈述的部分内容之外,我想不出其他任何可能的事情.



2> Kylotan..:

我猜我在那里与RHSeeger相反.我已经在游戏中使用了Lua和TCL(在线游戏,偶然),如果我有选择的话,我不会再用10'的bargepole触摸TCL.我非常主观的看法是,Lua是一种理智的语言而TCL则不是.相对于脚本语言的其他选项,TCL语法对于大多数人来说都非常模糊,包括所有set和expr以及美元符号和大量括号等.它唯一的客观好处是易于嵌入 - 但是Lua并不吝啬那部门要么.

如果这个脚本界面纯粹是为了你,那么你也可以选择TCL,因为Lua不会为你提供任何新东西(除非你的对象取向).在技​​术熟练的用户手中,TCL是一种合理的工具.但是,如果您希望经验较少的用户使用该系统,那么请使用Lua - 更简单的语法将为他们带来很多生产力.


我同意RHSeeger关于"你对Lua说的话我会说Tcl"的评论.你(kylotan)说你认为Lua对经验不足的用户更好,但我也认为这是倒退的.Tcl IMO的主要问题是有经验的程序员带着太多的包袱 - 对语言如何运作的期望.Tcl因其简单而非常规,但简单就是它的优势.您需要了解的有关Tcl的所有信息都可以在一个网页上表达.
我觉得很有意思,我们可以有这样的相反意见.你说的所有东西都让Lua比Tcl好,我说Tcl比Lua好.对我来说,Tcl语法比Lua等更清晰,更明显.
这即将陷入"语言战争".我认为这是一个适合工作的正确工具,而且,除了语法之外,这种情况下的两种工具几乎同样适合,但在我看来,Tcl因其成熟而获胜,因此它的库; 事实上,Lua在这个部门看起来很出色.至于语法,是的,Lua可能看起来更熟悉,几乎是Basic/Python-esque,而且确实可能​​是一种力量.但对于那些只触及Tcl表面的人,我恳请你:刮得更深.当你"得到它"它实际上与"获得"Lisp或Haskell处于同一水平.
哦,并且在库点上 - 通常对于游戏脚本而言,出于性能,维护或安全原因,您明确不希望将任何外部库公开给脚本.这一切都取决于谁将编写脚本,并希望这是原始海报将考虑的事情.

3> RBerteig..:

Lua C API非常易于集成到应用程序中.从C,您可以完全访问Lua状态及其本机数据类型.例如,我建议使用Lua来获取哈希表的实现,即使不需要编写脚本.

用C编写的Lua函数可以作为全局名称注入,像大多数标准库函数一样收集在表中,或者在DLL中实现并在运行时动态加载.这允许应用程序提供稳定的API,以及支持用Lua或C编写的插件.

Lua作为一种语言非常强大,支持功能和面向对象的编程风格.它还具有令人惊讶的轻量级:完整的源代码工具包和完整的文档适用于1 MB以下,并且DLL中的整个VM,编译器和标准库在Windows上仅为164KB.

从版本2开始,我没有认真检查TCL ......我不会试图以具体方式对它们进行比较.我相信它们都是为了适应相同的利基而发明的,并且大约在同一时间.它们当然都是具有狂热用户社区的成熟语言.



4> George Jempt..:

我怀疑Tcl会有更多的库,你可能会发现这些库是必要的或方便的.



5> SingleNegati..:

正如其他人所说,两种语言都能很好地运作.第三种选择也可能同样适用于JavaScript,因为它适用于大致相同的利基市场.而不是试图劝你去找其中一个(因为我非常喜欢这两种语言),我会尝试着眼于一些客观的差异,并指出我认为一个领先于另一个的地方.

游戏服务器中最重要的问题可能是原始性能.这两种语言都是成熟且经过优化的,但两者都认识到,通过推迟编译代码可以最好地优化某些问题.两种语言使用基本相同的机制来执行此操作.从语言本身的角度来看,看起来Lua的速度要快一些.链接

从图书馆的角度来看,这是下一个重要因素,两种语言都不需要使用任何图书馆.与Java等需要大型运行时库有用的语言相比,这两种语言都非常紧凑; 同样,这是他们原始设计要求的结果.这两种语言都有丰富的附加库可供选择,但至少我的印象是TCL在这一类别中有更多的变化.tcl :( Tcl扩展存档/Tcl扩展存储库)lua:(LuaForge)

另一个区别在于核心语言本身.两种语言都重视简约而非风格,但这就是相似性结束的地方.Lua使用大多数程序员可能熟悉的语法,使用非常简单的上下文无关语法.TCL语法也很简单,但与其他现有语言没有任何共同之处,尽管它看起来有点像unix shell语言.Tcl可能只对非程序员更容易,因为它的面向行的命令语法非常清楚,但是在其他语言中经验丰富的程序员通常会反对其神秘的语法.在代码生成方面,两者都不是非常宽容,但两者都具有强大的元编程功能(可比,但可能不像CLISP宏那样健壮).

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有