C# AppStore上的嵌入式脚本-使用Python,还是蛇行?

C# AppStore上的嵌入式脚本-使用Python,还是蛇行?,c#,python,lua,C#,Python,Lua,我正在构建一个科学/教育应用程序,我需要提供超级用户脚本功能。我的选择是: 嵌入现有语言,如Python或Lua 或者用coco/R创建我自己的语言,例如 (最初我在C语言中构建,但以后可能会移植到C++来实现iPad和Android的应用)。 每种方法都有其优点,但一个重要因素是我不想被应用商店拒之门外。苹果显然禁止运行解释代码的应用程序。我真的不明白这是如何定义的——当然,任何应用程序都是通过解释自己的数据结构来运行的?我认为这是某种“我们看到色情作品时就知道它”的定义,你只是不能让你的

我正在构建一个科学/教育应用程序,我需要提供超级用户脚本功能。我的选择是:

  • 嵌入现有语言,如Python或Lua
  • 或者用coco/R创建我自己的语言,例如

(最初我在C语言中构建,但以后可能会移植到C++来实现iPad和Android的应用)。


每种方法都有其优点,但一个重要因素是我不想被应用商店拒之门外。苹果显然禁止运行解释代码的应用程序。我真的不明白这是如何定义的——当然,任何应用程序都是通过解释自己的数据结构来运行的?我认为这是某种“我们看到色情作品时就知道它”的定义,你只是不能让你的系统看起来太强大。如果是这样的话,我想如果我建立自己的语言,只传输活动语法树而不传输脚本源,那么我就不太可能触发他们的警钟——它看起来像任何旧的数据结构。有人知道这是否正确吗?

几年前,苹果公司放宽了许可协议中的语言,允许Lua使用。它被大量的iOS游戏使用(包括愤怒的小鸟,所有的EA游戏等等)。事实上,应用商店中有很多游戏都是用Lua编写的,使用的是基于Lua的框架,如Corona或MOAI(如Crimson:Steam Pirates,一款Bungie航空航天资助的游戏,在应用商店中已连续几周排名第一)。还有一些应用程序,如Codea,一个Lua脚本环境,最终用户可以使用它在设备上构建游戏/玩具。Lua在iOS平台上非常流行

在我看来,创建自己的语言是荒谬的。Lua太好了,非常适合iOS:重量轻、速度快、可黑客攻击、用户友好、易于嵌入和扩展,等等。但是,您可能无法将其集成到C#应用程序中。我真的不知道MonoTouch是如何工作的,但在桌面世界中,C#是托管代码,编译成字节码,但Lua的API是本机代码。弥合这一差距是可以做到的,但需要做更多的工作

简而言之,您可以使用Lua,而不必隐藏它。你不能做的是创建一个“元平台”,用户基本上可以通过你的应用程序下载全新的应用程序(苹果没有审查过)


<>编辑:关于“我在C语言中构建,但以后可能会移植到C++,用于iPad和Android的范围”,你可能想看看MOAI。它是一个开源的、跨平台的(PC、MAC、iPad、Android、Chrome)框架,用C++编写,用于在Lua编写游戏。可能会节省您从那里开始的时间,而不是稍后移植。你可以在Lua直接做所有的事情,如果你遇到了一些需要裸露的性能或者通过LuaAPI已经不能访问的功能的话,你可以用C++或者C++来写。

这不是一个编程问题。Apple限制了运行外部脚本的应用程序。这主要是因为你不卖一个应用程序,当它运行时,它会变成另一个应用程序——至少在我看来是这样。写你的应用程序合法,不要尝试游戏系统。恕我直言,我真的不知道“写你的应用程序合法”是什么意思,我问过的其他人也不知道。但是花上几个月的心血让我的应用程序在3分钟内因为措辞含糊和定义不清的原因被拒绝,这并不是很吸引人。如果系统没有明确定义,那么“游戏”也没有明确定义。非常感谢。但是你可以下载新的lua代码来修改你的应用程序的内容吗?例如,假设您编写了一个交互式报纸应用程序,其中交互式文章由lua定义。你能更新你的lua吗?或者你的应用程序只显示一天的新闻?那会有点可怜。如果它添加了新内容?那么是的。如果它提供了全新的行为?那么不。这两种情况都超出了您所说的需要它的范围(最终用户脚本),对吗?不,它在我所说的范围内-在报纸示例中,假设最终用户可以上传文章。要上传交互式文章,他们需要使用最终用户脚本。所以我想你是说,如果新的lua脚本的行为与旧的脚本没有“根本不同”,那么这是允许的。这太模糊了。这是否意味着特别有创意的最终用户将不被允许上传内容,而比较乏味的用户可以?或者如果内容过于复杂,整个应用程序可能会被关闭?我指的是你最初的问题(“超级用户脚本”)中的范围,而不是你的报纸示例。AFAIK表示,“最终用户可以上传文章”将被完全禁止。苹果的政策措词比较宽泛,比他们实际执行的更宽泛,因此如果你推动它,你可能会与政策相冲突,但允许最终用户编写脚本是几个已发布的应用程序所允许的。Codea几乎都是最终用户脚本。对。我认为,在什么是允许的不确定性推动我不情愿地滚动我自己的语言。另外,c#上的lua似乎不是很活跃——例如,我找不到任何关于在silverlight上运行它而不是WPF的信息。