![]() |
1
21
老实说,他们都非常适合这项任务。两者都很容易嵌入到应用程序中,并且具有相当简单的语法。我知道在TCL中添加新命令(与应用程序交互)非常简单,而且我听说Lua也非常擅长这种类型的事情。 我的建议是和Lua一起玩一会儿,看看你喜欢它(因为你已经知道TCL了)。然后挑一个你觉得最舒服的。如果你写了很多代码,你最终会使用它,所以你也需要一些你可以使用的东西。最后,这两种语言选择对于最终用户来说都应该是相当容易编写脚本的。 我的个人偏好是TCL,这是因为我不喜欢Lua(我已经为魔兽世界的Addson做了大量的编程工作),也是因为我喜欢TCL(我已经为专业和私人工作做了很多编程工作)。 编辑:添加了有关最终用户方便性的注释。得到了2票反对票,除了不澄清我声明的原因之外,我想不出还有什么别的原因。 |
![]() |
2
16
我想我和奥西格是对立的。我在游戏中同时使用了Lua和Tcl(顺便说一句,是在线游戏),如果我有选择的话,我不会再用一个10英尺的bargepole来接触Tcl了。我非常主观的观点是,Lua是一种健全的语言,而Tcl不是。相对于脚本语言的其他选项,Tcl语法对大多数人来说非常模糊,有所有的set和expr、dollar符号和许多方括号等。它唯一的客观好处是易于嵌入-但Lua在这个部门也不是无懈可击的。 如果这个脚本接口纯粹是为您准备的,那么您也可以使用tcl,因为lua不会为您提供任何新的东西(除非对象方向是您的东西)。在熟练的用户手中,TCL是一个合理的工具。但是,如果您希望经验不足的用户使用该系统,那么就使用Lua——更简单的语法将使他们提高工作效率。 |
![]() |
3
7
我怀疑TCL会有更多的库,您可能会发现这一过程中需要或方便。 |
![]() |
4
7
正如其他人所说,这两种语言都能很好地工作。第三个可能同样适用的选项是JavaScript,因为它与相同的利基环境相适应。我将试着把重点放在一些客观的差异上,并指出我认为一种语言比另一种语言优越的地方,而不是试图向其中一种语言求爱(因为我非常喜欢这两种语言)。 游戏服务器中最重要的问题可能是原始性能。这两种语言都是成熟的,并且都经过了很好的优化,但是它们都认识到,通过推迟编译代码,一些问题是最好的优化。两种语言使用基本相同的机制来执行此操作。从语言本身的角度来看,Lua似乎快了一点。 link 从库的角度来看,这是下一个大的因素,两种语言都不需要使用任何库是有用的;这两种语言都是非常紧凑的,相比于像Java这样的语言,这需要大量的运行时库是有用的;这又是它们原来设计要求的结果。两种语言都有大量的附加库可供选择,但至少我的印象是,TCL在这一类别中有更多的种类。TCL: Tcl Extension Archive / Tcl Extension Repository Lua: LuaForge ) 另一个区别是核心语言本身。两种语言都看重简洁而非风格,但这就是相似性的终点。Lua使用大多数程序员可能熟悉的语法,使用非常简单的上下文无关语法。tcl语法也很简单,但与其他现有语言没有任何共同之处,尽管它看起来有点像unix shell语言。Tcl可能只对非程序员更容易,因为它的面向行的命令语法非常清楚,但是在其他语言中有经验的程序员通常反对它的晦涩语法。在代码生成方面,这两种方法都不可原谅,但都具有强大的元编程功能(与clisp宏类似,但可能不如clisp宏那么强大)。 |
![]() |
5
6
LuaC API非常容易集成到应用程序中。从C可以完全访问Lua状态及其本机数据类型。例如,我建议使用Lua来获取哈希表实现,即使不需要编写脚本。 用C编写的Lua函数可以作为全局名称注入,像大多数标准库函数一样收集到一个表中,或者在DLL中实现,并在运行时动态加载。这允许应用程序提供一个稳定的API,并支持用Lua或C编写的插件。 Lua作为一种语言非常强大,同时支持功能性和面向对象的编程风格。它也出人意料地轻:完整的源代码包和完整的文档可以在1 MB以下的内存中使用,而在Windows上,DLL中的整个VM、编译器和标准库只有164KB。 我从第二版开始就没有认真检查过TCL……我不会用具体的方法来比较它们。我相信他们两个都是为了适应同一个生态位而被发明的,而且几乎是在同一时间。它们当然都是成熟的语言,拥有狂热的用户社区。 |
![]() |
6
0
Lua有 LuaJIT 它是一个JIT编译器,在紧凑的循环中达到C速度,用于 Snabb Switch ,其中性能至关重要(snabb可以处理千兆比特/秒,全部通过luajit处理)。Luajit还有一个易于使用的 FFI 它允许在不编写C存根代码的情况下访问C函数。 puc lua(标准实现)支持从内存不足中恢复。Luajit和TCL都没有。 |
![]() |
zhili · TCL利用管道和文件事件来维护子流程 1 年前 |
![]() |
JoshTitle · Tcl:将带方括号的参数传递给过程(SDC) 1 年前 |
![]() |
craigB · Tkinter Treeview调用找不到项目 2 年前 |
|
Cory Anderson · TCL 8.4 CSV功能 2 年前 |