选择脚本语言

时间:2012-04-21 19:10:36

标签: python scripting programming-languages lua

我需要编写我的应用程序脚本(不是游戏),我有一个问题,为此选择一个脚本。 Lua看起来很好(实际上,它是我的任务的理想选择),但它有unicode字符串的问题,将被使用。 另外,我考虑过Python,但我不喜欢它的语法,而且它对我来说太大了(大约2.5 Mib)。 Python和其他类似的langs有太多的功能,battaries和模块,我不需要(例如I / O功能) - 脚本只需要实现逻辑,所有其他将执行我的应用程序。 所以,我想知道是否有一个满足这些条件的脚本语言:

  • unicode strings
  • 我可以导入C ++函数然后从中调用它们 脚本
  • 可以毫无问题地嵌入到app(没有dll)

重新发明轮子不是一个好主意,所以我不想发展自己的郎。 或者有一种方法可以在Lua的源代码中编写unicode字符串?就像在C ++ L“Unicode string”

中一样

5 个答案:

答案 0 :(得分:7)

Lua字符串与编码无关。所以,是的,您可以在Lua脚本中编写unicode字符串。如果需要模式匹配,则标准Lua字符串库不支持unicode类。但普通子串搜索有效。

答案 1 :(得分:5)

" unicode string"实际上并不存在这样的事情。字符串是一个可以包含任何内容的字节序列。但是,知道字符串中数据的编码很重要。

我使用Lua和UTF-8 strings,它适用于我关心的所有操作。我不使用任何Unicode字符串库,尽管它们可用于Lua(ICU4Luaslnunicode等)。

关于在Lua中使用UTF-8字符串的一些注意事项:

  • 字符串长度(#运算符)以字节为单位返回字符串长度,而不是字符或代码点(非ASCII字符可能是多个字节的序列)。
  • 字符串拆分(例如string.sub)不得拆分UTF-8序列。
  • 使用ASCII模式进行字符串匹配(string.find,string.match)。
  • 子字符串搜索(例如在'普通'模式下的string.find)可以使用UTF-8作为针或大海捞针。

以UTF-8计算代码点非常简单,如果效率略低于其他编码。例如在Lua:

function utf8_length(str)
        return select(2, string.gsub(str, "[^\128-\193]", ""));
end

如果您需要的不仅仅是这类内容,我提到的unicode库会为您提供所有内容的API,包括编码之间的转换。

就我个人而言,我更喜欢这种简单明了的方法来强制你使用某种类型的unicode(例如Javascript),或者通过在语言中内置多种编码(例如Python)来尝试并聪明。根据我的经验,他们只会导致头痛和性能瓶颈。

在任何情况下,我认为每个开发人员都应该对unicode的工作原理以及不同编码之间的主要区别有一个很好的基本理解,这样他们就可以在应用程序中如何处理unicode做出最佳选择。

例如,如果应用程序中的所有现有字符串都采用宽字符编码,那么使用Lua就不那么方便了,因为您必须为Lua中的每个字符串添加转换。这是完全可能的,但是如果你的应用程序可能受CPU限制(如在游戏中),那么在性能方面它将是负面的。

答案 2 :(得分:1)

看一下JavaScript - V8 engine非常强大,JavaScript没有大stdlib。除此之外,你可以很容易地嵌入它,从我所知道它处理unicode很好。

答案 3 :(得分:0)

看看Io

unicode一直向下embeddable。它似乎提供了一些C++ binding library

答案 4 :(得分:0)

看看Jim Tcl。它体积小,易于嵌入和扩展,支持UTF-8字符串,功能非常强大