Language agnostic 构建一个游戏,需要一种具有强大支持的一流功能的语言

Language agnostic 构建一个游戏,需要一种具有强大支持的一流功能的语言,language-agnostic,Language Agnostic,我正在构建一个教育游戏,通过它的模块化,可以教学生如何编程。它本质上是一个普通的纸牌游戏,可以很容易地修改 游戏的主干应该是完全不可编辑的(至少在理论上是如此),所以我需要构建一个“卡片”类型,允许匿名函数作为它的动作(更糟糕,或者更有趣的是,它需要一个可以有任意数量参数的匿名函数) 我还需要一个强大的GUI库,它需要是可移植的,如果可能的话,它应该是一种潜在的web语言。它应该对模块化有广泛的支持,是面向对象的,并且希望足够清晰,不需要有经验的程序员来理解语法。这是一个很大的要求,但我应该是详

我正在构建一个教育游戏,通过它的模块化,可以教学生如何编程。它本质上是一个普通的纸牌游戏,可以很容易地修改

游戏的主干应该是完全不可编辑的(至少在理论上是如此),所以我需要构建一个“卡片”类型,允许匿名函数作为它的动作(更糟糕,或者更有趣的是,它需要一个可以有任意数量参数的匿名函数)

我还需要一个强大的GUI库,它需要是可移植的,如果可能的话,它应该是一种潜在的web语言。它应该对模块化有广泛的支持,是面向对象的,并且希望足够清晰,不需要有经验的程序员来理解语法。这是一个很大的要求,但我应该是详细的,我想要一个具体的答案,为什么它是一个好的选择,所以我应该尽可能多的信息,我认为。我对语言的效率并没有真正的需求,所以在这种情况下不需要低级语言,非常高级的语言将很容易足够快


Python不够强大。Ruby可能是,但我对它的特性还不够熟悉。Haskell和Scheme具有最强的支持,但不是web语言,而且据我所知,在大多数情况下没有GUI库。C#可能是合理的,我对它的特性不太熟悉,但我特别担心可移植性。如果可能的话,我希望避免使用javascript,但如果这真的是最好的选择,我可能不得不朝这个方向走

Javascript似乎是您的完美选择—一流的函数、可移植的、基于web的、清晰的语法、良好的库支持。我知道你在试图避免它,但我希望,一旦你评估并拒绝了所有其他选择,你会给Javascript另一个机会。

我会选择C#或者F#,以Silverlight的形式。C#和F#都支持匿名函数(包括lambda函数)和数量可变的参数

Silverlight应用程序可以通过网络交付,支持丰富的图形库,并将在PC和Mac上的大多数浏览器中运行。对Linux的支持应该“很快”就可以提供了(微软和英特尔显然正在努力)。同时,还有单声道和月光


从游戏应用程序的角度来看,Silverlight很不错,因为它支持时间线和动画。另外,能够将标记与代码分离有助于保持设计的整洁和可管理性。

如果您熟悉Scheme,请查看编程环境。

它有GUI支持,并被移植到Windows、Linux和Macintosh。

您是否考虑过它在JVM上运行,这样您就可以利用Java swing库,并且仍然可以使用强大的函数式语言进行编码。

FWIW,如果您正在教编程,您可能还希望确保该语言具有良好的开发环境——上下文敏感编辑器和功能强大、易于使用的调试器非常有用。第一次程序员可能会犯很多小错误,并且能够很容易地通过代码行和查看变量,调试在学习如何真正地编程为所有的理论部分(如使用lambda函数)方面同样重要。

是否考虑过C++,它使它保持简单。你可以有一个“核心”,那是二进制的,然后让你的学生编译C++文件所调用的库,这样每个学生可以提交一个文件夹,所有的不同的库,你所要做的就是把二进制文件移到文件夹并运行它。二进制文件将使用它们的库来执行您想要模块化的代码的不同方面


这种方法还有一个额外的效果,就是教会他们如何在团队中工作,你可以让一个人编写渲染子系统,另一个人编写输入子系统,等等。您需要在二进制文件中定义的只是一组骨架函数,您可以调用这些函数来执行这些部分的逻辑。

具体可移植到哪个平台?帮助我们了解需求:Python“不够强大”呢?从我的使用和阅读理解,Python的lambda函数很糟糕(我已经广泛地使用了它们,但这并不意味着我已经正确地使用了它们)。所谓便携式,我的意思是它可以在mac、windows和linux上运行(嵌入式设备不是必需的候选设备,我假设使用此代码的机器至少与低端上网本一样强大).C#有一些一流的函数。更像是一个半类。我想你可能会找到一个更好的选择。你为什么要避免使用javascript?我会尝试一下。谢谢你的建议,我非常感谢!我一直认为javascript是一种必需品,但我一直在努力避免使用它…但它是现在,这在网络编程中是非常必要的,所以我应该学习它。再次感谢!我会避免使用JavaScript。它当然没有任何接近“强大GUI库”的东西正如OP中所要求的。更糟糕的是,它是解释性的,不是强类型的,这使得代码往往很慢和有缺陷。Hrm…速度,正如我所提到的,不是一个大问题,但我会考虑到这一点。感谢你的输入!我没有遇到过比html+css更强大的gui库。它有问题,但它肯定是我的sn没有win32/swing/cocoa/next/qt/wx/等那么难看。它是除其他所有gui库之外最糟糕的gui库。Re:缓慢和有缺陷;可能有有有缺陷的程序和速度缓慢的解释器,但也有编写良好的程序和快速解释器。错误和缓慢与类型和交互没有太大关系在错误性和缓慢性方面,javascript与python、ruby或java没有太大区别